基于51单片检测电子万年历的毕业设计崔晓内容摘要:

R S T9R X D /P 3. 010T X D / P 11I N T 0/ P 3 .212I N T 1/ P 3 .313T 0/ P 14T 1/ P 15W R /P 16R D /P 3 .717X T A L 218X T A L 119GND20P 21P 22P 23P 24P 25P 26P 27P 28P S E N29A L E /P R O G30EA31P 32P 33P 34P 35P 36P 37P 38P 39V C C40U1S T C 8 9C 52R CR1 R21KKC122u F /1 0V+ 5VC2 30p FC3 30p FY112M H zX T 2X T 1X T 1X T 2+ 5V+ 5VP P P P P P P P P P P + 5V +5R 131KP2.7P2.6P2.5P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7GND1VCC2VO3RS4RW5EN6D07D18D29D310D411D512D613D714VCC15GND16U2L C D 160 2P GND1DATE2SCK3VCC4U3S H T 10P + 5VP3.6P3.7R310KR410KR510KR610KR710KR810KR910KR 1010K+ 5VP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7R 1110KR 1210K+ 5VP3.6P3.7R 1410KR 1510KR 1610KK1K2K3+ 5VP P P P P P P P P P P R 221KQ1901 2L S 1S P E A K E R+ 5VP R 181KR 191KR 201KR 211KD1 D2 D3 D4+ 5VP1.0P1.1P1.2P1.3设置按键+ 按键 按键P R 1710KK4P 总设置按键V C C 21X12X23GND4R S T5I /O6S C L K7V C C 18U4D S 130 2P P P + 5VX1X2P P P C41uF /10 VY2 K H zX1 X212J P 1P O W E R+ 5V 20 附表 元件清单: 21 附程序 总程序: include//定义函数 include typedef unsigned char uchar。 //无符号 8 位整型变量 typedef unsigned int uint。 //无符 号 16 位整型变量 sbit RS=P2^7。 //LCD1602 数据 /命令选择端 (H/L) sbit RW=P2^6。 //LCD1602 读 /写选择端 (H/L) sbit E=P2^5。 //LCD1602 使能信号端 sbit DATA=P3^6。 sbit SCK=P3^7。 sbit k1=P3^2。 //总设置按键 sbit k2=P3^3。 //设置按键 sbit k3=P3^4。 //+按键 sbit k4=P3^5。 //按键 sbit beep=P2^0。 sbit D1=P1^0。 //高温报警指 示灯 sbit D2=P1^1。 //低温报警指示灯 sbit D3=P1^2。 //高湿度报警指示灯 sbit D4=P1^3。 //低湿度报警指示灯 sbit ACC0=ACC^0。 sbit ACC7=ACC^7。 sbit IO=P1^5。 sbit SCLK=P1^6。 sbit RST=P1^7。 uchar idata wendu[6]。 uchar idata shidu[6]。 uchar code table1[]= 20200830。 uchar code table2[]= :383459194。 uchar code table3[]= gaowenbaojing。 uchar code table4[]= diwenbaojing。 uchar code table5[]=gaoshidubaojing。 uchar code table6[]= dishidubaojing。 uchar code table7[]=gaowen+gaoshidu。 uchar code table8[]= gaowen+dishidu。 uchar code table9[]= diwen+gaoshidu。 uchar code table10[]= diwen+dishidu。 uchar code table11[]= this is ok。 uchar code table12[]=。 uchar code table13[]= : :。 enum {TEMP,HUMI}。 typedef union //定义共用同类型 { uint i。 22 float f。 } value。 uchar a,b,c,d,num,flag=0,m=0,num1=0。 char miao,shi,fen。 uchar ccc,ri,yue,nian,zhou,flag1。 //延时子函数 void delay(uint z) { uint x,y。 for(x=z。 x0。 x) for(y=120。 y0。 y)。 } //按键提示音子函数 void di() { beep=0。 delay(100)。 beep=1。 } //往 DS1302 时钟芯片写入一字节子函数 void inputbyte(uchar add) { uchar i。 ACC=add。 for(i=8。 i0。 i) { IO=ACC0。 SCLK=1。 SCLK=0。 ACC=ACC1。 } } //DS1302 时钟芯片输出一字节子函数 uchar outputbyte() { uchar i。 for(i=8。 i0。 i) { ACC=ACC1。 ACC7=IO。 SCLK=1。 SCLK=0。 } return ACC。 } //往 DS1302 时钟芯片写入数据子函数 23 void write_ds(uchar add,uchar ucda) { RST=0。 SCLK=0。 RST=1。 inputbyte(add)。 inputbyte(ucda)。 SCLK=1。 RST=0。 } //从 DS1302 时钟芯片读出数据子函数 uchar read_ds(uchar add) { uchar ucda。 RST=0。 SCLK=0。 RST=1。 inputbyte(add)。 ucda=outputbyte()。 SCLK=1。 RST=0。 return(ucda)。 } //设置 DS1302 时钟芯片子函数 void write_setds(uchar addr,uchar date) { write_ds(0x8e,0x00)。 write_ds(addr,date)。 write_ds(0x8e,0x80)。 } //检查 LCD1602 液晶忙位子函数 void LCD1602_busy() { uchar i=0。 RS=0。 RW=1。 E=1。 P0=0xff。 i=0。 while(((P0amp。 0x80)==0x80)amp。 amp。 i150) i++。 E=0。 } //LCD1602 液晶写指令子函数 void write_(uchar ) { 24 LCD1602_busy()。 RS=0。 RW=0。 P0=。 E=1。 E=0。 } //LCD1602 液晶写数据子函数 void write_date(uchar date) { LCD1602_busy()。 RS=1。 RW=0。 P0=date。 E=1。 E=0。 } //LCD1602 液晶初始化子函数 void LCD1602_init() //初始化设置 { //uchar i。 write_(0x38)。 write_(0x0c)。 write_(0x06)。 write_(0x01)。 /*write_(0x80)。 for(i=0。 i16。 i++) { write_date(table1[i])。 delay(500)。 } write_(0xc0)。 for(i=0。 i16。 i++) { write_date(table2[i])。 delay(500)。 }*/ a=35。 b=10。 c=65。 d=40。 } //SHT10 写字节子函数 char s_write_byte(uchar value) { uchar i,error=0。 25 for(i=0x80。 i0。 i=1) //高位为 1,循环右移 { if(iamp。 value) DATA=1。 //和要发送的数相与,结果为发送的位 else DATA=0。 SCK=1。 _nop_()。 _nop_()。 _nop_()。 //延时 3us SCK=0。 } DATA=1。 //释放数据线 SCK=1。 error=DATA。 //检查应答信号,确认通讯正常 _nop_()。 _nop_()。 _nop_()。 SCK=0。 DATA=1。 return error。 //error=1 通讯错误 } //SHT10 读字节子函数 char s_read_byte(uchar ack) { uchar i,val=0。 DATA=1。 //释放数据线 for(i=0x80。 i0。 i=1) //高位为 1,循环右移 { SCK=1。 if(DATA) val=(val|i)。 //读一位数据线的值 SCK=0。 } DATA=!ack。 //如果是校验,读取完后结束通讯; SCK=1。 _nop_()。 _nop_()。 _nop_()。 //延时 3us SCK=0。 _nop_()。 _nop_()。 _nop_()。 DATA=1。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。