版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、ip 口 口1ml P0I11AD1 PO.a.'AT'S P0 3AAD3: P0I4JAT4 PQ5JAE'5 POifcJADBR.7依07P2.1l/A9 PZAID pzarAH IPZ4/A12 P2.5/A13 P2WA14 P27/A1S28P3.RXD F3.1HXD P3.2r|NT0 P3,到府TT 3.4/10 K方不P三即破PJ TIT?口11以a 13 1金141丁VO 二GkD DS18B20測溫顯示,proteus仿真.Written by jinsongliang具體程序如下Main.c:#include<reg51.h>#
2、include"lib51V3.c"#include18b20.c#include"segv3.c"void main (void)unsigned char disp5=10,0,0,14,2;signed char temp=0;while(1)/*1、讀取溫度值*/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%
3、10;if(!disp0)/百位數(shù)不為0那么顯示,假設(shè)要顯示 0,可將其注釋掉disp0=10;/3、顯示*/Seg_Display(disp);Lib51v3.cvoid Delay_Nus (unsigned char n) (while(n-);/for (;n>0;n-);18b20.c:/*時序很重要,移植時注意延時函數(shù)*/#define B20_PORT#define B20_CHANNEL#define R_B20_CHANNEL()#define W_B20_CHANNEL_1()#define W_B20_CHANNEL_0()#define SKIP_ROM#defi
4、ne TEMPUTER_CONVERT#define READ_ROMP1/此處可以設(shè)置I/O 口0B20_PORT&(1<<B20_CHANNEL)B20_PORT|=(1<<B20_CHANNEL)B20_PORT&=(1<<B20_CHANNEL) 0xCC0x440xBE/one/*初始化函數(shù),失敗會返回1,初始化過程見注釋假設(shè)單片機(jī)讀到了數(shù)據(jù)線上的低電平“0后,還要做延時,其延時的時間從單片機(jī)發(fā)出的高電平算起最少要480微秒.之后單片機(jī)將數(shù)據(jù)線再次拉高到高電平“1后結(jié)束.*/static unsigned char Init_18b
5、20 (void)unsigned char x=0;W_B20_CHANNEL_1();Delay_Nus(8);W_B20_CHANNEL_0();Delay_Nus(81);W_B20_CHANNEL_1();Delay_Nus(14);x=R_B20_CHANNEL();/1、從單片機(jī)拉高數(shù)據(jù)線開始/6*n useconds lib51v3.c/2、單片機(jī)拉低數(shù)據(jù)線480us以上,拉高數(shù)據(jù)線,釋放/3、之后ds18b20, 1560us以后反響,拉高數(shù)據(jù)線/4、單片機(jī)讀取數(shù)據(jù)線if(x)return x;Delay_Nus(20); return x;/x=0代表復(fù)位成功/two st
6、atic 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(); 單片機(jī)從高到低,拉低 1us以上,并在15us內(nèi)產(chǎn)生寫間隙 B20_PORT=temp<<B20_CHANNEL; / 寫數(shù)據(jù),(先寫低位) Delay_Nus;/1560us 內(nèi) 18B20 采樣w_data>>=1; W_B20_
7、CHANNEL_1(); Delay_Nus(4); /three static 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_B20_CHANNEL_1(); W_B20_CHANNEL_0();/從高到低15us內(nèi),再到高,產(chǎn)生讀間隙Delay_Nus(1); W_B20_CHANNEL_1(); temp=B20_PORT<<(7-B20_CHANN
8、EL);/ 讀數(shù)據(jù),從低位開始temp&=(1<<7); r_data+=temp; Delay_Nus(8);/ 整個讀一位過程在 60120us)W_B20_CHANNEL_1();return r_data;) /four/*假設(shè)要讀出當(dāng)前的溫度數(shù)據(jù)我們需要執(zhí)行兩次工作周期,第一個周期為復(fù)位、跳過 ROM指令、執(zhí)行溫度轉(zhuǎn)換存儲器操作指令、等待500uS溫度轉(zhuǎn)換時間.緊接著執(zhí)行第二個周期為復(fù)位、跳過 ROM指令、執(zhí)行讀RAM的存儲器操作指令、讀數(shù)據(jù)(最多為9個字節(jié),中途可停止,只讀簡單溫度值那么讀前2個字節(jié)即可)*/signed char Get_Temputer (v
9、oid)/讀取溫度值,返回的帶符號字符型 -55到+127; 128無法顯示,初始化失敗會顯示 oo.cunsigned char tem_h,tem_l;signed char temp;if(Init_18b20()=0)Write_18b20(SKIP_ROM);Write_18b20(TEMPUTER_CONVERT);) elsereturn temp=0;Delay_Nus(100);if(Init_18b20()=0)Write_18b20(SKIP_ROM);Write_18b20(READ_ROM);) elsereturn temp=0;tem_l=Read_18b20()
10、;tem_h=Read_18b20();/ 復(fù)位 18b20/跳過ROM/溫度變換/ 復(fù)位 18b20/跳過ROM讀暫存存儲器讀數(shù)據(jù)/*099,temp 為補(bǔ)碼,直接由 unsigned char 賦值給 signed只要高字符的低四位和低字符的高四位,溫度范圍 char內(nèi)容不變,代表的值改變*/temp=(tem_h<<4)+(tem_l>>4);return temp;)Segv3.c#define COMMON_ANODIC#define COMMON_CATHODAL#define SEG_CATEGORY0/共陽數(shù)碼管1/共陰數(shù)碼管0/選擇共陽數(shù)碼管#defi
11、ne SEG8_A(1<<0)#define SEG8_B(1<<1)段A亮?xí)r為0,屬共陽數(shù)碼管#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_DP(1<<7)#defineSEG8_CHAR_0(SEG8_G&SEG8_DP)#defineSEG8_CHAR_1(SEG8_A&SEG8_D&SEG8
12、_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)#defineSEG8_CHAR_5(SEG8_B&SEG8_E&SEG8_DP)#defineSEG8_CHAR_6(SEG8_B&SEG8_DP)#defineSEG8_CHAR_7
13、(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(SEG8_A&SEG8_B&SEG8_C&SEG8_D&SEG8_F&SEG8_DP)#defineSEG8_CHAR_SUB(SEG8_A&SEG
14、8_B&SEG8_C&SEG8_D&SEG8_E&SEG8_F&SEG8_DP)/#defineSEG8_CHAR_A/#defineSEG8_CHAR_B#define SEG8_CHAR_C (SEG8_B&SEG8_C&SEG8_G&SEG8_DP)/#defineSEG8_CHAR_D/#defineSEG8_CHAR_F/#defineSEG8_CHAR_H #if SEG_CATEGORY=COMMON_ANODICstatic const unsigned char SEG8_CODE=SEG8_CHAR_0,/SE
15、G8_CODE10/SEG8_CODE11/SEG8_CODE12/SEG8_CODE13SEG8_CODE14SEG8_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_CHAR_E, SEG8_CHAR_R, SEG8_CHAR_SUB, SEG8_CHAR_C ;#elsestatic const unsigned char SEG8_CODE=/SEG8_CODE10/SEG8_C
16、ODE11/SEG8_CODE12/SEG8_CODE13SEG8_CODE14SEG8_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_CHAR_E, SEG8_CHAR_R, SEG8_CHAR_SUB, SEG8_CHAR_C;#endif#define SEG8_SLECT_PORT#define BIT00#define BIT11P3 /此處可以設(shè)置
17、I/O 口#define SEG8_BIT0_ON()#define SEG8_BIT0_OFF()#define SEG8_BIT1_ON()#define BIT22#define BIT33SEG8_SLECT_PORT|=(1<<BIT0)SEG8_SLECT_PORT&=(1<<BIT0)SEG8_SLECT_PORT|=(1<<BIT1)#define SEG8_BIT1_OFF()SEG8SLECT#define SEG8_BIT2_ON()#define SEG8_BIT2_OFF()SEG8_SLECTSEG8_SLECT#defi
18、ne SEG8_BIT3_ON()#define SEG8_BIT3_OFF()#define SEG8_CODE_PORTSEG8_SLECTSEG8_SLECTP2_PORT&=(1<<BIT1)_PORT|=(1<<BIT2)_PORT&=(1<<BIT2)_PORT|=(1<<BIT3)_PORT&=(1<<BIT3)/此處可以設(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*pFSEG8_DP;#endifunsigned char i;for(i=0;i<150;i+)SEG8_
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 景觀燈采購合同
- 二年級道德與法治上冊 我上二年級了 第2課《我為集體添光彩》教案 北師大版
- 2024-2025學(xué)年高中物理 第二章 原子結(jié)構(gòu) 3 光譜 氫原子光譜教案1 教科版選修3-5
- 2024年學(xué)年八年級語文上冊 第五單元 心靈詩語 第18課《采蓮曲》教案 滬教版五四制
- 2023三年級英語上冊 Unit 2 Colours Part B 第二課時教案 人教PEP
- 八年級政治下冊 第五單元 我是中國公民 5.1 我們都是公民情境探究型教案 粵教版
- 2024-2025學(xué)年高中物理 第四章 機(jī)械能和能源 5 機(jī)械能守恒定律教案1 教科版必修2
- 高考地理一輪復(fù)習(xí)第十九章環(huán)境安全與國家安全第一節(jié)環(huán)境安全、全球氣候與國家安全課件
- 最簡單的居間合同(2篇)
- 漢子人教版課件
- 期中測試題-2024-2025學(xué)年道德與法治六年級上冊統(tǒng)編版
- 《珍愛生命拒絕毒品》主題班會課件
- 2024年貴州畢節(jié)市委政法委所屬事業(yè)單位考調(diào)6人歷年高頻500題難、易錯點(diǎn)模擬試題附帶答案詳解
- 安全生產(chǎn)治本攻堅(jiān)三年行動方案2024~2026(工貿(mào))
- 人教版九年級數(shù)學(xué)下冊相似《相似三角形(第4課時)》示范教學(xué)課件
- 2024年新高考試題分析及2025屆備考策略建議課件
- 2024年供應(yīng)鏈管理師技能競賽理論考試題庫資料(含答案)
- 義務(wù)教育地理2022年版課程標(biāo)準(zhǔn)考試題庫及答案
- T-CRHA 049-2024 結(jié)核病區(qū)消毒隔離護(hù)理管理規(guī)范
- 華為質(zhì)量回溯(根因分析與糾正預(yù)防措施)模板
- 2024-2030年中國重水市場運(yùn)行態(tài)勢與未來競爭力剖析報(bào)告
評論
0/150
提交評論