ds18b20C程序proteus仿真参考模板

上传人:工**** 文档编号:485484220 上传时间:2023-05-26 格式:DOC 页数:11 大小:178KB
返回 下载 相关 举报
ds18b20C程序proteus仿真参考模板_第1页
第1页 / 共11页
ds18b20C程序proteus仿真参考模板_第2页
第2页 / 共11页
ds18b20C程序proteus仿真参考模板_第3页
第3页 / 共11页
ds18b20C程序proteus仿真参考模板_第4页
第4页 / 共11页
ds18b20C程序proteus仿真参考模板_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《ds18b20C程序proteus仿真参考模板》由会员分享,可在线阅读,更多相关《ds18b20C程序proteus仿真参考模板(11页珍藏版)》请在金锄头文库上搜索。

1、 / DS18B20测温显示,proteus仿真。Written by jinsongliang具体程序如下Main.c:#include#includelib51v3.c#include18b20.c#includesegv3.cvoid main (void)unsigned char disp5=10,0,0,14,2;signed char temp=0;while(1)/*1、读取温度值*/temp=Get_Temputer();/2、显示前处理*/if(temp0;n-);18b20.c:/*时序很重要,移植时注意延时函数*/#define B20_PORTP1/此处可以设置I/O

2、口#define B20_CHANNEL0#define R_B20_CHANNEL()B20_PORT&(1B20_CHANNEL)#define W_B20_CHANNEL_1()B20_PORT|=(1B20_CHANNEL)#define W_B20_CHANNEL_0()B20_PORT&=(1B20_CHANNEL)#define SKIP_ROM0xCC#define TEMPUTER_CONVERT0x44#define READ_ROM0xBE/one/*初始化函数,失败会返回1,初始化过程见注释若单片机读到了数据线上的低电平“0”后,还要做延时,其延时的时间从单片机发出的高

3、电平算起最少要480微秒。之后单片机将数据线再次拉高到高电平“1”后结束。*/static unsigned char Init_18b20 (void) unsigned char x=0;W_B20_CHANNEL_1(); /1、从单片机拉高数据线开始 Delay_Nus(8);/6*n useconds lib51v3.cW_B20_CHANNEL_0(); Delay_Nus(81); W_B20_CHANNEL_1(); /2、单片机拉低数据线480us以上,拉高数据线,释放 Delay_Nus(14);/3、之后ds18b20,1560us以后反应,拉高数据线 x=R_B20_C

4、HANNEL();/4、单片机读取数据线if(x)return x;Delay_Nus(20);return x;/x=0代表复位成功/twostatic void Write_18b20(unsigned char w_data) unsigned char i; unsigned char temp; for(i=0;i8;i+) W_B20_CHANNEL_1();temp=w_data&(10);W_B20_CHANNEL_0();/单片机从高到低,拉低1us以上,并在15us内产生写间隙B20_PORT=temp=1; W_B20_CHANNEL_1();Delay_Nus(4);

5、/threestatic unsigned char Read_18b20(void) unsigned char i; unsigned char temp;unsigned char r_data=0x00;for(i=0;i=1;W_B20_CHANNEL_1();W_B20_CHANNEL_0();/从高到低15us内,再到高,产生读间隙Delay_Nus(1);W_B20_CHANNEL_1();temp=B20_PORT(7-B20_CHANNEL);/读数据,从低位开始 temp&=(17);r_data+=temp;Delay_Nus(8); /整个读一位过程在60120us

6、W_B20_CHANNEL_1();return r_data; /four/*若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS温度转换时间。紧接着执行第二个周期为复位、跳过ROM指令、执行读RAM的存储器操作指令、读数据(最多为9个字节,中途可停止,只读简单温度值则读前2个字节即可)*/signed char Get_Temputer (void)/读取温度值,返回的带符号字符型-55到+127;128无法显示,初始化失败会显示00.C unsigned char tem_h,tem_l;signed char te

7、mp;if(Init_18b20()=0)/复位18b20Write_18b20(SKIP_ROM);/跳过ROM Write_18b20(TEMPUTER_CONVERT);/温度变换elsereturn temp=0;/Delay_Nus(100); if(Init_18b20()=0)/复位18b20Write_18b20(SKIP_ROM);/跳过ROMWrite_18b20(READ_ROM);/读暂存存储器elsereturn temp=0;tem_l=Read_18b20();/读数据 tem_h=Read_18b20(); /*只要高字符的低四位和低字符的高四位,温度范围099

8、,temp为补码,直接由unsigned char 赋值给 signed char 内容不变,代表的值改变*/temp=(tem_h4);return temp;Segv3.c:#define COMMON_ANODIC0/共阳数码管#define COMMON_CATHODAL 1/共阴数码管#define SEG_CATEGORY0/选择共阳数码管#define SEG8_A(10)/段A亮时为0,属共阳数码管#define SEG8_B(11)#define SEG8_C(12)#define SEG8_D(13)#define SEG8_E(14)#define SEG8_F(15)#

9、define SEG8_G(16)#define SEG8_DP(17)#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)#defineSEG8_CHAR_5(SEG8_B&SEG8_E&SEG8

10、_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 (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/#defineSEG8_CHAR_H#if SEG_CATEGORY=COMMON_ANODICstatic const unsigned char SEG8_CODE=SEG8_CHAR_0,SEG8_CHAR_1,SEG8_CHAR_2,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号