ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:1.34MB ,
资源ID:9653929      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9653929.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(键盘控制数码管显示与流水灯.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

键盘控制数码管显示与流水灯.docx

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-”,则

4、跳到LED循环点亮。LED循环点亮:一共八盏灯,一盏灯亮,另七盏灯灭,从左到右循环点亮,在其中运用定时器T0工作在MODEL1,对其点亮时间进行控制点亮1s,对其定时器溢出中断次数进行统计,当溢出中断次数达到10次后,返回主程序开始。4、程序流程图5、模块介绍(1)8051CPUP1.3P1.0分别连接44键盘的第一行到第四行;P1.7P1.4分别连接44键盘的第一列到第四列;P2口分别接8个LED灯;P0口接1个共阴极数码管。如图,MCS-51系列单片机的40只引脚按功能能可分为四类:1 电源引脚电源引脚提供芯片的工作电源,MCS-51系列单片机采用单一的直流5V电源供电。(1) Vcc(引

5、脚40) +5V。(2) GND(引脚20)地。2 晶体振荡器信号输入和输出引脚晶体振荡器信号输入输出引脚外接振荡器或时钟源,为单片机提供时钟信号。(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.

7、4T0定时器/计数器T0的外部计数信号输入端P3.5T1定时器/计数器T1的外部计数信号输入端P3.6外部数据存储器和外部I/O口的写控制信号P3.7外部数据存储器和外部I/O口的读控制信号 表1-14 控制信号线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点亮程序- org 0000h ajmp main ORG 0BH JMP TIM0main: mov dptr,#tab ;将表头位置送入DPT mov 30h,#0ffh ;将30显示单元清零 mov 31h,#0ffh ;将30显示单元清零 mov 3

9、2h,#0ffh ;将30显示单元清零 mov 33h,#0ffh mov 34h,#0ffh ;将30显示单元清零 mov 35h,#0ffh mov 36h,#0ffh mov 37h,#0ffh mov 39h,#0ffh ;将30显示单元清零 loop: jb f0,kk1 ;f0若等于一则跳到KK1处 mov 39h,#00h kk2:lcall display ;调用显示程序 lcall key ;调用键盘描程序 cpl a ;将A的值取反 jz loop ;无键按下则返回 mov a,38h ;有键按下将键值送入ACC cjne a,#0ah,norp ;若A键未按下则返回到LO

10、OP处 setb f0 ;若A键按下则将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 P

11、OP ACC RETI kk1: inc 39h ;将39H向上加一 mov a,39h ;将39H中的值送入ACC cjne a,#10,kk2 ;ACC中的值与10相等则跳转至KK2 mov 39h,#00h ;若ACC等于零则将35H清零 cpl 00h ;将00H位取反 ajmp kk2 ;跳转至KK2处 norp: mov 37h,36h mov 36h,35h mov 35h,34h mov 34h,33h mov 33h,32h ;将32H显示单元的内容送入33H mov 32h,31h ;将31H显示单元的内容送入32H mov 31h,30h ;将30H单元的内容送入31H

12、mov a,38h ;将键值送入ACC mov 30h,a ;将ACC的值送入30H ljmp loop ;返回主程序循环 display: mov p2,#0ffh ;将P2口置高电平 mov r7,#100 ;软件计数器赋值 dd1: jnb 00h,dd1d ;若00H等0跳至DD1D ajmp dd1b ;若00H等于1则跳转至DD1B dd1d:mov a,30h ;将显示缓冲区30H中的值送入ACC movc a,a+dptr;查表取要显示的数并把查表的结果送入ACC mov p0,a ;将要显示的数送入P0口 clr p2.7 ;开个位显示单元 lcall delay100us

13、;延时100US setb p2.7 ;关个位显示单 ajmp dd1c 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 ;开十位显示

14、单元 lcall delay100us ;延时100US setb 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 ;开千位显示

15、单元 lcall delay100us ;延时100US setb 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 delay100

16、us ;延时100US setb p2.2 mov a,36h ;将显示缓冲区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

17、p2.0 ;关千万位显示单元 djnz r7,dd1 ;R7不等于0返回至DD1处 ret ;R7等于0子程序返回 KEY: LCALL KS ;调用检测按键子程序 JNZ K1 ;有键按下继续 ljmp key_exit ;无键按下退出KEY子程序 K1: LCALL delay4ms ;返回继续检测有无按键按下 LCALL delay4ms LCALL KS ;有键按下继续延时去抖动 JNZ K2 ;再一次调用检测按键程序 ljmp key_exit ;无键按下退出KEY子程序 K2: MOV R2,#0efH ;将扫描值送入 R2暂存 MOV R4,#00H;将第一列的列值00H送入R4

18、暂存,R4用于存放列 K3: MOV P1,R2 ;将R2的值送入P1口 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跳转到NE

19、XT处 MOV A,#0cH ;将第四行的行值0CH送入ACC LK: ADD A,R4 ;行值与列值相加后的键值送入A mov 38h,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

20、继续 key_exit: mov a,#0ffh ;无键按下则将A赋成0FFH 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 djnz r5,$ ret tab:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,

21、5,6,7 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;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 R

22、AM,2个16位定时器/计数器,5个中断源。其中,8031性价比较高,又易于开发,目前应用面广泛。 MCS-51单片机的内部组成。MCS-51单片机的引脚和内部组成如图1.1所示。通常采用DIP或PLLD封装,其内核是8051CPU,CPU的内部集成有运算器和控制器,运算器完成运算操作(包括数据运算、逻辑运算等),控制器完成取指令、对指令译码以及执行指令。MCS-51单片机的片内资源有:图1.1 MCS-51单片机的内部组成中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制

23、输入输出功能等操作。数据存储器(RAM):8051内部有128字节数据存储器(RAM)和21个专用寄存器单元,它们是统一编址的,专用寄存器有专门的用途,通常用于存放控制指令数据,不能用作用户数据的存放,用户能使用的RAM只有128个字节,可存放读写的数据,运算的中间结果或用户定义的字型表。程序存储器(ROM):8051共有4K字节程序存储器(ROM),用于存放用户程序和数据表格。定时/计数器(ROM):8051有两个16位的可编程定时/计数器,以实现定时或计数,当定时/计数器产生溢出时,可用中断方式控制程序转向。并行输入输出(I/O)口:8051共有4个8位的并行I/O口(P0、P1、P2、P

24、3),用于对外部数据的传输。全双工串行口:8051内置一个全双工异步串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。中断系统:8051具备较完善的中断功能,有五个中断源(两个外中断、两个定时/计数器中断和一个串行中断),可基本满足不同的控制要求,并具有2级的优先级别选择。时钟电路:8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的时序脉冲,但需外接晶体振荡器和振荡电容。2)共阴极数码管 LED数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们

25、的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等.,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。led数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。下面将介绍常用LED数码管内部引脚图片下面介绍数码管字型编码表8、参考书籍 单片机原理及接口技术 段晨东 主编 清华大学出版社

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1