用AT89C51单片机编写一个C语言程序实现2个数码管秒计数器,用4个按键分别控制暂停、加一秒、减一秒和继续

如题所述

第1个回答  推荐于2017-09-24
#include<reg51.h>
#define uchar unsigned char;
uchar LED1,LED2;
uchar distab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar num=0;sec,key;
void delay(unsigned int a)
{
unsigned int i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}

void display()
{
LED1=sec/10;
LED2=sec%10;
P2=0x01;
P0=distab[LED1];
delay(3);

P2=0x02;
P0=distab[LED2];
delay(3);
}
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
if(num>=20)
{
num=0;
sec++;
}
}
main()
{

TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
LED1=0;
LED2=0;
while(1)
{
key=P1;
if((key&0x0f)!=0x0f)
{
delay(10);
key=P1&0x0f;
if(key!=0x0f)
{
switch(key)
{
case 0x0e:TR0=0;break;
case 0x0d:sec++;break;
case 0x0b:sec--;break;
case 0x07:TR0=1;break;
default:break;
}
}
}
)
display();
}
}本回答被提问者和网友采纳
第2个回答  2013-04-29
这。。。。。。。。。。无语了,,简单追问

求 具体程序! 我是菜鸟......

追答

上面有,,不抢分了

第3个回答  2013-04-29
怎么不多看看书啊,这么.............还来悬赏20分,浪费啊

用AT89C51单片机编写一个C语言程序实现2个数码管秒计数器,用4个按键...
case 0x0b:sec--;break;case 0x07:TR0=1;break;default:break;} } } )display();} }

AT89c51单片机程序控制两个数码管显示00-59秒表的程序要怎么编啊?
void main(void )\/\/主程序 { TMOD=0x01;\/\/ 定时器1工作方式一 ET0=1;EA=1;TH0=(65536-10000)\/256;\/\/定时10ms TL0=(65536-10000)%256;TR0=0;\/\/上电先不启动 while(1){ if(key1==0)\/\/判断按键是否按下 { Delay1ms(10);\/\/延时消抖 if(key1==0){ while(key1==0);\/\/等待...

求大神写个程序,at89c51单片机实现两个7SEG-COM-ANODE灯循环显示00...
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};\/\/共阳数码管段码表 unsigned char num;\/\/计数变量 unsigned char t0n;\/\/T0中断计数 void main(){ TMOD=0x01;\/\/用T0定时,中断方式 TH0=0x3C;\/\/晶振12M,定时50ms TL0=0xB0;IE=0x82;TR0=1;P0=...

求篮球30秒倒计时器的设计和制作,数字电路课程设计,详细论文
“30秒倒计时器”用两个共阳数码管来显示时间,数码管显示方式为动态显示。显示驱动电路中,数码管的段码引脚通过470欧的电阻接到单片机的P1口,两个片选引脚各通过一个9012连接到正5V电源,由P3.0和P3.1控制。 4、报警电路 计时时间减到0,显示数码管显示“00”时,发光二极管D1由P3.5控制发出光报警,同时蜂鸣器由P...

AT89C51单片机怎么用汇编语言让4个数码管同时显示1234?
1、首先我们先打开keil。2、接着,我们要定义好库函数,void main(){while(1)\/\/不断循环显示{dispaly();}}void dispaly(){P0=smg[1];\/\/选择显示数字几,P1=0x7f;\/\/控制是否点亮数码管。3、接着,我们加上一条循环语句。delay(5);\/\/显示5毫秒P0=0XFF;\/\/消影P0=smg[2];P1=0xbf;delay...

小妹跪求基于AT89C51的单片机控制交通灯毕业设计,C语言程序的啊!哭死...
思路:红灯停,绿灯行,黄灯闪烁提示行人红绿灯即将切换。四个方向各有一个红、黄、绿显示和两个数码管。东西道为人行道(20秒),南北道为车行道(60秒),黄灯延时最后三秒时,闪烁并切换。三、硬件电路设计 此电中路设计采用AT89C51单片机,74LS47(数码管驱动)74LS373(数码管驱动输出锁存),8个...

利用单片机AT89C51设计电路,并用4个按键控制1个数码管的数字的变化(要...
充分利用单片机的中断机制,使数码管LED1直接实现数字流水显示,而另一个数码管LED2根据案件控制,进行多组内容的切换显示变换效果,要求使用至少4个按键来控制显示切换,需要设计出多组显示的至少4组显示内容。

用C语言编写AT89C51单片机程序,设计一个智能数字钟。
这是我的课程设计,6个数码管,显示时分秒,三个按钮P0.0、P0.1、P0.2可以调时,有8个彩灯(可以不要),没闹钟、倒计时之类的。呵呵。include<AT89X52.H> define uchar unsigned char int i;\/\/***时钟的 uchar one[10]={0xbf,0xb0,0xdb,0xcf,0xe6,0xed,0xfd,0x07,0xff,0xef}...

单片机AT89C51用C语言编,两个按钮分别控制一个数码管加减数,最好...
0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; \/\/0到f uchar dat;void ext0() interrupt 0 { dat++;dat%=10;P1=distab[dat];} ext1() interrupt 2 { if(dat>0)dat--;P1=disab[dat];} main(){ EX0=1;EX1=1;IT0=1;IT1=1;EA=1;while(1);} ...

用单片机AT89C51驱动两位数码管显示00--99依次循环程序代码
以下是用单片机AT89C51驱动两位数码管显示00--99循环的程序代码片段:程序开始于0000h地址,通过计数器temp(22h)控制数码管从00到99的循环显示。计数器初始化为0,然后调用子程序display进行显示。每当计数器加1并判断是否达到100后,若未满则返回stlop继续循环,满100则清零重新开始。display子程序中,先...

相似回答