使用两个分立式数码管分别连接在P0和P2端口上,实现数字从00-99的循环显示。
与上篇文章一样先查询一下共阴极与共阳极数码管数字0到9的数码表:
//共阴极数码管0-9的数码表。
code int SEG_CODE1[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
//共阳极数码管0-9的数码表
code int SEG_CODE2[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
接下来在Keil C51的编程环境中编写代码:
//实验名称:共阳极数码管与共阴极数码管联合使用来循环显示数字00-99。
#include <reg51.h>
/**软件延时**/
void delay(unsigned int uMs)
{
unsigned int i, j;
for(i = 0; i < uMs; i++)
{
for(j = 0; j < 500; j++);
}
}
//共阴极数码管0-9的数码表。
code int SEG_CODE1[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
//共阳极数码管0-9的数码表
code int SEG_CODE2[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
//主程序:
main()
{
int i;
int j;
while(1)
{
for(i = 0; i < 10; i++)
{
P0 = SEG_CODE1[i]; //发送数码管的数码;P0口当做循环显示数字的十位。
for(j = 0; j < 10; j++)
{
P2 = SEG_CODE2[j]; //发送数码管的数码;P2口当做循环显示数字的个位。
delay(200); //延时:数字显示的时间间隔。
}
delay(50); //延时:数字显示的时间间隔。
}
}
}
接下来在Proteus中构建仿真电路图:
构建好仿真电路图后,导入之前编译好的Keil C51的hex文件到单片机中,运行电路查看实验结果。