/****** 在 2、0、1、9 的排列上,先显示2、再1、再0、最后9 ******/
/******所用单片机STC12C4052AD******/
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar k1,j1;
uchar code bit_tab[]={0x01,0x02,0x04,0x08}; //四位数码管位选表
uchar code seg_data[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //数码管显示码
uchar disp_buf[]={2,0,1,9,}; //定义显示,并赋值“2019”
/******延时函数*******/
void Delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
/******主函数******/
void main()
{
uint i;
P1 = 0xff;
P3 = 0xff;
while(1)
{
for(i=0;i<80;i++) // 此段显示的时间
{ //
P1 = seg_data[2]; //
P3 = bit_tab[0]; //
Delay(10); //
P3 = 0x00; //
P1 = 0xff;
Delay(2); //
} // 此段显示2
for(i=0;i<40;i++) ///
{ //
P1 = seg_data[2]; ///
P3 = bit_tab[0]; ///
Delay(10); //
P3 = 0x00; //
P1 = 0xff; //
Delay(2); //
P1 = seg_data[0]; //
P3 = bit_tab[1]; //
Delay(10); //
P3 = 0x00; //
P1 = 0xff; //
Delay(2); // 此段显示0 下同 就不标注了
}
for(i=0;i<20;i++)
{
P1 = seg_data[2];
P3 = bit_tab[0];
Delay(10);
P3 = 0x00;
P1 = 0xff;
Delay(2);
P1 = seg_data[0];
P3 = bit_tab[1];
Delay(10);
P3 = 0x00;
P1 = 0xff;
Delay(2);
P1 = seg_data[1];
P3 = bit_tab[2];
Delay(10);
P3 = 0x00;
P1 = 0xff;
Delay(2);
}
while(1)
{
P1 = seg_data[2];
P3 = bit_tab[0];
Delay(10);
P3 = 0x00;
P1 = 0xff;
Delay(2);
P1 = seg_data[0];
P3 = bit_tab[1];
Delay(10);
P3 = 0x00;
P1 = 0xff;
Delay(2);
P1 = seg_data[1];
P3 = bit_tab[2];
Delay(10);
P3 = 0x00;
P1 = 0xff;
Delay(2);
P1 = seg_data[9];
P3 = bit_tab[3];
Delay(10);
P3 = 0x00;
P1 = 0xff;
Delay(2);
}
}
}
|