电子价格牌课程设计 - 图文

更新时间:2024-06-11 08:46:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《单片机技术》课程设计说明书

电 子 价 格 牌

学 院: 学生姓名: 指导教师: 职称 讲师 专 业:

班 级: 学 号: 完成时间:

湖南工学院《单片机技术》课程设计课题任务书

学院:电气与信息工程学院 专业:

指导教师 课题名称 一、设计任务 设计一个应用于酒店具有特定功能的电子价格牌。 二、设计内容 1、电子价格牌硬件部分 (1)、单片机最小系统模块 (2)、供电模块 内容及任务 (3)、数码管显示模块 (4)、键盘模块 2、电子价格牌软件部分 (1)、系统监控程序模块 (2)、显示程序模块 (3)、键盘程序模块 三、设计要求 1、上电或按键复位后自动显示“P.”,进入准备阶段。 2、利用数码管显示四种不同房型的价格,价格均为四位整数。 3、能利用按键修改价格。 学生姓名 电子价格牌 主要参考资料 [1]李广弟.单片机基础[M].第3版.北京:北京航空航天大学出版社,2003.6. [2]李全利.单片机原理及应用(C51编程)[M].北京:高等教育出版社,2012.12. [3]李光飞.单片机C程序设计指导[M].北京:北京航空航天大学出版社,2003.01. [4]李光飞.单片机课程设计实例指导[M].北京:北京航空航天大学出版社,2004.9. 教研室 意见 教研室主任:(签字) 年 月 日 摘 要

电子价格是一种利用数码管来显示价格信息的设备,与传统的纸张相比电子价格牌具有易修改、节约纸张、能在黑暗的环境下显示等优势。

该设计是利用AT89C52单片机和74LS573芯片还有4个4位一体的数码管实现。电子价格牌在通电或复位的状态下显示“P.”,第一次按电子的价格表的启动/清零键,电子价格表所有位数显示为0,可以用四个调整按键进行价格的修改。首先使用Keil软件设计出电子价格牌汇编程序,借助Proteus仿真软件进行实验仿真,最后利用Altium Designer9生成电路PCB图并制作实物。 经检验设计符合课程设计任务书任务要求,能够利用数码管显示四种不同房型的价格,价格均为四位整数,可应用于酒店具有特定功能的电子价格牌。

关键词:电子价格表;AT89C52;74LS573;数码管

目 录

1 绪论 ............................................................................................................. 1

1.1 设计课程任务 ...................................................................................... 1 1.2 功能要求说明 ...................................................................................... 1 1.3 设计方案及原理介绍............................................................................. 1 2 硬件系统的设计 .............................................................................................. 2

2.1 硬件系统各模块功能介绍 ........................................................................ 2

2.1.1 单片机AT89C52 .......................................................................... 2 2.1.2 电源模块 ................................................................................... 3 2.1.3 振荡模块 ................................................................................... 3 2.1.4 复位模块 ................................................................................... 4 2.1.5 下载模块 ................................................................................... 4 2.1.6 显示模块 ................................................................................... 5 2.1.7 按键模块 ................................................................................... 6 2.2 设计课题原理图、实物图 ........................................................................ 6 2.3 设计课题元件清单 ................................................................................. 6 3 软件系统的设计 ............................................................................................. 7

3.1 单片机资源使用情况............................................................................. 7 3.2 各模块功能介绍 ................................................................................... 7 3.3 课程设计程序流程图............................................................................. 8

3.3.1 主程序流程图............................................................................. 8 3.3.2 系统监控子程序流程图 ............................................................... 9 3.3.3 按键扫描子程序 ....................................................................... 10 3.3.4 显示子程序流程图 .................................................................... 11 3.3.5 键功能子程序流程图 ................................................................. 12 3.4 程序清单 ........................................................................................... 15 4 设计测试和使用说明及心得........................................................................... 15

4.1 使用说明 ........................................................................................... 15 4.2 测试过程 ........................................................................................... 15 4.3 误差分析 ........................................................................................... 16 4.4 设计总结与心得 ................................................................................. 17 结束语 ............................................................................................................. 17 参考文献 .......................................................................................................... 18 致 谢 ............................................................................................................. 19 附 录 ............................................................................................................. 20

