合肥学院计算机科学与技术系微机原理与接口技术课程设计报告2008~2009学年第一学期课程微型计算机原理与接口技术课程设计名称数字式温度计学生姓名俞喆军学号1204012027专业班级12计本(2)班指导教师肖连军老师2014年12月微机原理课程设计11一、题意分析及解决方案1.1题义需求分析本设计为从温度传感器DS18B20通道采样温度模拟信号,转化成数字信号,并在LED液晶显示器上显示出来.由于DS18B20可以直接将模拟量转换为数字量,因此在并送LED显示时,须通过A/D转换器先将信号送入CPU,然后再选用8255A作为微处理器的输入输出接口芯片,最后将8位数字信号量显示到LED显示器上。可以从四个方面来分析问题,1)采样模拟信号,转化成数字信号。2)接口的连接问题。3)LED显示器如何接入电路。4)如何进行显示控制。1.2解决问题方法及思路1.2.1硬件部分(1)温度传感器DS18B20DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。(2)输入输出接口芯片8255A由于考虑到8086接口不足的问题,比如对LED数码管进行位选需要2位,对LED数码管每一位进行段选需要8位,所以必须要用8255进行I/O的扩展,通过8255A,CPU可以直接同外设相连接,将数字量从CPU输出到LED显示器上。(3)硬件比较8255A芯片8255A芯片是可编程并行接口芯片,不需要附加外部电路便可和大多数并行传输的外设相连,数据可多为同时传输,使用广泛方便。8251A芯片8251A是可编程的串行接口芯片,数据一位一位地顺序传送,电路简单,传输距离远。表1-18255A芯片与8251A芯片比较微机原理课程设计22LED与LCD相比,LED在亮度,功耗可视角度和刷新速率等方面更具有优势,其最显著的特点是使用寿命长,光电转换效能高。LCDLCD占用空间小,功耗低,低辐射,能降低视觉疲劳,但会出现闪烁现象。表1-2LED和LCD比较1.2.2软件部分该程序主要应分为两大部分,(1)对DS18B20进行设置如何赋初始温度值,如何保存读出的数字量,如何获取当前温度值,如何将温度值显示出来等问题进行编程.(2)对8255的初始化对方式选择控制字的赋值问题,也就是解决8255A的A口、B口分别工作在方式几,A口、B口、C口高位、C口低位分别是作为输出口还是输入口的问题。二、硬件设计2.1选择芯片8255A2.1.18255A在本设计中的作用芯片8255A在本设计中起输出、输入作用,C口的高四位输入方式。PC7作为读取EOC信号,低四位作输出方式,PC1、PC0作七段LED显示器的位选码,PA口用作输出方式,作七段LED的段选码,PB口为输入方式,读取ADC0809转换后的数字量即8255A通过PB口读入ADC0809转换后的数字量由PC1、PC0产生位选,PA口产生段选后七段LED显示出数字量。2.1.28255A功能分析8255A是一种通用的可编程的并行I/O接口芯片,可用与连接PCI卡与外设,实现数据的的输入输出功能,可以对输入/输出的数据进行数据锁存和数据缓冲,有中断请求信号,可以向CPU发出中断请求,能进行单向和双向通信。8255A的数据总线缓冲器是一个三态8位双向缓冲器,用作8255A同系统数据总线相连时的缓冲部件,CPU通过执行输入/输出指令来实现对缓冲器发送或接收数据。8255A的控制字或状态字也是通过该缓冲器传送的。PA、PB、PC三口均工作在方式0状态。微机原理课程设计33图1-18255A原理图8255A的操作功能表CSRDWRA1A0操作数据传送方式00100读A口A口数据→数据总线00101读B口B口数据→数据总线00110读C口C口数据→数据总线01000写A口数据总线数据→A口01001写B口数据总线数据→B口01010写C口数据总线数据→C口01011写控制口数据总线数据→控制口表2-18255A的操作功能表(1)方式0的工作特点:这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。(2)方式0的功能为:a.两个8位通道:通道A、B。两个四位通道:通道C高4位和低四位;微机原理课程设计44b.任何一个通道可以作输入/输出;c.输出是锁存的;d.输入是不锁存的;e.在方式0时各个通道的输入/输出可有16种不同的组合。2.1.38255A主要技术参数参数名称符号测试条件规范值最大最小输入低电平电压VIL0.8V-0.5V输入高电平电压VIHVCC2.0V输入低电平电压(数据总线)VOLIOL=2.5MA0.45V输入低电平电压(外部端口)VOLIOL=1.7MA0.45V输入高电平电压(数据总线)VOHIOH=-400UA2.4V输入高电平电压(外部端口)VOHIOH=-200UA2.4V达林顿驱动电流IDARREXT=750VEXT=1.5-0.4MA1.0MA电源电流ICC120MA输入负载电流IILI=VCC~0MA+10MA-MA输出浮动电流IOFLVOUT=VCC~0MA+MA-MA表2-28255A主要技术参数2.2选择芯片LED2.2.1LED在本设计中的作用LED发光二极管(Light-EmittingDiode),在本设计中采用7段数字发光二级管,做为终端显示。2.2.2LED的功能分析笔画型LED显示器是由8个二极管电路a~dp按字型‘8’的方式排列,当不同的二极管被选通后根据发光效果会显示不同的自型。本设计中采用共阴极连接方式,当某段接入正电压时,对应的发光二极管会发光,当需要显示字型码“0”时,对应下图中的a,b,c,d,e,f发光二极管应发光,输入位选码应为00111111,即为:3FH;类似可以显示其他。a~dp分别与74LS273的1Q~8Q相连,接收段选码信号(高电平);4位LED显示器的4根共阴极引线与8255A的PC0~PC3相连,接收位选码信号(低电平)。段选码和位选码共同作用以显示不同的字型。微机原理课程设计55数字DPgfedcba二进制编码(字形)0001111113FH10000001103H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FH9011011116FHA0111011177HB011111007CHC0011100169HD010111105EHE0111100179HF0111000171H表2-3共阴极七段LED显示段码2.2.3芯片LED的技术参数表2-4LED的技术参数消耗功率PM=150mW最大工作电流IFM=100mA正常工作电流IF=40mA正向压降VF≤1.8V燃亮电压为5v共阴极LED的PM=300mW,IFM=200mA,IF=60mA,VF≤1.8V,VR≥5V,发红光。2.3选择芯片DS18B202.3.1DS18B20在本设计中的作用PcwIfVrIrIf^p对应型号散射颜色BT235-270255≥1.5≤2.5200SEL-10红色BT1441529100405≥0.5≤2.5565绿色BT1341529100405≥0.5≤2.5585蓝色微机原理课程设计66DS18B20在本设计中主要是测量手部的温度并将接收的模拟信号转化为数字信号输出至8255中。2.3.2DS18B20的功能分析DS18B20测温原理如图2-2所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。图2-2DS18B20测温原理图1)DS18B20主要数据部件(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。(2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。如图2-3:微机原理课程设计77图2-3DS18B20温度值格式这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。图2-4DS18B20温度转换(3)DS18B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。(4)配置寄存器低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是微机原理课程设计88在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)表2-5配置寄存器分辨率表2-5ROM指令微机原理课程设计99表2-5RAM指令三、硬件总逻辑图及其说明3.1硬件总逻辑图图3-1硬件总逻辑图3.2说明实验硬件原理图由PCI、8255A、DS18B20、LED数码显示器构成,8255A芯片CS片选信号线接PCI卡上CS,8255A芯片A0、A1接PCI卡的A0、A1。8255A的C口的PC7作为DS18B20的输入口,A口作为LED数码管的段选,B口作为LED数码管的位选。微机原理课程设计1010四、控制程序设计4.1控制程序设计思路说明本程序主要功能分为初始化、读温度量、写操作及LED的显示输出。初始化主要实现写8255方式控制字,设置控制字为89h,,即10001001,8255芯片工作于方式0,PA口作输出段选,PB口作输出位选,PC口作为输入。然后向DS18B20发送读温度指令,准备读温度前先复位,跳过ROM匹配,发出读温度命令,调用读18B20子程序,先读低8位再读高8位,读出转换后的温度值存在AX中。再调用显示子程序,将温度值显示出来。实现二进制到十六进制数字型码的转化主要通过二进制数从段选码中查表找出相应的字型码并从8255中送出在LED显示器中显示。从高位到低位、输出结果并控制显示器显示通过循环完成。微机原理课程设计11114.2程序流程图主程序读18B20子程序写18B20子程序Y开始初始化8255N调用启动DS18B20子程序CF=1延时1s调用读温度子程序转换后数据-3、2、1号数码管4、5、6、7、8号数码管消隐调用0-PC0子程序RORAL,1开始8-CXCF=0返回保存CX,恢复CX调用1-PC0子程序保存CX12-CXCX-1=0N恢复CXY调用1-PC0