基于89C51的自动充气控制器设计.doc_第1页
基于89C51的自动充气控制器设计.doc_第2页
基于89C51的自动充气控制器设计.doc_第3页
基于89C51的自动充气控制器设计.doc_第4页
基于89C51的自动充气控制器设计.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

课程设计计算机控制技术课 程 设 计成绩评定表设计课题 基于89C51的轮胎自动充气压力控制器设计 学院名称 : 电气工程学院 专业班级 : 测控0901 学生姓名 : 全卓 学 号 : 200948770115 指导教师 : 臧海河 设计地点 : 31-630 设计时间 : 2011-12-122011-12-25 指导教师意见:成绩: 签名: 年 月 日计算机控制技术课 程 设 计 课程设计名称:基于89C51的轮胎自动充气压力控制器设计 专 业 班 级 : 测控0901 学 生 姓 名 : 全卓 学 号 : 200948770115 指 导 教 师 : 臧海河 课程设计地点: 31-630 课程设计时间: 2011-12-122011-12-25 单片机系统 课程设计任务书学生姓名全卓 专业班级测控0901学号200948770115题 目基于89C51的轮胎自动充气压力控制器设计课题性质工程设计课题来源自拟指导教师臧海河主要内容(参数)利用89C51设计轮胎自动充气压力控制系统,实现以下功能:1按照输入的压力大小控制气泵充气,充满自动切断气泵;2能够动态显示当前轮胎内的气压;3根据实际情况设置充气的范围为0255Kpa;任务要求(进度)第1-2天:熟悉课程设计任务及要求,查阅技术资料,确定设计方案。第3-4天:按照确定的方案设计单元电路。要求画出单元电路图,元件及元件参数选择要有依据,各单元电路的设计要有详细论述。第5-6天:软件设计,编写程序。第7-8天:实验室调试。第9-10天:撰写课程设计报告。要求内容完整、图表清晰、文理流畅、格式规范、方案合理、设计正确,篇幅不少于6000字。主要参考资料1 张迎新单片微型计算机原理、应用及接口技术(第2版)M北京:国防工业出版社,20042 熊志奇微机自动配料控制系统J电子技术应用,1997,(10):30-32 3 百度文库/view/b6ccde0b79563c1ec5da717d.html 4 中国电子网http:/www.21IC.com审查意见系(教研室)主任签字: 年 月 日 一、引言4二、方案设计4三、硬件电路设计51、单片机52、显示部分7(1)、74374简单介绍7(2)、LED显示电路8(3)、字形与字形码之间的关系103、A/D转换11(1)、ADC0809简单介绍11(2)、逐次逼近式A/D转换的工作原理134、键盘部分14(1)、74245简单介绍14(2)、键盘的结构原理图及其工作原理155、电磁继电器控制电路16四、软件设计161、显示部分16(1)、LED显示软件设计思路16(2)、显示子程序流程图172、A/D转换软件设计18(1)、A/D转换软件设计思路18(2)、A/D转换子程序流程图183、键盘部分软件设计20(1)、键输入原理20(2)、键输入接口与软件应解决的问题21(3)、键盘扫描的工作原理及其程序框图224、系统总体软件设计23(1)、总体设计思路23(2)、部分内部RAM的使用说明24五、总结25附录A 系统原理图27附录B 源程序清单28一、引言本文详细介绍了单片机在自动充气机中的应用,由于单片机具有集成度高、体积小、运行可靠、应用灵活、价格低、面向控制等特点,因此在工业控制、数据采集、智能仪器仪表、智能化设备和各种家用电器等领域得到了广泛应用,而且发展非常迅猛。现在,单片机的应用领域已经遍及几乎所有的领域。市面的充气机大都不是自动的也不是气压可调的。随着人们生活水平的提高,小汽车将成为家家户户必备的交通工具。再加上生活节奏的加快,时间已是最宝贵的东西。显然市面上普通手动控制的充气机,将满足不了人们的需求,因此,我们就想到了做一件能够自动充气的充气机。它能够给人们在使用过程中节省时间,同时又能够很方便的使用。因为它是全自动的,所以只要把电源一安上,再设定你所需要气压值,它就会自动地完成任务。并且在充气完成之后将自动停止。因此,研究一个能基于单片机自动控制的自动充气机是很有必要的。二、方案设计此自动充气装置由以下几部分构成:压力传感器、测量放大电路、AD转换器、单片机、键盘、显示、气泵。本设计方案仅对单片机控制的部分做详细的介绍,其他部分,例如压力传感器、测量放大电路、气泵等在市面上相关的产品和技术已经很多,在此不做详细介绍。该设计方案要实现的功能:充气前,由人在键盘上输入要充气的气压,该值要显示在数码管上。数值输入完毕按确定键后即启动充气装置开始充气,显示电路要动态的显示当前轮胎内的气压,充气到达设定的值后,自动切断气泵的电源,停止气泵的充气工作。该单片机最小应用系统的组成方框图如图2-1所示图 2-1三、硬件电路设计1、单片机AT89C51是美国Atmel公司生产的低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,与标准MCS51指令系统及8051产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。AT89C51单片机适合于许多较为复杂控制应用场合。此单片机是小型电子产品普遍采用的微控芯片,性价比高。在控制领域应用也比较普遍。其最突出优点是把快擦写存储器应用于单片机中,使得在单片机开发中修改程序变得十分简单,大大的缩短了系统的开发周期。同时在系统开发过程中,能有效地保存数据信息,即使断电也不会丢失信息。AT89系列单片机和80C51系列单片机的引脚是一样的。89C51的引脚如图3.1-1图 3.1-1 89C51引脚(1)、主电源VCC 和GNDGND (20脚):接地。注意:以下的引脚号均以PDIP封装为准。VCC (40脚):主电源+5V。(2)、时钟电路引脚XTAL1和XTAL2XTAL1(19脚):接外部晶体的一端。在片内它是振荡电路反相放大器的输入端。在采用外时钟时,外部时钟信号直接送入此引脚作为驱动端。XTAL2(18脚):接外部晶体的另一端。在片内它是振荡电路反相放大器的输出端,振荡电路的频率是晶体的振荡频率。若采用外部时钟信号,此引脚应悬空不接。(3)、控制信号引脚RST、ALE/、/VPPRST(9脚):单片机的复位输入端。在该引脚输入24个时钟周期以上的高电平即可是单片机复位。ALE/(30脚):地址锁存信号。(29脚):片外程序存储器读选通信号。/VPP(31脚):外部程序存储器选择信号。(4)、输入输出引脚P0、P1、P2、P3P0为双向口,P1、P2、P3为准双向口。2、显示部分(1)、74374简单介绍74374是八路三态锁存器,其引脚图见图2图3.2-1 74374引脚图各引脚功能:OE:三态输出控制端低电平有效。在此显示电路中,接低电平,使其一直有效。CLK:时钟脉冲输入端,上升沿有效。通常和系统的写信号线相连。在执行写操作指令时,把数据写入内部寄存器。1D8D:8路输入。1Q8Q:8路输出。其功能表见 表3.2-1表3.2-1 74LS374功能表输 入输 出输出控制时钟数据CLKDQLHHLLLLLQH高阻态(2)、LED显示电路显示部分由三位LED数码管和两片74374及三个反相器组成,LED显示器具有耗电省,配置灵活,线路简单,安装方便,耐振动,寿命长等优点,并且价格低廉,结构简单。其电路连接见 图3.2-2所示图3.2-2 数码管显示电路显示电路的连接参考伟福实验板上的电路连接,采用动态显示方法,三位LED的段选端同接到片外一个扩展的并行口上,位选端同样接到片外的一个扩展的并行口上。段选驱动由74374提供,位选驱动由另外一片74373外加三个三个反相器提供。LED的连接为共阳极。故在段选驱动输出高电平时选通相应的显示段。位选驱动端输出低电平时选中相应的LED。具体到此电路则是:74374(1)输出高电平时选中三位LED的相应段。74373(2)输出高电平时选中相应的LED。由于只用到了三位LED,74374(2)输出端的状态和对应的位选码以及选中的LED之间的关系如 表3.2-2所示:表 3.2-2 LED位选码表Q8Q7Q6Q5Q4Q3Q2Q1位选码选中的LED0100000040H30010000020H20001000010H1根据伟福实验指导书可知,当把KEY/LED_CS接到译码电路的CS0端子时候,显示电路的位码输出地址是8002H,段码输出地址是8004H。(3)、字形与字形码之间的关系数码管通常有共阳极和共阴极之分,图中电阻是外接的,一般共阳极数码管必须外接电阻,共阴极不一定外接电阻。共阳极数码管的阴极必须接低电平才能点亮此段的二极管。显然,要显示某字形,就必须使该字形所对应的那段二极管点亮,实际上就是送一个用不同电平组合代表的数据送至数码管即可。这种装入数码管中要显示的数据称之为字形码。图3.2-3和图3.2-4分别是共阳极数码管的管脚图和内部电路连接图。 图 3.2-3 管脚配置 图3.2-4 共阳极 根据以上的显示原理很容易可以得到该共阳极数码管的显示字形码表,见 表 3.2-3 字形码表表 3.2-3 字形码表字符字形dpgfedcba字形码0011000000C0H1111111001F9H2210100100A4H3310110000B0H441001100199551001001092H661000001082H7711111000F8H881000000080H991001000088H3、A/D转换(1)、ADC0809简单介绍ADC0809是一种8路模拟输入8位数字输出的逐次逼近式A/D转换器件。逐次逼近式A/D转换器在精度、速度和价格上都适中,是目前最常用的A/D转换器件。、主要技术指标和特性分辨率:8位。转换时间:取决于接入芯片的时钟频率CLK,转换一次的时间是64个时钟周期,当CLK=500kHz时,转换时间T=128us,最大允许的时钟频率为800kHz。单一电源:+5V。模拟输入电压范围:05V。、ADC0809的引脚和功能ADC0809的引脚图见图 3.3-1:图3.3-1 ADC0809引脚图IN0IN7:八路模拟量的输入端。D0D7:A/D转换后的数据输出端,为三态可控输出,可直接与总线相连。A、B、C:模拟通道地址选择断,A为低位,C为高位。多路模拟开关最多允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济有效的数据采集方法。八路模拟开关的切换由地址锁存和译码电路控制,3根地址线与A、B、C引脚端之间相连,通过ALE锁存。通过不同的地址,可以切换八路模拟通道,选择不同的模拟量输入,其通道的地址编码见表3.3-1:表 3.3-1 通道地址编码表地址编码被选中的通道CBA000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7Vr+、Vr-:基准参考电压端,决定了输入模拟量的量程范围。CLK:时钟信号输入端,决定了转换的速度。ALE:地址锁存允许信号,当此信号有效时,A、B、C三位地址信号被锁存码 电路选通对应的模拟输入通道。SC:启动转换信号。通常与单片机的写信号线连接,启动A/D转换。EOC:转换结束信号,表示一次转换结束。常作为中断触发信号。但是在此单片机应用系统中并没有将EOC作为外部中断的触发信号,而是通过查询方式看转换是否结束。OE:输出允许控制信号,通常与系统的读信号线连接,打开 三态门,此时可通过数据线读到转换结果。(2)、逐次逼近式A/D转换的工作原理逐次逼近式转换器的转换原理即“逐位比较”,其过程类似于用砝码在天平上称东西。下图所示为一个N位的逐次逼近式A/D转换器的转换原理图。它由N位寄存器、D/A转换器、比较器和控制逻辑等组成,N位寄存器代表N位2进制代码。当模拟量X送入比较器后,启动信号通过控制逻辑电路启动A/D转换开始转换,首先置1寄存器的最高位,其余位均清零。N位寄存器的内容经过D/A转换器转换后得到的模拟量Y和输入的模拟量X比较。若X=Y,则保留最高位为1,置次高位为1,然后经数模转换后的模拟量再次和输入的模拟量比较;若XY,则置最高位为0,次高位为1,经数模转换后得到的模拟量和输入的X比较,比较后的处理规则同上。经过N次数模转换和比较,N位寄存器中的内容就都是确定的数值了。即完成了一次A/D转换。逐次逼近式A/D转换器的转换原理图如图3.3-2所示。图 3.3-2 逐次逼近式A/D转换器原理图在此单片机应用系统中,ADC0809的模拟通道选择通道0即IN0。电路连接时直接把测量放大电路的输出连接到模拟输入通道IN0即可4、键盘部分键盘采用三行四列的行列式键盘,行线由74245扩展的并行口控制,列线由74373扩展的并行口控制。硬件连接比较简单,74374在前面的显示部分已经介绍过了,本节仅对74245做简单的介绍。(1)、74245简单介绍74245是双向八总线接受/发送器,内部具有八组三态门,每组两个,即能接受也能发送数据。很适合做单片机数据总线的收发器。其引脚图如图3.4-1所示图 3.4-1 74245引脚图由图可知,当有效时,74245的输入/输出方向由DIR控制。工作方式如表3.4-1所示。表 3.4-1 74245工作方式控制信号数据传输方向DIRLLHLHBAAB高阻由表 3.4-1可知,若将DIR接固定TTL,逻辑电平(高或低),则74245变为单项缓冲器,但这种方式极少采用,一般都是实用其他的双向传输功能。为此,DIR必须可控,使其需要变为高电平或则低电平,并与E相结合控制数据传输方向。在单片机系统中,可采用读信号或写信号实现控制。当有效时,数据通过74245的B端(B1B8)输入,由A端(A1A8)输出;当有效时,数据由A端输入,B端输出。(2)、键盘的结构原理图及其工作原理图 3.4-2即为键盘工作的原理图,其为3行四列。图中行线A2A4通过3个上拉电阻接VCC,处于输入状态,列线Q4Q7为输出状态。按键设置在行、列线交点上,行列线分别连接到按键开关的两端。图 3.4-2 键盘工作原理图根据伟福仿真器的硬件配置,可知74245在系统中的扩展地址为8001H,74374在系统中的扩展地址为8002H。CPU通过读取行线的状态,即可知道有无键的按下。当键盘上没有键闭合时,行、列线之间都是断开的,所有行线输入趣味高电平。当键盘上某个键被按下时,则对应的行线和列线短路,行线输入即为列线输出。若此时初始化所有列线输出为低电平,则通过检查行线输入值是否全为“1”即可判断有无键按下。方法是:先令列线Q0输出电平,Q1Q7输入高电平,再读取行线的状态。如果读的某行线为低电平,则可确认对应该行线与列线相交的键被按下,否则无键按下。如果无键按下,都令Q2为低电平,其余列线为高电平,读取行线的状态,如无键按下,依次循环直至找到键号(在下节详细介绍)。找到键号后将其键值读取并存于40H开始的3个单元。当读取一个键值之后,存其键值,继续读取行线状态,依次循环,直到用户按下exec(确定)键。5、电磁继电器控制电路如图 3.5-1所示为该自动充气控制器的执行机构的硬件电路:电磁继电器控制电路。图 3.5-1 电磁健电器控制电路如图 3.5-1所示,电磁继电器由单片机的P1.7引脚控制。当该引脚输出高电平时,使三极管导通,继电器的内部线圈有电流通过,产生吸合力,将公共端吸合到常开端,则气泵开始充气;当轮胎的气充足后,P1.7引脚输出低电平,使三极管截止,则继电器不会产生吸合力,从而断开了气泵的工作。四、软件设计1、显示部分(1)、LED显示软件设计思路由图 3.2-2的显示电路连接可知:要显示某字符,就要把这个字符转换成相应的字形表,(字形码表见表 3.2-3)然后发送给锁存器74374(1),然后由锁存器74374(2)送出位选信号。即可点亮相应的LED。首先建立一个字形表DIS-TAB,表格以十六进制数的次序存放它们相应的字形码,把字形表的首地址DIS_TAB的地址送给基址寄存器DPTR,要显示的数作为偏移量送入变址寄存器A,执行查表指令MOVC A,A+DPTR,则累加器A中得到的结果即表格中取出的相应的数字的字形码。其次要建立一个显示缓冲区40H42H,缓冲区中各单元分别对应各个数码管LED1LED3。显示子程序的功能就是把显示缓冲区中的数据取出,查表后转成相应的显示字形码,然后送到数码管中,所以要执行和更新显示时,必须先向个显示缓冲器中送数,然后再调用显示子程序。(2)、显示子程序流程图显示子程序的流程图如图 4.1-1所示图 4.1-1 显示子程序流程图2、A/D转换软件设计(1)、A/D转换软件设计思路根据伟福仿真器的使用说明,把伟福仿真器模块的AD_CS端与单片机扩展电路的地址译码器的端相连后,则ADC0809在系统中的地址为9000H。模拟输入选择通道0,通过对片外数据存储器的写操作指令:MOV DPTR,#9000HMOVX DPTR,A即可启动一次A/D转换。具体过程如下:指令MOVX DPTR,A产生写信号WR,则上面的或非门输出为1。ALE有效,锁存地址锁存器74LS373输出地址的低三位000,选择模拟通道IN0,打开模拟开关,则外部模拟量送入内部的A/D转换器。与此同时SC有效,启动一次模数转换。结果存于ADC0809内部的三态输出锁存器中。通过对片外数据存储器的读操作指令:MOVX A,DPTR即可读取A/D转换的结果。具体过称为:读操作指令产生RD信号,则下面那个或非门输出为1。OE信号引脚有效,打开内部寄存器的三态门,即可通过数据总线把A/D转换的结果送入累加器A。由于在硬件连接上,是把转换结束标志信号EOC经反相后和单片机89C51的外部中断触发引脚相连接的,故读取AD转换结果的过程是在中断服务程序中完成的。(2)、A/D转换子程序流程图由于用到了外部中断,故A/D转换程序分为初始化程序和中断服务程序,它们的流程图分别如图 4.2-1和图 4.1-2所示。图 4.2-1图 4.2-23、键盘部分软件设计(1)、键输入原理当所设置的功能键或数字键按下时,计算机应用系统完成该键所设定的功能。键信息输入是与软件结构密切相关的过程。对某些应用系统,例如智能仪表,键输入程序是整个应用的重要部分。对于一组键或一个键盘,需要通过接口电路与CPU相连。CPU可以采用查询或中断方式了解有无键输入并检查是那一个键按下,并将该键号送入累加器ACC,然后通过散转指令转入执行该键的功能程序,执行完之后又返回到原始状态。(2)、键输入接口与软件应解决的问题键输入接口与软件应可靠而快速实现键信息输入与执行键功能的任务。为此,应解决下列问题。 、键开关的可靠输入目前,无论是按键或键盘大部分都是利用机械触点的合、断作用。机械触点在闭合及闭合瞬间由于弹性作用的影响,在闭合及断开瞬间均有抖动的过程,从而使电压信号也出现抖动,见图4.3-1。抖动的时间长短与开关的机械特性有关,一般为5ms10ms。所以在读取键号必须去抖。图4.3-1 键断开或者闭合时的电压抖动、对按键进行编码及给定键值或直接给出键号任何一组按键或键盘都要通过I/O口线查询按键开关的状态。根据不同的键值结构,采用不同的编码方法。但无论有无编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的散转转移(相应的散转指令为 JMP A+DPTR)。在此应该完成以下几个步骤:、检测有无键按下;、有键按下后,在无硬件去抖时,应用软件延时方法除去抖动影响;、检测有无键按下;、输出确定的键号以满足散转指令要求。(3)、键盘扫描的工作原理及其程序框图一个健壮的键扫描程序应该依次经过以下步骤处理、判断有无键按下。其方法是Q4Q7口输出低电平,读航线状态,若全为高电平时,则无键按下,否则有键按下。、去除键抖动。其方法是在判断有键按下时,软件延时一段时间(一般为20ms)后,再判断有无键的按下,如果仍然为有键按下的状态,则有键按下,否则无键按下。、扫描键盘,得到按下的键号。其原理是先使一条列线为低电平,如果这条列线上有键闭合,则相应的那条线为低电平,否则各行线状态都为高电平。闭合键的键值=列号4+行号。 、判断闭合的键是否释放。键处理程序的流程图如图 4.3-2所示图 4.3-2 键处理程序流程图4、系统总体软件设计(1)、总体设计思路在系统复位后,应该首先做一些初始化设置,例如:设置堆栈指针,CPU开中断否,允许哪些中断,以及外部中断的触发方式选择位的设置等等。这些工作做完后,就应该调用键盘子程序等待用户输入需要冲气的多少。接着启动气泵的工作。启泵启动后应该立即调用AD转换子程序及显示子程序,动态的显示轮胎内的气压,以及比较现在的气压是否达到用户的要求。由于LED显示是动态的。所以必须循环的调用AD转换子程序和显示子程序,这样做不仅实时性强,可以让用户了解轮胎内气压的变换,而且可以增强LED显示亮度。(2)、部分内部RAM的使用说明在软件编制之前,查阅了相关的资料,了解到汽车轮胎内的气压正常情况下一般是2.5个大气压,超过这个值之后就会有爆炸的危险。故再考虑到实际情况和软件编制的简易性的情况下,我们规定用户输入的充气气压只能位于0255Kpa的范围内。这样一来,由于ADC0809的精度为八位,其输出的数字量的范围也是0255。量化后正好是一对一的关系,就大大的减轻了软件编制的困难。用户输入的数值放在43H单元。40H:高位LED的显示缓冲区。41H:中间位LED的显示缓冲区。42H:低位LED的显示缓冲区。43H:用户在输入要充的气压的时候,由于输入的是三个独立的一位数字。故需要经过处理后使之变为我们意愿中的一个0255之间三位数,然后把这个三位数放在43H中。在就可以用它和AD转换的结果比较,从而知道充气是否完成。44H:AD转换结果存放单元。AD转换的结果和43H中用户输入的数据比较可以知道是否充气完成。60H:在初始化的时候设置为堆栈指针。软件设计的总程序框图如图 4.4-1所示图 4.4-1 软件设计程序框图五、总结此次单片机课程设计历时两周,从刚开始的懵懂,浑浑噩噩,不知所措,到渐渐地有了思路,讨论,争辩,画图,修改,至最终敲定设计方案,乃至调试成功,做出完整的实验报告。可以说是我和我的合作伙伴共同努力的结果。此单片机最小应用系统中AD转换的使用让我较为熟练的掌握了芯片ADC0809的引脚功能及使用方法。熟悉了逐次逼近式AD转换器的工作原理。而显示部分数码管的使用,让我进一步理解了动态LED显示的原理,硬件连接以及软件的编制方法。不过,我觉得此次课程设计我收获最大的是:通过不断的画图,已经能够较为熟练的使用Protel 99SE。附录A 系统原理图图 附录A.1-1 系统硬件连接图附录B 源程序清单ORG 0000HJMP MAINORG 0003H;外部中断0入口地址JMP EX_0ORG 0030HMAIN:MOV SP,#60HMOV IE,#81HSETB IT0;初始化设置,CPU开中断,允许INT0中断LAB0:CALL KS;调用键盘处理程序CALL AD_CONVERMOV A,44H;44H存放AD转换结果CJNE A,43H,NOTEQUALJMP LAB0NOTEQUAL:JC START;轮胎内的气压小于要求的气压,跳到START开始充气JMP LAB0;轮胎内的气压大于要求的气压,不充气START:SETB P1.7;启动气泵工作LOOP:CALL AD_CONVERMOV A,44HMOV B,#100DIV ABMOV 40H,AMOV A,BMOV B,#10DIV ABMOV 41H,AMOV 42H,BCALL DISPLAYMOV A,44HCJNE A,43H,LOOPCLR P1.7SJMP $DISPLAY:PUSH ACCPUSH DPHPUSH DPLSETB RS0;保护现场MOV R0,#40HMOV R7,#20HMOV R6,#3DIS_LOOP:MOV A,R0MOV DPTR,#DIS_TABMOVC A,A+DPTRMOV DPTR,#8004HMOVX DPTR,AMOV DPTR,#8002HMOV A,R7MOVX DPTR,ALCALL DELAY_1MSINC R0MOV A,R7RR AMOV R7,ADJNZ R6,DIS_LOOPRETDIS_TAB:DB 3FH,06,5BH,4FH,66HDB 6DH,7DH,07,7FH,6FHDELAY_1MS:MOV R5,#5OUT_LOOP:MOV R4,#25IN_LOOP:NOPNOPDJNZ R4,IN_LOOPDJNZ R5,OUT_LOOPRETKS:MOV R0,#40H;将键值存在40H开始的单元MOV R4,#0;存按键次数MOV 40H,#0MOV 41H,#0MOV 42H,#0MOV 43H,#0KEYSTARING:ACALL KEYCHECKJZ KEYSTARINGACALL DELAY20MSACALL KEYCHECKJZ KEYSTARINGMOV R1,#0FEH;扫描MOV R2,#6;扫描次数MOV R3,#0;存键值KEYLOOP:MOV DPTR,#08002HMOV A,R1MOVX DPTR,AMOV DPTR,#08001HMOVX A,DPTRJB ACC.0,KEYK1MOV A,R3SJMP KEYVALUEKEYK1:JB ACC.1,KEYK2MOV A,R3ADD A,#1MOV R3,ASJMP KEYVALUEKEYK2:JB ACC.2,KEYK3MOV A,R3ADD A,#2MOV R3,ASJMP KEYVALUEKEYK3:JB ACC.3,CONTINUEMOV A,R3ADD A,#3MOV R3,ASJMP KEYVALUECONTINUE:MOV A,R1RL AMOV R1,AMOV A,R3ADD A,#4MOV R3,ADJNZ R2,KEYLOOPSJMP KEYSTARINGKEYVALUE:MOV DPTR,#VALUETABMOV A,R3MOV 60H,R3MOVC A,A+DPTRMOV R3,AMOV A,60HMOV DPTR,#KEYTABRL AJMP A+DPTRVALUETAB:DB 07H,04H,01H,00HDB 08H,05H,02H,0FHDB 09H,06H,03H,0EHDB 0AH,0BH,0CH,0DHDB 12H,12H,12H,10HDB 12H,12H,11HKEY0:MOV A,R3MOV R0,ASJMP KEYFREEKEY1:MOV A,R3MOV R0,ASJMP KEYFREEKEY2:MOV A,R3MOV R

温馨提示

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

评论

0/150

提交评论