附录A 元器件清单 .................................................................................... 20 附录B 电路原理图 .................................................................................... 22 附录C 实物图 .......................................................................................... 23 附录D 程序清单 ....................................................................................... 24

1 绪论

1.1 设计课程任务

设计一个应用于酒店具有特定功能的电子价格牌。

1.2 功能要求说明

1:上电或按键复位后自动显示“P.”,进入准备阶段。 2:利用数码管显示四种不同房型的价格,价格均为四位整数。 3:能利用按键修改价格。

1.3 设计方案及原理介绍

设计主要由电源电路、振荡电路、下载电路、复位电路、驱动电路、显示电路和键盘构成。设计框图如图1所示:

图1 电子价格牌设计框图

在单片机I/O口并行键盘和数码管。设计利用P0口作为4个4位数码管的段控口使用,再利用P2口和P3口分别作为2个4位数码管的位控口使用,合计4个4位数码管。利用74LS573驱动数码管,通过控制按键调按键子程序控制寄存器来控制缓冲地址的内容来控制每位数码管内显示的数字,以实现键盘控制显示器内容来表示价格。

1

2 硬件系统的设计

2.1 硬件系统各模块功能介绍

设计所用到的系统模块有:单片机AT89C52模块,单片机最小系统功能模块,数码管显示模块,键盘功能模块,下载电路模块。以下内容就是将各模块单独详细讲解。 2.1.1 单片机AT89C52

AT89C52是一种低功耗、高性能CMOS 8位微控制器,具有8K 系统可编程Flash 存储器。有32个可编程I/O口线,三个16位定时器/计数器,6个中断源,看门狗定时器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。

AT89C52芯片及管脚图。如图2所示: 错误!

图2 AT89C52管脚图

2

2.1.2 电源模块

采用+5V的直流稳压电源供电。通过整流、滤波、稳压,给系统提供稳定的直流电压+5V。整流桥选择2W10型号,承受电流的能力为2A,最大耐压能力为1000V,根据模电知识可知,滤波电容的取值与耐压水平有关,+5V的输出耐压值应大于1.4倍变压器副边电压值,通过计算,滤波电容取标称值470μf,减小纹波系数电容取0.1μf,稳压芯片选取LM7805,才能输出稳定的+5V电压,电源电路如图3所示。

因为民用工频交流电电压为220V,而LM7805的输入电压为12V左右,所以图中电压器T的变比选取为18:1K为六角自锁开关,控制整个后续电路的电源。单相整流桥的作用是将交流输入整合成不稳定的直流输出,再由2200μf的电容减弱它的不稳定性。通过LM7805整合为稳定的+5V直流电。最后经0.1μf的小电容减少它的纹波系数。

图3 电源原理图

2.1.3 振荡模块

单片机只有满足相应的时钟信号才能进行工作,时钟信号由时钟电路产生,通过在AT89C52的XT1、XT2引脚上接入12MHz的石英晶振外加两个电容器(电容器根据经验一般取33pF)组成的电路为单片机提供时钟信号。采用12MHz的晶振更能实现对计算机进行通信的波特率,使用12MHz的晶体晶振为系统单片机提供必要的时钟信号时钟电路如图4所示。

图4 振荡电路

3

2.1.4 复位模块

单片机的复位有上电复位和对其进行按键复位,当出现死机和运行错误的时候一般采用按键方式对单片机进行复位操作。因为硬件系统中采用的是AT89C52单片机,需要在复位管脚RST上产生两个周期的高电平才能使单片机复位。

设计中单片机复位信号的产生采用按键来实现的。其中按键电平复位是通过使复位端经电阻与VCC(+5V)电源接通而实现的。系统复位如图5所示。因为设计采用的是51单片机,所以在使用的时候要用跳线帽将C51与RET短接。

图5 复位电路

2.1.5 下载模块

下载口的1脚接P1.5口,2脚悬空,3脚接单片机的复位口,4脚接P1.7口,5脚接P1.6口,10脚电源,6、7、8、9、脚接地。如图6所示。

图6 下载模块

4

2.1.6 显示模块

