数字式温度计系统设计_第1页
数字式温度计系统设计_第2页
数字式温度计系统设计_第3页
数字式温度计系统设计_第4页
数字式温度计系统设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字式温度计系统设计课程设计姓名:许红升 专业:通信工程 学号:P01214179 性别: 男 邮箱:466570324 联系方式指导老师:李斌 张宏伟 一、最终要实现的设计要求(或摘要)1、以微机系统作为主控,利用并行输入输出接口芯片对温度计的控制时序进行模拟,实现温度采集、处理、数据显示等功能。2、 为了充分理解温度计DS18B20的控制时序并实现正确的时序模拟,前期先用自己较为熟悉的MC9S128XS128单片机作为微控制器,采集温度数据,并显示在高精度OLED上。为后期用微机系统采集温度打好基础。3、 比较用微机系统与单片机作为主控进行温度采集的相同点和不同点

2、。二、内容设计(方法论)1、硬件电路(微机系统)1.1硬件电路方案论证n 方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用微机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。n 方案二由于现在市场上有很多集成的温度传感器,有模拟温度传感器,如AD590,也有数字式温度传感器,如DS18B20。DS18B20采用单总线协议,内部集成了较高精度的A/D转换器,采用数字量输出。通过比较以上两种方案,并从简化外围电路以及保证较高精度的角度出发,最终确定方案二

3、,即采用数字式温度传感器DS18B2O。1.2硬件框图硬件电路总体框图如下。主控采用8086微机系统,温度计采用数字式的DS18B20,通过并行输入输出接口芯片8255对温度计的时序进行模拟,将采集到的数据显示在七段数码管上。并行输入输出接口芯片8255DS18B20LED控制器8086微机系统数码管显示模块时钟源热源控制图1、硬件框图1.3电路原理图本设计涉及的电路有温度测量/控制电路、8255接口电路、LED控制电路、数码管显示电路等。采用Altium designer绘制部分电路原理图如下:图2、温度测量/控制电路原理图图3、数码管显示电路图4、8279键盘/LED控制器2、软件设计(微

4、机系统)2.1程序设计思路控制程序设计思路说明:本程序主要功能分为初始化、读温度量、写操作及LED的显示输出。 初始化主要实现写8255方式控制字,设置控制字为89h,,即10001001,8255芯片工作于方式0,PA口作输出段选, PB口作输出位选,PC口作为输入。 然后向DS18B20发送读温度指令,准备读温度前先复位,跳过ROM匹配,发出读温度命令,调用读18B20子程序, 先读低8位再读高8位,读出转换后的温度值存在AX中。再调用显示子程序,将温度值显示出来。实现二进制到十六进制数字型码的转化主要通过二进制数从段选码中查表找出相应的字型码并从8255中送出在LED显示器中显示。2.2

5、软件流程图2.2.1主程序流程图开始初始化8255调用启动DS18B20子程序CF=1延时1SYN调用读温度子程序BCD码数据转换、数码管消隐图5、主程序流程图2.2.2读DS18B20子程序由于DS18B20采用的是单总线协议,为了读取到DS18B20的内部数据,在查阅DS18B20的数据手册里描述的控制时序,汇编程序中利用8255对控制时序进行模拟。为了正常模拟时序,延时语句显得非常重要,这直接决定所编写的时序是否符合DS18B20的单总线协议的要求。程序流程图如下:N开始8->CX8255控制口地址->DX80H->ALAL->DX(0->PC0)89H-&

6、gt;ALAL->DX(PC口输入)NOPNOPNOP8255PC口地址->DXDX->ALROR AL,1RCR BL,1CX-1=0BL->AL返回Y 图6、读DS18B20程序流程3、硬件电路(单片机)3.1、MC9S12XS128介绍及电路原理图因为之前参加比赛的过程中学习过几款单片机,如8位的51单片机、飞思卡尔公司的16位MC9S12XS18和32位的MK60DN512LL10、microchip公司的8位PIC单片机。这几款单片机各有特点,其中我更倾向于使用16位的MC9S12XS128微控制器。该款单片机相比51单片机,不仅有更高的处理速度以及更多的双向

7、I/O口,同时内部集成了很多接口电路,如AD转换器,IIC、SPI、CAN总线等。下面为MC9S12XS128的封装图:图7、MC9S12XS128封装(112LQFP)为了更快的熟悉DS18B20的功能和使用方法,在课程设计前期我采用MC9S12XS128单片机作为主控,并搭建相关外围电路,如高精度的OLED的显示电路。下面为部分电路原理图:图8、MC9S12XS128核心板图9、DS18B20温度采集电路图10、高精度OLED与MC9S12XS128的连接图3.2、OLED简介OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Or

