问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C语言编写AT89C51单片机程序,设计一个智能数字钟。10

发布网友 发布时间:2024-02-09 04:45

我来回答

2个回答

热心网友 时间:2024-03-04 10:13

这是我的课程设计,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}; //NPN,阿拉伯数码(共阳数码管专用)
//uchar one[10]={0x40,0x4f,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //PNP三极管,低电平使能
uchar three[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //扫描
int num[6]={2,3,5,9,3,6};
uint a,t,d;
void time(); //计时
void turn(); //调时
void delay(int); //延时
//***********************************************************************彩灯的
uchar light[24]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,
0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,
0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e};
int n,m=6,h;
void go();

//====================================主函数========================================
void main()
{
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1; //允许计数
ET0=1; //允许中断
EA=1;

for(;;) //主循环
{
time();
for(a=0;a<6;a++)
{
P3=three[a]; //扫描
P1=one[num[a]];
delay(1);
}
turn();
go();
}
}
//=====================================中断函数=================================
void work()interrupt 1 using 0
{
t++; //时钟时间
h++;
}

//=====================================计时子函数================================
void time()
{
if(t>=4000) //中断了4000次,一秒
{
t=0;
num[5]++;
if(num[5]>9) //1
{
num[5]=0;
num[4]++;
}
if(num[4]>5) //2
{
num[4]=0;
num[3]++;
}
if(num[3]>9) //3
{
num[3]=0;
num[2]++;
}
if(num[2]>5) //4
{
num[2]=0;
num[1]++;
}
if(num[1]>9) //5
{
num[1]=0;
num[0]++;
}
if(num[0]>1) //6
if(num[1]>3)
{
num[0]=0;
num[1]=0;
}
}
}

//====================================调时子程序===========================================
void turn()
{
if(P0_0==0) //小时
{
delay(5);
if(P0_0==0)
{
num[1]++;
if(num[1]>9)
{
num[1]=0;
num[0]++;
}
if(num[0]>1)
if(num[1]>3)
{
num[0]=0;
num[1]=0;
}

}
while(P0_0==0);
}
if(P0_1==0) //分钟
{
delay(5);
if(P0_1==0)
{
num[3]++;
if(num[3]>9)
{
num[3]=0;
num[2]++;
}
if(num[2]>5)
{
num[2]=0;
}
}
while(P0_1==0);
}
if(P0_2==0)
{
delay(5);
if(P0_2==0)
{
num[5]++;
if(num[5]>9)
{
num[5]=0;
num[4]++;
}
if(num[4]>5)
num[4]=0;
}
while(P0_2==0);
}
}

//========================================彩灯===========================================
void go()
{

if(h>=500*m) //1000=0.125秒
{
h=0;
P2=light[n];
n++;
}
if(n==24)
{
n=0;
m--;
}
if(m==0)
m=6;

}

//=====================================延时子程序==========================================
void delay(int c)
{
for(i=0;i<30*c;i++);
}

热心网友 时间:2024-03-04 10:15

http://hi.baidu.com/%D0%A1%B5%F1lns/blog/item/27b4fb5208ec6d0b0df3e373.html
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小鹏交付怎么评分 2024年5月趋乾黄道吉日 2024年5月哪天适合趋乾 2024年6月词讼黄道吉日 2024年6月哪天适合词讼 2024年8月成服黄道吉日 2024年8月哪天适合成服 2024年8月26日黄道吉日 百度识图在线识别这个人是 百度怎样识别明星是谁? 海绵城市都建什么 包钢股票前景如何 600010包钢股份这支股票我现在被套百分之六了,后市该怎么操作,适合做长 ... ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... ...吴,郑,王,张5人在路上相遇,周和4人都握了手,吴和3人握了手,郑和2人... 吴和周组成一句情话!有谁知道啊!跪求!在线等 踝关节骨折石膏固定通常固定多久() ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... 雪铁龙世嘉p000a故障 老款科鲁兹p000a故障 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... 欧字开头的品牌 手机号1 24 手机号24小时内绑定了两个被限制 请问什么时候才能重 ... 哪里有四年级上册语文学习巩固电子版 如何缩小毛孔和祛除黑头? 海洋传说化妆品香港集团有限公司的介绍 ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... 冬月3号是几号? ? 2.4信道选择哪个好 手机号1 24 手机号24小时内绑定了两个被限制 请问什么时候才能重 ... 为什么我的手机升不了级啊!??? 惠普打印机为什么打不出红色? ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... 莫颜是什么意思 类似莫颜 橙星 文笔风格的言情小说作家 违教:一个有趣的话题 梦见一位大姐成为自己的夫人 梦见女朋友和姐夫结婚了的预兆 元旦写给孩子的祝福 ...号在最近24小时内绑定过三个,已达到限制,...24小时后可以再次... ccd停产时间 2003年广东理发师给我推荐的一款洗发水很好用,可是我不记得是什么品牌了... 江苏农业学报终审的录用概率 proteus中继电器如何使用?60 PROTUES中继电器怎样仿真27 proteus中如何给继电器通电18 怎样才能有好的课堂纪律? 微信手机号在24小时内,已绑定两个,已达到限制,不能在绑定其他微信... 《呐喊》自序:鲁迅为自己的小说集《呐喊》写的序言 在工厂车间差不多有全部总是我是傻子做出也说傻子货,我该怎么面对她们呢... ...人们背后都叫我“傻子”,“白痴”。怎么办?工厂上班的。我是呆头... 工厂里的人个个当我是傻子怎么办?是因为和别人沟通不妥!很想不做了...