標題: 單片機溫度報警器設(shè)計,含源碼,仿真圖 [打印本頁]
作者: ss520 時間: 2019-9-24 15:57
標題: 單片機溫度報警器設(shè)計,含源碼,仿真圖
這是我去年單片機設(shè)計的溫度報警器,proteus仿真過,完美成功請看介紹
51hei.gif (117.83 KB, 下載次數(shù): 26)
下載附件
2021-11-29 20:53 上傳
1、初始化時序圖
圖3 初始化時序圖
(1)首先將數(shù)據(jù)線置高電平1。
(2)然后進行延時(盡可能短,沒有嚴格要求)。
(3)然后把數(shù)據(jù)線拉倒低電平0。
(4)再延時750μs (時間可以在480μs -960μs中選)
(5)再將數(shù)據(jù)線拉高到電平1。
(6)延時等待。如果初始化成功則在15-60μs內(nèi)產(chǎn)生一個由DS18B20返回的低電平0。這個可以確定它的存在。
(7)假設(shè)是單片機的CPU讀到數(shù)據(jù)線上的低電平后,還要進行延時,那么時間從發(fā)出高電平算起不能少于480μs。
(8)最后將數(shù)據(jù)線再次拉到低電平后結(jié)束。
2、DS18B20寫數(shù)據(jù)
(1)首先將數(shù)據(jù)線先置低電平0。
(2)然后延時確定的時間為15μs。
(3)再按從低位到高位的順序來發(fā)送數(shù)據(jù)。
(4)其中延時時間為45μs。
(5)再把數(shù)據(jù)線拉倒高電平1。
(6)然后再重復(fù)前面五步,直到發(fā)送完整一個字節(jié)。
(7)最后將數(shù)據(jù)線拉高到1。
3、DS18B20讀數(shù)據(jù)
(1) 首先將數(shù)據(jù)線拉高到1。
(2) 然后延時2μs。
(3) 再將數(shù)據(jù)線拉低到0。
(4) 然后延時5μs。(時間大于1μs)
(5) 再將數(shù)據(jù)線拉高到1。
(6) 延時4μs。
(7) 讀數(shù)據(jù)線狀態(tài)得到一個狀態(tài)位,并進行數(shù)據(jù)處理。
(8) 延時30μs。
(9) 重復(fù)以上所有步驟,直到讀取完一個字節(jié)。
3.3 LCD1602液晶顯示器3.3.1功能
1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線15腳的VCC和16腳的GND,本次研究采用16引腳的LCD。專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊,通過驅(qū)動模塊與顯示器的有效連接,能直觀的顯示出程序中要求的內(nèi)容。
3.3.2特點
顯示質(zhì)量高:由于液晶顯示器每一個點在收到信號后就一直保持那種色彩和亮度,恒定發(fā)光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點。因此,液晶顯示器畫質(zhì)高且不會閃爍。
數(shù)字式接口:液晶顯示器都是數(shù)字式的,和單片機系統(tǒng)的接口更加簡單可靠,操作更加方便。
體積小、重量輕:液晶顯示器通過顯示屏上的電極控制液晶分子狀態(tài)來達到顯示的目的,在重量上比相同顯示面積的傳統(tǒng)顯示器要輕得多。
功耗低:相對而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動IC上,因而耗電量比其它顯示器要少得多。
3.3.3引腳
本次實驗采用16引腳LCD1602液晶顯示器
引腳功能:
第1腳:VSS為地電源。
第2腳:VDD接5V正電源。
第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。
第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。即電平=0為輸入指令;電平=1為輸入數(shù)據(jù)。
第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。
第6腳:E端為使能端,1時讀取信息,當E端由高電平跳變成低電平時,即當1→0(下降沿)液晶模塊執(zhí)行命令。
7~14腳:D0~D7為8位雙向數(shù)據(jù)線。7號引腳為最低位,14號引腳為最高位。
第15腳:背光源正極。
第16腳:背光源負極。
在課題設(shè)計的溫度控制系統(tǒng)設(shè)計中,控制核心是STC89C52單片機,該單片 機為51系列增強型8位單片機,它有32個I/O口,片內(nèi)含4K FLASH工藝的序存儲器,便于用電的方式瞬間擦除和改寫,而且價格便宜,其外部晶振為12M一個指令周期為1μs。使用該單片機完全可以完成設(shè)計任務(wù),其最小系統(tǒng)主要包括:復(fù)位電路、震蕩電路以及存儲器選擇模式,報警時界面如圖16所示。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
仿真.png (123.81 KB, 下載次數(shù): 37)
下載附件
2019-9-25 19:18 上傳
單片機源程序如下:
- #include <REGX51.H>
- #include <intrins.h>
- typedef unsigned char u8;
- typedef unsigned int u16;
- sbit beep=P1^5;
- sbit Led1=P2^2; //高溫閃爍
- sbit Led2=P2^3; //低溫閃爍
- u8 code t0[]="Temperature is:";
- void TempDisplayTest(void);
- void delay500us(void);
- void BuzzerOnOff(void);
- void Lcd1602Init(void);
- void Lcd1602SetCursor(u8 x,u8 y);
- void Lcd1602ShowStr(u8 x, u8 y, u8 *pStr);
- void Lcd1602ShowTempU16(u8 x, u8 y, u16 temp);
- void Ds18b20TempConvertCmd(void);
- void Ds18b20TempReadCmd(void);
- u8 Ds18b20ReadByte(void);
- void main(void)
- {
- Lcd1602Init();
- while (1)
- {
- TempDisplayTest();
- }
- }
- void TempDisplayTest(void)
- {
- u16 tt, i; // 控制蜂鳴器報警
- u16 temp = 0; // 用來暫存12位的AD值
- u8 tmh = 0, tml = 0; // 用來暫存2個8位的AD值
- u16 tDisp = 0; // 用來存儲乘以100倍后的溫度值
- double t = 0; // 用來存儲轉(zhuǎn)換后以攝氏度為單位的溫度值
- Ds18b20TempConvertCmd(); // 先寫入轉(zhuǎn)換命令
- Ds18b20TempReadCmd(); // 然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令
- tml = Ds18b20ReadByte(); // 讀取溫度值共16位,先讀低字節(jié)
- tmh = Ds18b20ReadByte(); // 再讀高字節(jié)
- temp = tml | (tmh << 8); // 默認是12位分辨率,前面4個S位是符號位
-
- t = temp * 0.0625;
- tDisp = (u16)(t * 100); // 為方便顯示將溫度值乘以100后強轉(zhuǎn)為u16
- tt=tDisp/100;
-
- Lcd1602ShowStr(0, 0, t0);
- Lcd1602ShowTempU16(0, 1, tDisp); // 調(diào)用LCD1602的顯示函數(shù)來顯示乘以100倍后的溫度值
- if(tt>22)
- { for(i=500;i>0;i--)
- {
- BuzzerOnOff();
- Led1=0;Led2=1;
- delay500us();
- Led1=1;Led2=1;
- }
- }
- else if(tt<18)
- { for(i=500;i>0;i--)
- {
- BuzzerOnOff();
- Led1=1;Led2=0;
- delay500us();
- Led1=1;Led2=1;
- }
- }
- else {Led1=1;Led2=1;beep=1;}
- }
- void BuzzerOnOff(void)
- {
- beep = 1;
- delay500us();
- beep = 0;
- delay500us();
- }
- void delay500us(void) //誤差 0us
- {
- unsigned char a,b;
- for(b=71;b>0;b--)
- for(a=2;a>0;a--);
- }
復(fù)制代碼
Proteus7.5版本的仿真圖下載:
溫度測量.zip
(109.04 KB, 下載次數(shù): 152)
2019-9-24 15:57 上傳
點擊文件名下載附件
溫度報警器
下載積分: 黑幣 -5
作者: 小仙帝 時間: 2019-11-6 17:43
需要用Proteus7.5打開才可以
作者: 前來求藥 時間: 2019-11-23 21:19
有原理圖和PCB嗎
作者: jianghaibing 時間: 2019-12-25 12:55
有總程序嗎
作者: heywhat 時間: 2020-3-4 08:51
非常不錯,結(jié)構(gòu)清晰容易讀懂。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |