使用2个数码管设计一个60秒倒计时C语言程序,要求用定时器中断定时1秒。 仿真元件数码管为7SEG-COM-CATHODE

单片机:使用2个数码管设计一个60秒倒计时C语言程序,要求用定时器中断定时1秒。 仿真元件数码管为7SEG-COM-CATHODE。要求:1.带仿真图 2.静态显示 3.完整C程序!!!

7SEG-COM-CATHODE 为共阴管

#include<reg51.h>

#define uchar unsigned char 

#define uint unsigned int

uchar num=60,shi,ge;

uchar code TAB[]={

  0x3F,/*0*/

        0x06,/*1*/

        0x5B,/*2*/

        0x4F,/*3*/

        0x66,/*4*/

        0x6D,/*5*/

        0x7D,/*6*/

        0x07,/*7*/

        0x7F,/*8*/

        0x6F,/*9*/

 };

void T0INTinit()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

void main()

{

T0INTinit();

while(1)

{

shi=num/10;

ge=num%10;

P0=TAB[shi];

P2=TAB[ge];

}

}

void T0INT() interrupt 1

{

uchar i;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

i++;

if(i==20)

{

i=0;

num--;

if(num==0)

num=60;

}

}

追问

仿真截图上传上来看看

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-10
unsigned char counter,s;
unsigned ....// 数组,7段数码管数据,记得7SEG-COM-CATHODE是共阳吧?
void delays() //延迟函数
{
unsigned char a;
for(a=0;a<200;a++);
}
void display_t() //动态部分,个位十位切换
{
SMG_data=num[s%10]
SMG_bit =;
display_t();

SMG_data=num[s/10]
SMG_bit =;
display_t();

}
void interrup_services() //设定定时器和中断,3cb0,50ms
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
TR0=1;
ET0=1;
EA=1;

}
void main() //主函数
{
void interrup_services() ;
while(1)
display_t();
}
void interrupt_ini() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
counter++;
if(counter>19}{s++ ; counter=0 ;} //50ms*20=1s,0~19为20
if(s >59 ) {s=0;}
}
这程序很简单,仿真设定好晶振,改下就行了包括定时器的,我这个设定是晶振12M的。12HZ的真心没用过。追问

能把仿真图截下来看看吗?是静态显示的吗?

本回答被网友采纳
第2个回答  2012-06-10
晶振是多少赫兹? 是51单片机么?追问

12HZ,是51单片机C语言程序,静态显示

追答

数码管的型号,最好是原理图给我

追问

数码管为7SEG-COM-CATHODE,图你根据题目自己画,记得是静态显示的!做完发我邮箱315408500@qq.com

...要求用定时器中断定时1秒。 仿真元件数码管为7SEG-COM-CATHODE_百度...
if(num==0)num=60;} }

编程实现倒计时的秒表,2位LED数码管显示,延时采用硬件延时的方法_百 ...
TH0 =0x3C;\/\/晶振12M,定时50ms TL0 =0xB0;IE =0x82;while(1){ display();\/\/调显示子程序 if(k1==0)\/\/按键按下 { if(TR0==0){ TR0=1;\/\/启动开始计时 second=60;\/\/从60秒开始倒计时 } else TR0=0;while(k1==0);\/\/等待按键释放 } } } \/\/T0中断程序 void T0_int() ...

求高手修改单片机C语言程序:0~59秒计数器;1个独立按键控制,2个数码...
\/\/注意;P0口要加上拉电阻 。include<reg52.h> include<intrins.h> define uint unsigned int define uchar unsigned char sbit KEY=P1^0;uchar aa,num,num1,flag;uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voi...

...个简单的单片机用数码管显示计时60秒的C语言程序,程序一定要带有解释...
RCAP2L=(65536-50000)%256; \/\/定时器2定时50MS TR2=1; \/\/启动定时器2 ET2=1; \/\/打开定时器2中断 EA=1; \/\/开总中断 P3=0x01;while(1){prt(); \/\/显示 } } 望采纳···

怎么让一组数码管显示完60秒倒计时后让下一组接着显示,然后以此不断...
可以用两个二位一体共阴数码管,即为两组。倒计时用定时器定时50ms,采用中断方式,并对中断计数20次就是1秒。用一个变量做秒计数,每一秒减一,即可以实现倒计时了。第一组数码管显示倒计时仿真结果如下。第二组数码管显示倒计时结果。

想用51单片机编个倒计时的c程序,要求用两位数码管显示分钟的,并用一...
你这数码管的1、2口就这么悬着或者接dp一起了真的没问题吗……全局变量2个用于表示个位和十位,显示的时候可以省点力不用每次计算个位十位。然后一个全局变量代表秒 编程的话,首先是按键响应中断,控制某个全局变量flag的值,三种状态:正常、暂停、到时间。按键可以在前两种之间切换,如果已经是第...

我想用51单片机编个倒计时的c程序,要求用两位数码管显示分钟的,并用一...
你这数码管的1、2口就这么悬着或者接dp一起了真的没问题吗……全局变量2个用于表示个位和十位,显示的时候可以省点力不用每次计算个位十位。然后一个全局变量代表秒 编程的话,首先是按键响应中断,控制某个全局变量flag的值,三种状态:正常、暂停、到时间。按键可以在前两种之间切换,如果已经是第...

利用单片机设计实现一个60秒倒计时显示装置,并且计时到后发出报警声音...
include<reg52.h>sbit bz=P3^1;unsigned char a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90};unsigned char n,time=60;main(){P1=a[0];P2=a[6];TMOD=0X01;TH0=(65536-10000)\/256;TL0=(65536-10000)%256;EA=1;ET0=1;TR0=1;while(1);}timer0() ...

单片机 60秒倒计时
我是用汇编语言做的,如果显示的速度不理想 你改下延时程序段的数值就OK了,课堂上这个60S倒计时的课题用了很多方法做过 ORG 0000H LJMP START ORG 0100H START:MOV R0, #59 MOV DPTR, #TABLE LOOP:LCALL DISPLAY DEC R0 CJNE R0,#0,LOOP JMP START DISPLAY:MOV ...

单片机用C语言写两个数码管显示0到59循环的程序在归0
EA=1;ET0=1;\/\/开定时器0中断 TR0=1;\/\/启动定时器0 while(1){ if ( tt==20 ){ tt=0;if ( wei==1 ) { i++; } } if ( i==59 ) { i=0; } led2=0;P1=(led_zx[i%10]);led1=1;mdelay(50);led1=0;P1=(led_zx[i\/10]);led2=1;mdelay(50);} } void...

相似回答