📄 time6.c
字号:
/*********************************************************************/
//
// 采用8位LED动态扫描时钟演示程序
// cdz 2009.4.4
/*********************************************************************/
//使用12MHZ晶振,P0口输出段码,P2口作列扫描,用共阳LED数码管
//
#include <reg51.h>
code char dis_7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
/* 共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" */
code char scan_con[6]={0x04,0x08,0x10,0x20,0x40,0x80}; // 列扫描控制字
data char disdata[6]={0x00,0x00,0x00,0x00,0x00,0x00};//计时单元数据初值,共6个
data char dis[6]={0x00,0x00,0x00,0x00,0x00,0x00};//显示单元数据,共6个数据
data char con1s=0x00; //1秒定时用
/****************/
//1毫秒延时程序//
/***************/
delay1ms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++) ;
}
/***********/
//扫描程序//
/**********/
scan()
{
char k;
for(k=0;k<6;k++)
{
P2=scan_con[k];P0=dis_7[dis[k]];delay1ms(1);P2=0x00;
}
}
/*************/
//初始化程序//
/*************/
clearmen()
{
int i;
for(i=0;i<6;i++)
{
dis[i]=disdata[i];}
TH0=0x3C;TL0=0xB0;// ;50MS定时初值(T0计时用)
TMOD=0x01;ET0=1;TR0=1;EA=1;
}
/**********/
//主程序//
/*********/
main()
{
clearmen();
while(1)
{
scan();
}
}
/********************/
//1秒中断处理程序 //
/*******************/
void time_intt0(void) interrupt 1
{
TH0=0x3C;TL0=0xB0;
con1s++;
if(con1s==20)
{
con1s=0x00;
disdata[0]++;
if(disdata[0]>=10)
{
disdata[0]=0;disdata[1]++;
if(disdata[1]>=6)
{
disdata[1]=0;disdata[2]++;
if(disdata[2]>=10)
{
disdata[2]=0;disdata[3]++;
if(disdata[3]>=6)
{
disdata[3]=0;disdata[4]++;
if(disdata[4]>=10)
{
disdata[4]=0;disdata[5]++;
}
if(disdata[5]==2 )
{
if(disdata[4]==4)
{
disdata[4]=0;disdata[5]=0;
}
}
}
}
}
}
dis[0]=disdata[0];dis[1]=disdata[1];dis[2]=disdata[2];
dis[3]=disdata[3];dis[4]=disdata[4];dis[5]=disdata[5];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -