c51单片机怎么用两个按键控制两个数码管的加减,加到99就好,求程序

作者&投稿:职强 (若有异议请与网页底部的电邮联系)
关于单片机AT89C51程序,利用两个数码管,利用按键控制实现“数字减一”显示99到00。~

#include "reg52.h"
#include
#define uchar unsigned char
uchar code LED_TAB[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsigned int x=9999;
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
uchar a,b,c,d;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
EA=1;

while(1)
{
a=x/1000;
b=x/100%10;
c=x/10%10;
d=x%10;
P2=0X7F;

P2=_crol_(P2,1);
P0=LED_TAB[a];
delay(2); P2=_crol_(P2,1);
P0=LED_TAB[b];
delay(2); P2=_crol_(P2,1);
P0=LED_TAB[c];
delay(2); P2=_crol_(P2,1);
P0=LED_TAB[d];
delay(2);
}
}void aa() interrupt 0
{
x--;
}void bb() interrupt 2
{
x=9999;
}

下面这个刚好可以,只少一个减计数:
http://zhidao.baidu.com/question/1798279664316263987

1、首先先在proteus画出仿真图,方便仿真程序。

2、接着来编写程序,先来写入头函数。

2、根据自己在proteus画的图,定义一下管脚根据你的原理图进行编写。

3、然后写一个延时函数,来调节流水灯的时间间隔延时时间自己定义。

4、下图就是主函数,包括流水灯的反复循环和j流水灯的方向。

5、检查没有错误,编译一下,就可以进行仿真了。



#include <reg51.h>
void delay(unsigned int i); //这个函数自己写出来
int key = 0;
sbit key1 = P?? ;//哪个管教不知道
sbit key2 = P/?;
sbit ge = P??;
sbit shi = P??;
//此表为 LED 的字模, 共阴数码管 0-9 -
unsigned char code tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};

void keykey()
{
if(key1 == 1)//默认高电平是按键按下
{
delay(5);
if(key1 == 1)
{
key++;
}
}

else if(key2 == 1)//默认高电平是按键按下
{
delay(5);
if(key2 == 1)
{
key--;
}
}
if(key >99) //防止越界 也可以用与的方式写 key &= 0x63;这句话就能顶了下面俩判断
key = 0;
else if(key < 0)
key = 99;

}
void display(int x)
{
P0 = tap[x%10];
ge = 1;
delay(10);
ge = 0;
delay(10);
P0 =tap[x/10];
shi = 1;
delay(10);
shi = 0;
delay(10);
}
void main(void)
{
while(1)
{
display(key);
keykey();
}
}


51单片机汇编语言程序,一个按键控制两个发光二极管的同时闪烁,交替闪烁...
;P1.0 P1.1接2LED,P2.0接一按键。上电2LED不亮,按第1 次键2LED同时以1S周期闪烁,按第2 次 2LED轮流1S闪烁...同此循环。;11 04 17 ORG 00H AJMP MAIN ORG 0BH AJMP T0INT ORG 30H MAIN:MOV TMOD,#01H ;MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB ET0 MOV R0,#10 K...

单片机51,两个外部中断不能同时使用,就是这个开了,另外一个打开,之前...
同时有多个中断的话,就要考虑中断优先级的问题了。51单片机,默认的中断优先级是:外中断0>定时器0>外中断1>定时器1>串口 由于低级中断不能打断高级中断,因此默认情况下,外中断0可以打断外中断1,从而实现中断嵌套;但外中断1不可以打断外中断0,在外中断0的中断服务没有退出之前,外中断1是进不去...

51单片机一个按键控制两个输出端交替产生脉冲
硬件就不说了,直接点来软件,外部中断配置好,然后在中断函数里面判断是第几次按下(用一个变量,进入一次中断变量加一,奇数表示第一次,偶数就表示第二次了,就这样循环啦),然后根据奇偶性选择引脚控制,相信延迟(要精确就用定时器,控制TRx位就行),IO口拉高拉低你应该会的 兄弟,加油^0^~...

