导航:首页 > 操作系统 > 单片机画图中按键在哪

单片机画图中按键在哪

发布时间:2022-06-26 07:33:37

⑴ c51单片机按键

1.设置一个状态变量,如flag,定义flag=0为开状态,flag=1为关状态。
2.因为是按键(不是开关),所以实际上单片机读取的应该是脉冲形式的输入。设按键接单片机P01引脚,故可采用以下程序实现按键扫描
if(P01==0)//按下按键,进入下降沿
{
delay2();//20ms延时去按键前抖动
while(P01==0);//等待上升沿到 来,即按键弹起
flag=~flag;//flag取反,实现状态切换
}

void delay2()//20ms延时子程序
{
unsigned char i,k;
for(i=0;i<100;i++)
for(k=0;k<100;k++);
}
注:根据按键的具体接法,若按下按键向单片机输入低电平,则采用以上程序;若按下按键向单片机输入高电平,则将两处P01==0均改为P01==1。

⑵ 单片机按键显示

你这个不显示0才怪,你这个会一直在MAIN 段循环,不会执行下面的程序。你用键盘扫描程序吧!扫描到那个按键按下就跳转到相应的显示程序,再返回到键盘上面程序。

还有你按下1到F1这一段没有错,但是在这一段以后马上又返回到第一段程序去显示0了。呵呵,多想想吧!!

⑶ 单片机按键

ORG 0000H
AJMP MAIN
ORG 000BH
AJMP GT0
ORG 0080H
MAIN:MOV P0,#00H ;灭灯
MOV IE,#82H ;开中断
MOV SCON,#00H ;串行发送模式
MOV TMOD,#01H ; T0方式1定时
MOV TH0,#3CH ;50毫秒初值
MOV TL0,#0B0H
MOV DPTR,#TAB ;表地址入口
CLR A
MOV 30H,A ;小时
MOV 31H,A ; 分钟
MOV 32H,A ; 秒
MOV 33H,#1 ; 星期
MOV 34H,A ; 二进制加一演示
MOV R0,#20 ; 1秒中断次数
SETB TR0 ; 启动T0
M0:LCALL JIAN ; 调用查键
LCALL XIANSHI ;调用显示
SJMP M0
GT0:PUSH ACC
MOV TH0,#3CH
MOV TL0,#0B6H ;重新赋值占了6个机器周期,0B0H改为0B6H
DJNZ R0,RET0 ;不够20次返回
MOV R0,#20
INC 32H ; 秒加一
INC 34H ;二进制演示加一,到255加一为0
MOV SBUF,34H ;串行发送
JNB TI,$ ;等待发送结束
CLR TI ;清楚发送标志
MOV A,32H
CJNE A,#60,RET0 ;比较秒是否到60
MOV 32H,#0 ;到60改为0
INC 31H ;分钟加一
MOV A,31H
CJNE A,#60,RET0 ;比较分钟是否到60
MOV 31H,#0 ; 到60改为0
INC 30H ;小时加一
MOV A,30H
CJNE A,#24,RET0 ;比较小时是否到24
MOV 30H,#0 ;到24改为0
INC 33H ;星期加一
MOV A,33H
CJNE A,#8,RET0 ;比较星期是否到8
MOV 33H,#1 ;到8改为1
RET0:POP ACC
RETI
XIANSHI:MOV A,30H ;小时显示程序段
MOV B,#10
DIV AB
MOVC A,@A+DPTR ;十位
MOV P1,A
SETB P0.0 ;共阳极数码管
DJNZ R1,$
CLR P0.0
MOV A,B
MOVC A,@A+DPTR ;个位
MOV P1,A
SETB P0.1
DJNZ R1,$
CLR P0.1
MOV A,31H ;分钟显示程序段
MOV B,#10
DIV AB
MOVC A,@A+DPTR ; 十位
MOV P1,A
SETB P0.2
DJNZ R1,$
CLR P0.2
MOV A,B
MOVC A,@A+DPTR ;个位
MOV P1,A
SETB P0.3
DJNZ R1,$
CLR P0.3
MOV A,32H ;秒显示程序段
MOV B,#10
DIV AB
MOVC A,@A+DPTR ;十位
MOV P1,A
SETB P0.4
DJNZ R1,$
CLR P0.4
MOV A,B
MOVC A,@A+DPTR ;个位
MOV P1,A
SETB P0.5
DJNZ R1,$
CLR P0.5
MOV A,33H ;星期显示程序段
MOVC A,@A+DPTR
MOV P1,A
SETB P0.6
DJNZ R1,$
CLR P0.6
RET
JIAN:PUSH ACC
PUSH PSW
JB P2.0,M1 ;查键,改分钟数
J0:LCALL XIANSHI ;调显示
JNB P2.0,J0 ;按键松开了才加一
INC 31H
MOV A,31H
CJNE A,#60,RET1 ;分钟加到60就归零
MOV 31H,#0
SJMP RET1
M1:JB P2.1,M2 ;修改小时键
J1:LCALL XIANSHI
JNB P2.1,J1
INC 30H
MOV A,30H
CJNE A,#24,RET1 ;小时加到24就归零
MOV 30H,#0
M2:JB P2.2,RET1 ; 修改星期键
J2:LCALL XIANSHI
JNB P2.2,J2
INC 33H
MOV A,33H
CJNE A,#8,RET1 ;星期加到8就改为1
MOV 33H,#1
RET1:POP PSW
POP ACC
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END

