怎样用单片机编程:独立按键两个键控制一个数码管的加减 一个键加 一个键减
很简单
比如你定义的数是AA,
汇编的是这样写的:
MAIN;JB P3.0 ,S1
MOV A, AA
INC A
MOV AA,A
S1:JB P3.1 ,MAIN
MOV A, AA
DEC A
MOV AA,A
JMP MAIN
C语言的
if(P3^0==0){
delay(50);
if(P3^0==1){
aa++;
if(aa>=10)aa=0;
}}
if(P3^1==0){
delay(50);
if(P3^1==0){
aa++;
if(aa<=0)aa=9;
}}
1、首先先在proteus画出仿真图,方便仿真程序。
2、接着来编写程序,先来写入头函数。
2、根据自己在proteus画的图,定义一下管脚根据你的原理图进行编写。
3、然后写一个延时函数,来调节流水灯的时间间隔延时时间自己定义。
4、下图就是主函数,包括流水灯的反复循环和j流水灯的方向。
5、检查没有错误,编译一下,就可以进行仿真了。
程序如下:
ORG 0000H
LJMP START
ORG 0030H
START:
MOV R2, #1
LOOP:
CALL DISP
JB P1.6, NEXT
CALL DL10MS
JB P1.6, NEXT
JNB P1.6, $
DJNZ R2, NEXT
MOV R2, #10
NEXT:
JB P1.7, LOOP
CALL DL10MS
JB P1.7, LOOP
JNB P1.7, $
INC R2
CJNE R2, #11, LOOP
JMP START
;----------------------------------------
DISP:
MOV A, R2
DEC A
MOV DPTR, #TAB
MOVC A, @A + DPTR
MOV P2, A
RET
DL10MS:
MOV R6, #20
DJNZ R7, $
DJNZ R6, $ - 2
RET
;----------------------------------------
TAB:
DB 0C0H, 0F9H, 0A4H, 0B0H, 99H
DB 92H, 82H, 0F8H, 80H, 90H
;----------------------------------------
END
参考:
http://hi.baidu.com/do_sermon/item/8bcb4ef7b6a2a66d3c1485c3
怎样用单片机编程:独立按键两个键控制一个数码管的加减 一个键加 一...
这个很容易嘛,你先设置一个寄存器,然后一直扫描两个按键(假设K1按下为加,K2按下为减),假设检测到K1被按下,寄存器就加1,如果检测到K2被按下,寄存器就减1;然后再调用显示函数就OK了。、
关于单片机的,用两个独立按键控制LED实现三种速度的闪烁,要求使用定时...
include<reg51.h> define uchar unsigned char uchar speed,cnt=0;sbit key1=P1^0;sbit key2=P1^1;sbit led=P1^4;void t0isr() interrupt 1 { TH0=(65536-10000)\/256;TL0=(65536-10000)%256;cnt++;if(cnt>=speed){ cnt=0;led=~led;} } main(){ uchar keyval;TMOD=0x01;TH0=(...
关于单片机的,用两个独立按键控制LED实现三种速度的闪烁,要求使用定时...
为了实现通过两个独立按键控制LED三种不同速度闪烁的功能,我们可以使用单片机的定时器来控制LED的闪烁频率。在这个示例程序中,我们利用了8051单片机的定时器0来实现定时功能。定时器0的设置值为10000,意味着每计数10000次触发一次中断,从而实现定时功能。在主函数中,我们首先初始化定时器0,并设置其工作...
怎样用单片机编程。两个独立按键,控制数码管的加减?
这个很容易嘛,你先设置一个寄存器,然后一直扫描两个按键(假设K1按下为加,K2按下为减),假设检测到K1被按下,寄存器就加1,如果检测到K2被按下,寄存器就减1;然后再调用显示函数就OK了。、 ORG 0000H LJMP START ORG 0030H START:MOV R2, #1 LOOP:CALL DISP JB P1.6,...
求一单片机C语言程序:两个按键控制两个LED KEY1按一下LED1亮 再按一...
void Delay(unsigned int x){ unsigned int i, j;for(i = 0; i < x; i++) for(j = 0; j <= 148; j++);} \/\/KEY1按一下LED1亮 再按一下LED1灭 \/\/KEY2按下LED2亮 LED1灭 main(){ while(1) { if (!key2) { led1 = 1; led2 = 0;} else { if(!key1) { ...
51单片机 2个独立按键控制一个led
\/\/发现 K1 按下后,再检测 K3 是不是已经在按着。if(!k1) { \/\/先检测二级开关 delay1(10); \/\/消抖 if(!k1) { while(!k1); \/\/等待松开 \/\/松开后,再检测 k3:if(!k3) { \/\/再检测总开关 delay1(10); \/\/消抖 if(!k3) { while(!k3);\/\/等待松开 LED = ~LED...
单片机 怎样用两个独立按键控制一位数码管显示,就是按下其中一个按键...
很简单 比如你定义的数是AA,汇编的是这样写的:MAIN;JB P3.0 ,S1 MOV A, AA INC A MOV AA,A S1:JB P3.1 ,MAIN MOV A, AA DEC A MOV AA,A JMP MAIN C语言的 if(P3^0==0){ delay(50);if(P3^0==1){ aa++;if(aa>=10)aa=0;}} if(P3^1==0){ delay...
51单片机 使用两个独立按键k1,k2,实现按下一个蜂鸣器响,按下另一个蜂 ...
\/\/假设你是 按开关时为0电平 \/\/具体IO口 自己配置 \/\/简单的就可以这么写 如果要求消抖 我们再讨论while(1){ if(k1==0)beep=1; if(k2==0)beep=0;}
单片机上用两个按键独立控制两个数码管,怎样使在按下一个按键使对应的...
给你个思路,在while循环里要实时刷新数码管显示,按键的判断放在定时器里,设一个变量,当按键按下时累加定时器中断次数,然后在主函数里判断变量值,超过一定数量则判断为按下,这时数码管计数变量++,当然你还要设按键抬起标志,仔细思考一下,肯定能写出来 ...
ESP32C3MicroPython教程三:独立按键的使用
ESP32C3开发板上配有RST和BOOT两个按键,其中BOOT按键在编程时尤为关键。电路原理中,BOOT按键连接到GPIO9,上拉电阻R4使其常态下为高电平,按下时变为低电平。由于机械按键存在抖动,我们需要通过软件消抖处理,如10ms延时,以避免误触发。在代码中,我们设置了20ms延时判断按键按下,并在按键松开时...