8、ganic Electroluminesence Display, OELD)。因为具备轻薄、省电等特性,因此从 2003 年开始,这种显示设备在 MP3播放器上得到了广泛应用,而对于同属数码类产品的 DC 与手机,此前只是在一些展会上展示过采用 OLED 屏幕的工程样品。自 2007 年后,寿命得到很大提高,具备了许多 LCD 不可比拟的优势。下面为OLED的外观图:图11、OLED外观图4、开发环境(单片机) 以IAR System公司的IAR for ARM 为开发环境,该IDE适用很多半导体厂商的上百种微控制器、微处理器等,具有友好的设计界面,集成了编辑器、编译器、模拟器等。软件界面如

9、下:图12、IAR界面5、测试结果图(单片机)图13、测试结果三、设计说明微机系统设计部分所使用的系统资源介绍如下:1、8086微处理器及其体系结构1.1、8086微处理器的一般性能特点 (1) 16位的内部结构,16位双向数据信号线; (2)20位地址信号线,可寻址1M字节存储单元; (3)较强的指令系统; (4)利用第16位的地址总线来进行I/O端口寻址,可寻址64K个I/O端口; (5)中断功能强,可处理内部软件中断和外部中断,中断源可达256个;(6)单一的5V电源,单相时钟5MHz。 另外,Intel公司同期推出的Intel8088微处理器一种准16位微处理器,其内部寄存器,内部操作

10、等均按16位处理器设计,与Intel8088微处理器基本上相同,不同的是其对外数据线只有8位,目的是为了方便地与8位I/O接口芯片相兼容。1.2、8086CPU的编程结构编程结构:是指从程序员和使用者的角度看到的结构,亦可称为功能结构。从功能上来看,8086CPU可分为两部分,即总线接口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)。8086CPU的内部功能结构如图14所示:图14、8086CPU内部功能结构图1.3、8086CPU引脚图8086CPU采用40条引脚的双列直插(DIP)封装,如图15所示,由于有16条数据总线,20条地址总线,一

11、些引脚必须分时复用。图15、8086CPU引脚图2、并行输入输出接口芯片82552.1、8086的可编程外设接口电路8255的数据口D0-D7与CPU的6根控制线相连接,控制8255A内部的各种操作。控制线RESET用来使8255A复位。CS和地址线A1及A0用于芯片选择和通道寻址。分别与8086的高位地址线A19,A1,A0相连接。 图16、 8086的可编程外设接口电路2.2、8255A并行IO接口8255A芯片内包含有3个8位的端口,它们是A口,B口和C口。这3个端口均可作为CPU与外设通讯时的缓冲器或锁存器,当需要“状态”或“联络”信号时,C口可以提供,此时,将C口的高4位为

12、A口所用,C口的低4位为B口所用。3个端口通过各自的输入/输出线与外设联系。并行输入/输出端口:一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口。具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB 口和PC口。它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4PC7),B组包括B口及C口(低4位,PC0PC3)。A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定。 8255引脚功能:RESET:复位输入线

13、,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被 清除,所有I/O口均被置成输入方式。CS:芯片选择信号线,当这个输入引脚为低电平时,即CS=0时,表示芯片被选中,允许8255与CPU进行通讯;CS=1时,8255无法与CPU做数据传输。RD:读信号线,当这个输入引脚为低电平时,即RD=0且CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。   WR:写入信号,当这个输入引脚为低电平时,即WR=0且CS=0时,允许CPU将数据或控制字写入8255。  D0D7:三态双向数据总线,82

14、55与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。    PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。   PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口, 每个4位的端口包含

15、一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。  A0、A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。   当A0=0,A1=0时,PA口被选择;  当A0=0,A1=1时,PB口被选择;   当A0=1,A1=0时,PC口被选择; 当A0=1。A1=1时,控制寄存器被选择。3、温度传感器3.1、DS18B20简介DALLAS 最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多

16、种场合、且适用电压更宽、更经济。DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55+125 摄氏度,可编程为9位12 位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;多个DS18B20可以并联到3 根或2 根线上,CPU只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个

17、测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。表1、  DS18B20分辩率的定义规定由表1可见,DS18B20温度转换的时间比较长,而且设定的分辩率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要将分辩率和转换时间权衡考虑。3.2、DS18B20内部框图图17、DS18B20内部框图DS18B20依靠一个单总线端口通讯。在单线端口条件下,必须先建立ROM操作协议,才能进行存储器和控制操作。因此,控制器必须首先提供下面5个ROM操作命令之一:1)读ROM,2)匹配ROM,3)搜索ROM,4)跳过ROM,5)报警搜索。这些命令对每个期间

