版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、23 -?425 2040 仁1 2H 514 4IK114k715-XTAL2RST1 nALi曙一龍遵iff尸 0 OXADO PO 1XAD1P0 2XAD2 PO 3/AD3P0 倂D4P0 5XAD5P0EQD6 P0 7D7numrlPSEN ALEP2.A8 P2.VA9 P2.2CA10 P2.3fA11 P2 4fAl2 P2 5fA13 P2 6fA1 4 P2 7fAl5P1 1P1.2P1.3P14P1.5P1.6P1.7尸:a(RXD : in r.P3.2frjTOP3 3riNTT P3.4fT0 P3.3HPS.&vTTP3 7/RCfU2GND 圭亠全-esc
2、鈔136ZZKTALyP0 0JAD0U .AD1PO 222KTAL2P0 31AD3迅DS18B20测温显示,proteus仿真。Writte n by jinson glia ng具体程序如下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-);18b2
3、0.c :/* 时序很重要,移植时注意延时函数*/#define B20_PORT#define B20_CHANNEL#define R_B20_CHANNEL()#define W_B20_CHANNEL_1()#define W_B20_CHANNEL_0()#define SKIP_ROM#define TEMPUTER_CONVERT#define READ_ROMP1 / 此处可以设置 I/O 口0B20_PORT&(1B20_CHANNEL) B20_PORT|=(1B20_CHANNEL) B20_PORT&=(1B20_CHANNEL) 0xCC0x440xBE/one/*初
4、始化函数,失败会返回 1,初始化过程见注释 若单片机读到了数据线上的低电平“ 0”后,还要做延时, 其延时的时间从单片机发出的高电平算起最少要480 微秒。之后单片机将数据线再次拉高到高电平“1”后结束。*/static unsigned char Init_18b20 (void) unsigned char x=0;W_B20_CHANNEL_1();Delay_Nus(8);/1 、从单片机拉高数据线开始/6*n useconds lib51v3.cW_B20_CHANNEL_0();Delay_Nus(81);W_B20_CHANNEL_1();Delay_Nus(14);/2 、单片
5、机拉低数据线 480us 以上,拉高数据线,释放/3 、之后 ds18b20 ,1560us 以后反应,拉高数据线x=R_B20_CHANNEL();/4 、单片机读取数据线if(x)/x=0 代表复位成功return x; Delay_Nus(20); return x;/two static 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(); / 单片机从高到
6、低,拉低 1us 以上,并在 15us 内产生写间隙 B20_PORT=temp=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=1;W_B20_CHANNEL_1();W_B20_CHANNEL_0(); / 从高到低 15us 内,再到高,产生读间隙 Delay_Nus(1);W_B20_CHANNEL_1(); temp=B20_PORT(7-
7、B20_CHANNEL); / 读数据 , 从低位开始 temp&=(17);r_data+=temp;Delay_Nus(8); / 整个读一位过程在 60120us W_B20_CHANNEL_1();return r_data;/ 复位 18b20/ 跳过 ROM/ 温度变换/ 复位 18b20/ 跳过 ROM/ 读暂存存储器/ 读数据/four/* 若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过ROM旨令、执行温度转换存储器操作指令、等待500uS温度转换时间。紧接着执行第二个周期为复位、跳过ROM旨令、执行读RAM的存储器操作指令、读数据(最多为 9个字节,中
8、途可停止,只读简单温度值则读前2 个字节即可)*/signed char Get_Temputer (void) / 读取温度值,返回的带符号字符型 -55 到+127;128 无法显示,初始化失败会显示 00.C unsigned 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);Wri
9、te_18b20(READ_ROM); elsereturn temp=0;tem_l=Read_18b20(); tem_h=Read_18b20();/*只要高字符的低四位和低字符的高四位, 温度范围 099,temp 为补码,直接由 unsigned char 赋值给 signed char 内容不变,代表的值改变*/temp=(tem_h4);return temp;Segv3.c :#define COMMON_ANODIC#define COMMON_CATHODAL#define SEG_CATEGORY0/ 共阳数码管1/ 共阴数码管0 / 选择共阳数码管#define SEG
10、8_A(10)#define SEG8_B(11)#define SEG8_C(12)#define SEG8_D(13)#define SEG8_E(14)#define SEG8_F(15)#define SEG8_G(16)#define SEG8_DP(17)/ 段 A 亮时为 0,属共阳数码管#define SEG8_CHAR_0(SEG8_G&SEG8_DP)#define SEG8_CHAR_1(SEG8_A&SEG8_D&SEG8_E&SEG8_F&SEG8_G&SEG8_DP)#define SEG8_CHAR_2(SEG8_C&SEG8_F&SEG8_DP)#define
11、SEG8_CHAR_3(SEG8_E&SEG8_F&SEG8_DP)#define SEG8_CHAR_4(SEG8_A&SEG8_D&SEG8_E&SEG8_DP)#define SEG8_CHAR_5(SEG8_B&SEG8_E&SEG8_DP)#define SEG8_CHAR_6(SEG8_B&SEG8_DP)#define SEG8_CHAR_7(SEG8_D&SEG8_E&SEG8_F&SEG8_G&SEG8_DP)#define SEG8_CHAR_8SEG8_DP#define SEG8_CHAR_9(SEG8_E&SEG8_DP)#define SEG8_CHAR_0#def
12、ine SEG8_CHAR_E(SEG8_B&SEG8_C&SEG8_DP)#define SEG8_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 #define SEG8_CHAR_C (SEG8_B&SEG8_C&SEG8_G&SEG8_DP)/#defineSEG8_CHAR_D/#defineSEG8_CHAR_F
13、/#defineSEG8_CHAR_H#if SEG_CATEGORY=COMMON_ANODIC static 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_
14、CODE13 SEG8_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_CO
15、DE13 SEG8_CHAR_C/SEG8_CODE14;/ 此处可以设置 I/O 口#endif#define BIT0#define BIT1#define BIT2#define BIT3#define SEG8_BIT0_ON() #define SEG8_BIT0_OFF() #define SEG8_BIT1_ON()#define SEG8_BIT1_OFF()#define SEG8_BIT2_ON()#define SEG8_BIT2_OFF()#define SEG8_BIT3_ON()#define SEG8_SLECT_PORT P323SEG8_SLECT_PORT|
16、=(1BIT0)SEG8_SLECT_PORT&=(1BIT0)SEG8_SLECT_PORT|=(1BIT1)SEG8_SLECT_PORT&=(1BIT1)SEG8_SLECT_PORT|=(1BIT2)SEG8_SLECT_PORT&=(1BIT2)SEG8_SLECT_PORT|=(1BIT3)#define SEG8_BIT3_OFF() SEG8_SLECT_PORT&=(1BIT3)#define SEG8_CODE_PORT P2 / 此处可以设置 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(*p4)#if SEG_CATEGORY=COMMON_ANODIC temp*p&=SEG8_DP;#elsetemp*p|=SEG8_DP;#endifunsigned char i;for(i=0;i150;i+)SEG8_CODE_PORT = t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中英文设备维修合同范本(2024版)
- 2025年苗圃地租赁合同模板(含知识产权保护条款)
- 2025年度二手房交易房地产评估机构选择合同3篇
- 二零二五年度医疗设备销售佣金分红合同范本3篇
- 二零二五版电子商务知识产权保护合同签署4篇
- 二手房购买定金协议:2024年标准版版B版
- 二零二五版网络信息安全技术服务合同范本2篇
- 2025版新产品发布宣传片制作服务协议2篇
- 2025年度个人之间房屋买卖合同争议解决条款范本2篇
- 二零二五版月子中心婴儿早教及产后恢复服务合同2篇
- 光伏自发自用项目年用电清单和消纳计算表
- 量子计算在医学图像处理中的潜力
- 阿里商旅整体差旅解决方案
- 浙江天台历史文化名城保护规划说明书
- 逻辑思维训练500题
- 第八讲 发展全过程人民民主PPT习概论2023优化版教学课件
- 实体瘤疗效评价标准RECIST-1.1版中文
- 企业新春茶话会PPT模板
- GB/T 19185-2008交流线路带电作业安全距离计算方法
- DIC诊治新进展课件
- 公路工程施工现场安全检查手册
评论
0/150
提交评论