基于51单片机的数字温度计设计(编辑修改稿)内容摘要:
单片机访问 DS18B20 DS18B20 充当从机,单片机是主机,而单片机作为主机通过一线总线访问DS18B20需要经过以下步骤: 1. DS18B20复位指令; 2.执行 ROM指令; 3.执行 DS18B20功能指令( RAM指令)。 11 设计程序中需要用到的 DS18B20功能指令有: 1. 0xcc:跳过读序号列; 2. 0x44:启动温度转换; 3. 0xbe:读取温度寄存器。 DS18B20程序设计 图 18 DS18B20程序测温流程 DS18B20 可以精确到 ,对于正的温度直接将高八位和低八位进行整合,即可求出温度;对于负的温度,读出的高 8位的最高 4位代表了温度的符号位( 0000则代表温度为正, 1111 代表了温度为负),可以对这 4位进行判断,如果为 1111,说明温度为负,则需要将 temp 取反再补 1,图 18 为 DS18B20 程序测温流程图。 秒表程序设计 秒表程序实现的是计时功能,分为 4位显示:分十位,分个位,秒十位,秒个位。 把定时器的定时时间定为 50ms, 这样,计数溢出 20次即可得到时钟的最小计时单位 秒 (若计数 2 次则得到的秒表精度为 ); 秒计时是采用中断方式进行溢出次数的累积,计满 20 次,即得到秒计时。 当秒计时到“ 59”时,秒清零,分个位加“ 1”。 图 19为秒表计时程序流程图。 12 图 19 秒表计时程序流程图 按键功能 设计中共有 5 个按键,其中一个用于对 AT89C51 的复位,当按键按下时复位成功;另外四个按键分别定义为 KEY1—— 测温, KEY2—— 秒表, KEY3——秒表暂停 /开始, KEY4—— 秒表清零;图 20为按键处理流程图。 图 20 按键处理流程 程序开始: KEY1按下:测温功能,显 示温度为 (正温度)或 (负温度); KEY2按下:开始秒表计时,显示当前计时 xx分, xx秒; KEY3按下:定时器 0的定时控制位 TR0=~TR0,开始时 TR0=1,第一次按下时,秒表暂停,以后每次按下, TR0取反,即第二次按下, TR0=1,则实现秒 13 表开始计时; KEY4按下:关定时器中断,使定时器定时控制位置 0,令 min和 sec为零,即实现清零。 3 系统测试 测试方案 1.硬件测试 把系统板分为几个部分,分别单独测试,然后再整体测试。 2.软件仿真测试 利用软件仿真,分别 实现温度测试,秒表测试,按键测试。 3. 软件硬件联合测试 把程序下载到 C51单片机上,进行系统测试。 具体操作:将写好的 C程序通过单片机开发板下载到 AT89C51上,再将单片机安装在系统板上,供 5v直流电,操作按键看是否能进行测温和秒表功能。 测试条件与仪器 测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。 硬件测试仪器:万用表,直流稳压电源、示波器 、单片机开发板 ; 测试结果及分析 Protus 仿真测试(见附页): 综合测试(如图 21) : 分别显示:温度为 ; 秒表计时到 146秒。 14 测空气中的温度 秒表计时 图 21 综合测试 图 刚开始测试的时候,发现数码管不够亮,后来自己查找了许多资料,找到了原因:三级管驱动没有工作,后来我自己用面包板焊接了一个三极管驱动,再修改了程序进行检测,最后数码管能很好的显示温度;结合自己的系统板,我将单片机的 P2口作为数码管的位选端,重新设计了一下原有的驱动,采用 1k电阻和S9012 PNP型三级管。 最后我在系统的供电端加入了迷你 usb接口,这样整个系统就能采用 usb接口与电脑连接和手机充电器供电。 结合软件和硬件的测试结果看,该温度计能实现对温度的测量,并且能随接触物的温度改变而改变。 4 系统特色 系统的特色主要有:采用多种供电方式,采用迷你 USB 接口能实现多种方式的使用,如:手机充电器,电脑,手机等;采用数字温度传感器 DS18B20 更精确的获得温度值;在测量温度功能的基础上加入了秒表计时的功能,秒表可用于长时间的计时,并且用户可以通过按键实现功能之间的相互转换。 5 心得和体会 通过这次 对数字温度计的设计,我发现自己还有许多需要加强的地方,比如:画 PCB板和画原理图;缺少对以前许多学过的 C语言、模电等课程的温习;过 15 程中我也查找了许多资料,同时我也学到了许多东西,在调适过程中,动手写程序和改程序,一步步将结果调适出来,在动手能力和解决问题能力的有所提高。 更重要的是团队的协作,有这样一句话: 如果我用个人的能力,可以赚一个亿,可能 100%是我的;但我用十个人的时候,我们可能赚到十个亿,可能我只有 10%,我同样是一个亿,但我们的事业变大了。 在做这次课题的过程中,我明白了一个人的力量是有限的,只有协 调好团队才能获得最多的成就。 6 参考文献 1.电子技术基础模拟部分 /康华光主编 2.单片微机原理、汇编与 C51及接口技术 清华大学出版社 3. C程序设计(第三版) 谭浩强(著) 清华大学出版社 16 附录 1:电路原理图 附录 2:实物图 17 附录 3:仿真测试图 温度仿真测试:显示 秒表仿真测试: 18 附录 4:源程序 /******************************************************************* 程序说明: 主要两大功能: DS18B20测温,秒表计时(精确到秒); 显示:测温显示为 () 温度为正,最后一位显示字母 C; 温度 为负,最后一位显示字母 E; 秒表显示为 xx分 xx秒;当秒增加到 59时,秒清零,分 +1;精度为秒; 按键说明:按键 1— KEY1 选择测温功能。 按键 2— KEY2 选择秒表功能; 按键 3— KEY3 按下秒表暂停,再次按下秒表开始; 按键 4— KEY4 按下秒表清零; ********************************************************************/ include include define uchar unsigned char define uint unsigned int /*******************变量定义 ***********************/ sbit KEY1 = P1^0。 //按键,低有效; KEY1—— 测温, KEY2—— 秒表; sbit KEY2 = P1^1。 sbit KEY3 = P1^2。 //秒表模式暂停 sbit KEY4 = P1^3。 //秒表开始 sbit DQ = P3^3。 //原理图中 ds18b20接 INT1, INT1为 ; sbit wei4 = P2^7。 //位选口 sbit wei3 = P2^6。 sbit wei2 = P2^5。 sbit wei1 = P2^4。 19 uchar flagnum。 //按键标志 uchar wenbiao。 //温度标志,温度为负 wenbiao=0。 温度为正 wenbiao=1。 uchar min,sec。 //秒表分、秒 uchar k。 //定时 50ms uint temp。 //温度变量 /**********共阳极数码管 不含小数点 编码 *************/ uchar code Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}。 /**********共阳极数码管 不含小数点 编码 *************/ uchar code Tab1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}。 /*******************函数声明 ***********************/ void Delay_ms(uint n)。 //毫秒延时 void Delay_us(uchar n)。 //微秒延时 void Display2()。 //分、秒显示 void System_Ini()。 //定时器 0初始化 void timer0 ()。 //定时器 0中断 1 void DS18b20_Reset()。 //DS18b20复位 bit Read_bit()。 //读 1位 uchar DS18b20_Read()。 //读 1个字节 void Write_bit(bit bitval)。 //写 1位 void DS18b20_Write(uchar byte)。 //写 1个字节 void Changtemp()。 //开启温度转换 uchar Readtemp()。 //读取温度 void Display1(uint z)。 //温度显示 void Wenduji()。 //温度计 uchar Keycheck()。 //按键检测 void Key_ser(uchar num)。 //按键实现功能转换 /********************************************* 函数名称: void main()。基于51单片机的数字温度计设计(编辑修改稿)
相关推荐
01 9 图 23 74HC573 芯片引脚图 触摸按键介绍 本次无线记分器设计采 用的是一款 TTP226 触摸式按键, KEY1KEY8 接口与TTP226 的 D0D7 输入接口连接,输出接口 Q0Q7 与 OUT1OUT8 接口相连,将其安置在记分器的无线发射端来控制 A、 B 两队的加减分。 这是一种接触板检测 IC,一共提供了八个触摸按键,并且内含八个指示灯,每个按键对应一个指示灯
OpenCORE,支持多种常用的音频、视频格式回访和录制,同时支持静态图像文件。 3) Surface Manager:管理显示子系统,为多个应用程序提供 2D和 3D图层的无缝融合。 4) SGL:底层的 2D图形引擎。 5) 3D libraries:基于 OperGL ,可以使用硬件 3D加速或高度优化 5 的软件 3D加速。 6) RreeType:位图和矢量字体显示。 7)
a 开发工具( Java Development Tools,JDT)。 虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。 Eclipse 还包括插件开发环境( Plugin Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse
据的高 4位代表音符对应的序列号,低 4 位代表节拍数 //例如 0x82,表示第八个音符 ,延时两个节拍 uchar code Music_One[]={ 0x02,0x82,0x16,0x32,0x54,0x02,0x52,0xA6,0x32,0x54,0x02,0x52,0x64,0x74,0xB6,0x64,0x52,0x5C,0x32,0x22,0x16,0x12,0x14,0x32
拉电阻,某个引脚被外部信号拉低时会输出电流( IIL)。 P3 口同时具有 AT89C51 的多种特殊功能,具体如下表 1所示 : 端口引脚 第二功能 RXD (串行输入口 ) TXD(串行输出口) 0INT (外部中断 0) 1INT (外部中断 1) T0(定时 器 0) T1(定时器 1) WR (外部数据存储器写选通) RD(外部数据存储器都选通) 表 1 P3口的第二功能 •RST
动作出现干烧等缺点。 CWVH0510水流量传感器在智能数码热泵系统中的应用 湛江中信电磁阀有限公司口径为 3cm 的 CWVH0510 型水流量传感器,它价格较低,体积小、重量较轻便于携带,而实际生活应用中可以根据自己的需要,定制口径和接线端连接方式和线路长短。 CWVH0510 型水流量传感器如图 210 所示: 12 图 210 CWVH0510型水流量传感器