#include <REGX51.H>
#define SEG P0
sbit LEDA=P2^2;
sbit LEDB=P2^3;
sbit LEDC=P2^4;
#define uchar unsigned char
#define uint unsigned int
uchar SMGduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(uint ms);
void display(uchar Location,Number);
void main()
{
TMOD=0x01;
while(1)
{
display(1,2); //第一個數碼管顯示2
display(2,0);
display(3,0);
display(4,5);
display(5,0);
display(6,1);
display(7,0);
display(8,4);
}
}
void delay(uint ms)
{
uint n;
for(n=0;n<ms;n++)
{
TH0=(65536-1000)/256; //1ms
TL0=(65536-1000)%256;
TR0=1;
while(!TF0);
TF0=0;
}
}
void display(uchar Location,Number)
{
{
switch(Location)
{
case(1):LEDA=1;LEDB=1;LEDC=1;break; //LED8第1個數碼管顯示2 C>B>A 000 取反
case(2):LEDA=0;LEDB=1;LEDC=1;break; //LED7第2個數碼管顯示0 C>B>A 001
case(3):LEDA=1;LEDB=0;LEDC=1;break; //LED6第3個數碼管顯示0 C>B>A 010
case(4):LEDA=0;LEDB=0;LEDC=1;break; //LED5第4個數碼管顯示5 C>B>A 011
case(5):LEDA=1;LEDB=1;LEDC=0;break; //LED4第5個數碼管顯示0 C>B>A 100
case(6):LEDA=0;LEDB=1;LEDC=0;break; //LED3第6個數碼管顯示1 C>B>A 101
case(7):LEDA=1;LEDB=0;LEDC=0;break; //LED2第7個數碼管顯示0 C>B>A 110
case(8):LEDA=0;LEDB=0;LEDC=0;break; //LED1第8個數碼管顯示4 C>B>A 111
}
}
SEG=SMGduan[Number]; //20050104
delay(1);
SEG=0x00; //數碼管消隱
}
|