使用51單片機(jī)控制DS18B20溫度傳感器檢測(cè)熱水器水溫,并將水溫值顯示在八段數(shù)碼管顯示模塊上,當(dāng)溫度處于35-45度之間時(shí)綠燈亮,否則紅燈亮,并且蜂鳴器發(fā)出報(bào)警聲。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
之前在網(wǎng)上瞎逛突然看到一個(gè)帖子是在proteus中添加我們實(shí)物中常用的12864液晶。
1.解壓附件,打開(kāi)LCDTEST 仿真文件 2.
3.直接確認(rèn)

4.復(fù)制壓縮包內(nèi)文件LCD12864A.dll到protues安裝目錄里面\Labcenter Electronics\Proteus 7 Professional\MODELS

完成,可以仿真了!
單片機(jī)源程序如下:
- #include <config.h>
- //#include <1602.h>
- //#include <12864.h>
- #include <shumaguan.h>
- //#include <uart.h>
- #include <ds18b20.h>
- sbit beep=P2^3; //蜂鳴器引腳
- sbit RL=P2^0;
- #define N 20
- u8 print[N];//輸出緩沖區(qū)
- u8 print2[N];//輸出緩沖區(qū)
- void delay_ms(u16 x)//毫秒延時(shí)函數(shù)
- {u16 i,j;
- for(i=0;i<x;i++)
- for(j=0;j<115;j++);
- }
- void main()
- {
- float n;
- u8 i,j;
- beep=1;
- //Init_COM(); //串口初始化
- //LCD1602_Init(); //1602初始化
- //LCD12864_Init();//12864初始化
- while(1)
- {
- Ds18b20_Tempchg(); //啟動(dòng)溫度變換
- n=Ds18b20_Gettemp(); //讀取溫度
- for(i=50;i>0;i--) Print_float_LED(n,2); //輸出到數(shù)碼管
- if(n>25||n<23)
- {
- RL=0;
- beep=~beep;
- }
- else
- {
- RL=1;
- beep=1;
- }
-
- // sprintf(print,"Temp: %.1f",n);Print_str_COM(print);delay_ms(800);//輸出到串口
- // sprintf(print,"Temp: %.1f",n); LCD1602_disstr(print,0,0); delay_ms(800); //輸出到1602
-
- // sprintf(print,"溫度:%.1f",n);
- // i=0;while(i<6){print2[i]=print[i];i++;}
- // j=6;while(print[i]){print2[j]=0xa3;j++;print2[j]=print[i]+0x80;i++;j++;} print2[j]='\0'; //半角轉(zhuǎn)全角
- // LCD12864_disstr(print2,0,0); delay_ms(800); //輸出到12864
-
- }
- }
-
復(fù)制代碼
所有資料51hei提供下載:
http://www.torrancerestoration.com/bbs/dpj-50055-1.html
ds18b20.rar
(315.67 KB, 下載次數(shù): 967)
2019-1-3 08:44 上傳
點(diǎn)擊文件名下載附件
|