18、的激光ROM部分进行操作,在单总线上挂有多个器件时,同时可以向总线控制器指明有多少个器件或是什么型号的器件。成功执行完一条ROM操作序列后,即可进行存储器和控制操作,控制器可以提供6条存储器和控制操作指令中的任一条。一条控制操作命令指示DS18B20完成一次温度测量。测量结果放在DS18B20的暂存器里,用一条读暂存器内容的存储器操作命令可以把暂存器中数据读出。温度报警触发器TH和TL各有一个EEPROM字节构成。如果没有对DS18B20使用报警搜索命令,这些寄存器可以作为一般用途的用户存储器使用。可以用一条存储器操作命令对TH和TL进行写入,这些寄存器的读出需要通过暂存器。所有数据都是以最低

19、有效位在前面的方式进行读写。3.3、DS18B20读写时序图18、DS18B20读写时序四、可提炼的可验证性数据本次课程设计微机系统设计部分主要以实验室的微机原理及接口技术试验箱为平台。在硬件电路调试过程中,利用示波器来测试相关波形是否正确;调试程序时,利用星研集成开发环境集成的模拟调试器对程序进行调试。经过几天的努力,最终完成了整个数字温度计微机系统设计任务。1、实验效果图2、示波器调试五、最终结论课程设计的这几天里,经过查阅资料、方案选择、设计电路、编写汇编程序、调试电路、软件调试,最终将数字式温度计的微机系统设计任务完成了。整个系统能实时地读取当前的温度,并显示在数码管上。六、小结和以前

20、的所有课程设计不同的是,这是我第一次利用微机进行系统设计,从以前使用C语言进行程序设计到这次的利用汇编语言编写程序,使我们从中学会了很多知识。本次课程设计使我们学会了微机原理、汇编程序编写和对其他器件的认识。在课设过程中,我们不仅认识到了微机系统的构架,而且通过不断查阅相关资料,学会了微机的应用。可以说,通过这次微机系统的实践学习,我们学到了很多,而且对微机的有关知识以及其在现实生活中的多方面应用有了更深层次的认识,这对于我们以后的学习和步入社会后参加工作都有很大的帮助。 在此次课程设计的进程中,我遇到了很多问题,例如,一开始我们在确定课设题目后,不知道怎么把温度显示在数码管上,用什

21、么元件来采集温度,还有微机该如何控制DS18B20;对新器件DS18B20智能测温的相关知识我们很模糊甚至可以说一无所知,不过后来,我们通过查找一些相关的资料书以及寻求基地同学的帮助,终于用Altium designer将原理图绘制出来以及写出正确的程序。在仿真时,由于我们有了之前的数模电课设仿真经验,所以此时我们课设进行的很顺利,并没有受到什么大的阻碍。 通过此次微机课程设计,从找资料到原理图的绘制再到去实验室做板,我们明白了很多,理论指导实践,但是理论也需要实践给予证明,凡事都要通过自己的思考推敲和动手去做,否则自己不会取的大的进步。而且在平时的学习生活中应该多和周围的同学相互学

22、习,交流经验,遇到不会的东西时,切忌焦躁,首先要经过自己的独立思考,有了一定想法后,可以去查找相关的资料书刊或者找同学讨论,如果实在解释不了,再去找辅导老师,在这个遇到问题解决问题的过程中,不断加强自我的动脑能力,进而去指导动手能力,也只有这样,你才能学到真正的知识!附录1、微机系统汇编程序assume cs:code,ds:_data,ss:_stackmov ax,_datamov ds,axmov es,axnopcall init8255main:call start_temperaturejb maincall delaytimecall rd_temperaturecall dis

23、_bcdjmp maindis_bcd proc nearmov bx,axlea di,buffer+7stdmov al,10hstosbstosbstosbstosbtest ah,08hjnz dis_bcd1stosbjmp dis_bcd2dis_bcd1: mov al,11h stosb neg bxdis_bcd2:shl bx,1shl bx,1shl bx,1shl bx,1mov ax,10xchg al,bhdiv bhcmp al,0jnz dis_bcd3mov al,10hxchg al,di+1stosbjmp dis_bcd4dis_bcd3:stosbdi

