资源简介
基于AT89S52单片机数码管显示数字钟(含proteus仿真)
转载请标明出处,并保持代码完整。

代码片段和文件信息
#include
unsigned char code dispcode[]={0x3f0x060x5b0x4f
0x660x6d0x7d0x07
0x7f0x6f0x770x7c
0x390x5e0x790x710x40};//共阴数码管编码:0-f,最后是“-”
unsigned char dispbitcode[]={0x070x060x050x04
0x030x020x010x00}; //位选端
unsigned char dispbuf[8]={0016001600};//初始状态:00-00-00
unsigned char dispbitcnt=0;
unsigned char second=0;
unsigned char minute=0;
unsigned char hour;
unsigned int tcnt;
unsigned char mstcnt=0;
unsigned char ij;
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_7=P0^7;
sbit P3_0=P3^0;
sbit P3_4=P3^4;
void main(void)
{
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
hour=0;
P3_0=0;
P0_7=0;
while(1)
{
if(P0_0==0)
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P0_0==0)
{
second++;
if(second==60)
{
second=0;
}
dispbuf[0]=second%10;
dispbuf[1]=second/10;
while(P0_0==0);
}
}
if(P0_1==0)
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P0_1==0)
{
minute++;
if(minute==60)
{
minute=0;
}
dispbuf[3]=minute%10;
dispbuf[4]=minute/10;
while(P0_1==0);
}
}
if(P0_2==0)
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P0_2==0)
{
hour++;
if(hour==24)
{
hour=0;
}
dispbuf[6]=hour%10;
dispbuf[7]=hour/10;
while(P0_2==0);
}
}
}
}
void t0(void) interrupt 1 using 0
{
mstcnt++;
if(mstcnt==8)
{
mstcnt=0;
P3_0=1;
P2=dispcode[dispbuf[dispbitcnt]];
P3_0=0;
P1=dispbitcode[dispbitcnt];
dispbitcnt++;
if(dispbitcnt==8)
{
dispbitcnt=0;
}
}
tcnt++;
if(tcnt==4000)
{
tcnt=0;
second++;
if((second==54)&&(minute==59))
P3_4=0;
if(second==59)
P3_4=1;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
dispbuf[0]=second%10;
dispbuf[1]=second/10;
dispbuf[3]=minute%10;
dispbuf[4]=minute/10;
dispbuf[6]=hour%10;
dispbuf[7]=hour/10;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4833 2009-07-08 09:19 基于AT89s52数码管显示数字钟\474
文件 1634 2009-07-08 09:19 基于AT89s52数码管显示数字钟\474.hex
文件 40 2009-07-08 09:19 基于AT89s52数码管显示数字钟\474.lnp
文件 7434 2009-07-08 09:19 基于AT89s52数码管显示数字钟\474.M51
文件 1344 2009-10-06 17:06 基于AT89s52数码管显示数字钟\474.Opt
文件 182 2009-10-06 17:06 基于AT89s52数码管显示数字钟\474.plg
文件 2106 2009-07-08 09:20 基于AT89s52数码管显示数字钟\474.Uv2
....... 1343 2009-10-05 20:02 基于AT89s52数码管显示数字钟\474_Opt.Bak
文件 108683 2009-07-09 00:55 基于AT89s52数码管显示数字钟\Last Loaded 方案三---单片机数字钟.DBK
文件 3032 2009-07-08 09:20 基于AT89s52数码管显示数字钟\Text1.c
文件 6068 2009-07-08 09:19 基于AT89s52数码管显示数字钟\Text1.LST
文件 5715 2009-07-08 09:19 基于AT89s52数码管显示数字钟\Text1.OBJ
文件 108902 2009-10-06 17:06 基于AT89s52数码管显示数字钟\方案三---单片机数字钟.DSN
文件 742 2009-10-06 17:06 基于AT89s52数码管显示数字钟\方案三---单片机数字钟.PWI
目录 0 2009-10-06 17:06 基于AT89s52数码管显示数字钟
----------- --------- ---------- ----- ----
252058 15
相关资源
- STC8951系列单片机中方指南
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- 51单片机PWM程序,占空比、周期可调整
- 单片机和adc0809数字电压表
- PIC单片机完成的电子密码锁
- 单片机、ADC0808809设计简易数字电压表
- 51单片机多功能自行车测速仪
- 单片机做的6位时分秒数字钟
- 单片机电子时钟 闹钟 日历
- proteus仿真 AT89C51输出各种波形
- 音乐代码转换软件 单片机编程时用
- 单片机课程设计 篮球计分器
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 单片机与温度传感器DS18B20的程序设计
- 51单片机基于protues的几个仿真实例
- 基于52单片机的直流电压测量
- 38k单片机红外发送代码、keil
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 武汉理工大学 单片机课程设计 16*16点
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- proteus_24C08—有注释(proteus里面使用的
- 浙江工业大学2005-2006学年单片机习题
- 单片机与PC机串口通讯仿真
评论
共有 条评论