




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、【精品文檔】如有侵權(quán),請(qǐng)聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流ds18b20 C程序proteus仿真.精品文檔.DS18B20測(cè)溫顯示,proteus仿真。Written by jinsongliang具體程序如下Main.c:#include<reg51.h>#include"lib51v3.c"#include"18b20.c"#include"segv3.c"void main (void)unsigned char disp5=10,0,0,14,2;signed char temp=0;while(1)/*1、讀取溫度值
2、*/temp=Get_Temputer();/2、顯示前處理*/if(temp<0)disp0=13;temp=-temp;disp1=temp/10;disp2=temp%10;elsedisp0=temp/100;disp1=temp/10-disp0*10;disp2=temp%10;if(!disp0)/百位數(shù)不為0則顯示,若要顯示0,可將其注釋掉disp0=10;/3、顯示*/Seg_Display(disp);Lib51v3.cvoid Delay_Nus (unsigned char n)while(n-);/for (;n>0;n-);18b20.c:時(shí)序很重要,移
3、植時(shí)注意延時(shí)函數(shù)#define B20_PORTP1/此處可以設(shè)置I/O口#define B20_CHANNEL0#define R_B20_CHANNEL()B20_PORT&(1<<B20_CHANNEL)#define W_B20_CHANNEL_1()B20_PORT|=(1<<B20_CHANNEL)#define W_B20_CHANNEL_0()B20_PORT&=(1<<B20_CHANNEL)#define SKIP_ROM0xCC#define TEMPUTER_CONVERT0x44#define READ_ROM0xB
4、E/one初始化函數(shù),失敗會(huì)返回1,初始化過(guò)程見(jiàn)注釋若單片機(jī)讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時(shí),其延時(shí)的時(shí)間從單片機(jī)發(fā)出的高電平算起最少要480微秒。之后單片機(jī)將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。static unsigned char Init_18b20 (void) unsigned char x=0;W_B20_CHANNEL_1(); /1、從單片機(jī)拉高數(shù)據(jù)線開始 Delay_Nus(8);/6*n useconds lib51v3.cW_B20_CHANNEL_0(); Delay_Nus(81); W_B20_CHANNEL_1(); /2、單片機(jī)拉低數(shù)據(jù)線480us以
5、上,拉高數(shù)據(jù)線,釋放 Delay_Nus(14);/3、之后ds18b20,1560us以后反應(yīng),拉高數(shù)據(jù)線 x=R_B20_CHANNEL();/4、單片機(jī)讀取數(shù)據(jù)線if(x)return x;Delay_Nus(20);return x;/x=0代表復(fù)位成功/twostatic void Write_18b20(unsigned char w_data) unsigned char i; unsigned char temp; for(i=0;i<8;i+) W_B20_CHANNEL_1();temp=w_data&(1<<0);W_B20_CHANNEL_0(
6、);/單片機(jī)從高到低,拉低1us以上,并在15us內(nèi)產(chǎn)生寫間隙B20_PORT=temp<<B20_CHANNEL;/寫數(shù)據(jù),(先寫低位)Delay_Nus(7);/1560us內(nèi)18B20采樣 w_data>>=1; W_B20_CHANNEL_1();Delay_Nus(4); /threestatic unsigned char Read_18b20(void) unsigned char i; unsigned char temp;unsigned char r_data=0x00;for(i=0;i<8;i+) r_data>>=1;W_B2
7、0_CHANNEL_1();W_B20_CHANNEL_0();/從高到低15us內(nèi),再到高,產(chǎn)生讀間隙Delay_Nus(1);W_B20_CHANNEL_1();temp=B20_PORT<<(7-B20_CHANNEL);/讀數(shù)據(jù),從低位開始 temp&=(1<<7);r_data+=temp;Delay_Nus(8); /整個(gè)讀一位過(guò)程在60120us W_B20_CHANNEL_1();return r_data; /four若要讀出當(dāng)前的溫度數(shù)據(jù)我們需要執(zhí)行兩次工作周期,第一個(gè)周期為復(fù)位、跳過(guò)ROM指令、執(zhí)行溫度轉(zhuǎn)換存儲(chǔ)器操作指令、等待500uS溫度
8、轉(zhuǎn)換時(shí)間。緊接著執(zhí)行第二個(gè)周期為復(fù)位、跳過(guò)ROM指令、執(zhí)行讀RAM的存儲(chǔ)器操作指令、讀數(shù)據(jù)(最多為9個(gè)字節(jié),中途可停止,只讀簡(jiǎn)單溫度值則讀前2個(gè)字節(jié)即可)signed char Get_Temputer (void)/讀取溫度值,返回的帶符號(hào)字符型-55到+127;128無(wú)法顯示,初始化失敗會(huì)顯示00.C unsigned char tem_h,tem_l;signed char temp;if(Init_18b20()=0)/復(fù)位18b20Write_18b20(SKIP_ROM);/跳過(guò)ROM Write_18b20(TEMPUTER_CONVERT);/溫度變換elsereturn te
9、mp=0;/Delay_Nus(100); if(Init_18b20()=0)/復(fù)位18b20Write_18b20(SKIP_ROM);/跳過(guò)ROMWrite_18b20(READ_ROM);/讀暫存存儲(chǔ)器elsereturn temp=0;tem_l=Read_18b20();/讀數(shù)據(jù) tem_h=Read_18b20(); 只要高字符的低四位和低字符的高四位,溫度范圍099,temp為補(bǔ)碼,直接由unsigned char 賦值給 signed char 內(nèi)容不變,代表的值改變temp=(tem_h<<4)+(tem_l>>4);return temp;Segv
10、3.c:#define COMMON_ANODIC0/共陽(yáng)數(shù)碼管#define COMMON_CATHODAL 1/共陰數(shù)碼管#define SEG_CATEGORY0/選擇共陽(yáng)數(shù)碼管#define SEG8_A(1<<0)/段A亮?xí)r為0,屬共陽(yáng)數(shù)碼管#define SEG8_B(1<<1)#define SEG8_C(1<<2)#define SEG8_D(1<<3)#define SEG8_E(1<<4)#define SEG8_F(1<<5)#define SEG8_G(1<<6)#define SEG8
11、_DP(1<<7)#defineSEG8_CHAR_0(SEG8_G&SEG8_DP)#defineSEG8_CHAR_1 (SEG8_A&SEG8_D&SEG8_E&SEG8_F&SEG8_G&SEG8_DP)#defineSEG8_CHAR_2(SEG8_C&SEG8_F&SEG8_DP)#defineSEG8_CHAR_3(SEG8_E&SEG8_F&SEG8_DP)#defineSEG8_CHAR_4(SEG8_A&SEG8_D&SEG8_E&SEG8_DP)#defin
12、eSEG8_CHAR_5(SEG8_B&SEG8_E&SEG8_DP)#defineSEG8_CHAR_6(SEG8_B&SEG8_DP)#defineSEG8_CHAR_7(SEG8_D&SEG8_E&SEG8_F&SEG8_G&SEG8_DP)#defineSEG8_CHAR_8SEG8_DP#defineSEG8_CHAR_9(SEG8_E&SEG8_DP)#defineSEG8_CHAR_0#defineSEG8_CHAR_E(SEG8_B&SEG8_C&SEG8_DP)#defineSEG8_CHAR_R
13、 (SEG8_A&SEG8_B&SEG8_C&SEG8_D&SEG8_F&SEG8_DP)#define SEG8_CHAR_SUB (SEG8_A&SEG8_B&SEG8_C&SEG8_D&SEG8_E&SEG8_F&SEG8_DP)/#defineSEG8_CHAR_A/#defineSEG8_CHAR_B#defineSEG8_CHAR_C(SEG8_B&SEG8_C&SEG8_G&SEG8_DP)/#defineSEG8_CHAR_D/#defineSEG8_CHAR_F/#
14、defineSEG8_CHAR_H#if SEG_CATEGORY=COMMON_ANODICstatic const unsigned char SEG8_CODE=SEG8_CHAR_0,SEG8_CHAR_1,SEG8_CHAR_2,SEG8_CHAR_3,SEG8_CHAR_4,SEG8_CHAR_5,SEG8_CHAR_6,SEG8_CHAR_7,SEG8_CHAR_8,SEG8_CHAR_9,SEG8_CHAR_,/SEG8_CODE10SEG8_CHAR_E,/SEG8_CODE11SEG8_CHAR_R,/SEG8_CODE12SEG8_CHAR_SUB,/SEG8_CODE1
15、3SEG8_CHAR_C/SEG8_CODE14#elsestatic const unsigned char SEG8_CODE=SEG8_CHAR_0,SEG8_CHAR_1,SEG8_CHAR_2,SEG8_CHAR_3,SEG8_CHAR_4,SEG8_CHAR_5,SEG8_CHAR_6,SEG8_CHAR_7,SEG8_CHAR_8,SEG8_CHAR_9,SEG8_CHAR_,/SEG8_CODE10SEG8_CHAR_E,/SEG8_CODE11SEG8_CHAR_R,/SEG8_CODE12SEG8_CHAR_SUB,/SEG8_CODE13SEG8_CHAR_C/SEG8_
16、CODE14#endif#define SEG8_SLECT_PORTP3/此處可以設(shè)置I/O口#define BIT00#define BIT11#define BIT22#define BIT33#define SEG8_BIT0_ON()SEG8_SLECT_PORT|=(1<<BIT0)#define SEG8_BIT0_OFF()SEG8_SLECT_PORT&=(1<<BIT0)#define SEG8_BIT1_ON()SEG8_SLECT_PORT|=(1<<BIT1)#define SEG8_BIT1_OFF()SEG8_SLECT
17、_PORT&=(1<<BIT1)#define SEG8_BIT2_ON()SEG8_SLECT_PORT|=(1<<BIT2)#define SEG8_BIT2_OFF()SEG8_SLECT_PORT&=(1<<BIT2)#define SEG8_BIT3_ON()SEG8_SLECT_PORT|=(1<<BIT3)#define SEG8_BIT3_OFF()SEG8_SLECT_PORT&=(1<<BIT3)#define SEG8_CODE_PORTP2/此處可以設(shè)置I/O口void Seg_Display (char *p)unsigned char temp4;temp0=SEG8_CODE*p+;temp1=SEG8_CODE*p+;temp2=SEG8_CODE*p+;temp3=SEG8_CODE*p+;if(*p<4)#if SEG_CATEGORY=COMMON_ANODIC temp*p&=SEG8_DP;#elsetemp*p|=SEG8_DP;#endifunsigned char i;for(i=0;i<150;i+)SEG8_CODE_PO
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生態(tài)保護(hù)合作區(qū)間合作協(xié)議
- 二零二五年度自然人個(gè)人旅游借款合同生效與還款安排
- 二零二五年度房地產(chǎn)信托投資款退出與信托產(chǎn)品創(chuàng)新協(xié)議
- 布鞋批發(fā)企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 普通攝像機(jī)批發(fā)企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 鐵路沿線維護(hù)管理服務(wù)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 紙制餐具企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 2025年度智慧園區(qū)委托中介代理出租服務(wù)合同
- 防腐木枕企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 二零二五年度虛擬偶像用戶授權(quán)與商業(yè)合作協(xié)議
- 仁愛(ài)英語(yǔ)八年級(jí)下冊(cè)導(dǎo)學(xué)案全冊(cè)
- 電工基礎(chǔ)知識(shí)(全面)
- 馬克思主義社會(huì)科學(xué)方法論重點(diǎn)習(xí)題
- 危險(xiǎn)作業(yè)安全知識(shí)培訓(xùn)
- 關(guān)鍵施工技術(shù)、工藝與工程項(xiàng)目實(shí)施的重點(diǎn)、難點(diǎn)和解決方案
- WH/T 42-2011演出場(chǎng)所安全技術(shù)要求第2部分:臨時(shí)搭建演出場(chǎng)所舞臺(tái)、看臺(tái)安全技術(shù)要求
- GB/T 4292-2017氟化鋁
- GB/T 41-20161型六角螺母C級(jí)
- GB/T 3811-2008起重機(jī)設(shè)計(jì)規(guī)范
- GB/T 23445-2009聚合物水泥防水涂料
- CB/T 615-1995船底吸入格柵
評(píng)論
0/150
提交評(píng)論