#include <reg52.h>
#include <intrins.h>
void display(unsigned char* lp,unsigned char lc);//数字的显示函数,lp为指向数组的地址,lc为显示的个数
void displaystr(unsigned char*lp,unsigned char lc);//数字的显示函数,同上
void delay();//延时子函数,5个空指令
code unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00}; //共阴顺序小数点暗(0-9),--,全灭
unsigned char l_tmpdate[8]={0,1,2,3,4,5,6,7}; //定义数组变量,并赋值0,1,2,3,4,5,6,7,就是本程序要显示的八个数
code unsigned char l_24C02[5]={0x5b,0x66,0x39,0x3f,0x5b}; //定义数组常量
void main(void)
{
unsigned char i=0;
while(1)
{
display(l_tmpdate,8);//用数字显示函数显示八个数字
displaystr(l_24C02,5);//或者用这个函数显示5个字符
}
}
void display(unsigned char* lp,unsigned char lc) //显示
{
unsigned char i;
P2=0; //端口2为输出
P1=P1&0xF8; //将P1口的前3位输出0,对应74LS138译门输入脚,全0为第一位数码管
for(i=0;i<lc;i++)
{
P2=table[lp
];
delay();
if(i==7);//检测显示完8位否,完成直接退出,不让P1口再加1,否则进位影响到第四位数据
break;
P2=0; //清零端口,准备显示下位
P1++; //下一位数码管
}
}
void displaystr(unsigned char*lp,unsigned char lc) //显示
{
unsigned char i;
P2=0;
P1=P1&0xF8;
for(i=0;i<lc;i++)
{
P2=lp; //直接输出显示设定好的数值到数码段
delay();
if(i==7);
break;
P2=0; //清零端口,准备显示下位
P1++; //下一位数码管
}
}
void delay(void) //空5个指令
{
_nop_();_nop_();_nop_();_nop_();_nop_();
}
一周热门 更多>