设计采用数码管动态显示,通过单片机的P0和P2和P3口来进行控制,通过编程来达到数码管的动态显示。其电路如图7和图8所示。

图7 数码电路

图8 数码管显示电路

管显示

由于74LS573输出电流在5V时可以达到20mA,通常用来作为数码管的驱动电路,数码管显示时所需要的电流一般只有5mA~10mA,所以为了让数码管正常工作而不被烧毁采用R1~R8 8个470欧的限流电阻作为过流保护。

5

2.1.7 按键模块

按键电路的设计就是在一端公共接地,另一端通过上拉电阻接到P1口,如图9所示,当有按键按下,相应的口就会变成低电平,产生一个下降沿各键功能单一,互不影响,操作起来十分的清晰与方便。设计中使用了五个按键,S4键是价格牌的开始和清零;S5键的功能是输入左移;S6键的功能是改变当前位数数值;S7键的功能是输入右移;S8键的功能是连续改变当前位数数值。键盘功能模块如图10所示。

图9 键盘上拉排阻

2.2 设计课题原理图、实物图

设计课题电路原理图,见附录B;

设计课题实物图,见附录C。

2.3 设计课题元件清单

设计课题元件清单,见附录A

6

10键盘功能模块

图3 软件系统的设计

3.1 单片机资源使用情况

设计除了了使用单片机工作所必须的硬件资源(如连接晶振的引脚XTAL1和XTAL2,复位引脚RESET)外,还使用了P0.0-P0.7作为数码管显示器的段控。P2.0-P2.7和P3.0-P3.7分别控制数码管LED0-LED15的位控码驱动。P1.0-P1.3作为独立式键盘的输入端。

3.2 各模块功能介绍

主程序:系统初始化及主要功能。 显示P.子程序:启动时显示P.。 按键扫描子程序:扫描按键状态。

系统监控子程序:不断扫描哪些按键按下并跳转至键功能子程序。 键功能子程序:通过按键实现不通过按键的加减和移位功能。 显示子程序:处理价格信息显示在数码管上。

7

3.3 课程设计程序流程图

3.3.1 主程序流程图

主程序设置了栈底和PSW的状态并且将RAM清零,之后调显示P.的程序等待P1.0为0也就是按键1按下时之后显示初始价格,再进行按键扫描。流程图如图11所示。

8

图11 主程序流程图

3.3.2 系统监控子程序流程图

在键扫描程序的中添加显示子程序的调用,保持数码管在键扫描程序循环时时刻显示。并且不断查询按键1到8是否按下,如果按下则调用按键的子程序,在程序执行完成后返回键扫描程序。若无按键按下键扫描程序循环扫描。流程图如图12所示。

9

图12 系统监控子程序流程图

3.3.3 按键扫描子程序

在开始时调用显示子程序确定数码管持续显示。确定按键确定按下时运行按键消抖程序,确认按键是否按下。如果按键按下则执行子程序功能然后返回键扫描程序。如果按键没有按下则直接返回键扫描程序。如图13所示。

开始有键按下?Y调DIR去抖动调DIR去抖动键确实按下?Y计算保存键值NN按键释放?Y恢复键值N调DIR延时返回

图13 按键扫描子程序流程图

10

3.3.4 显示子程序流程图

开始保护现场①延时1~2ms修改显示缓冲单元地址显示缓冲区地址指针初始化置位控码初值是否显示到最高位?N修改位控码值保存位控码值Y输出位控码A←显示数据恢复现场返回查表取出显示数据字形代码输出段控码(字形代码)①

图14 显示子程序流程图

如图14显示子程序流程框图,设计采用连续调用两次显示子程序,分别将位控码送P2和P3口。首先保护现场,开辟第三组寄存器,地址指针R0和位控寄存器R2初始化。然后查表取段控码,段控码送P0口,位控码送P2口和P3口并延时1秒,同时位控码左移,显示缓冲区地址加一。判断8位LED灯是否显示完,如果没有就返回重新查表取段控码,如果有就恢复现场,子程序返回。

11

3.3.5 键功能子程序流程图

(1)按键1执行的键功能程序流程框图如图15所示,给缓冲地址赋初值显示初始价格。

图15 键功能子程序流程图

