#include "reg51.h" //包含頭文件
typedef unsigned char u8; //定義無符號字符型變量為u8
typedef unsigned int u16; //定義無符號整型變量為u16
sbit lsa=P2^2;
sbit lsb=P2^3;
sbit lsc=P2^4; //74HC138譯碼器,進行管腳定義
u16 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//定義段選數組
u8 disp[8]={9,2,1,1,8,9,9,1}; //顯示數字數組
void delay(u16 i) //定義延時函數
{
while(i--);
}
void digdisplay() //數碼管顯示函數
{
u8 i;
for(i=0;i<8;i++)
{
switch(i) //選通位選地址
{
case(0):
lsc=0;lsb=0;lsa=0;break; //第1位
case(1):
lsc=0;lsb=0;lsa=1;break; //第2位
case(2):
lsc=0;lsb=1;lsa=0;break; //第3位
case(3):
lsc=0;lsb=1;lsa=1;break; //第4位
case(4):
lsc=1;lsb=0;lsa=0;break; //第5位
case(5):
lsc=1;lsb=0;lsa=1;break; //第6位
case(6):
lsc=1;lsb=1;lsa=0;break; //第7位
case(7):
lsc=1;lsb=1;lsa=1;break; //第8位
}
P0=smgduan[disp[i]]; //將所要傳輸的數字放入段選數組,確定其所對應應點亮的數碼管,再將值送入P0
delay(100);
P0=0x00; //消隱
}
}
void main() //主函數
{
while(1)
{ //讓程序無限循環
digdisplay(); //調用顯示函數
}
}
|