1、电子价格牌课程设计522020年4月19日文档仅供参考 单片机技术课程设计说明书 电 子 价 格 牌 学 院: 学生姓名: 指导教师: 职称 讲师 专 业: 班 级: 学 号: 完成时间: 湖南工学院单片机技术课程设计课题任务书指导教师学生姓名课题名称电子价格牌内容及任务一、设计任务设计一个应用于酒店具有特定功能的电子价格牌。二、设计内容1、电子价格牌硬件部分(1)、单片机最小系统模块(2)、供电模块(3)、数码管显示模块(4)、键盘模块2、电子价格牌软件部分(1)、系统监控程序模块(2)、显示程序模块(3)、键盘程序模块三、设计要求1、 上电或按键复位后自动显示“P.”,进入准备阶段。2、
2、利用数码管显示四种不同房型的价格,价格均为四位整数。3、 能利用按键修改价格。主要参考资料1李广弟.单片机基础M.第3版.北京:北京航空航天大学出版社, .6.2李全利.单片机原理及应用(C51编程)M.北京:高等教育出版社, .12.3李光飞.单片机C程序设计指导M.北京:北京航空航天大学出版社, .01.4李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社, .9.教研室意见教研室主任:(签字)年 月 日学院:电气与信息工程学院 专业:摘 要电子价格是一种利用数码管来显示价格信息的设备,与传统的纸张相比电子价格牌具有易修改、节约纸张、能在黑暗的环境下显示等优势。该设计是利用AT
3、89C52单片机和74LS573芯片还有4个4位一体的数码管实现。电子价格牌在通电或复位的状态下显示“P.”,第一次按电子的价格表的启动/清零键,电子价格表所有位数显示为0,能够用四个调整按键进行价格的修改。首先使用Keil软件设计出电子价格牌汇编程序,借助Proteus仿真软件进行实验仿真,最后利用Altium Designer9生成电路PCB图并制作实物。 经检验设计符合课程设计任务书任务要求,能够利用数码管显示四种不同房型的价格,价格均为四位整数,可应用于酒店具有特定功能的电子价格牌。 关键词:电子价格表;AT89C52;74LS573;数码管 目 录1 绪论11.1 设计课程任务11.
4、2 功能要求说明11.3 设计方案及原理介绍12 硬件系统的设计22.1 硬件系统各模块功能介绍22.1.1 单片机AT89C5222.1.2 电源模块32.1.3 振荡模块32.1.4 复位模块42.1.5 下载模块42.1.6 显示模块52.1.7 按键模块62.2 设计课题原理图、实物图62.3 设计课题元件清单63 软件系统的设计73.1 单片机资源使用情况73.2 各模块功能介绍73.3 课程设计程序流程图83.3.1 主程序流程图83.3.2 系统监控子程序流程图93.3.3 按键扫描子程序103.3.4 显示子程序流程图113.3.5 键功能子程序流程图123.4 程序清单144
5、 设计测试和使用说明及心得154.1 使用说明154.2 测试过程154.3 误差分析164.4 设计总结与心得16结束语17参考文献18致 谢19附 录20附录A 元器件清单20附录B 电路原理图21附录C 实物图22附录D 程序清单231 绪论1.1 设计课程任务 设计一个应用于酒店具有特定功能的电子价格牌。1.2 功能要求说明1:上电或按键复位后自动显示“P.”,进入准备阶段。2:利用数码管显示四种不同房型的价格,价格均为四位整数。3:能利用按键修改价格。1.3 设计方案及原理介绍设计主要由电源电路、振荡电路、下载电路、复位电路、驱动电路、显示电路和键盘构成。设计框图如图1所示:图1 电
6、子价格牌设计框图在单片机I/O口并行键盘和数码管。设计利用P0口作为4个4位数码管的段控口使用,再利用P2口和P3口分别作为2个4位数码管的位控口使用,合计4个4位数码管。利用74LS573驱动数码管,经过控制按键调按键子程序控制寄存器来控制缓冲地址的内容来控制每位数码管内显示的数字,以实现键盘控制显示器内容来表示价格。2 硬件系统的设计2.1 硬件系统各模块功能介绍设计所用到的系统模块有:单片机AT89C52模块,单片机最小系统功能模块,数码管显示模块,键盘功能模块,下载电路模块。以下内容就是将各模块单独详细讲解。2.1.1 单片机AT89C52AT89C52是一种低功耗、高性能CMOS 8
7、位微控制器,具有8K 系统可编程Flash 存储器。有32个可编程I/O口线,三个16位定时器/计数器,6个中断源,看门狗定时器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。AT89C52芯片及管脚图。如图2所示:图2 AT89C52管脚图2.1.2 电源模块 采用+5V的直流稳压电源供电。经过整流、滤波、稳压,给系统提供稳定的直流电压+5V。整流桥选择2W10型号,承受电流的能力为2A,最大耐压能力为1000V,根据模电知识可知,滤波电容的取值与耐压水平有关,+5V的输出耐压值应大于1.4倍变压器副边电压值,经过计算,滤波电容取标称值470,减
8、小纹波系数电容取0.1,稳压芯片选取LM7805,才能输出稳定的+5V电压,电源电路如图3所示。 因为民用工频交流电电压为220V,而LM7805的输入电压为12V左右,因此图中电压器T的变比选取为18:1K为六角自锁开关,控制整个后续电路的电源。单相整流桥的作用是将交流输入整合成不稳定的直流输出,再由2200的电容减弱它的不稳定性。经过LM7805整合为稳定的+5V直流电。最后经0.1的小电容减少它的纹波系数。图3 电源原理图2.1.3 振荡模块 单片机只有满足相应的时钟信号才能进行工作,时钟信号由时钟电路产生,经过在AT89C52的XT1、XT2引脚上接入12MHz的石英晶振外加两个电容器
9、(电容器根据经验一般取33pF)组成的电路为单片机提供时钟信号。采用12MHz的晶振更能实现对计算机进行通信的波特率,使用12MHz的晶体晶振为系统单片机提供必要的时钟信号时钟电路如图4所示。图4 振荡电路2.1.4 复位模块 单片机的复位有上电复位和对其进行按键复位,当出现死机和运行错误的时候一般采用按键方式对单片机进行复位操作。因为硬件系统中采用的是AT89C52单片机,需要在复位管脚RST上产生两个周期的高电平才能使单片机复位。设计中单片机复位信号的产生采用按键来实现的。其中按键电平复位是经过使复位端经电阻与VCC(+5V)电源接通而实现的。系统复位如图5所示。因为设计采用的是51单片机
10、,因此在使用的时候要用跳线帽将C51与RET短接。图5 复位电路2.1.5 下载模块下载口的1脚接P1.5口,2脚悬空,3脚接单片机的复位口,4脚接P1.7口,5脚接P1.6口,10脚电源,6、7、8、9、脚接地。如图6所示。图6 下载模块2.1.6 显示模块设计采用数码管动态显示,经过单片机的P0和P2和P3口来进行控制,经过编程来达到数码管的动态显示。其电路如图7和图8所示。图7 数码管显示电路图8 数码管显示电路由于74LS573输出电流在5V时能够达到20mA,一般见来作为数码管的驱动电路,数码管显示时所需要的电流一般只有5mA10mA,因此为了让数码管正常工作而不被烧毁采用R1R8
11、8个470欧的限流电阻作为过流保护。2.1.7 按键模块按键电路的设计就是在一端公共接地,另一端经过上拉电阻接到P1口,如图9所示,当有按键按下,相应的口就会变成低电平,产生一个下降沿各键功能单一,互不影响,操作起来十分的清晰与方便。设计中使用了五个按键,S4键是价格牌的开始和清零;S5键的功能是输入左移;S6键的功能是改变当前位数数值;S7键的功能是输入右移;S8键的功能是连续改变当前位数数值。键盘功能模块如图10所示。 图9 键盘上拉排阻 图10键盘功能模块2.2 设计课题原理图、实物图 设计课题电路原理图,见附录B;设计课题实物图,见附录C。2.3 设计课题元件清单设计课题元件清单,见附
12、录A3 软件系统的设计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.。按键扫描子程序:扫描按键状态。系统监控子程序:不断扫描哪些按键按下并跳转至键功能子程序。键功能子程序:经过按键实现不经过按键的加减和移位功能。显示子程序:处理价格信息显示在数码管上。3
13、.3 课程设计程序流程图3.3.1 主程序流程图主程序设置了栈底和PSW的状态而且将RAM清零,之后调显示P.的程序等待P1.0为0也就是按键1按下时之后显示初始价格,再进行按键扫描。流程图如图11所示。图11 主程序流程图3.3.2 系统监控子程序流程图在键扫描程序的中添加显示子程序的调用,保持数码管在键扫描程序循环时时刻显示。而且不断查询按键1到8是否按下,如果按下则调用按键的子程序,在程序执行完成后返回键扫描程序。若无按键按下键扫描程序循环扫描。流程图如图12所示。图12 系统监控子程序流程图3.3.3 按键扫描子程序在开始时调用显示子程序确定数码管持续显示。确定按键确定按下时运行按键消
14、抖程序,确认按键是否按下。如果按键按下则执行子程序功能然后返回键扫描程序。如果按键没有按下则直接返回键扫描程序。如图13所示。图13 按键扫描子程序流程图3.3.4 显示子程序流程图图14 显示子程序流程图如图14显示子程序流程框图,设计采用连续调用两次显示子程序,分别将位控码送P2和P3口。首先保护现场,开辟第三组寄存器,地址指针R0和位控寄存器R2初始化。然后查表取段控码,段控码送P0口,位控码送P2口和P3口并延时1秒,同时位控码左移,显示缓冲区地址加一。判断8位LED灯是否显示完,如果没有就返回重新查表取段控码,如果有就恢复现场,子程序返回。 3.3.5 键功能子程序流程图 (1)按键
15、1执行的键功能程序流程框图如图15所示,给缓冲地址赋初值显示初始价格。图15 键功能子程序流程图 (2)按键2执行的键功能程序流程框图如图16所示,位移缓冲地址选择修改位。图16 键功能子程序流程图(3)按键3执行的键功能程序流程框图如图17所示,修改缓冲地址内容。图17 键功能子程序流程图(4)按键4执行的键功能程序流程框图如图18所示,位移缓冲地址选择修改位。图18 键功能子程序流程图(5)按键5,6,7,8执行的键功能程序流程框图如图19所示,位移缓冲地址选择修改位。图19 键功能子程序流程图3.4 程序清单 程序清单见附录D。4 设计测试和使用说明及心得4.1 使用说明 电子价格牌在通
16、电和按下复位按钮的时候显示P.,按下按钮1电子价格牌开始工作而且将所有位清零。按钮2按下后第一位显示P.并能够进行修改,再按一次再前进一位而且显示P.。按钮3能够进行数字修改,按一下当前数字减一(P.)加一为9。按钮4按下后,后一位显示P.,而且能够修改。按钮5按下并不松手能够连续修改数字持续减一。4.2 测试过程 电子价格牌在待机状态如图20所示,在通电和复位时显示“P.”。除了按按键1/启动键和按其它键均无反应。 图20 实物待机状态 在按钮1按下时如预期功能,价格表开始工作,而且清零所有位数如图21所示。图21 按钮1测试图 在按钮2按下的时候第一位显示为“P.”并能够修改价格,按一下按
17、钮3就能够进行价格修改,如图22和图23所示。图22 按钮2测试图图23 按钮3测试图在按钮4按下后,当前位的后一位显示“P.”而且能利用按键三来进行修改,如图24和25所示。图24 按钮4测试图图25 按钮3测试图4.3 误差分析在设计中存在一定误差。误差为数码管显示不够明亮,产生误差的原因可能是电源供电不足或者线路焊接不稳定等原因导致4.4 设计总结与心得设计是采用keil进行汇编编程,在编程中不断学习单片机的控制方法和汇编程序的编写方法,过程中对单片机的I/O口控制和功能的了解不断加深,并在不断失败中修改编程方法。而且对数码管的控制、内部结构、接线方式也有了深入的了解。在设计中遇到的最大
18、问题就是两位数码管出现了重影,而且迟迟无法解决。初期经过改变编程方法不断修改程序无果,后来使用了Proteus进行仿真发现在连续调用两次显示程序后P2.7和P3.7口的一直处于有效状态,后来经过用CLR指令清零P2.7和P3.7的状态让设计成功。结束语 经过此次单片机课程设计,我学到了很多知识,对AT89C52芯片以及单片机各模块功能有了进一步的理解。从开始对单片机系统以及汇编程序的陌生,到渐渐熟悉,经历了一个相当漫长的过程。课程设计让我有了将理论运用于实践的机会,经过不断的去图书馆和网上查找电子价格牌的相关知识,课程设计一步一步的进行着。后来开始用Altium Designer软件画图,经过
19、不断的修改,最终完成了电子价格表的原理图和PCB图。接下来进行Keil程序的汇编,经过长达一星期的奋斗,汇编程序终于完成。由于课程设计是电子价格牌的设计,需要用到的模块与之前做过的三合一单片机系统板几乎相同,因此课程设计没有再重新制作电路板,降低了课程设计的难度。参考文献1李广弟.单片机基础M.第3版.北京:北京航空航天大学出版社, .6.2李全利.单片机原理及应用(C51编程)M.北京:高等教育出版社, .12.3李光飞.单片机C程序设计指导M.北京:北京航空航天大学出版社, .01.4李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社, .9.致 谢 本次单片机课程设计能画上圆
20、满的句号,首先要感谢我的指导老师吴乐,老师不但在学术上予以指导,同时也给予了我极大的鼓励和支持,使我能一直有饱满的热情来完成我的课程设计,在设计过程中遇到很多问题,吴老师总是引导我去寻找引发问题的原因,并提出解决问题的方法。我向老师表示诚挚的感谢。其次,我还要感谢我的同学,她们给我讲解了很多我不懂的地方,没有她们的帮忙,我很难顺利完成此次单片机课程设计。附 录附录A 元器件清单序号 名称 型号 数量(个) 1 AT89C52单片机芯片锁紧座 40P 1 2 AT89C52单片机 40P 1 3 四位一体共阳数码管插座 1 4 四位一体共阳数码管 40P 4 5 74LS573芯片插座 20P
21、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 电解电容 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附录B 电路原理图附录C 实物
22、图附录D 程序清单/*项目名称:电子价格牌*/*设 计 者:董国栋*/*时 间: 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 0
23、000H LJMP MAIN ORG 0100HMAIN: MOV SP,#30H MOV PSW, #00H MOV R0, #20H MOV R7, #95 QINGLING: MOV R0, #00H ; 将00H赋给R0 INC R0 ;将RAM清零 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
24、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, #60
25、H MOV R1, #0AH/*消抖程序*/XIAODOU2: LCALL DELAY1 JB P1.1, WUXIAO2 LCALL DANJI1 ;使按键单击有效 JNB P1.1, WUXIAO2 INC R1WUXIAO2: RETFANHUI2: LJMP LOOP/*修改数字*/ KEY3: LCALL XIAODOU3 ;消抖过程中A加一 MOV R1, A ;给缓冲地址赋值改变数字 CJNE A, #00H, FANHUI ;确保不超过段码表范围 MOV A, #0AH/*消抖程序*/XIAODOU3: LCALL DELAY1 JB P1.2, WUXIAO3 LCALL D
26、ANJI2 ;使按键单击有效 JNB P1.2, WUXIAO3 DEC AWUXIAO3: RETFANHUI: LJMP LOOP/*控制位右移并显示P.*/KEY4: LCALL XIAODOU4 ;消抖时R1减一 MOV R1, #0AH ;将P.的值赋给R1 MOV A, #0AH CJNE R1, #5FH, FANHUI4 ;确保不超过缓冲地址范围 MOV R1, #6FH MOV R1, #0AHFANHUI4: LJMP LOOP CJNE R1, #5EH, FANHUI5 ;确保不超过缓冲地址范围 MOV R1, #6FH MOV R1, #0AH/*消抖程序*/XIAODOU4: LCALL DELAY1 JB P1.3, WUXIAO4 LCALL DANJI4 ;确保按键单击有效 JNB P1.3, WUXIAO4 DEC R1WUXIAO4: RETFANHUI5: LJMP LOOP/*连续修改数字*