单片机stc89c51中文资料流水灯试验,P0=~(0X01<<cnt);cnt初值为0.我知道取反和移位的概念

流水灯循环点亮的程序_百度知道
流水灯循环点亮的程序
while(key).h&gt.x=x& sbit key=P2^0://h;1.jpg" esrc="while(key);while(;while(.com/zhidao/wh%3D600%2C800/sign=f3ccd6b53da1c/8326cffc1e178aff7e83b,目前是开关控制闪亮;}}}<img class="ikqb_img" src="while(1){P1=~x.com/zhidao/wh%3D450%2C600/sign=41366adcfbba70deccffc1e178aff7e83b,求大神给个修改的程序#include&x=1.reg52.hiphotos.&lt!key);x=1://h.com/zhidao/pic/item/8326cffc1e178aff7e83b;void main (void){unsigned char x
提问者采纳
while(1) {
P1=~(0x01&a--);a&/void delay(void)
&#47,c;}void main(){
unsigned char cnt=0;cnt);b--)
delay();0;
if(cnt&0,b;误差 0us{c&
for(c=23;b&reg52;0;&lt.h&c--)
for(b=152#include&lt
提问者评价
其他类似问题
流水灯的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁单片机最小系统实现花样流水灯_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
3页免费12页免费12页免费2页&#165;3.0017页免费16页免费22页免费10页免费3页免费1页免费
喜欢此文档的还喜欢8页免费19页免费13页免费62页1下载券12页免费
单片机最小系统实现花样流水灯|关&#8203;于&#8203;流&#8203;水&#8203;灯&#8203;的&#8203;设&#8203;计&#8203;,&#8203;按&#8203;键&#8203;控&#8203;制&#8203;。
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢求DS18B20测温程序
用四位数码管显示
单片机STC89C51控制_百度知道
求DS18B20测温程序
用四位数码管显示
单片机STC89C51控制
希望哪位高手能提供基于单片机STC89C51的测温电路图,程序,不胜感激
提问者采纳
#include&reg52.h&#define uchar unsigned char#define uint
unsigned int#define jump_ROM
//写跳过读ROM指令。因为只对一个DB18B20操作。#define start
// 写温度转换指令。#define read_EEROM 0xBE
//读暂存器,读内部RAM中9字节的温度sbit DQ=P2^3;
//DS18B02唯一与单片机连接的 数据端uchar TMPH
//用于读取高低 8位数据。uchar code tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//不带小数点uchar code table1[11]={0XBF,0X86,0XDB,0XCF,0XE6,0XED,0XFD,0X87,0XFF,0XEF,0x39};
//0x39是Cuchar code LED_W[8] = {0,1,2,3,4,5,6,7}; //)为不加小数点的,
后10个(0~9)为加小数点的,/****************************************************************************************
以下为延时函数,晶振为11.0592的时候,延时一次大约为:16us。*******************************************************************************************/void delay(uint us){
for(s=0;s&s++);}/******************************************************************************************
一下为复位函数。resert()
并且读取它的信号。
注意:一个delay(1)=16us********************************************************************************************/uchar
resert(void){
delay(32) ;
//最好延时时间为480us。 本次为32*16=512us。
//延时等待。
receive_ready=DQ;
//获取信号。
delay(25);
//等待时间隙 完。 不超过480us,本次为400us。
//返回信号}/********************************************************************* 名称 : read_bit()* 功能 : 从DS18B20读一个位值* 输入 : 无* 输出 : 从DS18B20读出的一个位值***********************************************************************/uchar read_bit(){ DQ=0; DQ=1; for(i=0;i&3;i++);
//从时间隙开始延时15us。 return
//读出的一个位值返回}/********************************************************************* 名称 : write_bit()* 功能 : 向DS18B20写一位* 输入 : bitval(要对DS18B20写入的位值)* 输出 : 无***********************************************************************/void
write_bit(bitval){
//先把数据位置0,开始时间隙。
//delay(1);
//延时16us。
if(bitval==1)
//在其余的时间隙保持值。
DQ=1;}/********************************************************************* 名称 : read_byte()* 功能 : 从DS18B20读一个字节* 输入 : 无* 输出 : 从DS18B20读到的值***********************************************************************/uchar
read_byte(){ uchar
value=0; for(i=0;i&8;i++) {
if(read_bit())
//当read_bit()=0时,value=0; 当 read_bit()=1时,执行 value|=0x01&&i;,value=1。
value|=0x01&&i;
//按位或|。
有一个为1则为1}
delay(6) ;
//等待剩下时间隙。
}}/********************************************************************* 名称 : write_byte()* 功能 : 向DS18B20写一个字节* 输入 : val(要对DS18B20写入的命令值)* 输出 : 无***********************************************************************/void write_byte(uchar val){
uchar i, for(i=0;i&8;i++) {
temp=val&&i;
temp=temp&0x01;
write_bit(temp);
delay(5);}//**************获取温度的数值************************************************uint
get_temp(){
//通过单总线的所有执行(处理 )都从一个初始化程序开始。其包括总线发出的复位脉冲和{ 从机发出的脉冲。(单机)}
//write_byte(jump_ROM穿础扁飞壮读憋嫂铂讥)
//jump_ROM= 0xCC,
写跳过读ROM指令。因为只对一个DB18B20操作。
//write_byte(start);
//start 0x44
写温度转换指令。
//resert();
write_byte(jump_ROM);
// 写跳过读ROM指令。因为只对一个DB18B20操作。
write_byte(read_EEROM);
//read_EEROM =0xBE
,读暂存器,读内部RAM中9字节的温度
TMPL = read_byte();
//读取低字节的8位数据
TMPH = read_byte();
//读取低字节的8位数据
temp = TMPH;
//把高位的8字节数据 付给temp。
temp &&= 8;
//两个字节为一个字
temp = temp | TMPL;
f_temp=temp*0.0625;
//温度在寄存器里面是12位,分辨率为:0.0625。
temp=f_temp*10+0.5;
//扩大10倍为了保存以为小数点。加0.5是为了四舍五入。
f_temp=f_temp+0.05;}void display(uint tem)
tem=get_temp(); for(j=500; j&0; j--) {
P2=LED_W[4];
P0 = tab[tem / 100];
delay(200);
P2=LED_W[5];
P0 = table1[tem / 10 % 10];
delay(200);
P2=LED_W[6];
P0 = tab[tem % 10];
delay(200);
P2=LED_W[7];
P0 = table1[10];
delay(200); }}//*****************温度转换函数****************************void tempchange(){
resert(); delay(50); write_byte(jump_ROM);
// 写跳过读ROM指令。因为只对一个DB18B20操作。 write_byte(start);
写温度转换指令。}/********************************************************************* 名称 : Main()* 功能 : 主函数* 输入 : 无* 输出 : 无***********************************************************************/void main(){
tempchange();
//温度转换函数。
display( 0);
提问者评价
请问你有没有电路图啊
其他类似问题
stc89c51的相关知识
按默认排序
其他3条回答
可惜我有电路图,自己会绘制的。
去我的博客上找,有图和程序
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁8051单片机P0口接有16个LED,C语言实现流水灯_百度知道
8051单片机P0口接有16个LED,C语言实现流水灯
求代码 啊 不然给个思路也行
提问者采纳
程序如下,y;8;
for(a=0:#include&0.7和P3; suocun2=0;0,推荐用两个74HC573; while(1) { suocun1=1;} void main(){
for(a=0;y&gt,输入全接P0;输出接16个LED负极(573有一定驱动能力;x--) for(y=110; void delay(int z){int x嘉定单片机是STC89C52RC这款常用51单片机; suocun1=0,设573的所存分别用P3;reg52;
suocun2=1;&x&1;
delay(50);a++)
P0=0x01&lt.6控制;a&&for(x=z;sbit suocun1=P3^7;8.h&gt,但是习惯上仍采用灌电流的驱动方式)然后LED另一极接正极,实际应用可以接LED正极;
delay(50);1;sbit suocun2=P3^6;a&y--);a++)
P0=0x01&lt
提问者评价
按照你说的,真的成功了,好开心,谢谢你!
其他类似问题
按默认排序
其他1条回答
别问我怎么做,联级输出,要控制16只LED还要做跑马灯建议扩展接口把,建议用2个74HC595移位寄存器,你可以到百度文库看一下595手册,按照说明写程序程序非常简单,单片机P0口就8个脚,或者74HC138译码器 2个都可以
流水灯的相关知识
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁单片机实验报告_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
5页免费43页2下载券9页2下载券16页免费4页1下载券2页免费14页1下载券4页1下载券5页免费
单片机实验报告|实&#8203;验&#8203;一
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢

我要回帖

更多关于 stc89c51 pdf 的文章

 

随机推荐