(2)按键2执行的键功能程序流程框图如图16所示,位移缓冲地址选择

修改位。

12

图16 键功能子程序流程图

(3)按键3执行的键功能程序流程框图如图17所示,修改缓冲地址内容。

图17 键功能子程序

流程图

(4)按键4程序流程框图如图

13

执行的键功能18所示,位移

缓冲地址选择修改位。

图18 键功能子程序流程图

(5)按键5,6,7,8执行的键功能程序流程框图如图19所示,位移缓冲地址选择修改位。

图19 键功能子程序流程图

14

3.4 程序清单

程序清单见附录D。

4 设计测试和使用说明及心得

4.1 使用说明

电子价格牌在通电和按下复位按钮的时候显示P.,按下按钮1电子价格牌开始工作并且将所有位清零。按钮2按下后第一位显示P.并可以进行修改,再按一次再前进一位并且显示P.。按钮3可以进行数字修改,按一下当前数字减一(P.)加一为9。按钮4按下后,后一位显示P.,并且可以修改。按钮5按下并不松手可以连续修改数字持续减一。

4.2 测试过程

电子价格牌在待机状态如图20所示,在通电和复位时显示“P.”。除了按按键1/启动键和按其他键均无反应。

图20 实物待机状态

15

在按钮1按下时如预期功能,价格表开始工作,并且清零所有位数如图21

所示。

图21 按钮1测试图

在按钮2按下的时候第一位显示为“P.”并可以修改价格,按一下按钮3

就可以进行价格修改,如图22和图23所示。

图22 按钮2测试图

图23 按钮3测试图

在按钮4按下后,当前位的后一位显示“P.”并且能利用按键三来进行修改,如图24和25所示。

图24 按钮4测试图

图25 按钮3测试图

4.3 误差分析

16

在设计中存在一定误差。误差为数码管显示不够明亮,产生误差的原因可能是电源供电不足或者线路焊接不稳定等原因导致

4.4 设计总结与心得

设计是采用keil进行汇编编程,在编程中不断学习单片机的控制方法和汇编程序的编写方法,过程中对单片机的I/O口控制和功能的了解不断加深,并在不断失败中修改编程方法。而且对数码管的控制、内部结构、接线方式也有了深入的了解。

在设计中遇到的最大问题就是两位数码管出现了重影,而且迟迟无法解决。初期通过改变编程方法不断修改程序无果,后来使用了Proteus进行仿真发现在连续调用两次显示程序后P2.7和P3.7口的一直处于有效状态,后来通过用CLR指令清零P2.7和P3.7的状态让设计成功。

结束语

通过此次单片机课程设计,我学到了很多知识,对AT89C52芯片以及单片机各模块功能有了进一步的理解。从开始对单片机系统以及汇编程序的陌生,到渐渐熟悉,经历了一个相当漫长的过程。课程设计让我有了将理论运用于实践的机会,通过不断的去图书馆和网上查找电子价格牌的相关知识,课程设计一步一步的进行着。

后来开始用Altium Designer软件画图,通过不断的修改,最终完成了电子价格表的原理图和PCB图。接下来进行Keil程序的汇编,经过长达一星期的奋斗,汇编程序终于完成。由于课程设计是电子价格牌的设计,需要用到的模块与之前做过的三合一单片机系统板几乎相同,所以课程设计没有再重新制作电路板,降低了课程设计的难度。

17

参考文献

[1]李广弟.单片机基础[M].第3版.北京:北京航空航天大学出版社,2003.6. [2]李全利.单片机原理及应用(C51编程)[M].北京:高等教育出版社,2012.12. [3]李光飞.单片机C程序设计指导[M].北京:北京航空航天大学出版社,2003.01. [4]李光飞.单片机课程设计实例指导[M].北京:北京航空航天大学出版社,2004.9.

18

致 谢

本次单片机课程设计能画上圆满的句号,首先要感谢我的指导老师吴乐,老师不仅在学术上予以指导,同时也给予了我极大的鼓励和支持,使我能一直有饱满的热情来完成我的课程设计,在设计过程中遇到很多问题,吴老师总是引导我去寻找引发问题的原因,并提出解决问题的方法。我向老师表示诚挚的感谢。其次,我还要感谢我的同学,他们给我讲解了很多我不懂的地方,没有他们的帮忙,我很难顺利完成此次单片机课程设计。

