版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、/*-段P0,位P2。接線從低端開始,段a-h對應(yīng)P0.0-P0.7.位1,2.對應(yīng) P2.0-P2.7 -*/單片機:89CS52/晶振:12MH #include <AT89X52.h>#include "DS18B20.h"#define schar signed char#define uint unsigned int#define uchar unsigned char /宏定義sbit SET=P31; /定義調(diào)整鍵sbit DEC=P32; /定義減少鍵sbit ADD=P33; /定義增加鍵sbit jiawen=P36; /定義加溫bit s
2、hanshuo_st; /閃爍間隔標(biāo)志bit beep_st; /加溫間隔標(biāo)志uchar x=0; /計數(shù)器schar m,PD; /溫度值全局變量uchar n; /溫度值全局變量uchar set_st=0; /狀態(tài)標(biāo)志schar shangxian=50; /上限報警溫度,默認(rèn)值為50schar xiaxian=25; /下限報警溫度,默認(rèn)值為25ucharcode LEDData= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90;/共陽碼code LEDData1=0x40,0x79,0x24,0x30,0x19,0x12,0x02,
3、0x78,0x00,0x10;/共陽碼/*延時子程序*/void Delay(uint num)while( -num );/*初始化定時器0*/void InitTimer()TMOD=0x1;TH0=0x3c;TL0=0xb0; /50ms(晶振12M)/*定時器0 中斷服務(wù)程序*/void timer0(void) interrupt 1TH0=0x3c;TL0=0xb0;x+;/*外部中斷0 服務(wù)程序*/void int0(void) interrupt 0EX0=0; /關(guān)外部中斷0if(DEC=0&&set_st=1) if(DEC=0)Delay(80);/500
4、 if(DEC=0)shangxian-; do while(DEC=0);Delay(80);/while(DEC=0);if(shangxian<xiaxian) shangxian=xiaxian;else if(DEC=0&&set_st=2) if(DEC=0) Delay(80);/if(DEC=0)xiaxian-;do while(DEC=0);Delay(80);/while(DEC=0);if(xiaxian<0)xiaxian=0; /*外部中斷1 服務(wù)程序*/void int1(void) interrupt 2EX1=0; /關(guān)外部中斷1i
5、f(ADD=0&&set_st=1) if(ADD=0)Delay(80); /500if(ADD=0) shangxian+; do while(ADD=0);Delay(80);/500 while(ADD=0); if(shangxian>=99) shangxian=99;else if(ADD=0&&set_st=2) if(ADD=0)Delay(80); /if(ADD=0) xiaxian+;do while(ADD=0);Delay(80);/500while(ADD=0); if(xiaxian>shangxian)xiaxian
6、=shangxian;/*讀取溫度*/void check_wendu()uint a,b,c;c=ReadTemperature()-5; /獲取溫度值并減去DS18B20 的溫漂誤差a=c/100; /計算得到十位數(shù)字b=c/10-a*10; /計算得到個位數(shù)字m=c/10; /計算得到整數(shù)位n=c-a*100-b*10; /計算得到小數(shù)位if(m<0)m=0;n=0; /設(shè)置溫度顯示下限if(m>99)m=99;n=9; /設(shè)置溫度顯示上限/*顯示開機初始化等待畫面*/Disp_init()P0 = 0xbf; /顯示-P2 = 0xf7;Delay(200);P2 = 0x
7、fb;Delay(200);P2 = 0xfd;Delay(200);P2 = 0xfe;Delay(200);P2 = 0xff; /關(guān)閉顯示/*顯示溫度子程序*/Disp_Temperature() /顯示溫度P0 =0xc6; /顯示CP2 = 0xfe;Delay(200);P0 =LEDDatan; /顯示個位P2 = 0xfd;Delay(200);P0 =LEDData1m%10; /顯示十位P2 = 0xfb;Delay(200);P0 =LEDDatam/10; /顯示百位P2 = 0xf7;Delay(200);P2 = 0xff; /關(guān)閉顯示/*顯示報警溫度子程序*/Di
8、sp_alarm(uchar baojing)P0 =0xc6; /顯示CP2 = 0xfe;Delay(200);P0 =LEDDatabaojing%10; /顯示十位P2 = 0xfd;Delay(200);P0 =LEDDatabaojing/10; /顯示百位P2 = 0xfb;Delay(200);if(set_st=1)P0 =0x89;else if(set_st=2)P0 =0xc7; /上限H、下限L 標(biāo)示P2 = 0xf7;Delay(200);P2 = 0xff; /關(guān)閉顯示/*加降溫子程序*/void Alarm()if(x>=0) beep_st=beep_s
9、t; x=0; /if(m>=shangxian&&beep_st=1)|(m<xiaxian&&beep_st=1)/jiawen=0; /else /上下限兩頭加溫,中間不加溫/jiawen=1;if(m>=shangxian) /大于上限停止jiawen=1;if(m<=xiaxian)/當(dāng)降到下限才加溫 jiawen=0; /*主函數(shù)*/void main()uint z;InitTimer(); /初始化定時器EA=1; /全局中斷開關(guān)TR0=1; /啟動定時器0IT0=1; /定時器0脈沖觸發(fā)方式,下降沿有效IT1=1; /定
10、時器1脈沖觸發(fā)方式,下降沿有效check_wendu();check_wendu();for(z=0;z<300;z+)Disp_init();while(1)if(SET=0)Delay(600);/2000dowhile(SET=0);set_st+;x=0;shanshuo_st=1;if(set_st>2)set_st=0;if(set_st=0)EX0=0; /關(guān)閉外部中斷0EX1=0; /關(guān)閉外部中斷1check_wendu();Disp_Temperature();Alarm(); /加溫檢測else if(set_st=1)jiawen=1; /關(guān)閉加溫EX0=1;
11、 /開啟外部中斷0EX1=1; /開啟外部中斷1if(x>=10)shanshuo_st=shanshuo_st;x=0;if(shanshuo_st) Disp_alarm(shangxian);else if(set_st=2)jiawen=1; /關(guān)閉加溫EX0=1; /開啟外部中斷0EX1=1; /開啟外部中斷1if(x>=10)shanshuo_st=shanshuo_st;x=0;if(shanshuo_st) Disp_alarm(xiaxian); /*單片機89CS52*/#ifndef DS18B20_H#define DS18B20_H#include <
12、;AT89X52.h>#define uint unsigned int#define uchar unsigned char /宏定義sbit DQ=P37; /定義DS18B20 總線I/O/*延時子程序*/void Delay_DS18B20(int num)while(num-) ;/*初始化DS18B20*/void Init_DS18B20(void)uchar x=0;DQ = 1; /DQ 復(fù)位Delay_DS18B20(8); /稍做延時8DQ = 0; /單片機將DQ 拉低Delay_DS18B20(32); /精確延時,大于480us 80DQ = 1; /拉高總線
13、Delay_DS18B20(14); /14x = DQ; /稍做延時后,如果x=0 則初始化成功,x=1 則初始化失敗Delay_DS18B20(20); /20/*讀一個字節(jié)*/uchar ReadOneChar(void)uchar i=0;uchar dat = 0;for (i=8;i>0;i-)DQ = 0; / 給脈沖信號dat>>=1;DQ = 1; / 給脈沖信號if(DQ)dat|=0x80;Delay_DS18B20(4); /4return(dat);/*寫一個字節(jié)*/void WriteOneChar(uchar dat)uchar i=0;for (i=8; i>0; i-)DQ = 0;DQ = dat&0x01;Delay_DS18B20(5); /5DQ = 1;dat>>=1;/*讀取溫度*/uint ReadTemperature(void)uchar a=0;uchar b=0;uint t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); /跳過讀序號列號的操作WriteOneChar(0x4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版初中物理中考復(fù)習(xí)教學(xué)導(dǎo)學(xué)案 (全套含答案)
- 從《榜樣9》悟“四個帶頭”:對標(biāo)先進砥礪前行
- 能源項目風(fēng)險管理 課件 7-能源項目風(fēng)險監(jiān)控管理
- 小升初數(shù)學(xué)銜接教案講義
- 高一化學(xué)達(dá)標(biāo)訓(xùn)練:第三單元從微觀結(jié)構(gòu)看物質(zhì)的多樣性
- 吉林省吉林市普通中學(xué)2024-2025學(xué)年高三上學(xué)期二模試題 物理
- 2024高中地理第二章區(qū)域生態(tài)環(huán)境建設(shè)第1節(jié)荒漠化的防治-以我國西北地區(qū)為例2精練含解析新人教必修3
- 2024高中物理第四章電磁感應(yīng)4法拉第電磁感應(yīng)定律達(dá)標(biāo)作業(yè)含解析新人教版選修3-2
- 2024高考地理一輪復(fù)習(xí)第三部分區(qū)域可持續(xù)發(fā)展-重在綜合第四章區(qū)域經(jīng)濟發(fā)展第33講區(qū)域工業(yè)化與城市化學(xué)案新人教版
- 2024高考化學(xué)一輪復(fù)習(xí)第三章金屬及其化合物第二講鋁鎂及其重要化合物規(guī)范演練含解析新人教版
- 實驗儀器維修保養(yǎng)服務(wù)采購招標(biāo)文件
- 福建省福州市2023-2024學(xué)年高一1月期末生物試題(解析版)
- 四川省南充市2023-2024學(xué)年高一上學(xué)期期末考試 政治 含解析
- 江南大學(xué)《高等數(shù)學(xué)Ⅰ(1)》2021-2022學(xué)年第一學(xué)期期末試卷
- 合伙開店協(xié)議合同完整版
- 醫(yī)院藥品追溯管理制度
- 三甲醫(yī)院臨床試驗機構(gòu)GCP 2024消化內(nèi)科專業(yè)010急性藥物性腎損傷應(yīng)急預(yù)案
- 科學(xué)研究方法論學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 法律知識圖譜構(gòu)建
- 物理八年級上冊凸透鏡成像的規(guī)律(課件)
- 2024-2025學(xué)年新教材高中地理 第3單元 區(qū)域聯(lián)系與區(qū)域發(fā)展 第1節(jié) 大都市輻射對區(qū)域發(fā)展的影響-以上海市為例說課稿 魯教版選擇性必修2
評論
0/150
提交評論