版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、题义分析与解决方案1、 题意需求分析 在STAR ES598PCI单板开发机上实现对空调压缩机温度和风扇的控制功能。本实验设计的要求如下:(1) 通过小键盘来设定界限温度;(2) 通过感温器DS18B20测出空调压缩机的变化温度,并在LED数码管上显示出界限温度值和变化的温度值;(3) 当温度超过界限值,风扇加速旋转以达到降温效果。2 .解决问题的方法与思路1) 硬件部分使用到STAR ES598PCI实验仪的模块包括:.A3区:CPU总线、片选区B2区:单脉冲、频率发生器B4区:8255电路E2区:功放E5区:8279、74LS240、74LS138综合电路F1区:直流电机F3区:并行D
2、AC832G1区:温度测控DS18B20G6区:发光管、小键盘选择8279芯片和七段LED显示器与键盘相连,8279的扫描输出信号经译码器译码,三根输出线Y0Y7作为矩阵键盘的行扫描信号,返回信号RL0RL7与矩阵键盘的8个列输出信号相连接,扫描输出信号经另一译码器产生的8个输出信号作为8个显示器的选通信号,即位选信号,轮流刷新8个显示器。8255A PC0口接DS18B20的TOUT,接收不断变化的的温度值,PC7口通过功放与DS18B20相接,用于对发热电阻RT1供电加热,来模拟空调压缩机在工作过程中温度不断升高。并行DACO832芯片与直流电机的CTRL端直接相连,实现数字量和模拟量地转
3、换。2)软件部分(1)首先初始化PCI板卡,再设置好8255A的工作方式并确定8255A的端口地址,对8255A进行初始化设计。(2)确定8279的命令字和状态字地址,对8279进行初始化。(3)设立一个段码表,用来表示数字015的段码,根据这些段码可以判定LED显示器选用的共阳极还是共阴极方式;同时还要设置一个显示缓冲区以动态刷新的方式。前四位显示温度界限值,后四位显示采样的温度值。(4)设置好8279的工作方式,及各个相关功能实现的子程序,进行键盘扫描,查看有无键按下,并且通过键值转换程序将输入的键值转换成十进制,运行显示程序,将转换后的温度值通过LED数码管显示出来。(5)对DS18B2
4、0进行初始化编程,发出读取温度和转换温度命令,并将转换后的温度通过LED数码管显示出来。8255A 的PC0口接收数据,将读出的采样温度与输入的界限值温度进行比较,如果小于界限值,直流电机以DAC832刚启动时的速度较为缓慢的旋转;如果大于界限值温度,则直流电机加速旋转。程序在刚运行时,8255A的PC7口被置1,提供电压使发热电阻加热,温度是逐渐升高的,当采样的温度值达到界限温度值时,直流电机加速旋转。二、硬件设计1选择可编程并行接口芯片8255A1) 8255A在本设计中的作用利用8255A的PC0与DS18B20相连,向其发出温度检测命令及接受温度数PC7和通过功放电路和DS18B20的
5、TCtrl相连,用于向发热电阻RT1供电。2) 8255A的功能分析 图2-1 8255A的内部框图8255A是可编程并行接口,内部有3个相互独立的8位数据端口,即A口、口和口。三个端口都可以作为输入端口或输出端口。口有三种工作方式:即方式、方式和方式,而口只能工作在方式或方式下,而口通常作为联络信号使用。8255A的工作只有当片选CS效时才能进行。而控制逻辑端口实现对其他端口的控制。8255A的操作功能表 A1 A0操 作数 据 传 送 方 式0 0 1 0 0读 A 口A口数据 数据总线0 0 1 0 1读 B 口B口数据 数据总线0 0 1 1 0读 C 口C口数据 数据总线0 1 0
6、0 0写 A 口数据总线数据 A口0 1 0 0 1写 B 口数据总线数据 B口0 1 0 1 0写 C 口数据总线数据 C口0 1 0 1 1写控制口数据总线数据 控制口表2-1 8255A的操作功能表8255A有三种工作方式,用户可以通过编程来设置。本设计用到工作方式0。3) 8255A的技术参数 与外设相连的PA7PA0:A口数据信号线。PB7PB0:B口数据信号线。PC7PC0:C口数据信号线。 与CPU相连的RESET:复位信号。当此信号来时,所有寄存器都被清除。同时三个数据端口被自动置为输入端口。D7D0:它们是8255A的数据线和系统总线相连。CS:片选信号。在系统中,一般根据全
7、部接口芯片来分配,若低位地址(比如A5、A4、A3)组成各种芯片选择码,当这几位地址组成某一个低电平,8255A被选中。只有当其有效时,读信号写才对8255A进行读写。 RD:读信号。当此信号有效时,CPU可从8255A中读取数据。WR:写信号。当此信号有效时,CPU可向8255A中写入数据。A1、A0:端口选择信号。8255A内部有3个数据端口和1个控制端口,共4个端口。规定:A1、A0为00时,选中A端口;A1、A0为01时,选中B端口;A1、A0为10时,选中C端口;A1、A0为11时,选中控制口。 参数说明:输入最低电压:min-0.5V,max0.8 V输入最高电压:2.0 V输出最
8、低电压:0.45 V输出最高电压:2.4 V 8255A的方式控制字D7 D6 D5 D4 D3 D2 D1 D0100010011:工作方式 A口方式0输出 B口方式0输出 C口高4位输入 C口低4位输入图2-2 8255A的方式控制字表方式0的工作特点:这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。通道的功能为:两个8位通道:通道A和B。两个四位通道:通道C高4位和低四位,任何一个通道可以作输入/输出,输入是不锁存的,输出是锁存的,在方式0时各个通道的输入/输出可有16种不同的组合。D7 D6 D5 D4 D3 D2 D1 D00XXX写入位编码
9、写入内容 写入位 编码 0写入0 D0-D7 000-111 1写入1图2-3 8255A的置位/控制字表2、8279芯片 1)8279芯片在本试验中的作用 使用8279来实现对键盘输入信号的接收以及输出控制LED显示器的数据及显示方式。2)8279芯片的功能分析 8279的功能是对短矩阵键盘扫描以及控制LED显示器的数据及显示方式。8279扫描输出信号经译码器译码后三根输出线Y0Y2作为矩阵键盘的扫描信号,返回信号RL0-RL7与键盘矩阵的8个列输出信号相连接。扫描译码器经另一译码器译码产生的8个输出信号作为8个显示器的选道信号,轮流刷新8个显示器。8279A是一个40脚双列直插式芯片,由单
10、一5V供电. 控制字寄存器数据缓冲存储器FIFO/传感器RAM状态寄存器地址寄存器16字节显示RAM控制与定时传感器RAM键盘控制显示输出消隐输出寄存器扫描计数键盘输入 图2-4 8279内部结构 8279具有2个端口,8个控制字和一个状态字A0=0用来接收来自键盘的输入字节数据或输出到显示器的输出字节数据。键盘扫描方式中,发出读FIFO命令后,从数据口读入数据为: D7 D6 D5D4D3 D2D1D0CNTL SHIFT 扫描值 回送值 KKK 输入方式000编码扫描键盘,双键互锁扫描键盘001 译码扫描键盘,双键互锁010 编码扫描键盘,N键互锁扫描传感器矩阵011 译码扫描键盘,N键互
11、锁100 编码传感器矩阵选通101 译码扫描传感器矩阵110 选通输入,编码显示扫描111 选通输入,译码显示扫描 表2-2 8279键盘输入方式DD 输出方式 00 8字符显示,左端输入显示器输出 01 16字符显示,左端输入 10 8字符显示,右端输入 11 16字符显示,右端 表2-3 显示器输入方式8279共使用8个控制字,高3位D7D6D5的特征位。这些控制字是由CPU送到数据总线以后,CS=0,A0=1,WR上升沿送入控制寄存器。名称格式 备注设置键盘和显示方式000DDKKKDD见上图,KKK见上图时钟频率001PPPPPP为预定值231,是外接时钟的分频系数读FIFO传感器RA
12、M010AIA2A1A0A2A1A0是CPU读出传感器的存储单元地址读显示RAM011AIA3A2A1A0A3A2A1A0是CPU送出传感器RAM的存储单元地址禁止写显示器/熄火101IW1IW0BL1BL0IW1BL1为A口控制位,IW0BL0为B口控制位。IW=1时,禁止写;BL1时显示器消隐清除110CD2CD1CD0CFCACA=1,清除FIFO/显示RAM,CF=1,将FIFO置空,并中断输出复位,传感器RAM置成0结束中断111EE=1时,以N键巡回特殊出错方式工作。传感器矩阵方式中,该命令时IRQ变为的电平 表2-3 8279的控制字 8279A的的状态字,适用于键盘输入和选通方
13、式检查FIFO,如下: D7 D6 D5 D4 D3 D2 D1 D0DU S/E O U F N N ND1D0:FIFO RAM中字符的个数。取值为000111。D3:FIFO RAM 满(D3=1);D4:FIFO RAM空。(D4=1)D5:FIFO RAM溢出(D5=1);D6:传感器信号结束特征位D7:显示无效特征位。DU=1无效。3、直流电机1) 直流电机在本实验中的作用直流电机用于模拟风扇,当DS18B20的采样温度高于所设定的界限值温度时,直流电机就加速旋转。2)直流电机的功能分析年图1 强反射图2 弱反射图3转盘图1-1本转速测量实验采用反射式光电开关,通过计数转盘判断光电
14、开关产生的脉冲,计算出转速。(1) 反射式光开关工作原理:光电开关发射光,射到测量物体上,如果强反射,如图1,光电开关接收到反射回来的光,则产生高电平1;弱反射,如图2,光电开关接收不到反射回来的光,则产生弱电平0。(2) 实验方法:本实验转速测量用的转盘在下表面做成如图3样子的转盘,白部分为强反射区,黑部分为弱反射区,转盘每转一圈,产生4个脉冲,每1/4秒计数出脉冲数,即得到每秒的转速。(演示程序中,LED显示的是每秒钟转速)(3)实验原理图 :图1-2实验连线说明:B3区:CSA3区:CS1B3区:A0、INTES-PCI:A0、IRQB3区:INTAC3区:Y1C3区:G2A、G2BES
15、-PCI:A7、IORC3区:A、B、C、G1C1区:GND、GND、GND、VCCC5区:CS(8253)A3区:CS2C5区:A0、A1ES-PCI:A0、A1C5区:GATE0、GATE1C1区:VCCC5区:CLK0B2区:31250HzC5区:CLK1B2区:1MC5区:OUT0B3区:IR0F3区:CSA3区:CS3F3区:OUTE2区:IN1E2区:OUT1F1区:CTRLF1区:REVB3区:IR7E5区:CLKB2区:2M E5区:CSA3区:CS5E5区:A0ES-PCI:A0E5区:A、B、C、DG5区:A、B、C、D4、DS18B20数字温度传感器1)DS18B20温度
16、传感器的作用 利用温度传感器检测温度,并转换为数字量和设定的界限值比较。2)DS18B20的功能特点DS18B20可编程温度传感器有三个管脚。GND为接地线,DQ为数据输入输出接口,通过一个较弱的上拉电阻与CPU相连。VDD为电源接口,既可由数据线提供电源,又可由外部提供电源,范围3.05.5V。本系统中使用外部电源供电。其主要特点为: 用户可以自行设定报警上下限温度值; 不需要外部组件,能测量-55+125C范围内的温度; 在-10+85C范围内的测温准确度为0.5C; 通过编程可以实现912位的数字读数方式,可在至多750MS内将温度转换成12位数字,测温分辨率可达到0.0625C; 独特
17、的单总线接口方式,与微处理器连接时仅需要一条线既可实现和微处理器的双向通讯。 图2-6 DS18B20内部结构图图2-5 DS18B20DS18B20的内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,配置寄存器。光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个
18、DS18B20的目的。3)DS18B20的测温原理和技术参数 DS18B20的测温原理: 图2-7 DS18B20的测温原理图DS18B20的测温原理如图所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55
19、所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。 表2-4 DS18B20温度值格式表DS18B20中的温度传感器可完成对温度的测量,以12位转化为例
20、:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。DS18B20的存储器:DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。根据DS18B20的通讯协议,主机控制DS18B20完成温度转换
21、必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。5、LED显示器1)芯片在本设计中的作用 LED发光二极管在本设计中采用7段数字发光二极管,作为终端显示。显示时间的分秒。2)LED的功能分析 物理构造:LED发光二级管,采用砷化镓、镓铝砷、和磷化镓等材料制成,其内部结构为一个PN结,具有单向导电性。当在发光二极管PN结上加正向电压时
22、,PN结势垒降低,载流子的扩散运动大于漂移运动,致使P区的空穴注入到N区,N区的电子注入到P区,这样相互注入的空穴与电子相遇后会产生复合,复合时产生的能量大部分以光的形式出现。将七个发光管进行组合,排列成数字图形8,再根据需要控制七个管的亮与灭,即可显示出定义数字。有段选码和位选码确定数字18的输出并在延时程序中保持复位。它是一种当外加电压超过额定电压时发生击穿,并因此而产生可见光的器件。这种数码管是有7段或8段笔画显示器组成一个字符而形成的。 图2-8 LED内部结构 图2-9 LED显示表2-5 LED显示管段选码编码表数字dpgfedcba二进制编码011000000C0h1111110
23、01F9h210100100A4h310110000B0h41001100199h51001001092h61000001082h711111000F8h81000000080h91001000090h(3)LED的技术参数分析LED发光二极管的压降一般为1.5-2.0V,其工作电流一般取10-20Ma,发光二极管可应用于直流驱动电路、交流驱动电路和脉冲驱动电路。 由于8255A的最大驱动电流为4.0mA,而LED的工作电流一般为10-20mA,所以需要加一个驱动器74LS244。6、矩阵键盘1)矩阵键盘在本设计中的作用 实现对温度界限值的输入设定,矩阵键盘在工作时,是按照行线和列线交叉点的电
24、平值来识别按键的,由人手按动键盘。当键释放后,该键就有效。矩阵键盘将0F这16哥键按行和列排列成矩阵形式。对于mn个键的键盘,只需要m+n位I/O端口,我们的实验采用的是44键盘。2)矩阵键盘的功能分析在矩阵键盘中,通过行列交叉点上的电平值来识别按键,而行列线通过键盘数据格式确定,键盘数据格式如下: 表2-6 键盘数据格式 D7 D6 D5 D4 D3 D2 D1 D0CNTLSSHIFTSL2SL1SL0R2R1R0控制移位行编码列编码其中,控制和移位由两个独立的附加开关决定;SL2 SL1 SL0为按下键的行编码,来自扫描计数器的低三位,R2 R1 R0是根据返回信号确定的列编码。通常使用
25、的键盘是矩阵结构的。对于44=16个键的键盘,采用矩阵方式只要用8条引线和2个8位端口便完成键盘的连接。如图,这个矩阵分为4行4列,如果键5按下,则第1行和第1列线接通而形成通路。如果第1行线接低电平,则键5的闭合,会使第1列线也输出低电平。矩阵式键盘工作时,就是按行线和列线的电平来识别闭合键的。 图2-10 44键盘矩阵图行扫描法识别按键的原理如下:先使第0行接低电平,其余行为高电平,然后看第0行是否有键闭合。这是通过检查列线电位来实现的,即在第0行接低电平时,看是否有哪条列线变成低电平。如果有某列线变为低电平,则表示第0行和此列线相交位置上的键被按下;如果没有任何一条列线为低电平,则说明第
26、0行没有任何键被按下。此后,再将第1行接低电平,检测是否有变为低电平的列线。如此重复地扫描,直到最后一行。在扫描过程中,当发现某一行有键闭合时,也就是列线输入中有一位为0时,便退出扫描,通过组合行线和列线即可识别此刻按下的是哪一键。7、数/模转换器DAC08321)DAC0832在本设计中的作用 DAC0832在本设计中主要用来将数字信号转换为相应的模拟信号,启动直流电机,使之旋转。2)DAC0832的功能分析 DAC0832是8位D/A转换器,转换周期为1s。它由8位输入锁存器、8位DAC寄存器、8位D/A转换电路组成。当ILE为高电平,CS为低电平,WR1为负脉冲时,在LE1产生正脉冲;L
27、E1为高电平时,输入寄存器的状态随数据输入线状态变化,LE1的负跳变将输入数据线上的信息存入输入寄存器。当Xfer为低电平,WR2输入负脉冲时,则在LE2产生正脉冲;LE2为高电平时,DAC寄存器的输入与输出寄存器的状态一致,LE2的负跳变,输入寄存器内容存入DAC寄存器。DAC0832的输出是电流型的。在微机系统中,通常需要电压信号,电流信号和电压信号之间的转换可由运算放大器实现。3)DAC0832的技术参数 DAC0832芯片采用CMOS工艺,四象限乘法型DAC,与微机兼容,数据输入能与双缓冲、单缓冲或直接通过三种方式工作。是一个8位D/A转换器,输入电平与TTL、CMOS兼容,单电源+5
28、+15V工作,基准电压的范围为 10V,电流建立时间为1s,低功耗200mw,20引脚,双列直接式封装。 图2-12 内部原理图8、74LS138芯片1)74LS138在本设计中的作用 将SL0SL2锁确定的信号经译码器译为矩阵键盘的行选择线。2)74LS138 的功能分析 74LS138是3/8译码器,即对3哥输入信号进行译码,得到8个输出状态。其引脚功能图如下所示: 表2-7:真值表 图2-13 引脚图 G1 G2A G2B为数据输出端,G2A G2B为低电平有效,G1高电平有效,A、B、C为译码器输入出端,Y0Y7为译码输出端,低电平有效。3)74LS138的技术参数极限值 电源电压-7
29、V 输入电压-7V 工作环境温度 -070 贮存温度-65150 9、 硬件总逻辑图及说明3、 控制程序设计1、 控制程序设计思路说明 本程序的思路和目标都很明确,只要在一个主控程序下实现各个功能字程序的嵌套,难点主要是在于若干个子程序的设计。首先8279控制键盘输入界限温度值,在七段LED显示器前四位显示界限温度值后四位显示采样温度值。DS18B20采样温度通过PC0口传输到8255,并与界限值比较,若大于界限值就初始化DAC0832,并启动直流电机,加速电机旋转。采样温度一秒刷新显示一次,通过调用延时,使主程序循环一次是一秒。由于DS18B20采用串行数据传送和单总线数据传输方式,其数据输
30、入输出都由同一条线完成,因此,对读写的操作时序要求严格,需要做较精确的延时。对于8279的八个命令字必须要掌握的特别牢固,在扫描键盘和提取采样温度值以及LED数码管显示都有需要用到,这可以说是本次课程设计的核心所在。开始2、程序流程图1)主程序流程图: 写入8279端口命令字清LED显示分别输入温度设定值的十位和个位并显示向DS18B20发送读温度指令将读出的温度转换成BCD码并显示JMP读出的温度与设定值比较2)初始化8279:开始写入端口地址、命令字及入口方式调用函数清除LED显示设置显示方式RET结束3)扫描按键子函数流程图:开始写入8279控制字有键按下?N YNO KEY读FIFO/
31、ROM,键号转化为键值并输出RET结束4)显示温度设定值:开始保护寄存器SI,BX将键入的温度值存入中间量buffer2调用显示子函数,显示值寄存器出栈RET结束6)读出DS18B20的温度存放在AX:开始首先复位DS18B20跳过ROM匹配发出度温度指令读出温度,存放至AX;还原寄存器结 束 5)读温度字操作流程图:开始开始时让PC0口维持低电平写入新的控制字,准备接收温度值调用延时子程序,温度经由PC0口写入AL右移AL最低位至标志位CF标志位转移至BL,备份AL中的值,PC0口置低电平准备读下一位RET结束2、 控制程序.MODELTINYPUBLIC SCAN_KEYPUBLIC CM
32、D_8279,DATA_8279PCIBAR3EQU1CH;8位I/O空间基地址(它就是实验仪的基地址,也为DMA & 32 BIT RAM板卡上的8237提供基地址)Vendor_IDEQU10EBH;厂商ID号Device_IDEQU8376;设备ID号.STACK300 .DATAIO_Bit8_BaseAddress DW?msg0DBBIOS不支持访问PCI $msg1DB找不到Star PCI9052板卡 $msg2DB读8位I/O空间基地址出错$Con_8255DW00F3HPC_8255DW00F2HPA_8255DW00F0HVOLTAGE DB 80HDATA0832 DB
33、 0FFHbufferDB8 DUP(0);温度临时存放buffer2DB8 DUP(0);温度设定值buffer3DW?;中间量CMD_8279 DW 00B1H ;8279命令字、状态字地址DATA_8279 DW 00B0H ;8279读写数据口的地址DAC0832_ADD DW 00D0H ;D/A转换口地址LED_TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 080H,90H,88H,83H,0C6H,0A1H,86H,8EH DB0FFH,0BFH ;LED显示值表,从0-F.CODESTART: MOVAX,DATAMOVDS,A
34、XMOVES,AXNOPCALLInitPCI ;初始化PCI卡CALLModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址CALLInit8255 ;初始化8255CALL DAC0832MOVDX,CMD_8279;CMD_8279为写命令地址、读状地址MOVAL,34H ;可编程时钟设置,设置分频系数(20分频)OUTDX,ALMOVAL,00H;显示方式:8*8字符显示,左边输入,外部译码键扫描方式OUTDX,ALCALLCLEAR;清除LED显示MOVAL,90H;从第一个数码管开始移位显示OUTDX,ALMAIN1: MOVDX,Con_8255 MOVAL,
35、0FH ;P7置1 OUTDX,ALLEADI,buffer2;利用buffer2读入键盘输入值KeyA:CALLSCAN_KEY ;判断键盘有无数据输入,有则将数据转化为相应的数据同时将CF置1,没有CF为0JNCKeyASTOSB;读入第一个键值(温度界限值的十位)KeyB:CALLSCAN_KEYJNCKeyBSTOSB;读入第二个键值(温度界限值的个位)CALLSHOW;调用显示函数MAIN: CALLSTART_Temperature;向DS18B20发送读温度指令JBMAINCALLDelayCALLRD_Temperature;读出温度值CALLDIS_BCD;提取温度数据,转换
36、为非压缩型BCD码,并显示CALLSPEECH ;调用直流电机子程序JMPMAIN;*;启动直流电机程序;* SPEECH PROCNEAR PUSHAX PUSHBX PUSHCX PUSHDXMOVBX,Buffer3;buffer3作为中间量,实现AX和BX值的交换(后面对18B20温度的操作需要用到)MOV CL,4 SHR BX,CLMOV AX,0H;AX清零 MOVAL,Buffer20;第一个键入的值置入AX SHL AX,CL MOV DX,0 MOVDL,Buffer21 ADD AX,DX;*;键入值转换成10进制;* MOVCL,16 DIVCL ;温度设定的界限值除以
37、16 MOV DH,AH MOVAH,0 MOV CL,10 ;后再乘以10 MUL CL ADDAL,DH;加上商 CMP BL,AL ;将两个温度计值进行比较 JB HIT2 MOVDX,Con_8255 MOVAL,0EH ;8255的P7口置低电平 OUTDX,AL MOV AL,VOLTAGE MOV DATA0832,AL CALL DAC0832FFF: POPDX POPCX POP BX POPAXCALL MAIN ;为了实现动态显示温度,调用MAIN HIT2: MOVDX,Con_8255 MOVAL,0FH ;8255的P7口置高电平 OUTDX,AL CALL DL
38、500MS MOV DATA0832,0 CALL DAC0832 JMP FFF SPEECHENDP;*;D/A子程序;*DAC0832 PROC NEAR MOV DX,DAC0832_ADD MOV AL,DATA0832 OUT DX,AL RETDAC0832 ENDP;*;温度转换/显示;* DIS_BCDPROCNEARMOVBX,AXLEADI,buffer+7STDMOVAL,10H ; 10H表示不需要显示STOSBSTOSBSTOSBTESTAH,08HJNZDIS_BCD1STOSB;正数JMPDIS_BCD2DIS_BCD1:MOVAL,11HSTOSB ;负数NE
39、GBXDIS_BCD2: ;将温度整数位转换为ASCIISHLBX,1 ;将温度的个位与十位合在BH中SHLBX,1SHLBX,1SHLBX,1MOVAX,10XCHGAL,BHDIVBHCMPAL,0JNZDIS_BCD3;判断温度的十位是否为0进行相应处理MOVAL,10H;十位为0XCHGAL,DI+1STOSBJMPDIS_BCD4DIS_BCD3:STOSBDIS_BCD4:MOVAL,AHORAL,80H;小数点STOSBXORAL,AL ;转换小数部分TESTBL,10HJZDIS_BCD5MOVAL,6DIS_BCD5:TESTBL,20HJZDIS_BCD6ADDAL,12H
40、DAADIS_BCD6:TESTBL,40HJZDIS_BCD7ADDAL,25HDAADIS_BCD7:TESTBL,80HJZDIS_BCD8ADDAL,50HDAADIS_BCD8:MOV BL,AL MOVCL,4RORAL,CLANDAL,0FHSTOSBAND BL,0FHMOV AL,BLSTOSBCLDLEASI,buffer;显示温度CALLDisplay8RETDIS_BCDENDP;写 0W_LPROCNEARPUSHAXMOVDX,Con_8255MOVAL,80H;所有口输出,置低电平PC0口也低电平写0OUTDX,ALPOPAXRETW_LENDP;写 1W_HPR
41、OCNEARPUSHAXMOVDX,Con_8255MOVAL,01H ;PC0口置1,写1OUTDX,ALPOPAXRETW_HENDP;DS18B20复位初始化子程序INIT_18B20PROCNEARCALLW_L ;主机发出501us复位低脉冲 CALLDelay501us;延时501us,维持低电平MOVDX,Con_8255MOVAX,89HOUTDX,AL;PC输入状态,等待PC0口输入DECDXMOVCX,15;检测15次INIT_18B20_1:INAL,DXTESTAL,01H;如果18B20回复,则PC0口被写1,表示18B20存在JZINIT_18B20_2;如果存在L
42、OOPINIT_18B20_1STC;置位标志位,表示DS18B20不存在RETINIT_18B20_2:CALLDelay501usCLC ;复位标志位,表示DS18B20存在RETINIT_18B20ENDP;*;延时子程序;*Delay501usPROCNEARPUSHAXPUSHCXPUSHDXMOVCX,167MOVDX,PA_8255Delay501us_1:INAL,DXLOOPDelay501us_1POPDXPOPCXPOPAXRETDelay501usENDPDelay50usPROCNEARPUSHAXPUSHCXPUSHDXMOVCX,12MOVDX,PA_8255Delay50us_1:INAL,DXLOOPDelay50us_1POPDXPOPCXPOPAXRETDelay50usENDPDelay8usPROCNEARPUSHAXPUSHCXPUSHDXMOVCX,2MOVDX,PA_8255Delay8us_1:INAL,DXLOOPDelay8us_1POPDXPOPCXPOPAXRETDelay8usENDP;写操作WRITE_18B20PROCNEARMOVCX,8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年天津渤海职业学院单招职业技能考试题库(必刷)附答案详解
- 2027年德州科技职业学院高职单招职业技能考试模拟试卷附参考答案详解AB卷
- 2027年漆水职业学院高职单招职业技能考试模拟试卷含完整答案详解【典优】
- 2024年山东丰泽职业学院高职单招职业技能考试模拟试卷含完整答案详解【网校专用】
- 2025年宝鸡技师学院高职单招职业技能考试题库及参考答案详解【典型题】
- 2026年廊坊职业技术学院高职单招职业技能考试模拟试卷及答案详解(网校专用)
- 2027年湖南铁航信息职业学院单招综合素质考试模拟试卷及答案详解(易错题)
- 2024年河南商水职业学院高职单招职业技能考试题库含答案详解【培优】
- 2027年郑州新能源职业学院单招职业技能考试模拟试卷附完整答案详解【历年真题】
- 2025年常德技师学院高职单招职业技能考试模拟试卷完整版附答案详解
- 派出所指挥室工作制度
- 2026广西百色工业投资发展集团有限公司招聘广西百金资源开发有限公司人员39人参考题库附答案
- 寺院义工培训课件
- 2026年注册安全工程师(初级)(安全生产管理实务)试题及答案
- 课件-人才盘点完全应用手册
- 2025-2026学年北师大版(2024)小学数学二年级上册(全册)教学设计(表格版)(附目录P255)
- 公建工程交付指南(第三册)
- GJB939A-2022外购器材的质量管理
- 工厂安全生产环保操作规程
- 钻井队用电安全培训
- JG/T 3055-1999基桩动测仪
评论
0/150
提交评论