51单片机怎么用按键控两个数码管,按一下改变两个数字的显示速度,速

作者&投稿:无药 (若有异议请与网页底部的电邮联系)
51单片机怎么用按键控制一个数码管,按一下显示一个数字,顺序显示~

1、首先,要把代码写好,点亮数码管。

2、代码写完后,要确认原先写好的代码是不是正确的。

3、确认代码无误后,进入下一步,就是在这一行代码(箭头所指)的地方,将这四个字删去。

4、然后如图所示,四个字已经删去,只要改成数字相应的代码即可。

5、这里改成的是代表数字0的代码,如图所示。

6、最后写好代码后,将生成的hex文件写进单片机,数码管显示的数字就变成0了。

给你个思路,在while循环里要实时刷新数码管显示,按键的判断放在定时器里,设一个变量,当按键按下时累加定时器中断次数,然后在主函数里判断变量值,超过一定数量则判断为按下,这时数码管计数变量++,当然你还要设按键抬起标志,仔细思考一下,肯定能写出来

#include<reg51.h>
#define uchar unsigned char;
uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f
uchar number,dat,dattop=10,cnt=0;
sbit keyu=P1^0;
sbit keyd=P1^1;
void t0isr() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
number++;
if(number>1)number=0;
switch(number)
{
case 0:P2=0x02;P0=distab[dat/10];
break;
case 1:P2=0x01;P0=distab[dat%10];
break;
default:break;
}
}
void t1isr() interrupt 3
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
cnt++;
if(cnt>=dattop)
{
cnt=0;
dat++;
dat%=100;
}
}
main()
{
TMOD=0x11;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
TR1=1;
ET1=1;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(keyu==0)
{
while(keyu==0);
if(dattop<100)dattop++;
}
if(keyd==0)
{
while(keyd==0);
if(dattop>0)dattop--;
}
}
}

这个简单,私聊教你,不收费,

903605094

有偿

在51单片机上使用独立按键实现加减功能,并在12864上显示程序
答:1,你先学会使用按键,用指示灯的亮灭来表示按键的状态,比如按一次亮,再按一次灭,做到了就会用按键了.2,再单独调试12864液晶显示,直到会在上面显示字符和文字(这样的资料很多,就百度也有).3,把1和2步结合起来,并实现更多功能.

51单片机按一下显示1,再按一下同一个按键显示2
答:程序大致这样:uchar a=0;/计按键次数的变量 while(1){ if(key==0)//按键按下 { delayms(10);//延时消抖 if(key==0) {a++;while(key==0);}//变量加1 } display(a);//显示 }

用51单片机设计一个由3个按键显示两位的程序分别是15,25,35。_百度知 ...
答:另外:得用外接的“时间芯片”:1302。开机后,必须对1302进行初始化,然后等待操作者,对1302进行时间设定,然后等待2009-09-24 22:33时刻的到来。然后输出要求的波形。输出波形,也要用1302的时间进行控制 ( 我只会前面。 1302 是网上一个朋友说的,我也写出来了,希望对你有帮助。)...

我想设计一个单片机C51按键控制发送不同个数脉冲的实验
答:【脉冲产生电路中方案】由电阻,电容,按键开关和施密特触发器构成。按键一下,输出一个负脉冲,其中电阻R和电容C主要用来去除抖动,对于按键的效果尤为重要。取VCC=5V ,对于R,C的选择必须满足按键 闭合后,能使电容C充电到VT+以上,从而使施密特触发器输出翻转 。其电路的结构为:...

谁会51单片机 继电器定时控制,数码管最大显示99 ,最小显示00可,以用...
答:2:数码管两位的采用共阳,同样使用三极管控制共阳位(占用两个I/O口)数码段及小数点占用8个I/O口 采用500欧姆电阻。数码管以 至少250HZ的频率 轮显,每次停留1mS 这样才能感觉不闪烁,并且亮度也够。3:由题目得知 数码管 为十进制 递减 速度未知 可设定为 秒基准 那么单片机的晶振 适合采用12M的...

51单片机按键控制数码管数字加减问题
答:void keyScan()//1*5按键扫描函数 { P3 = P3 | 0xf8;//P3高5位置1,设置为输入,默认为高电平 0xf8=11111000 keyValue = P3;if((keyValue & 0xf8)!= 0xf8){ //判断是否有按键按下 delay(20);//延时肖抖 keyValue = P3;if((keyValue & 0xf8)!= 0xf8)//再次判断是否有按键按...

51单片机设计两位计数器C语言
答:include "reg52.h"define uchar unsigned char define uint unsigned int define dataport P1 sbit s1=P2^0;sbit s2=P2^1;sbit s3=P2^2;sbit wei1=P2^4;sbit wei2=P2^5;signed char a=0;uchar TABLE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//延时子程序...

51单片机 按键按下去 计数一次 程序应该怎么写?
答:在按键按下后,用循环语句,等待抬起计数 if(按键按下){ 延时; if(按键按下) { while(按键没有松开); //如果按键没有松开,程序会停在这里 count++; //按键松开后,程序会运行到这里,计数值加1 }}

汇编语言51单片机怎么用KEY 1控制数码管上显示的数字加1 KEY2控制数码...
答:给你个参考;1)起始部分,R5用于控制取七段码的方向,是从头起还是从尾起;2)显示部分;这个是按你取七段码的思路,递增时是以 0 为结束,那么为了让递减时也以 0 为结束;因此就在前面加 0;TAB:DB 00H,3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,...

请教单片机高手,关于一键双控制
答:可以这样 设置个变量 第一次按下 变量 由0变为1 第二次按下 变量由1变为2