51单片机一个定时器两个计数器能同时工作吗?
可以的! 但需要初始化! 例如一个定时器用于串口的波特率产生,另外一个则可以用作计数器!void init_uart() void { TMOD = 0x20; \/\/定时器T1使用工作方式2 TH1 = 253; \/\/ 设置初值 TL1 = 253;TR1 = 1; \/\/ 开始计时 SCON = 0x50; \/\/工作方式1,波特率9600bps,允许接收 ES =...

51单片机两个程序怎么融合?
把两个程序写成两个子函数,原来是两个独立的主程序,现在只能写一个主程序,在主程序中分别调用那两个子函数。或根据一定条件,有条件的调用某个子函数。

求用51单片机接两个数码管,0-99动态显示程序(用C语言)
uint a,b;uint k=99;a=99\/10;\/\/这里只取十位而已,也就是9 b=99%10\/\/这是求模,相当于数学里说的取余数 然后再将这a和b的数据指向一个数码管显示的代码数组[弄清数码管的显示就知道怎么写出显示代码了]第一个是个位,先显示个位,数组的运用是利用下标控制的,我们用变量b控制下标。第二...

51单片机双键同时识别(长按)判断程序怎么编?
假设“1”表示键按下,那么双键同时按,肯定端口有两个“1”,只有一个键按则只有一个“1”,当然“0”表示按下的话,取反就是了。这样就好办了,将这个有效键位值赋值给累加器A,根据奇偶标志“P"的值就可以判断是单键还是双键了。

51单片机c程序用定时器控制两个数码管显示0到59,一直没弄懂段位和位选...
数码管 的 一位 数字 称一个位,两个数字为 两位,三个---,每个数字 有 八个段 为 a b c d e f g h,(h 为小数点)数码管 有 两位一体的、三位一体的,四位一体的等,如四位一体的数码管有12个脚,分为 a b c d e f g h 八个 段码脚,四个 ...

51单片机的串口IO(TXD,RXD),能否同时接到两片Max232芯片上使用??
理论上是可以的,但你必须从应答的流程上保证,在任意时刻最多只能有一个从机在发送数据,这点要考虑清楚。另外,TXD,RXD可能驱动不了这么多口子,最简单的办法,你可以将信号输入到一个74LS04,以增强其驱动。

51单片机中.怎么用c语言比较2个单元中的数的大小
我来给你写这个程序;void main(){ unsigned char *D1,*D2,*D3; \/\/先定义两个指针变量。D1=0x20;\/\/分别指向相应的地址。D2=0x30;D3=0x40;if((*D1)>=(*D2)){ D3 = *D2; \/\/将较小的数存到D3所指向的空间(0x40)} else { D3 = *D1;} } ...

桥西区13496001066: c51单片机怎么用两个按键控制两个数码管的加减,加到99就好,求程序 -
涂费米曲: 1、首先先在proteus画出仿真图,方便仿真程序.2、接着来编写程序,先来写入头函数.2、根据自己在proteus画的图,定义一下管脚根据你的原理图进行编写.3、然后写一个延时函数,来调节流水灯的时间间隔延时时间自己定义.4、下图就是主函数,包括流水灯的反复循环和j流水灯的方向.5、检查没有错误,编译一下,就可以进行仿真了.

桥西区13496001066: C51单片机 单个按键 短按抬起和长按两功能程序怎么写 -
涂费米曲: 按键按下后启动定时器!在2个定时器中断内分别控制两个LED灯的开关!

桥西区13496001066: 如何用C51单片机实现P0口接两个按键,P1口接8个LED灯.key1按下左移动1位点亮LED key2按下右移动1位点LED -
涂费米曲: 给个四路: 定意一个变量; if(按键1按下)变量为1; if(按键2按下)变量为2;if(变量==1) {左移控制; } else if(变量==2) {右移控制; }

桥西区13496001066: 单片机上用两个按键独立控制两个数码管,怎样使在按下一个按键使对应的数码管改变后,另一个数码管亮着 -
涂费米曲: 给你个思路,在while循环里要实时刷新数码管显示,按键的判断放在定时器里,设一个变量,当按键按下时累加定时器中断次数,然后在主函数里判断变量值,超过一定数量则判断为按下,这时数码管计数变量++,当然你还要设按键抬起标志,仔细思考一下,肯定能写出来

桥西区13496001066: C51单片机利用按键控制多个子程序的运行模板? -
涂费米曲: 采用模块化编程,用按键直接调用即可

桥西区13496001066: 51单片机怎样用两个以上按键同时控制相应程序的执行 -
涂费米曲: 按键按下,给一标志位,子函数 通过识别 标志位,判断是否 执行流水.猜测:又一个受 郭大侠荼毒的孩子!

桥西区13496001066: 单片机C程序有两个按键控制两个灯吗就是按一下灭在按一下亮,一个按键控制一个灯 -
涂费米曲: 可以的,简单的检测按键端口,取反输出端口就可以了.

桥西区13496001066: 单片机,程序功能:利用2个按键来控制2位数的加或减. -
涂费米曲: 这个很简单啊,看你选择什么单片机. 选个主芯片,外围需要led数码管,和按键. 数码管按照其接口连接,按揭直接使用GPIO. 定时器20ms对键盘扫描,根据按键处理显示数据.

桥西区13496001066: 单片机C51,三个内容.一个最小系统带一个流水灯.两个按键控制两个灯,外部中断实现.一个00 - 99显示的. -
涂费米曲: 流水灯知道:回#include<reg51.h>#include<intrins.h> void delay(uchar a) { uchar i; while(a--)for(i=0;i<120;i++); } main() { P0=0xfe; while(1) { P0=_crol_(P0,1); delay(200); } } 按键控制两个灯#include<reg51.h> sbit led1=P1^0; sbit led2=P1^1; void ...

桥西区13496001066: 2个按钮的C51程序 -
涂费米曲: 两个按键,一个开始键,一个解除键.按开始后按钮灯亮,5分钟后指示灯亮并等待按解除键.等待期间可长按1秒的解除键解除计时,防止误操作. 我理解的对吗,可以改.#include sbit key=P1^0; //开始键 sbit warm=P1^1; //解除键 sbit light...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网