基于DS1302的電子時鐘+SHT10溫濕度傳感器,4個按鍵,第一是時間設置,第二三是增加減,第四十鬧鐘,鬧鐘功能設的是25時,設到25上就不會開啟鬧鐘。
電路原理圖如下:
]R2_VZHK{@I032$Q}JJMB)4.png (78.48 KB, 下載次數: 34)
下載附件
2019-3-1 21:21 上傳
單片機源程序如下:
- #include "lcd1602.h"
- #include "reg51.h"
- #include "intrins.h"
- #include "ds1302.h"
- #include "key.h"
- #include "wenshi.h"
- sbit FMQ = P3^5; //蜂鳴器
- void DisplayRTC()
- { WriteChar(0,0,'2');
- WriteChar(0,1,'0');
- WriteChar(0,2,n1+'0');
- WriteChar(0,3,n0+'0');
- WriteChar(0,4,'-');
- WriteChar(0,5,y1+'0');
- WriteChar(0,6,y0+'0');
- WriteChar(0,7,'-');
- WriteChar(0,8,r1+'0');
- WriteChar(0,9,r0+'0');
- PutString(0,12,"WEEK:");
- WriteChar(0,16,':');
- //WriteChar(0,16,z1+'0');
- WriteChar(0,17,z0+'0');
- if(h1 > 0) WriteChar(1,0,h1 + '0');
- else WriteChar(1,0,' ');
- WriteChar(1,1,h0 +'0');
- WriteChar(1,2,':');
- WriteChar(1,3,m1+'0');
- WriteChar(1,4,m0+'0');
- WriteChar(1,5,':');
- WriteChar(1,6,s1 +'0');
- WriteChar(1,7,s0 +'0');
- PutString(1,9,"T:");
- PutString(1,14,"RH");
- WriteChar(1,16,':');
- }
- void DisplayR1()
- { WriteChar(0,0,'2');
- WriteChar(0,1,'0');
- WriteChar(0,2,n3+'0');
- WriteChar(0,3,n2+'0');
- WriteChar(0,4,'-');
- WriteChar(0,5,y3+'0');
- WriteChar(0,6,y2+'0');
- WriteChar(0,7,'-');
- WriteChar(0,8,r3+'0');
- WriteChar(0,9,r2+'0');
- PutString(0,12,"WEEK:");
- WriteChar(0,16,':');
-
- WriteChar(0,17,z1+'0');
- WriteChar(1,0,h3 + '0');
-
- WriteChar(1,1,h2 +'0');
- WriteChar(1,2,':');
- WriteChar(1,3,m3+'0');
- WriteChar(1,4,m2+'0');
- WriteChar(1,5,':');
- {if(s0%2==0)
- {WriteChar(1,6,s3+'0');
- WriteChar(1,7,s2+'0');
- }
- else {WriteChar(1,6,' ');
- WriteChar(1,7,' ');
- } }
- PutString(1,9,"T:");
- PutString(1,14,"RH");
- WriteChar(1,16,':');
- }
- void DisplayR2()
- { WriteChar(0,0,'2');
- WriteChar(0,1,'0');
- WriteChar(0,2,n3+'0');
- WriteChar(0,3,n2+'0');
- WriteChar(0,4,'-');
- WriteChar(0,5,y3+'0');
- WriteChar(0,6,y2+'0');
- WriteChar(0,7,'-');
- WriteChar(0,8,r3+'0');
- WriteChar(0,9,r2+'0');
- PutString(0,12,"WEEK:");
- WriteChar(0,16,':');
-
- WriteChar(0,17,z1+'0');
- WriteChar(1,0,h3 + '0');
-
- WriteChar(1,1,h2 +'0');
- WriteChar(1,2,':');
- {if(s0%2==0)
- {WriteChar(1,3,m3+'0');
- WriteChar(1,4,m2+'0');
- }
- else {WriteChar(1,3,' ');
- WriteChar(1,4,' ');
- }
- }
- WriteChar(1,5,':');
- WriteChar(1,6,s3+'0');
- WriteChar(1,7,s2+'0');
- PutString(1,9,"T:");
- PutString(1,14,"RH");
- WriteChar(1,16,':');
- }
- void DisplayR3()
- { WriteChar(0,0,'2');
- WriteChar(0,1,'0');
- WriteChar(0,2,n3+'0');
- WriteChar(0,3,n2+'0');
- WriteChar(0,4,'-');
- WriteChar(0,5,y3+'0');
- WriteChar(0,6,y2+'0');
- WriteChar(0,7,'-');
- WriteChar(0,8,r3+'0');
- WriteChar(0,9,r2+'0');
- PutString(0,12,"WEEK:");
- WriteChar(0,16,':');
-
- WriteChar(0,17,z1+'0');
- {if(s0%2==0)
- { WriteChar(1,0,h3 + '0');
-
- WriteChar(1,1,h2 +'0');}
- else {WriteChar(1,0,' ');
- WriteChar(1,1,' ');
- }
- }
- WriteChar(1,2,':');
- WriteChar(1,3,m3+'0');
- WriteChar(1,4,m2+'0');
- WriteChar(1,5,':');
- WriteChar(1,6,s3+'0');
- WriteChar(1,7,s2+'0');
- PutString(1,9,"T:");
- PutString(1,14,"RH");
- WriteChar(1,16,':');
- }
- void DisplayR4()
- { WriteChar(0,0,'2');
- WriteChar(0,1,'0');
- WriteChar(0,2,n3+'0');
- WriteChar(0,3,n2+'0');
- WriteChar(0,4,'-');
- WriteChar(0,5,y3+'0');
- WriteChar(0,6,y2+'0');
- WriteChar(0,7,'-');
- WriteChar(0,8,r3+'0');
- WriteChar(0,9,r2+'0');
- PutString(0,12,"WEEK:");
- WriteChar(0,16,':');
- {if(s0%2==0)
- {WriteChar(0,17,z1+'0');}
- else {WriteChar(0,17,' '); }
- }
- WriteChar(1,0,h3 + '0');
- WriteChar(1,1,h2 +'0');
- WriteChar(1,2,':');
- WriteChar(1,3,m3+'0');
- WriteChar(1,4,m2+'0');
- WriteChar(1,5,':');
- WriteChar(1,6,s3+'0');
- WriteChar(1,7,s2+'0');
- PutString(1,9,"T:");
- PutString(1,14,"RH");
- WriteChar(1,16,':');
- }
- void DisplayR5()
- { WriteChar(0,0,'2');
- WriteChar(0,1,'0');
- WriteChar(0,2,n3+'0');
- WriteChar(0,3,n2+'0');
- WriteChar(0,4,'-');
- WriteChar(0,5,y3+'0');
- WriteChar(0,6,y2+'0');
- WriteChar(0,7,'-');
- {if(s0%2==0)
- {WriteChar(0,8,r3+'0');
- WriteChar(0,9,r2+'0');}
- else {WriteChar(0,8,' ');
- WriteChar(0,9,' ');
- }
- }
- PutString(0,12,"WEEK:");
- WriteChar(0,16,':');
- WriteChar(0,17,z1+'0');
- WriteChar(1,0,h3 + '0');
- WriteChar(1,1,h2 +'0');
- WriteChar(1,2,':');
- WriteChar(1,3,m3+'0');
- WriteChar(1,4,m2+'0');
- WriteChar(1,5,':');
- WriteChar(1,6,s3+'0');
- WriteChar(1,7,s2+'0');
- PutString(1,9,"T:");
- PutString(1,14,"RH");
- WriteChar(1,16,':');
- }
- void DisplayR6()
- { WriteChar(0,0,'2');
- WriteChar(0,1,'0');
- WriteChar(0,2,n3+'0');
- WriteChar(0,3,n2+'0');
- WriteChar(0,4,'-');
- {if(s0%2==0)
- {WriteChar(0,5,y3+'0');
- WriteChar(0,6,y2+'0');}
- else {WriteChar(0,5,' ');
- WriteChar(0,6,' ');
- }
- }
- WriteChar(0,7,'-');
- WriteChar(0,8,r3+'0');
- WriteChar(0,9,r2+'0');
- PutString(0,12,"WEEK:");
- WriteChar(0,16,':');
-
- WriteChar(0,17,z1+'0');
- WriteChar(1,0,h3 + '0');
-
- WriteChar(1,1,h2 +'0');
- WriteChar(1,2,':');
- WriteChar(1,3,m3+'0');
- WriteChar(1,4,m2+'0');
- WriteChar(1,5,':');
- WriteChar(1,6,s3+'0');
- WriteChar(1,7,s2+'0');
- PutString(1,9,"T:");
- PutString(1,14,"RH");
- WriteChar(1,16,':');
- }
- void DisplayR7()
- { WriteChar(0,0,'2');
- WriteChar(0,1,'0');
- {if(s0%2==0)
- {WriteChar(0,2,n3+'0');
- WriteChar(0,3,n2+'0');}
- else {WriteChar(0,2,' ');
- WriteChar(0,3,' ');
- }
- }
- WriteChar(0,4,'-');
- WriteChar(0,5,y3+'0');
- WriteChar(0,6,y2+'0');
- WriteChar(0,7,'-');
- WriteChar(0,8,r3+'0');
- WriteChar(0,9,r2+'0');
- PutString(0,12,"WEEK:");
- WriteChar(0,16,':');
- WriteChar(0,17,z1+'0');
- WriteChar(1,0,h3 + '0');
- WriteChar(1,1,h2 +'0');
- WriteChar(1,2,':');
- WriteChar(1,3,m3+'0');
- WriteChar(1,4,m2+'0');
- WriteChar(1,5,':');
- WriteChar(1,6,s3+'0');
- WriteChar(1,7,s2+'0');
- PutString(1,9,"T:");
- PutString(1,14,"RH");
- WriteChar(1,16,':');
- }
- void Displaynz1()
- { unsigned char ns2,ns3,nm2,nm3,nh2,nh3;
- ns2=time1[0]&0x0f;
- ns3=time1[0]>>4;
- nm2=time1[1]&0x0f;
- nm3=time1[1]>>4;
- nh2=time1[2]&0x0f;
- nh3=time1[2]>>4;
- WriteChar(1,0,nh3 +'0');
- WriteChar(1,1,nh2 +'0');
- WriteChar(1,2,':');
- WriteChar(1,3,nm3+'0');
- WriteChar(1,4,nm2+'0');
- WriteChar(1,5,':');
- {if(s0%2==0)
- {WriteChar(1,6,ns3+'0');
- WriteChar(1,7,ns2+'0');
- }
- else {WriteChar(1,6,' ');
- WriteChar(1,7,' ');
- } }
- PutString(1,9,"T:");
- PutString(1,14,"RH");
- WriteChar(1,16,':');
- }
- void Displaynz2()
- { unsigned char ns2,ns3,nm2,nm3,nh2,nh3;
- ns2=time1[0]&0x0f;
- ns3=time1[0]>>4;
- nm2=time1[1]&0x0f;
- nm3=time1[1]>>4;
- nh2=time1[2]&0x0f;
- nh3=time1[2]>>4;
- WriteChar(1,0,nh3 +'0');
- WriteChar(1,1,nh2 +'0');
- WriteChar(1,2,':');
- {if(s0%2==0)
- {WriteChar(1,3,nm3+'0');
- WriteChar(1,4,nm2+'0');
- }
- else {WriteChar(1,3,' ');
- WriteChar(1,4,' ');
- }
- }
- WriteChar(1,5,':');
- WriteChar(1,6,ns3+'0');
- WriteChar(1,7,ns2+'0');
- PutString(1,9,"T:");
- PutString(1,14,"RH");
- WriteChar(1,16,':');
- }
- void Displaynz3()
- { unsigned char ns2,ns3,nm2,nm3,nh2,nh3;
- ns2=time1[0]&0x0f;
- ns3=time1[0]>>4;
- nm2=time1[1]&0x0f;
- nm3=time1[1]>>4;
- nh2=time1[2]&0x0f;
- nh3=time1[2]>>4;
- {if(s0%2==0)
- {WriteChar(1,0,nh3 + '0');
- WriteChar(1,1,nh2 +'0');}
- else {WriteChar(1,0,' ');
- WriteChar(1,1,' ');
- }
- }
- WriteChar(1,2,':');
- WriteChar(1,3,nm3+'0');
- WriteChar(1,4,nm2+'0');
- WriteChar(1,5,':');
- WriteChar(1,6,ns3+'0');
- WriteChar(1,7,ns2+'0');
- PutString(1,9,"T:");
- PutString(1,14,"RH");
- WriteChar(1,16,':');
- }
- void main(void)
- { value humi_val,temp_val;
- unsigned char error,checksum;
- unsigned int wendu,shidu;
- s_connectionreset();
- P0M1 = 0; P0M0 = 0; //設置為準雙向口
- Initialize_LCD();
- ClearLine(0);
- ClearLine(1);
- ds1302_init();
-
- while(1)
- { error=0;
- error+=s_measure((unsigned char*) &humi_val.i,&checksum,HUMI);
- error+=s_measure((unsigned char*) &temp_val.i,&checksum,TEMP);
- if(error!=0) s_connectionreset();
- else
- { humi_val.f=(float)humi_val.i;
- temp_val.f=(float)temp_val.i;
- calc_SHT10(&humi_val.f,&temp_val.f);
- wendu=10*temp_val.f;
- WriteChar(1,11,(wendu%1000)/100+'0');
- WriteChar(1,12,(wendu%100)/10+'0');
-
- shidu=10*humi_val.f;
- WriteChar(1,17,(shidu%1000)/100+'0');
- WriteChar(1,18,(shidu%100)/10+'0');
- WriteChar(1,19,'%');
- }
-
-
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
仿真 代碼.rar
(137.48 KB, 下載次數: 112)
2019-3-10 17:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|