课程设计-基于单片机的自动打铃系统设计内容摘要:
if(s1==0) //功能键按下 { while(s1==0)。 //松手检测 s1num++。 //功能键按下计数 TR0=0。 //T0 定时停止,进入时间调整 switch(s1num) { case 1: write_(0x80+0x40+0x09)。 break。 //光标闪烁位定为秒个位 case 2: write_(0x80+0x40+0x06)。 break。 //光标闪烁位定为分个位 case 3: write_(0x80+0x40+0x03)。 break。 //光标闪烁位定为时个位 case 4: write_(0x80+0x0b)。 break。 //光标闪烁位定为日个位 case 5: write_(0x80+0x08)。 break。 //光标闪烁位定为月个位 case 6: write_(0x80+0x05)。 break。 //光标闪烁位定为年个位 } write_(0x0f)。 //光标闪烁 if(s1num==7) { s1num=0。 //按键计数复位 16 write_(0x0c)。 //光标停止闪烁 TR0=1。 //重新启动定时器 } } } if(s2==0) //S2 键 时分秒 +1 模块 { delay(5)。 if(s2==0) { while(s2==0)。 switch(s1num) { case 1: second++。 //秒 + if(second==60) second=0。 //复位 write_hms(8,second)。 //秒输出显示 write_(0x80+0x40+0x09)。 //光标闪烁位定为秒个位 break。 case 2: minute++。 if(minute==60) minute=0。 //复位 write_hms(5,minute)。 //分输出显示 write_(0x80+0x40+0x06)。 //光标闪烁位定为分个位 break。 case 3: hour++。 if(hour==24) hour=0。 //复位 write_hms(2,hour)。 //时输出显示 write_(0x80+0x40+0x03)。 //光标闪烁位定为时个位 break。 case 4: date++。 //日 + if(year%4==0) //平闰年判断 { if(date==month1[month1]+1) { date=1。 } } else { if(date==month0[month1]+1) { date=1。 } } 17 write_ymd(10,date)。 //日输出显示 write_(0x80+0x0b)。 //光标闪烁位定为日个位 break。 case 5: month++。 //月 + if(month==13) month=1。 if(year%4==0) //判断日和月的配对关系 { if(datemonth1[month1]) date=month1[month1]。 } else { if(datemonth0[month1]) date=month0[month1]。 } write_ymd(10,date)。 //日输出显示 write_ymd(7,month)。 //月输出显示 write_(0x80+0x08)。 //光标闪烁位定为月个位 break。 case 6: year++。 //年 + if(year==100) year=1。 //复位 write_ymd(4,year)。 //年输 出显示 write_(0x80+0x05)。 //光标闪烁位定为年个位 break。 } } } if(s3==0) //时分秒 1 模块 { delay(5)。 if(s3==0) { while(s3==0)。 switch(s1num) { case 1: second。 //秒 if(second==255) second=59。 //复位 write_hms(8,second)。 //秒输出显示 write_(0x80+0x40+0x09)。 //光标闪烁位定为秒个位 break。 case 2: minute。 if(minute==255) minute=59。 //复位 write_hms(5,minute)。 //分输出显示 write_(0x80+0x40+0x06)。 //光标闪烁位定为分个位 break。 18 case 3: hour。 if(hour==255) hour=23。 //复位 write_hms(2,hour)。 //时输出显示 write_(0x80+0x40+0x03)。 //光标闪烁位定为时个位 break。 case 4: date。 //日 if(year%4==0) { if(date==0) { date=month1[month1]。 } } else { if(date==0) { date=month0[month1]。 } } write_ymd(10,date)。 //日输出显示 write_(0x80+0x0b)。 //光标闪烁位定为日个位 break。 case 5: month。 //月 if(month==0) month=12。 if(year%4==0) //判断日和月的配对关系 { if(datemonth1[month1]) date=month1[month1]。 } else { if(datemonth0[month1]) date=month0[month1]。 } write_ymd(10,date)。 //日输出显示 write_ymd(7,month)。 //月输出显示 write_(0x80+0x08)。 //光标闪烁位定为月个位 break。 case 6: year。 //年 if(year==0) year=99。 //复位 write_ymd(4,year)。 //年输出显示 write_(0x80+0x05)。 //光标闪烁位定为年个位 break。 } } 19 } } void initialize() //LCD 初始化函数 { uchar num。课程设计-基于单片机的自动打铃系统设计
相关推荐
LCALL DL1MS LCALL DL1MS JNB , SSWAIT SSST: MOV TIME, TIMED0。 120S LCALL TUNBCD MOV SN, 99H MOV EW, 0AAH SETB EA。 总中断开放 SETB PX1 SETB EX1 SETB ET0。 允许 T0 中断 SETB TR0。 开启 T0 定时器 MOV R4, 14H。 1S 定时用初值(
的制作 本次设计的数字钟系统中由于频率不是特别高,所以在设计 PCB 板时不存在考虑走线之间频率干扰问题, 但由于设计规定了 PCB 板的大小为 7*9cM,并且是单面板,所以对我们的设计带来了一定的难度,在设计中不得不通过走飞线的方式完成 PCB 板的制作。 5. 1 PCB 板的制作规则 我在数字钟设计中采用 Orcad 软件平台, 完成了 PCB 的制作, 在 PCB
A 车道绿灯亮,南北方向 B 车道红灯亮。 表示南北方向 B 车道上的车辆禁止通行,东西方向 A 车道允许通行。 绿灯亮足规 定的时间隔时,控制器发出状态信号,转到下一工作状态。 ( 2)东西方向 A 车道黄灯亮,南北方向 B 车道红灯亮。 表示东西方向 A 车道上未过停车线的车辆停止通行,已过停车线的车辆继续通行,南北方向 B 车道禁止通行。 黄灯亮足规定时间间隔时,控制器发出状态转换信号
即驱动蜂鸣器鸣叫、 8 个发光二极管发光 主程序流程图: 开始 显示实时温度 温度设定、报警 查询记录温度值 定时器初始化、启动 图 12 主程序流程图 读温度值模块 读温度值模块需要调用 4 个子程序,分别为: DS18B20 初始化子程序:让单片机知道 DS18B20 在总线上且已准备好操作 DS18B20 写字节子程序:对 DS18B20 发出命令 DS18B20 读字节子程序
661 65235 2 RE 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 6 1865 65268 中 4 FA 698 64820 高 7 SI 1967 65283 有了这张表,我们就可以顺利地完成发声程序的编写了。 根据以上的思路以及频率表可以写出发声程序如下: code unsigned char FH[]={ 0xFC,0xFC,0xFD
台阶高度内应分层浇捣,每浇注完一台阶应稍停 小时,待其初步获得陈实后,在浇注上层,以下台阶砼溢出,台阶表面应基本抹平。 基础上有插筋时,要加以加固,保证插筋位置正确,防止浇注砼发生位移,砼浇注完毕,外露表面应覆盖浇水养护。 四、质量控制和检验方法: 模版: 模版应有足够的强度和稳定性; 模版板缝应符合规定; 模版与砼接触面应清理干净并涂刷隔离剂; 钢筋 钢筋的品种质量、焊条的牌号应符合设计要求;