基于MCS-51单片机的压力传感器实验

上传人:无*** 文档编号:101093314 上传时间:2022-06-04 格式:DOC 页数:25 大小:227.50KB
返回 下载 相关 举报
基于MCS-51单片机的压力传感器实验_第1页
第1页 / 共25页
基于MCS-51单片机的压力传感器实验_第2页
第2页 / 共25页
基于MCS-51单片机的压力传感器实验_第3页
第3页 / 共25页
点击查看更多>>
资源描述
燕山大学课 程 设 计 说 明 书题目:压力传感器实验学院系:里仁学院年级专业:仪表10-2学 号:学生_指导 教师职称:燕山大学课程设计论文任务书院系:电气工程学院 基层教学单位:仪器科学与工程系学 号学生#专业班级设计题目压力传感器实验设计技术参数研究压力传感器电路的工作原理和弱信号传感器电路.熟悉A/D变换电路的工作原理.利用试验板上提供的压力传感器电路,完成压力的采样和显示.设计要求设计测量和显示的硬件电路;编制相应的程序.工作量设计的内容满足课程设计的教学目的与要求,设计题目的难度和工作量适合学生的知识和能力状况,工作量饱满.工作计划查阅资料进行设计准备、设计硬件电路、编制程序,编制程序、验证设计、撰写任务书.参考资料单片微型计算机接口技术与其应用 张淑清 国防工业单片机原理与应用技术 张淑清单片机应用技术汇编指导教师签字基层教学单位主任签字说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份. 年 月 日摘要此次设计是基于8051单片机的压力检测系统,简要介绍了压力传感器电路的工作原理和弱信号传感器电路以与A/D变换电路的工作原理,通过压力传感器将需要测量的位置的压力信号转化为电信号,再经过运算放大器进行信号放大,送至8位AD转换器ADC0808,然后将模拟信号转换成单片机可以识别的数字信号,再经单片机转换成LED显示器可以识别的信息,最后显示输出.关键词:8051单片机 压力传感器A/D变换电路LED显示器目录摘要-2关键字-2第一章总体设计方案与模块划分-41.1总体设计方案-41.2模块划分-41.3设计框图如下图所示-5第二章各模块设计参数-52.1传感器元件模块-52.2 A/D转换模块-82.3控制器处理模块-14第三章压力传感器实验数据采集、显示与程序-203.1数据采集与显示-203.2程序设计-20第四章心得体会-29参考文献资料-30第一章总体设计方案与模块划分1.1 总体设计方案本次设计是基于8051单片机的测量与显示.电路采用ADC0809模数转换电路,ADC0809是CMOS工艺,采用逐次逼近法的8位A/D转换芯片,片内有带锁存功能的8路模拟电子开关,先用ADC0809的转换器对各路电压值进行采样,然后将模拟信号转换成单片机可以识别的数字信号,再经单片机转换成LED显示器可以识别的信息,最后显示输出.本次设计是以单片机组成的压力测量,系统中必须有前向通道作为电信号的输入通道,用来采集输入信息.压力的测量,需要传感器,利用传感器将压力转换成电信号后,再经放大并经A/D转换为数字量后才能由计算机进行有效处理.然后用LED进行显示.本设计的最终结果是,将软件下载到硬件上调试出来了需要显示的数据,当输入的模拟信号发生变化的时候,通过A/D转换后,LED将显示不同的数值.1.2 模块划分(1) 传感器元件模块 传感器元件主要是对压力这样的物理量转变成电信号.(2) A/D转换电路模块 A/D转换电路是将模拟量转换为数字量,便于单片机的处理.(3) 控制器处理模块 控制器是通过51系列单片机对数字信号,按照预定目的进行处理.(4) 显示与报告模块 显示与报告是对于最终输出结果进行直观的表达.1.3设计框图如下图所示:图设计框图第二章各模块设计参数2.1传感器元件模块压力传感器是压力检测系统中的重要组成部分,由各种压力敏感元件将被测压力信号转换成容易测量的电信号作输出,给显示仪表显示压力值,或供控制和报警使用.力学传感器的种类繁多,如电阻应变片压力传感器、半导体应变片压力传感器、压阻式压力传感器、电感式压力传感器、电容式压力传感器谐振式压力传感器与电容式加速度传感器等. 而电阻应变式传感器具有悠久的历史.由于它具有结构简单、体积小、使用方便、性能稳定、可靠、灵敏度高动态响应快、适合静态与动态测量、测量精度高等诸多优点,因此是目前应用最广泛的传感器之一,本实验采用电阻应变式传感器作为压力传感器.压力传感器构成:电阻应变式传感器由弹性元件和电阻应变片构成,当弹性元件感受到物理量时,其表面产生应变,粘贴在弹性元件表面的电阻应变片的电阻值将随着弹性元件的应变而相应变化.通过测量电阻应变片的电阻值变化,可以用来测量位移加速度、力、力矩、压力等各种参数.压力传感器的工作原理:本质上是惠斯通电桥,这里采用的是最常见的电阻应变片式的压力传感器.它得到广泛应用的原因是温度特性好,减小温度变化带来的误差.膜片上的压力使得电桥不平衡,从而产生一个差动的输出信号,这种结构的基本特性之一是它的差动输出电压U与偏置电压U成正比关系,这种关系隐含压力测量精度直接决定偏置电源的容限值,当四个桥臂电阻达到相应的关系时,电桥输出为零,或则就有电压输出同时,它也能提供一种温度补偿最通用的方法.本实验研究压力传感器电路如图2.1.1所示,为压力传感器的电路,其由三部分组成1电源电路部分;2电桥电路部分;3放大电路部分. 图2.1.1压力传感器电路 如图示,传感器采用恒压源供电,为+15V,经过与分压,点5、6、7三点处有相同电压: 根据上式,带入数据 , ,求得. 经过电路电桥部分,简化如下图2.1.2UO图2.1.2压力传感器电桥电路设桥臂电阻分别为, ,则当压力传感器受力时,电阻变化对应的输出电压值为,由于1,则上式可化简为带入电阻、电压值得. 2.1.3 最后经过放大部分,如图2.1.3,为压力传感器的微弱电压输出的放大电路.分析它是一个差分放大电路,其放大倍数为 ,那么放大后的电压值为又,选定材料,这里取,代入式得.因为AD转换器的最大输入电压为5v,所以该压力传感器的测量范围为080N. UO UO图2.1.3放大电路2.2. A/D转换模块模拟量输入通道的任务是将模拟量转换成数字量.能够完成这一任务的器件称之为模数转换器,简称A/D转换器.本次设计的中A/D转换器的任务是将放大器输出的模拟信号转换位数字量进行输出.A/D转换电路的核心元件是ADC0808芯片ADC0808是ADC0809的简化版本,功能基本相同.一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换.ADC0809是带有8位A/D转换器、8路多路开关以与微处理机兼容的控制逻辑的CMOS组件.它是逐次逼近式A/D转换器,可以和单片机直接接口. ADC0809的内部逻辑结构 由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成.多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换.三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据.图2.2.2 ADC0809的引脚结构 ADC0809各脚功能如下: D7-D0:8位数字量输出引脚 IN0-IN7:8位模拟量输入引脚 VCC:+5V工作电压 GND:地 REF+:参考电压正端 REF-:参考电压负端 START:A/D转换启动信号输入端.当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平.ALE:地址锁存允许信号输入端,高电平有效.当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进入转换器进行转换.EOC:转换结束信号输出引脚.当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换.OE:输出允许控制端,用以打开三态数据输出锁存器.CLK:时钟信号输入端一般为500KHz.A、B、C:地址输入线,用于选通IN0IN7上的一路模拟量输入.ADC0809对输入模拟量要求:信号单极性,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路. ADC0809应用说明 1 ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连. 2 初始化时,使ST和OE信号全为低电平. 3 送要转换的哪一通道的地址到A,B,C端口上. 4 在ST端给出一个至少有100ns宽的正脉冲信号. 5 是否转换完毕,我们根据EOC信号来判断. 6 当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了. 4 ADC0809工作时序图在ALE=1期间,模拟开关的地址ADDC、ADDB和ADDA存入地址锁存.输入启动信号START的上升沿复位ADC0809,下降沿启动A/D转换.EOC为输出的转换结束信号,正在转换时为0,转换结束时为1.OE为输出允许控制端,在转换完成后用来打开输出三态门,以便从ADC0809输出这次转换的结果.ADC0809的时序图如下图2.2.4.接口电路的设计 实验电路与接线如下图示 :连线连接孔1连接孔21IN0压力传感器输出2AD_CSCS2 图2.2.3 接线框图 图2.2.4 实验电路连线图 A/D转换器的结构与连线图如上图所示,AD0809的工作过程如下:首先用指令选择0809的一个模拟输入通道,当执行MOVX DPTR,A时,产生一个启动信号给START引脚送入脉冲,开始对选中通道转换.当转换结束后发出结束信号,置EOC引脚信号为高电平,该信号可以作为中断申请信号,当读允许信号到,OE端有高电平,则可以读出转换的数字量,利用MOVX A,DPTR把该通道转换结果读到累加器A中.转换电压为05V,调节桥路中的电位器,使其输出电压为05V,可以在较小范围内波动,当满量程输出时对应八个1的输出,由于前边计算的电压变化和电阻变化成正比关系,而且电阻变化和应变成正比,进而得出的压力和电压是成正比的.传感器桥路输出的电压经过比例变换后转换成二进制码的形式送入P0口.其程序框图如下: 等待中断初始化程序初始化LCD进入开机界面开始清屏启动AD0809工程量代换转换为压力值将结果分位成十进制调用LCD显示子程序先显示最高位产生中断 图五 主程序流程图图六 中断子程序2.3控制器处理模块本实验采用8051单片机,其管脚图如下: 图4.4.1 8051管脚图 其管脚功能如下: 1.电源 1VCC - 芯片电源,接+5V; 2VSS - 接地端; 2.时钟XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端. 3.控制线4根 1ALE/PROG:地址锁存允许/片内EPROM编程脉冲. ALE功能:用来锁存P0口送出的低8位地址. PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲. 2PSEN:外ROM读选通信号. 3RST/VPD:复位/备用电源. RSTReset功能:复位信号输入端. VPD功能:在Vcc掉电情况下,接备用电源. 4EA/Vpp:内外ROM选择/片内EPROM编程电源. EA功能:内外ROM选择端. Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp. 4.I/O线 80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚.P3口还有 第二功能,用于特殊信号输入输出和控制信号属控制总线.2.4显示与报告模块-LCD1602的显示操作四种基本操作LCD有四种基本操作,具体如表所示.表LCD与单片机之间有四种基本操作RSR/W操作00写命令操作01读状态操作10写数据操作11读数据操作读状态字执行读状态字操作,如表满足RS=0,R/W=1.根据管脚功能,当为有效电平时,状态命令字可从LCD模块传输到数据总线.同时可以保持一段时间,从而实现读状态字的功能.读状态字流程如图所示.图读入状态字流程图命令字表所示为命令字,其主要介绍了指令名称、控制信号与控制代码.其指令名称是指要实现的功能;控制代号是采用的十六进制的数值表示的.1清零操作是指输入某命令字后即能将整个屏幕显示的内容全部清除;2归home位:将光标送到初始位;其中的号为任意,高低电平均可;3输入方式:设光标移动方向并指定整体显示,是否移动.I/D=0:减量方式,S=1:移位方式,S=0:不移位;4显示状态:D指设置整体显示开关;C指设置光标显示开关;B指设置光标的字符闪耀;5光标画面滚动:R/L指右移或左移;S/C指移动总体或光标;6功能设置:DL接口数位,L指显示行数,F显示字型;如DL=1:8位=0,4位N=1:2行=0:1行,G=1:510=0:577CGRAM地址设制:相当于一个数据库,可以在其中选择所需要的符号;8DDRAM地址设制:显示定位;9读BF和AC:B为最高位忙的标志,F为标志位;10写数据:将数据按要求写入到对应的单元;11读数据:读相应单元内的数据;表命令字指令名称控制信号控制代码RSRWD7D6D5D4D3D2D1D0清屏0000000001归HOME位000000001*输入方式设制00000001I/DS显示状态设制0000001DCB无标画面滚动000001S/CRL*功能设置00001DLNF*CGRAM地址设制0001A5A4A3A2A1A0DDRAM地址设制001A6A5A4A3A2A1A0读BF和AC01BFAC6AC5AC4AC3AC2AC1AC0写数据10数 据读数据11数 据写命令字由表可知当RS=0,R/W=0时,才可以通过单片机或用户指令把数据写到LCD模块,此时就对LCD进行调制.可采用查询方式:先读入状态字,再判断忙标志位,最后写命令字.图所示为写命令字的流程图.图写命令字流程图1定义光标位置显示数据的某位,就是把显示数据写在相应的DDRAM地址中,DDRAM地址占7位.SetDDRAMaddress命令如表所示.光标定位,写入一个显示字符后,DDRAM地址会自动加1或减1,加或减由输入方式设置.表Set DDRAM address命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0001AC6AC5AC4AC3AC2AC1AC0第1行DDRAM地址与第2行DDRAM地址并不连续,如表所示.表DDRAM地址row12345141516line180H81H82H83H84H8dH8eH8fHline20c0H0c1H0c2H0c3H0c4H0cdH0ceH0cfH21602LCD的一般初始化复位过程延时15mS写指令38H不检测忙信号延时5mS写指令38H不检测忙信号延时5mS写指令38H不检测忙信号以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开与光标设置LCD显示程序设计LCD显示程序的设计一般先要确定LCD的初始化、光标定位、确定显示字符后,显示流程如图显示.图LCD显示程序流程图2.4.3 AD0809接口电路与LCD接口电路第三章压力传感器实验数据采集、显示与程序3.1数据采集与显示数据处理子程序是整个程序的核心.主要用来调整输入值系数,使输出满足量程要求.另外完成A/D的采样结果从十六进制数向十进制数形式转化.系数转换在IN0输入的数最大为5V,要求压力200pa对应的是5V,将系数进行一定倍数的变换,并用小数点位置的变化体现这一过程.数制之间的转换:在二进制数制中,每向左移一位表示数增加两倍.要求压力80N对应的是5V,而压力与电压的变换是线性关系,对应AD转换器的输出为八个1,当有一定的压力值输入时,对应这个关系转化成相应的二进制代码送入P0口.然后再反过来应用这个变化关系,经最终得到的数值进行二进制到BCD码转化,然后逐位在LED数码管上显示.数据采集用A/D0809芯片来完成,主要分为启动、读取数据、延时等待转换结束、读出转换结果、存入指定内存单元、继续转换退出几个步骤.ADC0809初始化后,就具有了将某一通道输入的05模拟信号转换成对应的数字量00HFFH,然后再存入存储器的指定单元中.在控制方面有所区别.可以采用程序查询方式,延时等待方式和中断方式.显示子程序是字符显示,首先调用事先编好数码管显示子程序.初始化命令,然后输出显示命令.在显示过程中一定要调用延时子程序.当输入通道采集了一个新的过程参数,当有压力信号输入时,调用显示子程序在数码管上显示.3.2程序设计; ADResult EQU 40H RS BIT P2.0;定义LCM的接脚RS、R/W、Enable为P2.0、P2.1、P2.2 R_W BIT P2.1 ENABLE BIT P2.2 DB0_DB7 DATA P1 ;DB0-DB7的接脚为P1来控制,以方便程式的撰写与维护;*- ORG 0000H ;通知编译器下面的程式由程式记忆体;地址1000H开始存放 AJMP START ;跳到标记start处执行程式 ORG 000BH ;跳到中断服务程式 AJMP INSERS ORG 0013H AJMP INT ORG 30H ;通知编译器下面的程式由程式记忆体地址0030H开始存入.START: NOP MOV TMOD,#0 ;初始化TO MOV TL0,#0 MOV TH0,#0 SETB EA SETB ET0 SETB TR0 SETB EX1SETB IT1 MOV R5,#50 ;设定延时次数. MOV SP,#60H ;设定MCS-51从内容资料记忆体地址61H开始存放堆栈资料.CALL Initial ;调用启动LCM的子程式CALL CLS ;调用清除显示器的子程式 MOV A,#10000000B ;将二进制10000000的值放入累加器内,代表设定DDRAM的地址为00H, ;即将光标移到第一行第一个列的位置上. CALL Write_instruction ;调用写指令码子程式 MOV DPTR,#LINE3 ;将第一行字串在程式记忆体中的起始地址存入DPTR CALL STRING ;调用STRING子程式,将字串显示到LCM MOV A,#11000010B ;将二进制11000000的值放入累加器内,代表设定DDRAM的地址为40H, ;即将光标移到第二行第三个列的位置上 CALL Write_instruction ;调用写指令码子程式 MOV DPTR,#LINE4 ;将第二行字串在程式记忆体中的起始:地址存DPTR. CALL STRING CALL DELAY0 CALL CLS ;调用清除显示器的子程式 MOV A,#10000000B ;将二进制10000000的值放入累加器内,代表设定DDRAM的地址为00H, ;即将光标移到第一行第一个列的位置上. CALL Write_instruction ;调用写指令码子程式. MOV DPTR,#LINE1 ;将第一行字串在程式记忆体中的起始地址存入DPTR CALL STRING ;调用STRING子程式,将字串显示到LCM MOV A,#11000010B ;将二进制11000000的值放入累加器内,代表设定DDRAM的地址为40H, ;即将光标移到第二行第三个列的位置上 CALL Write_instruction ;调用写指令码子程式.CALLAD0809Read;启动AD0809;-LOOP: SJMP LOOPSJMP LOOP;JNB IE1, LOOP ;查询等待 ;CLR IE1 ;SJMP INT;-LINE1: DB Pressure: ,00H ;在LCM第一行显示字串LCD Testing_LINE2: DB 0123456789.,00H ;在LCM第二行显示压力数据,保留三位小数LINE3: DB Wele To ,00HLINE4: DB LiRen College!,00H;-;ADC0809启动程序;-AD0809Read:MOV DPTR, #8000H MOV A, #00 MOVX DPTR,A ; 起动 A/D MOV A, #40h DJNZ ACC, $ ; 延时 100us;*;工程量代换:B存高八位,A存低八位;程序中除以256相当于右移八位,即高八位变为整数位,低八位变为小数位;最后结果为: B存整数部分,A存小数部分;*DAIHUAN:MOV B,#200MOV A,ADResultMUL AB MOV 51H,A;小数部分MOV 50H,B;整数部分RET;-;INT1查询服务子程式;-INT: MOV DPTR,#8000HMOVX A, DPTR ; 读入结果CALL CLSMOV A,#10000000B ;将二进制10000000的值放入累加器内,代表设定DDRAM的地址为00H, ;即将光标移到第一行第一个列的位置上. CALL Write_instruction ;调用写指令码子程式. MOV DPTR,#LINE1 ;将第一行字串在程式记忆体中的起始地址存入DPTR CALL STRING ;调用STRING子程式,将字串显示到LCMMOV A,#11000010B ;将二进制11000000的值放入累加器内,代表设定DDRAM的地址为40H, ;即将光标移到第二行第三个列的位置上 CALL Write_instruction ;调用写指令码子程式.MOV A,#50H MOV ADResult, ACALL DAIHUANMOV DPTR,#LINE2 ;将第二行字串在程式记忆体中的起始地址存DPTR. CALL DATE ;调用DATE子程式,将数据显示到LCM RETI;-;TO中断服务子程式;-INSERS: MOV TH0,#0 MOV TL0,#0 DJNZ R5,NO MOV R5,#50 NO: RETI ;-;Initial子程序设定LCM使用8BITS汇流排,显示两行,;使用5*7字型,显示器要显示光标要显示但不闪烁;-Initial: MOV A,#00111000B ; CALL Write_instruction ;第一次设置显示模式 MOV A,#00111000B ; CALL Write_instruction ;第二次设置显示模式 MOV A,#00111000B ; CALL Write_instruction ;第三次设置显示模式 MOV A,#00111000B ; CALL Write_instruction ;第四次设置显示模式 MOV A,#00001110B ; CALL Write_instruction ;设置光标 MOV A,#00000110B ; CALL Write_instruction ;设置LCD数据指针自动加一 RET;-;CheckBusy子程序;等待LCM有空可以执行下一行命令;-CheckBusy: PUSH ACC ;将累加器ACC的内容放到堆栈内, ;以免破坏原来的ACC的资料CheckBusyLoop: CLR ENABLE ;设定E=0,禁能读模式 SETB R_W ;设定R/W=1,选择读模式 CLR RS ;设定RS=0,选择指令寄存器IR SETB ENABLE ;将P3.3脚设定为1,使能LCM MOV A,DB0_DB7 ;将存在ACC内的资料经由P1存入ACC中 ;以便查封第7位元与BF是否为0什么 CLR ENABLE ;将P3.3脚设定为0MOV A,#00H ACC.7,CheckBusyLoop ;判断由LCM读入资料的第7位与BF ;是否为1,若等于1表示LCM忙碌中,CPU ;跳到标记CheckBusyLoop继续执行程序 POP ACC ;将累加器ACC内容从堆栈区取出 CALL DELAY ;调用延迟子程序,延时约数个mS RET ;返回主程序;-;Write_instruction子程序;将ACC内的资料输入到LCM的IR寄存器;-Write_instruction: CALL CheckBusy ;调用CheckBusy子程序确定LCM可以执行指令 CLR ENABLE ;设定E=0,禁能LCM CLR R_W ;设定R/W=0,选择写模式 CLR RS ;设定RS=0,选择指令寄存器IR SETB ENABLE ;将P3.3脚设定为1,使能LCM MOV DB0_DB7,A ;将存在ACC内的指令码经由P1输出到LCM CLR ENABLE ;将P3.3设定为0,MCS-51向LCM存取资料后, ;必须将LCM的E脚输出0,让LCM禁能 ;不做介面的资料传送或设定 RET ;返回主程序;-;WriteLCDData子程序;将ACC内的资料输入到LCM的DR寄存器;-WriteLCDData: CALL CheckBusy ;调用CheckBusy子程序,确定LCM可以执行指令 CLR ENABLE ;设定E=0,禁能LCM CLR R_W ;设定R/W=0,选择写模式 SETB RS ;设定RS=1,选择U寄资料存器DR SETB ENABLE ;将P3.3脚设定为1,使能LCM MOV DB0_DB7,A ;将存在ACC内的指令码经由P0输出到LCM CLR ENABLE RET ;返回主程序;-;CLS子程序清除LCM的显示字幕;-CLS: MOV A,#01H CALL Write_instruction RET;-;DATE子程序;压力数据的扫描显示;-DATE:PUSH ACC;入栈累加器APUSH PSW;入栈PSW中的CYHIG:MOV R1,#50HMOV A,R1CJNE A,#64H,CJ1;判断是否等于100,等于100则直接显示100MOV A,#01HMOVC A,A+DPTRLCALL WriteLCDDataDEC ALCALL WriteLCDDataLCALL WriteLCDDataSJMP XSDCJ1:JC SHI;判断是否大于100 大于100则继续执行分位操作MOV B,#64H;否则跳转到十位分位程序DIV AB;除法做分位处理MOVC A,A+DPTRLCALL WriteLCDDataMOV A,BSHI:CLR CCJNE A,#0AH,CJ2;判断是否等于10等于10则直接显示10MOV A,#01HMOVC A,A+DPTRLCALL WriteLCDDataDEC ALCALL WriteLCDDataSJMP XSDCJ2:JC GEE;判断是否大于10MOV A,B;否则跳转到个位显示程序GEE:MOV B,#0AHDIV ABMOVC A,A+DPTRLCALL WriteLCDDataMOV A,BMOVC A,A+DPTRLCALL WriteLCDDataXSD:MOV A,#0AH;小数点显示程序MOVC A,A+DPTRLCALL WriteLCDDataLOWER:INC R1;小数位显示程序 分位原理同上MOV A,R1MOV B,#64HDIV ABMOVC A,A+DPTRLCALL WriteLCDDataMOV A,BMOV B,#0AHDIV ABMOVC A,A+DPTRLCALL WriteLCDDataMOV A,BMOVC A,A+DPTRLCALL WriteLCDDataPOPPSWPOPACCRET;-;STRING子程序;将一个字幕显示在LCM,字串的起地址要存入DPTR,字串必须以00H结束;-STRING: PUSH ACC LOOP1: CLR A MOVC A,A+DPTR JZ END_PR CALL WriteLCDData INC DPTR JMP LOOP1 END_PR: POP ACC RET ;-;DELAY子程所延迟的时间约为2.5mS;延时时间约为R6*;-DELAY: MOV R6,#5
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!