89C51数码管循环显示数字0~15,使用Proteus经行仿真。
需要材料:
数码管、AT89C51、最小系统电路、
代码如下:
//-----------------------------------------------------------------------------------
//程序名: SMG7-4
//程序功能:P0端口输出,一位数码管循环显示0~15
//-----------------------------------------------------------------------------------
#include <reg51.h>
//定义位操作
sbit ls1=P2^0; //个位公共极
#define Out P0 //定义数据输出端口
void delay10ms(unsigned int count);
unsigned char i=0;
//共阳数码管数字显示表
unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
// 对应显示 0 1 2 3 4 5 6 7 8 9 A B C D E F
//----------------------------------- 主函数 ----------------------------------
main()
{
ls1=1; //个位共阳极数码管供电
while(1) //无限循环
{
Out=tab[i]; //输出
i=(i+1)%16; //i加1,指向表中下一个码
delay10ms(300); //调用延时函数
}
}
//------------------------------------ 延时函数 ----------------------------------
void delay10ms(unsigned int count) //总延时时间为10ms*count
{
unsigned int i,j,k;
for(i=0; i<count; i++)
for(j=0; j<10; j++)
for(k=0; k<120; k++);
}
//-------------------------------------------------------------------------------------