项目3-可调控的走马灯设计与制作要点
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8}; void delay() {unsigned int i; for(i=0;i<2000;i++); } void main() { unsigned char key; while(1) { key=P2; if(key!=0xFF) delay();
上一页 下一页 返回
二、独立式按键的软件设计
按上图的电路,设计出独立式键盘程序如下,此程序中 Keyfun1~Keyfun8分别为每个按键对应的功能子程序标号 (可根据实际需要编写),按键去除抖动采用软件延时,按键 的接口选用P1端口。
汇编源程序清单如下:
START: MOV A ,P1 ;读入键盘状态
;K3键按下,转Keyfun3处理
KEY-4: CJNE A,#0F7H,KEY-5
LJMP Keyfun4
KEY-5: CJNE A,#0EFH,KEY-6
LJMP Keyfun5
KEY-6: CJNE A,#0DFH,KEY-7
Βιβλιοθήκη Baidu
LJMP Keyfun6
KEY-7: CJNE A,#0BFH,KEY-8
上一页 下一页 返回
例3-1:如图所示,实现如下功能,按下某个键,在单个数码 管上显示出键号。
上一页 下一页 返回
本题中,按键全部为独立式按键,读取P1口的状态即可判断按 下的是哪个键,读取相应的键的编码送入P1口即可。
C51源程序如下:
#include<AT89X51.H> unsigned char
上一页 下一页 返回
3.1.2 按键的消抖处理
在单片机应用系统中所用的键盘按键是一种机械开关,其机械 触点在闭合或断开瞬间,会出现电压抖动现象,如图所示。为 了保证按键识别的准确性,可采用硬件消抖和软件消抖两种方 式进行消抖处理。硬件方法可采用RS触发器等消抖电路。软件 方法则是采用时间延迟,由于键的前沿抖动时间大约为10ms 左右,因此可在延时10ms后待按键稳定闭合时再判别键盘的 状态,若仍有按键闭合,则确认有键按下,否则认为是按键的 抖动。
MOV 30H,A ;保存键盘状态值
LCALL DL10ms ;延时10ms消抖
MOV A,P1 ;再读键盘状态
CJNE A,30H, RETURN ;再次结果不同。说明是
抖动引起,返回
CJNE A,#0FFH, KEY-1 ;确认是否有键按下
LJMP RETURN
上一页 下一页 返回
KEY-1: CJNE A,#0FEH,KEY-2 ;K1键未按下,转KEY-2
LJMP Keyfun1
;是Kl键按下,转KEY1对应的功能子程序
KEY-2: CJNE A,#0FDH,KEY-3 ;K2键未按下,转KEY-3
LJMP Keyfun2
;K2键按下,转Keyfun2处理
KEY-3: CJNE A,#0FBH,KEY-4 ;K3键未按下,转KEY-4
LJMP Keyfun3
D1: MOV R4,#10H
D2: DJNZ R4,$
D3: DJNZ R5,D1
DJNZ R7, D0
RET
上一页 下一页 返回
对应的C51程序为:
#include<AT89X51.H> void delay() {unsigned int i; for(i=0;i<2000;i++); } void main() { unsigned char key; while(1) { key=P1; if(key!=0xFF) delay(); if(key!=0xFF)key=P1; while(P1!=0xFF);
switch(key) { case 0xFE: Keyfun1();break; case 0xFD: Keyfun2();break; case 0xFB: Keyfun3();break; case 0xF7: Keyfun4();break; case 0xEF: Keyfun5();break; case 0xDF: Keyfun6();break; case 0xBF: Keyfun7();break; case 0x7F: Keyfun8();break; } } }
LJMP Keyfun7
KEY-8: CJNE A,#7FH,RETURN ;K8未按下,返回
LJMP Keyfun8
;K8键按下,转Keyfun8处理
RETURN: RET
;重键或无键按下,不处理返回
DL10ms: MOV R7,#12H
;三循环延时程序,大约10ms。
D0: MOV R5,#10H
下一页
任务3.1 学习键盘接口技术
键盘接口是单片机系统的一个非常常见、实用的接口。用于实 现人机交互中指令的输入。常见的键盘接口有独立式按键和行 列式(也叫矩阵式)键盘。
3.1.1 独立式键盘应用 3.1.2 按键的消抖处理 3.1.3 矩阵式键盘应用
上一页 下一页 返回
3.1.1 独立式键盘应用
项目3 可以调控的走马灯设计与制作
走在大街上,看到五彩斑斓的走马灯,你是不是也想自己一试伸手, 亲自做一个出来?本项目就将设计一个带按键控制的非常漂亮的走 马灯效果。本项目涉及到的知识点有键盘接口、中断系统、定时器 定时、C51编程。
任务3.1 学习键盘接口技术 任务3.2 可以调控的走马灯的设计与仿真
一、独立式按键结构如图所示。
上一页 下一页 返回
独立式按键的结构特点:每个按键单独占有一根I/O口线,按 键的两个端子一端接地,另外一端接到一个单独的I/O口线, 同时通过上拉电阻接到+5v电源端。每个按键的工作不会影响 其它I/O口线的状态。在此电路中,按键输入为低电平有效, 上拉电阻保证了按键断开时,I/O口线有确定的高电平。当I/O 口线内部有上拉电阻时,外电路可以不配置上拉电阻。
上一页 下一页 返回
二、独立式按键的软件设计
按上图的电路,设计出独立式键盘程序如下,此程序中 Keyfun1~Keyfun8分别为每个按键对应的功能子程序标号 (可根据实际需要编写),按键去除抖动采用软件延时,按键 的接口选用P1端口。
汇编源程序清单如下:
START: MOV A ,P1 ;读入键盘状态
;K3键按下,转Keyfun3处理
KEY-4: CJNE A,#0F7H,KEY-5
LJMP Keyfun4
KEY-5: CJNE A,#0EFH,KEY-6
LJMP Keyfun5
KEY-6: CJNE A,#0DFH,KEY-7
Βιβλιοθήκη Baidu
LJMP Keyfun6
KEY-7: CJNE A,#0BFH,KEY-8
上一页 下一页 返回
例3-1:如图所示,实现如下功能,按下某个键,在单个数码 管上显示出键号。
上一页 下一页 返回
本题中,按键全部为独立式按键,读取P1口的状态即可判断按 下的是哪个键,读取相应的键的编码送入P1口即可。
C51源程序如下:
#include<AT89X51.H> unsigned char
上一页 下一页 返回
3.1.2 按键的消抖处理
在单片机应用系统中所用的键盘按键是一种机械开关,其机械 触点在闭合或断开瞬间,会出现电压抖动现象,如图所示。为 了保证按键识别的准确性,可采用硬件消抖和软件消抖两种方 式进行消抖处理。硬件方法可采用RS触发器等消抖电路。软件 方法则是采用时间延迟,由于键的前沿抖动时间大约为10ms 左右,因此可在延时10ms后待按键稳定闭合时再判别键盘的 状态,若仍有按键闭合,则确认有键按下,否则认为是按键的 抖动。
MOV 30H,A ;保存键盘状态值
LCALL DL10ms ;延时10ms消抖
MOV A,P1 ;再读键盘状态
CJNE A,30H, RETURN ;再次结果不同。说明是
抖动引起,返回
CJNE A,#0FFH, KEY-1 ;确认是否有键按下
LJMP RETURN
上一页 下一页 返回
KEY-1: CJNE A,#0FEH,KEY-2 ;K1键未按下,转KEY-2
LJMP Keyfun1
;是Kl键按下,转KEY1对应的功能子程序
KEY-2: CJNE A,#0FDH,KEY-3 ;K2键未按下,转KEY-3
LJMP Keyfun2
;K2键按下,转Keyfun2处理
KEY-3: CJNE A,#0FBH,KEY-4 ;K3键未按下,转KEY-4
LJMP Keyfun3
D1: MOV R4,#10H
D2: DJNZ R4,$
D3: DJNZ R5,D1
DJNZ R7, D0
RET
上一页 下一页 返回
对应的C51程序为:
#include<AT89X51.H> void delay() {unsigned int i; for(i=0;i<2000;i++); } void main() { unsigned char key; while(1) { key=P1; if(key!=0xFF) delay(); if(key!=0xFF)key=P1; while(P1!=0xFF);
switch(key) { case 0xFE: Keyfun1();break; case 0xFD: Keyfun2();break; case 0xFB: Keyfun3();break; case 0xF7: Keyfun4();break; case 0xEF: Keyfun5();break; case 0xDF: Keyfun6();break; case 0xBF: Keyfun7();break; case 0x7F: Keyfun8();break; } } }
LJMP Keyfun7
KEY-8: CJNE A,#7FH,RETURN ;K8未按下,返回
LJMP Keyfun8
;K8键按下,转Keyfun8处理
RETURN: RET
;重键或无键按下,不处理返回
DL10ms: MOV R7,#12H
;三循环延时程序,大约10ms。
D0: MOV R5,#10H
下一页
任务3.1 学习键盘接口技术
键盘接口是单片机系统的一个非常常见、实用的接口。用于实 现人机交互中指令的输入。常见的键盘接口有独立式按键和行 列式(也叫矩阵式)键盘。
3.1.1 独立式键盘应用 3.1.2 按键的消抖处理 3.1.3 矩阵式键盘应用
上一页 下一页 返回
3.1.1 独立式键盘应用
项目3 可以调控的走马灯设计与制作
走在大街上,看到五彩斑斓的走马灯,你是不是也想自己一试伸手, 亲自做一个出来?本项目就将设计一个带按键控制的非常漂亮的走 马灯效果。本项目涉及到的知识点有键盘接口、中断系统、定时器 定时、C51编程。
任务3.1 学习键盘接口技术 任务3.2 可以调控的走马灯的设计与仿真
一、独立式按键结构如图所示。
上一页 下一页 返回
独立式按键的结构特点:每个按键单独占有一根I/O口线,按 键的两个端子一端接地,另外一端接到一个单独的I/O口线, 同时通过上拉电阻接到+5v电源端。每个按键的工作不会影响 其它I/O口线的状态。在此电路中,按键输入为低电平有效, 上拉电阻保证了按键断开时,I/O口线有确定的高电平。当I/O 口线内部有上拉电阻时,外电路可以不配置上拉电阻。