




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、硬件电路设计(一)、硬件电路设计方案硬件电路的单片机芯片采用at89c51芯片,进行数据处理。数据采集部分的传感器采用ds18b20芯片数字温度传感器。总线驱动使用zlg7290b芯片,用六位七段led数码显示器显示测量的温度值,键盘按键s1实现测量控制,按下按键s1则刷新测量的温度值。系统硬件总体框图:ds18b20zlg7290bat89c51键盘led(二)、芯片介绍1、at89c51芯片at89c51是一种带4k字节闪存可编程可擦除只读存储器(fperomflash programmable and erasable read only memory)的低电压、高性能cmos 8位
2、微处理器,俗称单片机。at89c2051是一种带2k字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,at89c2051是它的一种精简版本。at89c单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示。2、 ds18b20芯片(1) ds18b20简介ds18b20是由美国dallas公司生产的单线数字温度传感器芯片。与传统的热敏电
3、阻有所不同,ds18b20可直接将被测温度转化为串行数字信号,以供单片机处理,它还具有微型化、低功率、高性能、抗干扰能力强等优点。通过编程,ds18b20可以实现912位的温度读数。信息经过单线接口送入ds18b20或从ds18b20送出,因此从微处理器到ds18b20仅需连接一条信号线和地线。读、写和执行温度变换所需的电源可以由数据线本身提供,而不需要外部电源。 (2) ds18b20的引脚功能ds18b20的引脚(图7-10),其功能如表7-8所示。 (3) ds18b20的主要特点v 采用单线技术,与单片机通信只需一个引脚;v 通过识别芯片各自唯一的产品序列号从而实现单线多挂接,简化了分
4、布式温度检测的应用;v 实际应用中不需要外部任何器件即可实现测温;v 可通过数据线供电,电压的范围在35.5v;v 不需要备份电源;v 测量范围为-55+125,在-10+85范围内误差为0.5;v 数字温度计的分辨率用户可以在9位到12位之间选择,可配置实现912位的温度读数;v 将12位的温度值转换为数字量所需时间不超过750ms;v 用户定义的,非易失性的温度告警设置,用用户可以自行设定告警的上下限温度。(4)ds18b20内部结构64位rom的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后位是前面56位的crc检验码,这也是多个ds18b20可以采用一线进行通
5、信的原因。温度报警触发器和,可通过软件写入户报警上下限。ds18b20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的eeram。高速暂存ram的结构为字节的存储器,结构如图3所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。ds18b20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。低位一直为,是工作模式位,用于设置ds18b20在工作模式还是在测试模式,ds18b20出厂时该位被设置为,用户要去改动,r1和0决定温度转换的精度位数,来设置分辨率
6、c64 位rom和单线接口高速缓存存储器与控制逻辑温度传感器高温触发器th低温触发器tl配置寄存器8位crc发生器vdd i/o图1 ds18b20内部结构3、zlg7290芯片zlg7290的核心是一块zlg7290b芯片,它采用i2c接口,能直接驱动8位共阴式数码管,同时可扫描管理多达64只按键,实现人机对话的功能资源十分丰富。除具有自动消除抖动功能外,它还具有段闪烁、段点亮、段熄灭、功能键、连击键计数等强大功能,并可提供10种数字和21种字母的译码显示功能,用户可以直接向显示缓存写入显示数据,而且无需外接元件即可直接驱动数码管,还可扩展驱动电压和电流。此外,zlg7290b的电路简单,使
7、用也很方便。 用户按下某个键时,zlg7290的int引脚会产生一个低电平的中断请求信号,读取键值后,中断信号就会自动撤销。正常情况下,微控制器只需要判断int引脚就可以得到键盘输入的信息。微控制器可通过两种方式得到用户的键盘输入信息。其一是中断方式,该方式的优点是抗干扰能力强,缺点是要占用微控制器的一个外部中断源。其二是查询方式,即通过不断查询int引脚来判断是否有键按下,该方式可以节省微控制器的一根io口线,但是代价是i2c总线处于频繁的活动状态,消耗电流多并且不利于抗干扰。zlg7290能够直接驱动8 位共阴式数码管(或64 只独立的led),同时还可以扫描管理多达64 只按键。其中有8
8、 只按键还可以作为功能键使用,就像电脑键盘上的ctrl、shift、alt 键一样。另外zlg7290b 内部还设置有连击计数器,能够使某键按下后不松手而连续有效。采用i2c 总线方式,与微控制器的接口仅需两根信号线。可控扫描位数,可控任一数码管闪烁。二、系统软件设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序,按键扫描子程序等。在参考程序的基础上,我对数值的显示方式进行了改进。在数值前有“+”、“”符号,小数部分改为显示两位小数,提高了精度。且百位为零时,显示符号。(一)软件算法分析1、主程序主程序的主要功能是负责温度的实时显示、读出并处理d
9、s18b20的测量的当前温度值,其程序流程见图2所示。y发ds18b20复位命令发跳过rom命令发读取温度命令读取操作,crc校验9字节完?crc校验正?确?移入温度暂存器结束nny初始化调用显示子程序s1按下?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令nyny图2 主程序流程图图3读温度流程图 2、读出温度子程序读出温度子程序的主要功能是读出ram中的9字节,在读出时需进行crc校验,校验有错时不进行温度数据的改写。其程序流程图如图3示3、温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序
10、延时法等待转换的完成。温度转换命令子程序流程图如图4所示发ds18b20复位命令发跳过rom命令发温度转换开始命令 结束图4 温度转换流程图4、计算温度子程序计算温度子程序将ram中读取值进行bcd码的转换运算,并进行温度值正负的判定,其程序流程图如图5所示。 开始温度零下?温度值取补码置“”标志计算小数位温度bcd值 计算整数位温度bcd值 结束置“+”标志ny 温度数据移入显示寄存器百位数为0?不显示百位,显示符号显示百位结束图5计算温度流程图 图6显示数据刷新流程图5、显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位
11、。程序流程图如图6。(二)仿真与调试1、软件调试,在keil软件上输入程序,进行编译、连接。2、在dp-51pro.net单片机仿真器、编程器、实验仪三合一综合开发平台上,连接硬件。dq 连p3.3,dat连 p1.7,scl连 p1.6,rest 连1.5,intt0连 p3.2。3、进行硬件仿真。4、仿真结果:运行程序,led首先显示六个p:“pppppp”;按下s1键,显示当时测量的室内温度:“+31.81”.;重复按下s1键,led刷新测量的温度值。 三、总结与体会在为期一周的电子方向课程设计中,我们要设计一个温度测量系统。软件使用keil软件进行仿真调试。硬件使用dp-51pro.n
12、et单片机仿真器、编程器、实验仪三合一综合开发平台上的ds18b20数字温度采集模块和zlg7290显示模块。张老师首先给我们详细讲解了芯片的功能和工作原理,并给了一份参考程序。在机房进行实验时,我先将参考程序进行仿真,结果正确。然后,我思考显示两位小数怎么改程序,初次修改没有成功,我询问了张老师,张老师给我讲解了思路,并知道我修改了程序。后来我又思考,怎样能百位为零时不显示而显示符号位,而百位不为零则显示。我修改程序,反复调试,最后成功了,心里非常高兴,这次是我独自思考,独立完成的,也使我对整个程序有了更深的理解。通过这次的课程设计作品的制作让我对单片机的理论有了更加深入的了解,同时在具体的
13、制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。通过这次实践使我更深刻的体会到了理论联系实际的重要性,我们在今后的学习工作中会更加的注重实际,避免称为只会纸上谈兵的赵括。 程序清单:;*; wdclxs program;*therml equ 30hthermh equ 31h;*dq bit p3.3dat bit p1.7clk bit p1.6rest bit p
14、1.5intt0 bit p3.2flag0 bit 0flag1 bit 1flag2 bit 2;* org 0 nop sjmp main org 0003h ljmp innt0 org 0030hmain: nop lcall dl750ms mov sp,#6fh mov r0,#127 clr amain1: mov r0,a djnz r0,main1 mov p3,#255 clr rest lcall dl750ms setb rest nop nop clr clk clr dat mov tcon,#0 setb it0 mov ie,#81h mov r0,#60h
15、mov r0,#5 ; disp 6 bit mov r5,#0dh mov r6,#1 lcall w7290 ; 设置7290 6位显示位lcall dl750mslcall dl750msmov r0,#40h mov r2,#6 mov a,#12h ;pmain2: mov r0,a inc r0 djnz r2,main2 lcall disp ;disp pppppp clr flag2main3: lcall ps1820 lcall tecov jnb flag2,main3 lcall disp0 sjmp main3;*ps1820: setb dqps18201:lca
16、ll in1820 ;1820 reset jnb flag0,ps1820 mov a,#0cch ;跳过rom lcall w1820 mov a,#44h lcall w1820 ;发温度转换命令 nop lcall dl750msto18201:setb dq lcall in1820 ;1820 reset jnb flag0,to18201 lcall dl60us mov a,#0cch lcall w1820 ;跳过rom mov a,#0beh ;发读温度命令 lcall w1820 lcall re1820 ret;*; 读ds1820 9字节子程序;* re1820: m
17、ov r0,#30h mov r2,#9re18201:mov r3,#8re18202:clr c setb dq nop nop clr dq nop setb dq mov r4,#6 djnz r4,$ mov c,dq mov r4,#23 djnz r4,$ rrc a djnz r3,re18202 mov r0,a inc r0 djnz r2,re18201 ret;*; 写一字节到1820;*w1820: mov r3,#8 clr c setb dq nop nopw18201: clr dq nop nop rrc a mov dq,c mov r4,#29 djnz
18、r4,$ setb dq nop djnz r3,w18201 ret;*; 1820初始化子程序;*in1820: setb dq nop clr dq mov r4,#245 ;延时490us djnz r4,$ setb dq mov r4,#32 ;延时70us djnz r4,$ jnb dq,in18201 clr flag0 retin18201:setb flag0 mov r4,#210 djnz r4,$ ;延时420us ret;*; ;延时60us子程序 ;*dl60us: mov r5,#30 djnz r5,$ ret;*; ;延时750ms子程序 ;*dl750m
19、s: mov r7,#75dl750ms1:mov r6,#10dl750ms2:mov r5,#250dl750ms3:nop nop djnz r5,dl750ms3 djnz r6,dl750ms2 djnz r7,dl750ms1 ret;*; 写7290子程序;*w7290: clr clk ;# ewr # nop clr dat mov r3,#10 ;control byte djnz r3,$ setb dat nop nop setb clk mov r3,#10 djnz r3,$ clr dat mov a,#70h ;start mov r1,#8 nop nopw2
20、4r1: clr clk rlc a mov r3,#4 djnz r3,$ mov dat,c mov r3,#10 djnz r3,$ setb clk mov r3,#8 djnz r3,$ djnz r1,w24r1 clr clk mov r3,#8 djnz r3,$ setb clk ;ack mov a,r5 ;address mov r1,#8 nop nop nopw24r2: clr clk rlc a mov r3,#10 djnz r3,$ mov dat,c mov r3,#10 djnz r3,$ setb clk mov r3,#8 djnz r3,$ djnz
21、 r1,w24r2 clr clk mov r3,#8 djnz r3,$ setb clk ;ackw24r4: mov a,r0 inc r0 ;data mov r1,#8w24r5: clr clk rlc a mov r3,#10 djnz r3,$ mov dat,c mov r3,#10 djnz r3,$ setb clk mov r3,#8 djnz r3,$ djnz r1,w24r5 mov r3,#8 djnz r3,$ clr clk mov r3,#8 djnz r3,$ setb clk ;ack mov r3,#8 djnz r3,$ djnz r6,w24r4
22、 clr clk mov r3,#10 djnz r3,$ clr dat mov r3,#8 djnz r3,$ setb clk mov r3,#8 djnz r3,$ setb dat ;stop clr clk nop nop clr datret;*; 读7290子程序;*r7290: clr clk ;# erd # nop nop clr dat ;eeprom read mov a,#70h ;control byte nop nop setb dat mov r3,#10 djnz r3,$ setb clk clr c mov r3,#10 djnz r3,$ clr da
23、t ;sartt mov r1,#8read1: clr clk mov r3,#10 djnz r3,$ rlc a mov dat,c setb clk mov r3,#10 djnz r3,$ djnz r1,read1 clr clk mov r3,#10 djnz r3,$ setb clk ;ack clr c mov r3,#10 djnz r3,$ mov a,r5 ;address mov r1,#8read2: clr clk mov r3,#10 ;control byte djnz r3,$ rlc a mov dat,c mov r3,#10 djnz r3,$ se
24、tb clk mov r3,#10 djnz r3,$ djnz r1,read2 clr clk mov r3,#10 djnz r3,$ setb clk ;ack mov r3,#10 djnz r3,$ clr clk setb dat clr c nop nop nop setb clk mov r3,#10 djnz r3,$ clr dat ;st mov a,#71h ;control byter244: mov r1,#8read3: clr clk rlc a nop nop nop mov dat,c mov r3,#10 djnz r3,$ setb clk mov r
25、3,#10 djnz r3,$ djnz r1,read3 clr clk mov r3,#10 djnz r3,$ setb clk ;ack clr c mov r3,#10 djnz r3,$ clr clkread6: mov r1,#8 clr a mov r3,#10 djnz r3,$read4: setb clk mov r3,#10 djnz r3,$ mov c,dat rlc a nop nop clr clk mov r3,#10 djnz r3,$ djnz r1,read4 mov r0,a inc r0 djnz r6,read5 clr dat mov r3,#
26、10 djnz r3,$ setb clk mov r3,#10 djnz r3,$ setb dat mov r3,#10 djnz r3,$clr clkclr dat retread5: clr dat mov r3,#10 djnz r3,$ setb clk mov r3,#10 djnz r3,$ clr clk mov r3,#10 djnz r3,$ setb dat sjmp read6;*; 计算温度值子程序;*tecov: mov a,31h ;取高4位测温值 jnb acc.7,tecov1 clr a clr c subb a,30h mov 30h,a clr a
27、subb a,31h mov 31h,a ;取补 setb flag1 ;温度为负值 sjmp tecov2tecov1: clr flag1 ;温度为正值tecov2: mov a,31h anl a,#07h swap a mov 31h,a mov a,30h anl a,#0f0h swap a orl a,31h mov 31h,a ;31h中存放二进制温度值,单位为度 mov 40h,#11h ;设温度为正值 jnb flag1,tecov3 mov 40h,#10 ;实际温度值为负值tecov3: mov a,31h mov b,#100 div ab mov 41h,a 存放百
28、位温度值 mov a,b mov b,#10 div ab mov 42h,a ;存放十位温度值 mov 43h,b ;存放个位温度值 mov a,30h mov dptr,#table1 movc a,a+dptr mov b,aswap aanl a,#0fh mov 44h,a ; 存放小数位温度值 mov a,b anl a,#0fh mov 45h,aret;*; 显示子程序;*disp0: mov r1,#41h cjne r1,#0,disp mov r0,#65h mov r0,#0 dec r0 mov r1,#40h mov dptr,#table2 mov a,r1 movc a,a+dptr m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 婚礼父亲致辞(15篇)
- 资料趣味运动会广播稿
- 财务管理培训心得体会
- 进入施工现场前安全教育
- 2025政府企业地产植树节暖场活动 趣种树主题活动策划方案
- 软件清洗流程
- 运营部 月度工作总结
- 铁路冬季防寒防冻安全知识
- 铅笔的使用安全
- 2022年中考数学模拟试题
- Unit+6+the+admirable+Lesson+2+History+Makers+说课高中英语北师大版(2019)必修第二册+
- 光伏发电项目试验检测计划
- 项目会议管理制度及流程
- 中国货权风险判例研究报告 2024 -供应链企业篇
- 中医医院医疗质控手册
- 2024年全国财会知识竞赛考试题库(浓缩500题)
- 车辆技术档案
- 物业管理中的矛盾调解与协商
- 数据标注工程-概念、方法、工具与案例 课件 第6章 文本数据标注
- DL-T300-2022火电厂凝汽器及辅机冷却器管防腐防垢导则
- DZ∕T 0270-2014 地下水监测井建设规范(正式版)
评论
0/150
提交评论