51单片机30秒倒计时,用数码管显示的,c程序,元件只有at89c51和数码管,没有其他的,

如题所述

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit d1=P1^0;
uchar num,num1;tt;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void main()
{
num=0;
tt=0;
TMOD=0x11;//设置定时器0为工作方式1
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TH1=(65536-20000)/256;
TL1=(65536-20000)%256;
//EA=1;//开总中断
ET0=1;//开定时器0中断
ET1=1;
TR0=1;//启动定时器0
TR1=1;
wela=1;//11101010
P0=0xea;
wela=0;
dula=1;
P0=0x3f;
dula=0;
while(1)
{
if(num1==25)
{
num1=0;
P1=~P1;
}
if(tt==100)
{
tt=0;
num++;
if(num==16)
num=0;
dula=1;
P0=table[num];
dula=0;
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void time0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
tt++;
}
void time1() interrupt 3
{
TH1=(65536-20000)/256;
TL1=(65536-20000)%256;
num1++;
}
自己发掘吧追问

wela=1;//11101010
P0=0xea;
wela=0;
dula=1;
P0=0x3f;
dula=0;
能解释是什么意思么,我主要就是
数码管2位怎么同时显示不同数字的问题不知道,谢谢了

追答

数码管2位同时显示用动态扫描,dula=1;P0=0x3f;dula=0;决定显示什么wela=1;//11101010P0=0xea;wela=0决定哪一个数码管显示

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-21
还需要晶振和复位电路吧。电源也得有。追问

我主要说的几个大的元件

追答

这里是问问题的,你也没说有什么问题啊

追问

c程序,大神,我有问啊

追答

晕。我是人,不是神。

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

使用汇编语言编程实现AT89C51八位数码管动态显示?
使用汇编语言编程实现AT89C51八位数码管动态显示?

用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可以运行么?没有那个而温度传感器。
理论上,只有AT89C51单片机是可以运行的,之所以称为单片机,就是一个芯片即可以运行了。可问题是,运行以后,要控制什么呢?得有输出接口与受控制设备连接,才能控制外设工作。如果还想要工作过程中,显示运行状态,工作的参数等信息,就得有显示电路,还需要扩展电路,有相应的显示元件,比如常的数码管。还...

AT89C51接在数码管上
是要用单片机AT89C51设计动态数码管显示电路,用单片机的两个并行口P0和P2可接一个8位一体的共阴数码管,P0口输出段码,P2口输出位码,仿真图如下。

单片机 at89c51 6位数码管24小时倒计时程序
include<reg51.h> define uchar unsigned char define uint unsigned int uchar hour,min,sec;uint count;uchar code tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar code add[6]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb};\/***延时一毫秒***\/ void delay1ms(void...

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

单片机AT89C51的一段ASM代码出现了问题 LED数码管不亮 不知道是我电...
你这个程序 数码管 应该用共阳的,能亮出来 但程序 太乱了 同时在一个数码管上显示了几个数,显示不正常,这样的电路 在仿真时还能掺和,实际电路是不行的,当然学习能仿真出来 已经是一大进步,先不要太复杂 一步一步 增加难度,这样比较 容易。

AT89c51单片机程序控制两个数码管显示00-59秒表的程序要怎么编啊...
display(second)子函数与两个数码管的连接方式有关 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);\/\/延时...

怎样用51单片机实现累加计时和倒计时,并用六个共阴极数码管显示出来。用...
本文利用单片机实现数字时钟计时功能的主要内容,其中AT89S52是核心元件同时采用数码管动态显示“时”,“分”,“秒”的现代计时装置。与传统机械表相比,它具有走时精确,显示直观等特点。它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点。2 方案...

相似回答