版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 设 计 任 务 书题 目 键盘控制数码管显示及LED点亮 学院(部) 电子与控制工程 专 业 建筑设施智能技术 班 级 320601 学生姓名 学 号 5 月 15 日至 5 月 22 日 指导教师 2014 年5月22日目录1、 摘要22、 设计要求23、 方案设计说明24、 程序流程图45、 模块介绍4 1)8051CPU4 2)数码管显示5 3)44键盘输入5 4)流水灯显示66、 源程序7 程序执行结果117、 主要元器件介绍13 1)805113 2)共阴极数码管15八、参考书籍17一、摘要单片机是单片微型计算机,它是针对控制与检测应用而设计的,也称为微控制器。它具有芯片体积
2、小、集成度高、功能强、抗干扰能力强、性价比高等特点,被广泛的应用在工业自动化、仪器仪表、航天航空、消费电子、电力电子、汽车电子、计算机外设等领域。自20世纪80年代MCS-51系列单片机问世以来,经历了三十多年的发展,在共享Inter公司8051内核技术的基础上,众多的半导体公司经过不断的技术更新,推出了庞大的系列兼容产品,使MCS-51系列单片机依然在各个应用领域扮演着重要的角色。学习单片机的最有效方法就是理论与实践并重,需要更深的去了解单片机的很多功能,努力的去查找资料,当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以
3、前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。本课程通过应用单片机技术完成了流程灯、数码管显示以及44键盘的识别等功能。2、 设计要求(1)利用按键控制流水灯的显示。(2)利用33或者44键盘,控制数码管的显示。(3)利用到定时/计数器。 (4)利用到中断技术。三、方案设计说明根据要求我们所采用的方案为:主程序为44键盘的扫描程序,通过P1口输入所按键的键值,将扫描到的键值“0F”中的一位通过P0口在数码管上显示,并检测按键是否为“LED-”,如果不是,将回到程序继续扫描,如果是“LED-”,则跳到LED
4、循环点亮。LED循环点亮:一共八盏灯,一盏灯亮,另七盏灯灭,从左到右循环点亮,在其中运用定时器T0工作在MODEL1,对其点亮时间进行控制点亮1s,对其定时器溢出中断次数进行统计,当溢出中断次数达到10次后,返回主程序开始。4、 程序流程图5、 模块介绍(1)8051CPUP1.3P1.0分别连接44键盘的第一行到第四行;P1.7P1.4分别连接44键盘的第一列到第四列;P2口分别接8个LED灯;P0口接1个共阴极数码管。如图,MCS-51系列单片机的40只引脚按功能能可分为四类: 电源引脚电源引脚提供芯片的工作电源,MCS-51系列单片机采用单一的直流5V电源供电。(1) Vcc(引脚40)
5、 +5V。(2) GND(引脚20)地。 晶体振荡器信号输入和输出引脚晶体振荡器信号输入输出引脚外接振荡器或时钟源,为单片机提供时钟信号。(1) XTAL1(引脚19)振荡器信号输入。(2) XTAL2(引脚18)振荡器信号输出。I/O口线引脚P0口(3932脚):P0.0P0.7统称为P0口。在不接片外存储器与不扩展I/O口时,可作为准双向输入/输出口。在接有片外存储器或扩展I/O口时,P0口分时复用为低8位地址总线和双向数据总线。P1口(18脚):P1.0P1.7统称为P1口,可作为准双向I/O口使用。对于52子系列,P1.0与P1.1还有第二功能:P1.0可用作定时器/计数器2的计数脉冲
6、输入端T2,P1.1可用作定时器/计数器2的外部控制端T2EX。P2口(2128脚):P2.0P2.7统称为P2口,一般可作为准双向I/O口使用;在接有片外存储器或扩展I/O口且寻址范围超过256字节时,P2口用作高8位地址总线。P3口(1017脚):P3.0P3.7统称为P3口。除作为准双向I/O口使用外,还可以将每一位用于第二功能,而且P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。P3口的第二功能如表1-1所示。引脚第二功能P3.0RxD串行数据的输入端P3.1TxD串行数据的输出端P3.2外部中断0的中断请求信号输入端P3.3外部中断1的中断请求信号输入端P3.4T0定时
7、器/计数器T0的外部计数信号输入端P3.5T1定时器/计数器T1的外部计数信号输入端P3.6外部数据存储器和外部I/O口的写控制信号P3.7外部数据存储器和外部I/O口的读控制信号 表1-1 控制信号线ALE(引脚30)地址锁存控信号,输出。(引脚29)外部程序存储器读选通信号,输出。(引脚31)内、外程序存储器选择控制端,输入。RESET(引脚9)复位信号。(2) 数码管显示采用共阴极8位数码管来显示键盘输入的键值。数码管字型编码表(3)44键盘输入键盘输入有“1,2,3,4,5,6,7,8,9,A,B,C,D,E,F”这些键值,“A”键的功能是流水灯循环显示。键盘所有键的特征码按键特征码键
8、值按键特征码键值0770087D081B7019BD092D702ADD0A3E703BED0B47B04C7E0C5BB05DBE0D6DB06EDE0E7EB07FEE0F(4) 流水灯显示 流水灯显示方式:开始全部点亮,按下“LED-”键后,点亮第一个LED,然后从左向右依次循环点亮。6、 源程序 ;-键盘控制数码管显示及LED点亮程序- org0000h ajmpmain ORG 0BH JMP TIM0main: mov dptr,#tab ;将表头位置送入DPTmov 30h,#0ffh ;将30显示单元清零 mov 31h,#0ffh ;将30显示单元清零 mov 32h,#0f
9、fh ;将30显示单元清零 mov 33h,#0ffhmov 34h,#0ffh ;将30显示单元清零 mov35h,#0ffh mov 36h,#0ffhmov 37h,#0ffhmov 39h,#0ffh ;将30显示单元清零loop: jbf0,kk1 ;f0若等于一则跳到KK1处 mov39h,#00h kk2:lcall display ;调用显示程序 lcallkey ;调用键盘描程序 cpla ;将A的值取反 jzloop ;无键按下则返回 mova,38h ;有键按下将键值送入ACC cjne a,#0ah,norp ;若A键未按下则返回到LOOP处 setbf0 ;若A键按下
10、则将F0值1 jmp LED mov p3,#00h ljmp loop ;返回LOOP处不断的循环LED: MOV TMOD,#00000001B MOV TH0,#10000 MOV TL0,#10000 SETB TR0 MOV IE,#10000010B ; MOV R5,#10 MOV P3,#01H jmp loopTIM0: PUSH ACC PUSH PSW MOV TH0,#10000 MOV TL0,#10000 DJNZ R5,LOOP1 MOV R5,#10 MOV A,P3 RL A MOV P3,ALOOP1: POP PSW POP ACC RETI kk1: i
11、nc39h ;将39H向上加一 mova,39h ;将39H中的值送入ACC cjnea,#10,kk2 ;ACC中的值与10相等则跳转至KK2 mov39h,#00h ;若ACC等于零则将35H清零 cpl00h ;将00H位取反 ajmpkk2 ;跳转至KK2处 norp:mov 37h,36h mov 36h,35h mov 35h,34h mov 34h,33h mov33h,32h ;将32H显示单元的内容送入33H mov 32h,31h ;将31H显示单元的内容送入32H mov 31h,30h ;将30H单元的内容送入31H mova,38h ;将键值送入ACC mov30h,
12、a ;将ACC的值送入30H ljmploop ;返回主程序循环 display:mov p2,#0ffh ;将P2口置高电平 mov r7,#100 ;软件计数器赋值 dd1: jnb00h,dd1d ;若00H等0跳至DD1D ajmpdd1b ;若00H等于1则跳转至DD1B dd1d:mov a,30h ;将显示缓冲区30H中的值送入ACC movc a,a+dptr;查表取要显示的数并把查表的结果送入ACC mov p0,a ;将要显示的数送入P0口 clr p2.7 ;开个位显示单元 lcall delay100us ;延时100US setb p2.7 ;关个位显示单 ajmpd
13、d1c dd1b: mov a,30h ;将显示缓冲区30H中的值送入ACC movc a,a+dptr;查表取要显示的数并把查表的结果送入ACC mov p0,a ;将要显示的数送入P0口 setb p2.7 ;开个位显示单元 lcall delay100us ;延时100US setb p2.7 ;开个位显示单元 dd1c: mov a,31h ;将显示缓冲区别31H中的值送入A movc a,a+dptr ;查表取要显示的数并把查表的结果送入ACC mov p0,a ;将要显示的数送入P0口 clr p2.6 ;开十位显示单元 lcall delay100us ;延时100US setb
14、 p2.6 ;关十位显示单元 mov a,32h ;将显示缓冲区32H中的值送入ACC movc a,a+dptr ;查表取要显示的数并把查表的结果送入ACC mov p0,a ;将要显示的数送入P0口 clr p2.5 ;开百位显示单元 lcall delay100us ;延时100US setb p2.5 ;关百位显示单元 mov a,33h ;将显示缓冲区33H中的值送入ACC movc a,a+dptr ;查表取要显示的数并把查表的结果送入ACC mov p0,a ;将要显示的数送入P0口 clr p2.4 ;开千位显示单元 lcall delay100us ;延时100US setb
15、 p2.4 mov a,34h ;将显示缓冲区34H中的值送入ACC movc a,a+dptr ;查表取要显示的数并把查表的结果送入ACC mov p0,a ;将要显示的数送入P0口 clr p2.3 ;开万位显示单元 lcall delay100us ;延时100US setb p2.3 mov a,35h ;将显示缓冲区35H中的值送入ACC movc a,a+dptr ;查表取要显示的数并把查表的结果送入ACC mov p0,a ;将要显示的数送入P0口 clr p2.2 ;开十万位显示单元 lcall delay100us ;延时100US setb p2.2 mov a,36h ;
16、将显示缓冲区36H中的值送入ACC movc a,a+dptr ;查表取要显示的数并把查表的结果送入ACC mov p0,a ;将要显示的数送入P0口 clr p2.1 ;开百万位显示单元 lcall delay100us ;延时100US setb p2.1 mov a,37h ;将显示缓冲区37H中的值送入ACC movc a,a+dptr ;查表取要显示的数并把查表的结果送入ACC mov p0,a ;将要显示的数送入P0口 clr p2.0 ;开千万显示单元 lcall delay100us ;延时100US setb p2.0 ;关千万位显示单元 djnz r7,dd1 ;R7不等于
17、0返回至DD1处 ret ;R7等于0子程序返回 KEY: LCALL KS ;调用检测按键子程序 JNZ K1 ;有键按下继续 ljmpkey_exit ;无键按下退出KEY子程序 K1: LCALL delay4ms ;返回继续检测有无按键按下 LCALL delay4ms LCALL KS ;有键按下继续延时去抖动 JNZ K2 ;再一次调用检测按键程序 ljmpkey_exit ;无键按下退出KEY子程序 K2: MOV R2,#0efH ;将扫描值送入 R2暂存 MOV R4,#00H;将第一列的列值00H送入R4暂存,R4用于存放列 K3: MOV P1,R2 ;将R2的值送入P1
18、口 L6: JB P1.0,L1 ;P1.0等于1跳转到L1 MOV A,#00H ;将第一行的行值00H送入ACC AJMP LK ;跳转到键值处理程序 L1: JB P1.1,L2 ;P1.1等于1跳转到L2 MOV A,#04H ;将第二行的行值04H送入ACC AJMP LK ;跳转到键值理程序进行键值处理 L2: JB P1.2,L3 ;P1.2等于1跳转到L3 MOV A,#08H ;将第三行的行值08H送入ACC AJMP LK ;跳转到键值处理程序 L3: JB P1.3,NEXT ;P1.3等于1跳转到NEXT处 MOV A,#0cH ;将第四行的行值0CH送入ACC LK:
19、 ADD A,R4 ;行值与列值相加后的键值送入A mov38h,a ;将A中的值送入34h暂存 K4: lcall display ;调用动态显示子程序 LCALL KS JNZ K4 ;按键没有松开继续返回检测 RET ;按键松开返回 NEXT: INC R4 ;将列值加一 MOV A,R2 ;将R2的值送入A JNB ACC.7,key_exit;扫描完成跳至KEY处进行下一回合的扫描 RL A ;扫描未完成将A中的值右移一位进行下一列的扫描 MOV R2,A ;将ACC的值送入R2暂存 AJMP K3 ;跳转到K3继续 key_exit: mov a,#0ffh ;无键按下则将A赋成0
20、FFH ret KS: MOV P1,#0FH ;将P1口高四位置0低四位值1 MOV A,P1 ;读P1口 XRL A,#0FH ;将A中的值与A中的值相异或 RET ;子程序返回 delay4ms:;4ms延时 MOV R5,#08H L7: MOV R6,#0FAH L8: DJNZ R6,L8 DJNZ R5,L7 RET delay100us: ;100us延时 mov r5,#50 djnzr5,$ ret tab:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7 DB 7FH,6FH,77H,7CH,39H,5EH,79H,7
21、1H ;8,9,A,B,C,D,E,F DB 3EH, 50H, 40H, 08H, 00H ;U, r, , -, BLANK END程序执行结果按键0按下显示结果按键LED-按下结果(输入位闪烁)按键D按下显示结果(d)按键B按下显示结果(b)7、 主要元器件介绍1)8051 51系列是基本型,包括8051、8751、8031、8951.这四个机种区别,仅在于片内程序储存器。8051为4KBROM,8751为4KBEPROM,8031片内无程序储存器,8951为4KBEEPROM。其他性能结构一样,有片内128B RAM,2个16位定时器/计数器,5个中断源。其中,8031性价比较高,又易
22、于开发,目前应用面广泛。 MCS-51单片机的内部组成。MCS-51单片机的引脚和内部组成如图1.1所示。通常采用DIP或PLLD封装,其内核是8051CPU,CPU的内部集成有运算器和控制器,运算器完成运算操作(包括数据运算、逻辑运算等),控制器完成取指令、对指令译码以及执行指令。MCS-51单片机的片内资源有:图1.1 MCS-51单片机的内部组成中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(RAM):8051内部有128字节数据存储器(RAM)和21个专用寄存器单元,它们是统一编址的,专用寄存器有专门的用途,通常用于存放控制指令数据,不能用作用户数据的存放,用户能使用的RAM只有128个字节,可存放读写的数据,运算的中间结果或用户定义的字型表。程序存储器(ROM):8051共有4K字节程序存储器(ROM),用于存放用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024艺术学校教室租赁与艺术展览合作合同3篇
- 二零二五年度风力发电设备安装与运营合同3篇
- 2025年度猫咪品种引进与销售代理合同4篇
- 二零二四年光伏发电项目爆破钻孔合同
- 南昌市2025年度新建住宅买卖合同
- 二零二五版环保设施建设与运营合同3篇
- 2025年度餐饮企业知识产权保护合同18篇
- 年度超高纯气体的纯化设备战略市场规划报告
- 2025版智能交通信号系统零星维修施工合同4篇
- 二零二五年度车辆抵押担保信托合同范本3篇
- 称量与天平培训试题及答案
- 超全的超滤与纳滤概述、基本理论和应用
- 2020年医师定期考核试题与答案(公卫专业)
- 2022年中国育龄女性生殖健康研究报告
- 各种静脉置管固定方法
- 消防报审验收程序及表格
- 教育金规划ppt课件
- 呼吸机波形分析及临床应用
- 常用紧固件选用指南
- 私人借款协议书新编整理版示范文本
- 自荐书(彩色封面)
评论
0/150
提交评论