19

附 录

附录A 元器件清单

序号 名称 型号 数量(个) 1 AT89C52单片机芯片锁紧座 40P 1 2 AT89C52单片机 40P 1 3 四位一体共阳数码管插座 1 4 四位一体共阳数码管 40P 4 5 74LS573芯片插座 20P 5 6 74LS573 20P 2 7 晶振 12MHz 2 8 发光二极管 1 9 单排插针 40P 2 10 三极管 9012 3 11 蜂鸣器 3 12 小按键 3 13 下载口座子 3 14 六脚按键电源开关 3 15 USB电源线 3 16 USB电源线插座 3 17 电阻 470 16 18 电阻 200 3 19 电阻 1K 3

20

序号 名称 型号 数量(个) 20 电解电容 22uF 3 21 瓷片电容 33pF 3 22 排阻 10K 3 23 排阻 470 3 24 短路冒 3 25 杜邦线8P 3 26 PCB板子 3 27 固定螺钉螺帽 3mm 3 28 USB下载线 3

21

1GND20P10P11P12P13P14P15P16P17470P05R3470P04R4470P03R5P02R647087654321470P00R8ISP8abcdefgdp2J1393837363534333287654321470P06R2ISP8J587654321ISP8ISP8ISP8P20P21P22P23P24P25P26P278765432187654321P01R7P30P31P32P33P34P35P36P37P20P21P22P23P24P25P26P27P30P31P32P33P34P35P36P37470ISP8J6ISP8J7ISP8J887654321876543218765432121222324252627281011403130291173J4P10P11P12P13P14P15P16P17470P07R14U1GNDP0.0AT89S52P0.1P1.0P0.2P1.1P0.3P1.2P0.4P1.3P0.5P1.4P1.5P0.6P1.6P0.7P1.7P2.0P2.1P3.2(INT0)P2.2P3.3(INT1)P2.3P2.4P3.4(T0)P2.5P3.5(T1)P2.6P2.7X2P3.0(RXD)X1P3.1(TXD)RESCETVCCEA/VPPP3.7(RD)ALE/PROGP3.6(WD)PSEN110J2P00P01P02P03P04P05P06P07P10P11P12P13P14P15P16P17P00P01P02P03P04P05P06P07J3AP20P21P22P23P24P25P26P27P30P31VCCALEPSEN12345678P00P01P02P03P04P05P06P07J23470流水灯电路VCC987654321J2612LSDAP3212P3313P3414P3515XT218XT119RET9P3717P3616D2D3D4D5D6D7D8D9LEDLEDLEDLEDLEDLEDLEDLEDP37P36P35P34P33P32P31P3011711042534253VCCLED1SMG4abcdefgdp排针C1J14987654321J16321RSTR10200C51复位电路VCCR111KAVRLED2SMG2R311KAT89C52BJ11987654321S1C51VCC10KVCC10KVCCJ21V+12VCCV-GGND33PFJ28GND+D-DVCCUSBVCCUSB接口J3121VCCDVCC21GNDGNDSTCJ29432112344321GNDCLKDATAGNDCLKDATAGNDC433PFVCCT1P1512RET3P174V+P165P31P30GNDMOSINCRSTSCKMISOXZKVCCGNDGNDGNDGND10987612S4C233PFGNDS2AVRAVR复位电路U2GND1P272P263P254P245P236P227P218P209GND10OE1D2D3D4D5D6D7D8DGNDVCC1Q2Q3Q4Q5Q6Q7Q8QG74LS573KG1-220191817161514131211VCCP1010K10K上拉排阻S5KEG1-2P11S3KG6VCCD1LEDR121KS6C3KEG1-2P12CS7XT1VCCJZ112MXT274LS573KEG1-2P13C电源S8KEG1-2P14附录B 电路原理图

