中国高校课件下载中心 》 教学资源 》 大学文库

《单片机原理与应用》课程教学资源(学习资料)DS18B20测温头文件使用方法

文档信息
资源类别:文库
文档格式:DOCX
文档页数:3
文件大小:19.36KB
团购合买:点击进入团购
内容简介
《单片机原理与应用》课程教学资源(学习资料)DS18B20测温头文件使用方法
刷新页面文档预览

将LcD1602定义为头文件测温程片 #ifndef_LCD1602_H_ #include #define INT8U unsigned char #include #define INT16U unsigned int Hinclude"LCD1602.h" shit RS=P200- define INT8U nsigned char sbit RW=P21; #define INT16U unsigned int sbit EN=P2^2; sbit DQ=P3^4; void delay_ms(INT16U ms) INT8U Temp_value[]=[0x00,0x00); INT8U i:while(ms-)for (i=0:i0:us-) EN-O;) {-nop_0: while(lcd_status&x);} void write lcd command(INT8U cmd) INT8U Init DS18B20() (busy_wait(); INT8U status: EN=O:RS=0:RW=0: DQ=1;delayX(8): PO=cmd; DQ=0:delayX( EN=1;_nop_(;EN-O DQ=1;delayX(5): status=DQ;delayX(90) void write_lcd_data(INT8U dat) return status: fbusy wait(): INT8U Readonebyte() EN-O;RS-1;RW-O; INT8Ui,dat=0x00 PO-dat; 0012l=0x00,k>=1 code INTUDDRAM-(0x,) DQ=CY:delayX(8) write_lcd_command(DDRAM[r]c); DQ=1:} while (*str)(write_lcd_data(*str); s对r++ INT8U Read temp( i++} if(Init_DS18B20()==1)returnO; for(k<16;i++) else write_lcd_data();} (Writeonebyte(OxCC) #endif Writeonebyte(Ox44);

一、将 LCD1602 定义为头文件测温程序 #ifndef _LCD1602_H_ #define _LCD1602_H_ #define INT8U unsigned char #define INT16U unsigned int sbit RS=P2^0; sbit RW =P2^1; sbit EN=P2^2; void delay_ms(INT16U ms) {INT8U i;while(ms-)for (i=0;i #include #include #include"LCD1602.h" #define INT8U unsigned char #define INT16U unsigned int sbit DQ=P3^4; INT8U Temp_value[]={0x00,0x00}; INT8U Temp_disp_value[17]; void delay2_ms(INT16U ms) {INT8U i;while(ms-)for (i=0;i0;us-) { _nop_(); } } INT8U Init_DS18B20() {INT8U status; DQ=1;delayX(8); DQ=0;delayX(90); DQ=1;delayX(5); status=DQ; delayX(90); return status;} INT8U Readonebyte() {INT8U i,dat=0x00; for(i=0x01;i!=0x00;i>=1; DQ=CY;delayX(8); DQ=1; } } INT8U Read_temp() { if(Init_DS18B20()==1) return 0; else {Writeonebyte(0xCC); Writeonebyte(0x44);

