/****** 在 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);
}
}
}
|