一键多功能按键识别技术
1.实验任务
如图4.9.1所示,开关sp1接在p3.7/rd管脚上,在at89s51单片机的p1端口接有四个发光二极管,上电的时候,l1接在p1.0管脚上的发光二极管在闪烁,当每一次按下开关sp1的时候,l2接在p1.1管脚上的发光二极管在闪烁,再按下开关sp1的时候,l3接在p1.2管脚上的发光二极管在闪烁,再按下开关sp1的时候,l4接在p1.3管脚上的发光二极管在闪烁,再按下开关sp1的时候,又轮到l1在闪烁了,如此轮流下去。
2.电路原理图
图4.9.1
3.系统板上硬件连线
(1. 把“单片机系统”区域中的p3.7/rd端口连接到“独立式键盘”区域中的sp1端口上;
(2. 把“单片机系统”区域中的p1.0-p1.4端口用8芯排线连接到“八路发光二极管指示模块”区域中的“l1-l8”端口上;要求,p1.0连接到l1,p1.1连接到l2,p1.2连接到l3,p1.3连接到l4上。
4.程序设计方法
(1. 设计思想由来
在我们生活中,我们很容易通过这个叫张三,那个叫李四,另外一个是王五;那是因为每个人有不同的名子,我们就很快认出,同样,对于要通过一个按键来识别每种不同的功能,我们给每个不同的功能模块用不同的id号标识,这样,每按下一次按键,id的值是不相同的,所以单片机就很容易识别不同功能的身份了。
(2. 设计方法
从上面的要求我们可以看出,l1到l4发光二极管在每个时刻的闪烁的时间是受开关sp1来控制,我们给l1到l4闪烁的时段定义出不同的id号,当l1在闪烁时,id=0;当l2在闪烁时,id=1;当l3在闪烁时,id=2;当l4在闪烁时,id=3;很显然,只要每次按下开关k1时,分别给出不同的id号我们就能够完成上面的任务了。下面给出有关程序设计的框图。
5.程序框图
图4.9.2
6. 汇编源程序
id equ 30h
sp1 bit p3.7
l1 bit p1.0
l2 bit p1.1
l3 bit p1.2
l4 bit p1.3
org 0
mov id,#00h
start: jb k1,rel
lcall delay10ms
jb k1,rel
inc id
mov a,id
cjne a,#04,rel
mov id,#00h
rel: jnb k1,$
mov a,id
cjne a,#00h,is0
cpl l1
lcall delay
sjmp start
is0: cjne a,#01h,is1
cpl l2
lcall delay
sjmp start
is1: cjne a,#02h,is2
cpl l3
lcall delay
sjmp start
is2: cjne a,#03h,is3
cpl l4
lcall delay
sjmp start
is3: ljmp start
delay10ms: mov r6,#20
loop1: mov r7,#248
djnz r7,$
djnz r6,loop1
ret
delay: mov r5,#20
loop2: lcall delay10ms
djnz r5,loop2
ret
end
7. c语言源程序
#include
unsigned char id;
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void delay02s(void)
{
unsigned char i;
for(i=20;i>0;i--)
{delay10ms();
}
}
void main(void)
{ while(1)
{ if(p3_7==0)
{delay10ms();
if(p3_7==0)
{
id++;
if(id==4)
{
id=0;
}
while(p3_7==0);
}
}
switch(id)
{ case 0:
p1_0=~p1_0;
delay02s();
break;
case 1:
p1_1=~p1_1;
delay02s();
break;
case 2:
p1_2=~p1_2;
delay02s();
break;
case 3:
p1_3=~p1_3;
delay02s();
break;
}
}
}
SaberRD示例设计:飞机厨房中烤箱的温控设计介绍
“一起为生活干杯”!Campari 通过 Dynamics 365 重塑营销范式
氢能储能电源设计:一个新的绿色解决方案
汽车动力系统升压控制器最新解决方案
量子计算赋能人工智能是怎样改变的
一键多功能按键识别技术
一个关于Segger J-Flash在Micron Flash固定区域下载校验失败的故事
振荡器上的频率跃迁
开发板烧写程序
iPhone4绝版卡涨价300元
关于C程序中10个与内存有关的常见错误
E现场:唤醒创造力的Xperia 1
荣耀Earbuds 2 SE获首销全天京东销量冠军,赵明称未来重量级产品将逐一亮相
ME300实例-DS18B20温度控制实验(汇编语言源程序)
OpenHarmony开发者大会召开 携手共建使能千行百业的数字底座
AI成功的核心——唯有生态才能生生不息
微控制器内存的选择及注意事项
现代汽车计划生产磷酸铁锂电池及全球电池产业争夺战
数据:2月份国内手机市场总出货638.4万部,上市新机型16款
常用桥堆及半桥堆电路结构分析