⑷ 单片机按键问题

1.中断方式(这个比较可靠)
一般程序按键按下后
灯亮
然后按键松开灯还是亮的
采用的是边沿检测,即有电平跳变就改变输出。
如果想按键按住的时候灯亮,不按的时候灯不亮
采用电平触发,即当电平维持是正或者负的时候才稳定输出。
2.也可以用查询方式
比如
一般程序按键按下后
灯亮
然后按键松开灯还是亮的
if(P1^1==0)
//判断是否按下键盘
{
delay10ms();
//延时,软件去干扰
if(P1^1==0)
//确认按键按下
{
count++;
//按键计数加1
if(count==1)
//第一次按下亮,第二次按下灭
{
count=0;
//将count清零
}
}
while(P1^1==0);//按键锁定.
}
P1^2=count;//输出显示
如果想按键按住的时候灯亮,不按的时候灯不亮
if(P1^1==1)
{
P1^2=1;
while(P1^1);
P1^2=0;
}
P1^1是按键采集管脚,P1^2是输出显示管脚。当然,前面得加去抖动。
你试试。

⑸ 求问下单片机开发板上的独立按键是哪几个

单片机开发板上的独立按键是哪几个,不同板子位置是不一样的,但一般而言,出来4*4矩阵键盘之外的其他按键都是独立按键。

阅读全文

与单片机画图中按键在哪相关的资料

热点内容
c编译之后界面一闪而过怎么办 浏览:873
怎么看ic卡是否加密 浏览:722
lgplc编程讲座 浏览:806
cnc手动编程铣圆 浏览:720
cad中几种命令的意思 浏览:324
oraclelinux安装目录 浏览:133
安卓系统可以安装编译器吗 浏览:570
javajson实体类 浏览:690
板加密钢筋是否取代原钢筋 浏览:66
学习编程的思路 浏览:230
app易语言post怎么学 浏览:965
地梁的箍筋加密区位置 浏览:302
二分法排序程序及编译结果 浏览:679
日语命令形和禁止型 浏览:285
安装软件用管理员解压 浏览:505
编译原理代码块 浏览:400
小孩可以用压缩面膜吗 浏览:14
锥形倒角怎么计算法 浏览:883
java合并链表 浏览:508
pic单片机编译器 浏览:807