#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(); //调用显示函数
}
}
|