📄 两个数码管变化.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[2]={0x02,0x01}; // 列扫描控制字
data char disdata[2]={0x00,0x00};//计时单元数据初值,共2个
data char dis[2]={0x00,0x00};//显示单元数据,共2个数据
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<2;k++)
{
P2=scan_con[k];P0=dis_7[dis[k]];delay1ms(1);P2=0x00;
}
}
/*************/
//初始化程序//
/*************/
clearmen()
{
int i;
for(i=0;i<2;i++)
{
dis[i]=disdata[i];}
TH0=0x3C;TL0=0xB0;// ;50MS定时初值(T0计时用)
TMOD=0X01;ET0=1;TR0=1;EA=1;//
}
/**********/
//主程序//
/*********/
main()
{
TMOD=0x01;
EA=1;
TH0=0x3C;
TL0=0xB0;
TR0=1;
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; }
}
dis[0]=disdata[0];dis[1]=disdata[1];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -