基于单片机的闹钟提醒器内容摘要:
temp[1]/10+0x30)。 //时 lcd_wcmd(0xcc)。 lcd_wdat(alarm_temp[1]%10+0x30)。 lcd_wcmd(0xcd)。 lcd_wdat(58)。 lcd_wcmd(0xce)。 lcd_wdat(alarm_temp[0]/10+0x30)。 //分 lcd_wcmd(0xcf)。 lcd_wdat(alarm_temp[0]%10+0x30)。 //秒 } /*系统设置 */ void sys_set(void) { uchar i,j。 uchar key_state=0。 TR0=0。 //停止闪烁,显示 : lcd_wcmd(0xc2)。 lcd_wdat(58)。 lcd_wcmd(0xc5)。 lcd_wdat(58)。 while(key_break) { if(!key_set) //adjust the key state { delay(10000)。 if(!key_set) while(!key_set)。 key_state++。 if(key_state==9) key_state=0。 } switch(key_state)//调整时间时,需要的时候再读出各寄存器的值,以完成调整时间的要求 13 //虽然会浪费一定的空间,但能保证较快地响应请求 //在每次读出数据后应将 bcd 码转化为 16 进制数,调整完成后,再将 16 进制数转化为 bcd 码,最后给 ds1302 送数 { case 0://时钟 秒调整 time_temp[0] lcd_wcmd(0xc8)。 lcd_wdat(67)。 //c lcd_wcmd(0xc9)。 lcd_wdat(45)。 // lcd_wcmd(0xca)。 lcd_wdat(83)。 //s time_temp[0]=R1302(0x81)。 //读出秒寄存器 time_temp[0]=time_temp[0]/16*10+time_temp[0]%16。 //转化为 16 进制数 if(!key_add) { delay(10000)。 if(!key_add) { while(!key_add)。 time_temp[0]++。 if(time_temp[0]==60) time_temp[0]=0。 } } if(!key_sub) { delay(10000)。 if(!key_sub) { while(!key_sub)。 time_temp[0]。 if(time_temp[0]==255) time_temp[0]=59。 } } W1302(0x8e,0x00)。 W1302(0x80,time_temp[0]/10*16+time_temp[0]%10)。 W1302(0x8e,0x80)。 break。 case 1://时钟 分调整 lcd_wcmd(0xc8)。 14 lcd_wdat(67)。 //c lcd_wcmd(0xc9)。 lcd_wdat(45)。 // lcd_wcmd(0xca)。 lcd_wdat(77)。 //m time_temp[1]=R1302(0x83)。 //读出分寄存器 time_temp[1]=time_temp[1]/16*10+time_temp[1]%16。 if(!key_add) //++ { delay(10000)。 if(!key_add) { while(!key_add)。 time_temp[1]++。 { if(time_temp[1]==60) time_temp[1]=0。 } } } if(!key_sub) // { delay(10000)。 if(!key_sub) { while(!key_sub)。 time_temp[1]。 { if(time_temp[1]==255) time_temp[1]=59。 } } } W1302(0x8e,0x00)。 W1302(0x82,time_temp[1]/10*16+time_temp[1]%10)。 W1302(0x8e,0x80)。 break。 case 2://时钟 时调整 lcd_wcmd(0xc8)。 lcd_wdat(67)。 //c lcd_wcmd(0xc9)。 lcd_wdat(45)。 // 15 lcd_wcmd(0xca)。 lcd_wdat(72)。 //h time_temp[2]=R1302(0x85)。 //读出时寄存器 time_temp[2]=time_temp[2]/16*10+time_temp[2]%16。 if(!key_add) //++ { delay(10000)。 if(!key_add) { while(!key_add)。 time_temp[2]++。 if(time_temp[2]==24) time_temp[2]=0。 } } if(!key_sub) // { delay(10000)。 if(!key_sub) { while(!key_sub)。 time_temp[2]。 { if(time_temp[2]==255) time_temp[2]=23。 } } } W1302(0x8e,0x00)。 W1302(0x84,time_temp[2]/10*16+time_temp[2]%10)。 //转换为 bcd 码 W1302(0x8e,0x80)。 break。 case 3://时钟 日调整 lcd_wcmd(0xc8)。 lcd_wdat(67)。 //c lcd_wcmd(0xc9)。 lcd_wdat(45)。 // lcd_wcmd(0xca)。 lcd_wdat(68)。 //d time_temp[3]=R1302(0x87)。 //读出日寄存器 time_temp[3]=time_temp[3]/16*10+time_temp[3]%16。 16 time_temp[6]=R1302(0x8d)。 //读年 ,用于判断平年与闰年 i=time_temp[6]/16*10+time_temp[6]%16。 //转化为 16 进制 j=R1302(0x89)。 //读月 if(!key_add) //++ { delay(10000)。 if(!key_add) { while(!key_add)。基于单片机的闹钟提醒器
相关推荐
圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。 使用 L298N 芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。 用 L298 控制直流电机很容易。 用单片机端口 给 IN IN IN IN
24 电路数据 的测试 25 软件的调试 26 第 7 章 数控电压源 的 使用说明 27 结论 28 参考文献 29 致谢 30 附录 1 整机电路原理图 31 附录 2 元器件清单 32 湖南工业大学本科生毕业设计 V 附录 3 源程序 清单 33 ( 1)主程序的源程序 清单 33 ( 2)外 中断 1子程序的源程序 清单 35 ( 3) 显示子程序的源程序 清单 36 ( 4)
机红外遥控开关设计 英文题目 : The Desi gn of t he Inf raed controler Based on SCM学 组戍腥叶肃呸士慧购稀俐舷萝悯索演涤取币医蓬纳拨术潍砸资政北帽渣砰氧奴毯沏牢觅寐燎渍底翱蛇勤最册空诲前挠废糯囱卓泥艇防邀窝候末尖输 发射电路原 理图 ............................. 9
章 系统概述电压/频率转换器把输入电压信号转换成相应的频率信号。 因此,系统的核心是对频率计的设计。 综合考虑频率测量精度,范围和测量反应时间的要求,把测量工作分为两种方法。 对于 100Hz 以下的信号采用周期测量法;对于100Hz 以上的信号采用多周期同步法进行测量,这样能保证较高的测量精度。 系统由单片机 AT89C5电压/频率转换器信号、预处理电路、串行通信电路
0P 1 . 1P 1 . 2P 1 . 3P 1 . 4P 1 . 5P 1 . 6P 1 . 7 B E E PF I R E A L A R MRSTR S TX T A L 21 8X T A L 11 9A L E3 0E A3 1P S E N2 9R S T9P 0 . 0 / A D 03 9P 0 . 1 / A D 13 8P 0 . 2 / A D 23 7P 0 . 3
是对 8751片内 ROM 固化程序时,作为施加较高编程电压( 12V~21V)的输入端 [7]。 输入输出引脚: P0P3: 4 个 8 位双向输入输出端口,每个端口都有锁存器 、输出驱动器和输入缓冲器。 4 个端口都可以做输入输出口使用,其中, P0 和 P2 通常用于对外部存储器的访问。 在这种方式下,把 P0 口作为地址 /数据总线使用,分时输出外部存储器的地址和传送 8 位数据。