用C语言编写程序使89C52单片机实现数字时钟功能,显示时分秒的数码管,p1~p7接a~G急求!

实验中6位数码管,分别为小时的十位,个位.分钟的十位,个位.秒的十位,个位.6个键盘分别对时秒分进行加一或减一. P1口控制数码管的 A B C D E F G DP.P3--P3.5分别为数码管123456的驱动脚. 我的83039052@.qq.com

第1个回答  2009-12-28
当一盘好人,给个例程,自己研究吧¬¬

#include<reg52.h>
char code duma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //0-9数码管,共阴
char code wema[]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7}; //片选,1-8个数码管
char j;
char h_num,m_num,s_num; //分别定义小时、分钟、秒
char h_shi,h_ge,m_shi,m_ge,s_shi,s_ge;
sbit fm=P3^4;

void delay(char x)
{
char a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}

void inter_init()
{
EA=1; //开总中断
ET0=1; //本例中使用的是定时器T0,如果用T1。则为ET1=0,TMOD=0x10。
TMOD=0x01; //定时器工作方式1
TH0=(65535-50000)/256; //因为晶振用的是11.0592MHZ。在取初值时,大概定义为一个中断为50MS
TL0=(65535-50000)%256;
TR0=1;
}

void display(char h_shi,h_ge,m_shi,m_ge,s_shi,s_ge)
{
P2=duma[h_shi];
P1=wema[0];
delay(8);
P2=duma[h_ge];
P1=wema[1];
delay(8);
P2=duma[10];
P1=wema[2];
delay(8);

P2=duma[m_shi];
P1=wema[3];
delay(8);
P2=duma[m_ge];
P1=wema[4];
delay(8);
P2=duma[10];
P1=wema[5];
delay(8);

P2=duma[s_shi];
P1=wema[6];
delay(8);
P2=duma[s_ge];
P1=wema[7];
delay(8);
}

void main()
{
inter_init();
s_num=55; //初始时间设置。分别是秒,分,小时
m_num=59;
h_num=10;
while(1)
{
if(j==20)
{
j=0;
if(s_num==59)
{
s_num=-1;
if(m_num==59)
{
m_num=-1;
if(h_num==24)
h_num=-1;
h_num++;
fm=0; //到整点后蜂鸣器会响一下
delay(50);
fm=1;

}
m_num++;
}
s_num++;
}
h_shi=h_num/10;
h_ge =h_num%10;
m_shi=m_num/10;
m_ge =m_num%10;
s_shi=s_num/10;
s_ge =s_num%10;
display(h_shi,h_ge,m_shi,m_ge,s_shi,s_ge);
}
}

void time()interrupt 1 using 1 //如果用T1的话,应为interrupt 3
{
TH0=(65535-50000)/256; //因为晶振用的是11.0592MHZ。在取初值时,大概定义为一个中断为50MS
TL0=(65535-50000)%256;
j++;
}本回答被提问者采纳
第2个回答  2009-12-27
这样的好人不多了。。。

用C语言编写程序使89C52单片机实现数字时钟功能,显示时分秒的数码管,p1...
P1=wema[1];delay(8);P2=duma[10];P1=wema[2];delay(8);P2=duma[m_shi];P1=wema[3];delay(8);P2=duma[m_ge];P1=wema[4];delay(8);P2=duma[10];P1=wema[5];delay(8);P2=duma[s_shi];P1=wema[6];delay(8);P2=duma[s_ge];P1=wema[7];delay(8);} void main(){ ...

用C语言编写程序使89C52单片机实现数字时钟功能,急求!
\/* 文件名称:SZ01.c� *\/ \/* 程序功能:带定时闹铃时钟 *\/ \/*---*\/ include <AT89X51.H> \/*包含器件配置文件*\/ define uchar unsigned char define uint unsigned int char DATA_7SEG[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,...

求一89c52单片机c语言程序,流水灯+数码管 共同作用
include<reg52.h> define uint unsigned int define uchar unsigned char define LED P3 uchar code TAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char a,i;unsigned long int temp;void init();void display();void delay(unsigned char );void main(){ init...

寻求89C52单片机+蜂鸣器报警同时LED灯亮+数码管显示的程序,汇编\\C语言...
给你个程序参考吧,#include<reg52.h> include<intrins.h> define uint unsigned int define uchar unsigned char sbit d=P3^4;void delay200ms(void){ unsigned char i,j,k;for(i=5;i>0;i--)for(j=132;j>0;j--)for(k=150;k>0;k--);} void main(){ uchar r,t;r=0xfe;whi...

单片机C语言该怎么编写时钟程序?
这个是简单的数码管时钟显示如果有需要,我写过比较完善的1602显示时钟.显示控制年月日等等.#include<reg51.h> sbit Begin=P2^0;sbit Hour=P2^1;sbit Mus=P2^2;sbit End=P2^3;unsigned char code Tab[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x...

...的单片机用数码管显示计时60秒的C语言程序,程序一定要带有解释和P...
\/***程序仿真用89c52 数码管用共阳极数码管 P0口段选,P3.0和P3.1位选 定时器2用法见百度“T2CON”***\/ include<reg52.h> define uint unsigned int define uchar unsigned char uchar code num[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; \/\/共阳极...

...温度的单片机的C语言程序,运用的是89c52单片机,附上电路图,谢谢...
include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit DQ=P1^4; \/\/ds18b20与单片机连接口 unsigned char code str[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40} ; \/\/共阴数码管字码表unsigned char code str1[]={0x0bf,0x86,...

单片机数字钟显示不出来
1、先要排除硬件问题。很简单,首先搞清楚,数码管是否使用正确。是共阳极的还是工阴极的。测试方法也很简单,如果是共阳极的数码管,就在另外一端接地,看数码管亮不亮。共阴极的则想反。最后,用一个最简单的程序,去测试数码管是否工作正常。如果正常,说明,电路没问题。(以我个人经验,如果电路是...

相似回答