J27USBFEMALE数码管电路晶振电路J251S9J221KEG1-2J201P15J191J181J171J151J101J91J321J331S10KEG1-2P16V+P35T1测试USB接口J30P34T0测试P33INT1测试P32INT0测试XT1RETALEGNDVCCGNDV+S11KEG1-2P17独立键盘电路TitleGND下载电路GND重要测试电路SizeA4Date:File:123Number电子价格牌1DRevision12017/1/2C:\\Users\\..\\电子价格牌原理图.SchDocSheet of1Drawn By:自本1401董国栋4 22

振源测试复位测试ALE测试P00P01P02P03P04P05P06P07J12987654321P10P11P12P13P14P15P16P17987654321P20P21P22P23P24P25P26P27P30P31P32P33P34P35P36P3722UF1KJ13VCCC51GNDd1d2d3d4d1d2d3P31d43单片机最小系统R9J249012Q12PNP211BFMQC51RETAVR9869812126LS1GND蜂鸣电路LS

地测试正电源测试下载口测试下载口VCC测试附录C 实物图

23

附录D 程序清单

/*项目名称:电子价格牌*/ /*设 计 者:董国栋*/ /*时 间:2016年12月 */

/*项目功能:设计一个能显示四种不同房型价格的电子价格表。*/ /*项目所以单片机资源:P0口接输出数码管段控信号;

P2口接输出数码管位控信号; P1口接按键;

P3口接输出数码管位控信号; 晶振12MHz;

按键1:P1.0,启动/清零; 按键2:P1.1,输入控制左移一位; 按键3:P1.2,修改数字; 按键4:P1.3,输入控制右移一位;

按键5:P1.4,连续修改数字;

60H到70H用于显示器缓冲地址;

堆栈栈底:30H。*/

/*项目所用的显示模块:四个四位一体数码管;*/

/************************主程序******************************/

ORG 0000H

LJMP MAIN ORG 0100H

#00H

MAIN: MOV SP,#30H MOV MOV MOV

PSW,

R0, #20H R7, #95

#00H ; 将00H赋给R0

QINGLING: MOV @R0, INC

R0 ;将RAM清零

24

DJNZ R7, QINGLING

LCALL

XIANP ;跳转到显示P.的程序

/*****************************键扫描程序****************************/

LOOP: LCALL DIR CLR P2.7 LCALL DIR2 CLR P3.7

JNB P1.0, KEY1 JNB P1.1, KEY2 JNB P1.2, KEY3 JNB P1.3, KEY4 JNB P1.4, KEY5 LJMP LOOP

/**********************开启电子价格牌并清零每位********************/

KEY1: MOV R1, #5FH ;将R1赋值5FH位数值的修改做准备 MOV R0, #60H HUILAI: MOV A, #00H

MOV @R0, A ;将60H到70H的值赋00H,所有位 INC R0 显示0 CJNE R0, #70H, HUILAI

LJMP LOOP

/*******************控制位左移显示P.********************************/

KEY2: LCALL XIAODOU2 ;消抖过程中R1加一 MOV @R1, #0AH ;将P.段控码送给缓冲地址

MOV A, #0AH

CJNE R1, #70H, FANHUI2 ;确保修改位不超过缓冲范围 MOV R1, #60H MOV @R1, #0AH

/********************消抖程序**************************/

25

XIAODOU2: LCALL DELAY1

JB P1.1, WUXIAO2

LCALL DANJI1 ;使按键单击有效 JNB P1.1, WUXIAO2 INC R1

WUXIAO2: RET

FANHUI2: LJMP LOOP

/********************修改数字*************************/

KEY3: LCALL XIAODOU3 ;消抖过程中A加一 MOV @R1, A ;给缓冲地址赋值改变数字

CJNE A, #00H, FANHUI ;确保不超过段码表范围 MOV A, #0AH

/*********************消抖程序**************************/

XIAODOU3: LCALL DELAY1

JB P1.2, WUXIAO3

LCALL DANJI2 ;使按键单击有效

JNB P1.2, WUXIAO3

DEC A

WUXIAO3: RET FANHUI:

LJMP LOOP

/********************控制位右移并显示P.**************************/

KEY4: LCALL XIAODOU4 ;消抖时R1减一 MOV @R1, #0AH ;将P.的值赋给R1

MOV A, #0AH

CJNE R1, #5FH, FANHUI4 ;确保不超过缓冲地址范围 MOV R1, #6FH MOV @R1, #0AH

