|
采用DS1302實時鐘芯片產生時間和日期,DS18B20產生溫度
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
220817e7exuwgbu0x1kbba.png (99.4 KB, 下載次數: 127)
下載附件
2018-10-10 20:16 上傳
0.png (14.44 KB, 下載次數: 123)
下載附件
2018-10-11 00:27 上傳
單片機源程序如下:
- #include "..\INCLUDE\config.h"
- #include "..\FONT\FONT.H"
- uint8 Temp_Value;
- void TEMP_Delay(uint16 i)
- {
- while(i--);
- }
- void TEMP_INITIALIZE()
- {
- DQ=1;
- TEMP_Delay(8);
- DQ=0;
- TEMP_Delay(80);
- DQ=1;
- TEMP_Delay(14);
- TEMP_Delay(20);
- }
- uint8 TEMP_Read_Char()
- {
- uint8 i;
- uint8 dat;
- for(i=0;i<8;i++)
- {
- DQ=0;
- dat>>=1;
- DQ=1;
- if(DQ)
- dat|=0x80;
- TEMP_Delay(4);
- }
- return dat;
- }
- void TEMP_Write_Char(uint8 dat)
- {
- uint8 i;
- for(i=0;i<8;i++)
- {
- DQ=0;
- DQ=dat&0x01;
- TEMP_Delay(5);
- DQ=1;
- dat>>=1;
- }
- }
- void TEMP_Read()
- {
- uint8 a,b;
- TEMP_INITIALIZE();
- TEMP_Write_Char(0xcc);
- TEMP_Write_Char(0x44);
- TEMP_Delay(100);
- TEMP_INITIALIZE();
- TEMP_Write_Char(0xcc);
- TEMP_Write_Char(0xbe);
- TEMP_Delay(100);
- a=TEMP_Read_Char();
- b=TEMP_Read_Char();
- Temp_Value=b<<4;
- Temp_Value+=(a&0xf0)>>4;
- }
- void KEY_INT() interrupt 0
- {
- uint8 i;
- i=KEY_PORT;
- i&=0x0f;
- while(i==1);
- }
- void main()
- {
- uint32 i;
- bit j,home;
- uint8 value;
- j=1;
- LCD_Initialize();
- TEMP_INITIALIZE();
- LCD_Prints("psuxaog",0);
- LCD_Write(0x0f,COMMAND);
- LCD_Write(0|0x80,COMMAND);
- i=100;
- while(i--);
- TMOD=2;
- TH0=0x01;
- TL0=0x01;
- ET0=1;
- EX0=1;
- TR0=1;
- EA=1;
- while(1)
- {
- while(value!=8)
- {
- LED_Disp(&HZ[0],j,home);
- home=0;
- if(~TR0)
- {
- i++;
- if(i>10)
- {
- i=0;
- j=~j;
- value++;
- }
- }
- }
- value=0;
- home=1;
- TR0=1;
- CurrentTime(&TIMETYPE);
- while(value!=100)
- {
- LED_Disp_Year(TIMETYPE.Year,value,1);
- i++;
- if(i==2)
- {
- i=0;
- value++;
- }
- }
- value=0;
- CurrentTime(&TIMETYPE);
- while(value!=100)
- {
- LED_Disp_Year(TIMETYPE.Year,value,0);
- i++;
- if(i==2)
- {
- i=0;
- value++;
- }
- }
- value=0;
- CurrentTime(&TIMETYPE);
- while(value!=100)
- {
- LED_Disp_Month(TIMETYPE.Month,TIMETYPE.Day,value,1);
- i++;
- if(i==2)
- {
- i=0;
- value++;
- }
- }
- value=0;
- CurrentTime(&TIMETYPE);
- while(value!=100)
- {
- LED_Disp_Month(TIMETYPE.Month,TIMETYPE.Day,value,0);
- i++;
- if(i==2)
- {
- i=0;
- value++;
- }
- }
- value=0;
- CurrentTime(&TIMETYPE);
- while(value!=100)
- {
- LED_Disp_Week(TIMETYPE.Week,value,1);
- i++;
- if(i==2)
- {
- i=0;
- value++;
- }
- }
- value=0;
- CurrentTime(&TIMETYPE);
- while(value!=100)
- {
- LED_Disp_Week(TIMETYPE.Week,value,0);
- i++;
- if(i==2)
- {
- i=0;
- value++;
- }
- }
- value=0;
- CurrentTime(&TIMETYPE);
- while(value!=100)
- {
- LED_Disp_Time(TIMETYPE.Hour,TIMETYPE.Mine,value,1);
- i++;
- if(i==2)
- {
- i=0;
- value++;
- }
- }
- value=0;
- CurrentTime(&TIMETYPE);
- while(value!=100)
- {
- LED_Disp_Time(TIMETYPE.Hour,TIMETYPE.Mine,value,0);
- i++;
- if(i==2)
- {
- i=0;
- value++;
- }
- }
- value=0;
- CurrentTime(&TIMETYPE);
- while(value!=8)
- {
- LED_Disp(&TEMPDISP[0],j,home);
- home=0;
- if(~TR0)
- {
- i++;
- if(i>10)
- {
- i=0;
- j=~j;
- value++;
- }
- }
- }
- value=0;
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
WAIL.rar
(187.54 KB, 下載次數: 37)
2018-10-10 20:17 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|