24、s_bcd4:mov al,ahor al,80hstosbxor al,altest bl,10hjz dis_bcd5mov al,6dis_bcd5:test bl,20hjz dis_bcd6add al,12hdaadis_bcd6:test bl,40hjz dis_bcd7add al,25hdaadis_bcd7:test bl,40hjz dis_bcd8add al,50hdaadis_bcd8:mov cl,4ror al,cland al,0fhstosbcldlea si,buffercall display8retdis_bcd endpdelaytime proc

25、 nearxor cx,cxloop $loop $loop $retdelaytime endpw_l proc nearpush axmov dx,con_8255mov al,80hout dx,alpop axretw_l endpw_h proc nearpush axmov dx,con_8255mov al,01hout dx,alpop axretw_h endpinit_18b20 proc nearcall w_lmov cx,136loop $mov dx,con_8255mov ax,89hout dx,aldec dx dec dxmov cx,15init_18b2

26、0_1:in al,dxtest al,01hjz init_18b20_2loop init_18b20_1stcretinit_18b20_2:mov cx,136loop $clcretinit_18b20 endpwrite_18b20 proc nearmov cx,8wri:push axmov dx,con_8255mov al,80hout dx,alpop axror al,1jnb wri1push axmov dx,con_8255mov al,01hout dx,alpop axwri2:push cxmov cx,7loop $pop cxcall w_hloop w

27、riretwri1:push cxnoppop cxjmp wri2write_18b20 endpread_18b20 proc nearmov cx,8read:mov dx,con_8255mov al,80hout dx,almov al,89hout dx,alnopnopnopnopnopmov dx,pc_8255in al,dxror al,1rcr bl,1push cxmov cx,11loop $pop cxloop readmov al,blretread_18b20 endpstart_temperature:call init_18b20jb get_tmov al

28、,0cchcall write_18b20mov al,44hcall write_18b20clcget_t:retrd_temperature:call init_18b20mov al,0cchcall write_18b20mov al,0behcall write_18b20call read_18b20mov ah,alcall read_18B20xchg al,ahretinit8255 proc nearmov dx,con_8255mov al,80hout dx,aldec dxdec dxmov al,0ffhout dx,alretinit8255 endpstart

29、 endpcode endsend start附录2、单片机C语言程序(部分)/*MC9S12XS128温度采集程序 -Code Warrior 5.0/1Target : MC9S12XS128Crystal: 16.000Mhzbusclock:16.000MHzpllclock:32.000MHz 使用说明:OLED电源使用3.3V。 -G 电源地3.3V 接3.3V电源D0 PORTA_PA0 D1 PORTA_PA1RST PORTA_PA2 DC PORTA_PA3CS 已接地,不用接=OLED电源使用5V。 -G 电源地3.3V 接5V电源,电源跟模块之间串接100欧姆电阻,并加

30、3.3V钳位二极管D0 PORTA_PA0 单片机跟模块之间串接1k-3.3k电阻 D1 PORTA_PA1 单片机跟模块之间串接1k-3.3k电阻 RST PORTA_PA2 单片机跟模块之间串接1k-3.3k电阻 DC PORTA_PA3 单片机跟模块之间串接1k-3.3k电阻 CS 已接地,不用接 = 如果用户使用的是5V单片机,请看用户手册,切勿烧毁模块! =*/#include "derivative.h"#include <stdio.h>#include <string.h> #include "LQ12864.h"

31、 / PLL初始化子程序 BUS Clock=16Mvoid SetBusCLK_16M(void) CLKSEL=0X00;/ disengage PLL to system PLLCTL_PLLON=1;/ turn on PLL SYNR=0x00 | 0x01; / VCOFRQ7:6;SYNDIV5:0 / fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1) / fPLL= fVCO/(2 × POSTDIV) / fBUS= fPLL/2 / VCOCLK Frequency Ranges VCOFRQ7:6 / 32MHz <= fVCO

32、 <= 48MHz 00 / 48MHz < fVCO <= 80MHz 01 / Reserved 10 / 80MHz < fVCO <= 120MHz 11 REFDV=0x80 | 0x01; / REFFRQ7:6;REFDIV5:0 / fREF=fOSC/(REFDIV + 1) / REFCLK Frequency Ranges REFFRQ7:6 / 1MHz <= fREF <= 2MHz 00 / 2MHz < fREF <= 6MHz 01 / 6MHz < fREF <= 12MHz 10 / fREF > 12MHz 11 / pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz; POSTDIV=0x00; / 4:0, fPLL= fVCO/(2xPOSTDIV) / If POSTDIV = $00 then fPLL is identical to fVCO (divide by one). _asm(nop); / BUS CLOCK=16M _a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论