FANHUI4: LJMP LOOP

26

CJNE R1, #5EH, FANHUI5 ;确保不超过缓冲地址范围

MOV R1, #6FH MOV @R1, #0AH

/************************消抖程序*************************/

XIAODOU4: LCALL DELAY1

JB P1.3, WUXIAO4

LCALL DANJI4 ;确保按键单击有效 JNB P1.3, WUXIAO4 DEC R1

WUXIAO4: RET

FANHUI5: LJMP LOOP

/************************连续修改数字*************************/

KEY5: LCALL XIAODOU5 ;不加单击有效使R1持续减一 MOV @R1, A

CJNE A, #00H, FANHUI2 MOV A, #0AH

/************************消抖程序*************************/

XIAODOU5: MOV R7, #00H FANHUI7: LCALL DELAY1

INC R7

CJNE R7, #05H, FANHUI7

JB P1.4, WUXIAO5

DEC A

WUXIAO5: RET FANHUI6: LJMP LOOP

/************************显示程序一*****************************/

DIR: PUSH DPH ;保护现场 PUSH DPL

27

PUSH ACC PUSH PSW SETB RS0 CLR RS1 CLR A

MOV R0, #60H ;选取缓冲首地址 MOV R3, #01H MOV A, R3

LD0: MOV P2, A ;实现位控

MOV DPTR, #BIAO MOV A, @R0 MOVC A, @A+DPTR

MOV P0, A ;实现段控 LCALL DELAY INC R0 MOV A,R3 JB ACC.7, LD1 RL A

MOV R3, A LJMP LD0

LD1: CLR RS0 CLR RS1

POP PSW POP ACC POP DPL POP DPH RET

/***************************显示程序二*************************/

DIR2: PUSH DPH

28

PUSH DPL

PUSH ACC PUSH PSW SETB RS0 SETB RS1 CLR A

MOV R0, #68H MOV R3, #01H MOV A, R3

LD2: MOV P3, A

MOV DPTR, #BIAO MOV A, @R0 MOVC A, @A+DPTR MOV P0, A LCALL DELAY INC R0 MOV A,R3 JB ACC.7, LD3 RL A MOV R3,A LJMP LD2

LD3: CLR RS0 CLR RS1

POP PSW POP ACC POP DPL POP DPH RET

/****************************段控表***************************/

29

BIAO: DB 0C0H DB 0F9H DB 0A4H DB 0B0H DB 099H DB 092H DB 082H DB 0F8H DB 080H DB 090H DB 00CH

/************************初始状态显示P,*************************/

XIANP: MOV P0, MOV

P3,

#0CH

;将段控码P.送到P0口

#01H ;将一位数码管有效并显示P.

MOV P2, #00H

JB P1.0, XIANP ;开启按键跳转条件 RET

/****************************确认按键单击程序********************/

DANJI1: LCALL DIR ;单击程序中调显示程序避免过程数码管不显示 CLR P2.7 LCALL DIR2 CLR P3.7

JNB P1.1, DANJI1 ;当按键松开时才会执行一次按键程序 RET

DANJI2: LCALL DIR CLR P2.7 LCALL DIR2 CLR P3.7

JNB P1.2, DANJI2

30

RET DANJI3: LCALL DIR CLR P2.7 LCALL DIR2 CLR P3.7

JNB P1.3, DANJI3 RET DANJI4: LCALL DIR CLR P2.7 LCALL DIR2 CLR P3.7

JNB P1.3, DANJI4 RET

/*************************延时程序1MS***************************/

DELAY: MOV R7, DL1: DL0:

MOV DJNZ DJNZ DJNZ RET

R5, R5, R6, R7,

#02H $ DL0 DL1

MOV

R6,

#4EH

#01H

/************************按键延时程序**************************/

DELAY1: MOV R5, #08H ;通过不断调显示程序来按键松手实现延时 LOOP1: LCALL DIR 而且不会导致数码管不不显示 CLR P2.7 LCALL DIR2

CLR P3.7

31

DEC R5

CJNE R5, #00H, LOOP1 RET END

32

本文来源:https://www.bwwdw.com/article/eb86.html

Top