Init_DS18B2O() Read_temp(): Writeonebyte(OxCC) delay ms(1500); Writeonebyte(OxBE): while(1) Temp valuelOl=Readonebyte() fif(Read temp()) Temp_value[1]=Readonebyte) (temp=(int)(Temp_value[1<8|Temp_va lue[0)*0.0625; /生程序 sprintf(Temp disp value,"TEMP:%5.1f\x void main() df x43"temp): (float temp ld_showstring(1,0,Temp disp_value);} ntafae_lcd0 delay_ms5oy: Icd_showstring(,0,"DSB18B20 TEST"): Icd showstring(1,0,"Waiting."); 1、新建一个文本文档,重新命名为LCD1602.h。打开后将LCD1602的所有子程序以及引脚 定义复制粘贴。在最开始添加语右句. #ifndef LCD1602 H #define_LCD1602_H. 最后面添加: #endif 2、在主文件里的最开始调用该头文件,语句为 #include"LCD1602.h" 3、其余不做动,编译,生产HEX文件即可

Init_DS18B20(); Writeonebyte(0xCC); Writeonebyte(0xBE); Temp_value[0]=Readonebyte(); Temp_value[1]=Readonebyte(); return 1; } } //主程序 void main() {float temp; initialize_lcd(); lcd_showstring(0,0," DSB18B20 TEST "); lcd_showstring(1,0," Waiting."); Read_temp(); delay_ms(1500); while(1) {if(Read_temp()) {temp=(int)(Temp_value[1]<<8|Temp_va lue[0])*0.0625; sprintf(Temp_disp_value,"TEMP: %5.1f\x df\x43",temp); lcd_showstring(1,0,Temp_disp_value); } delay_ms(50); } } 1、新建一个文本文档,重新命名为 LCD1602.h。打开后将 LCD1602 的所有子程序以及引脚 定义复制粘贴。在最开始添加语句, #ifndef _LCD1602_H_ #define _LCD1602_H_ 最后面添加: #endif 2、在主文件里的最开始调用该头文件,语句为 #include"LCD1602.h" 3、其余不做改动,编译,生产 HEX 文件即可

二、将LCD1602、DS18B20均写成头文件程序 #ifndef DSB18B20 H {Writeonebyte(OxCC); #define DSB18B20 H Writeonebyte(0x44); #define INT8U unsigned char Init_DS18B20(); #define INT16U unsigned int Writeonebyte(0xCC); sbit DQ=P3^4; Writeonebyte(OxBE); INT8U Temp_value[]=(0x00,0x00}; Temp_value[0]=Readonebyte(); INT8U Temp_disp_value[17]; Temp value[1]=Readonebyte(); void delay2_ms(INT16U ms) return 1; (INT8U i; while(ms-)for (i=0;i0;us-) 主文件 {_nop_0: #include } #include INT8U Init DS18B20() #include [INT8U status; #include"LCD1602.h" DQ=1;delayX(8); #include"DSB18B20.h" DQ=0;delayX(90); #define INT8U unsigned char DQ=1;delayX(5); #define INT16U unsigned int status=DQ;delayX(90); 川住程序 return status; void main() float temp; INT8U Readonebyte() initialize_lcd(); [INT8U i,dat=0x00; Icd_showstring(0,0,"DSB18B20 TEST for(i=0x01;il=0x00,ik=1; .1f xdf x43",temp); DQ=CY;delayX(8); Icd showstring(1,0,Temp disp valu DQ=1; e); } } delay_ms(50); } INT8U Read_temp() } 注意:在这里除了使用前面定义的 if(Init DS18B20()==1)return 0 LCD1602头文件外,又定义了DsB18B20 else 头文件。在主文件了直接调用就可以了

二、将 LCD1602、DS18B20 均写成头文件程序 #ifndef _DSB18B20_H_ #define _DSB18B20_H_ #define INT8U unsigned char #define INT16U unsigned int sbit DQ=P3^4; INT8U Temp_value[]={0x00,0x00}; INT8U Temp_disp_value[17]; void delay2_ms(INT16U ms) {INT8U i; while(ms-)for (i=0;i0;us-) { _nop_(); } } INT8U Init_DS18B20() {INT8U status; DQ=1;delayX(8); DQ=0;delayX(90); DQ=1;delayX(5); status=DQ; delayX(90); return status; } INT8U Readonebyte() {INT8U i,dat=0x00; for(i=0x01;i!=0x00;i>=1; DQ=CY;delayX(8); DQ=1; } } INT8U Read_temp() { if(Init_DS18B20()==1) return 0; else {Writeonebyte(0xCC); Writeonebyte(0x44); Init_DS18B20(); Writeonebyte(0xCC); Writeonebyte(0xBE); Temp_value[0]=Readonebyte(); Temp_value[1]=Readonebyte(); return 1; } } #endif 主文件 #include #include #include #include"LCD1602.h" #include"DSB18B20.h" #define INT8U unsigned char #define INT16U unsigned int //主程序 void main() {float temp; initialize_lcd(); lcd_showstring(0,0," DSB18B20 TEST "); lcd_showstring(1,0," Waiting."); Read_temp(); delay_ms(1500); while(1) {if(Read_temp()) {temp=(int)(Temp_value[1]<<8|Tem p_value[0])*0.0625; sprintf(Temp_disp_value,"TEMP: %5 .1f\xdf\x43",temp); lcd_showstring(1,0,Temp_disp_valu e); } delay_ms(50); } } 注意:在这里除了使用前面定义的 LCD1602 头文件外,又定义了 DSB18B20 头文件。在主文件了直接调用就可以了

已到末页,全文结束
刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档