
不清楚你的电路构成如何,因此先按下面的假设执行段码及位码的输出;
其中,延时值可根据实验效果予以调整;
设 P0 为输出七段码(共阳极数据);
四位数码管有4个阳极,设位码分别与P24--P27对应,并且=1时表示可点亮数码管;
sbit wma1=b2^4; //对应左起第1个数码管的阳极
sbit wma2=b2^5; //对应左起第2个数码管的阳极
sbit wma3=b2^6;
sbit wma4=b2^7;
void main()
{
wma1=0; wma2=0; wma3=0; wma4=0;
while(1)
{
P0=table[0]; wma1=1; delay(10); wma1=0;
P0=table[1]; wma1=2; delay(10); wma2=0; P0=table[2]; wma1=3; delay(10); wma3=0; P0=table[3]; wma1=4; delay(10); wma4=0; P0=table[4]; wma1=1; delay(10); wma1=0; P0=table[5]; wma1=2; delay(10); wma2=0; P0=table[6]; wma1=3; delay(10); wma3=0; P0=table[7]; wma1=4; delay(10); wma4=0;
}
}
可以通过代码优化的方式来简化代码。
一、设置延时函数
延时函数在单片机中有着让现实延时的能力,本程序中可以通过采用for循环方式进行延时,具体代码如下:
void delay()
{
uinti,j;
for(i=100;i>0;i--)
for(j=1000;j>0;j--);
}
二、设置数码管显示数组
数组定义简单,而且访问很方便。所有元素类型相同,在数码管显示程序中可以让程序代码减少。数组代码如下:
chara[10]={0xff,0x3,0x9f,0x25,0xd,0x99,0x49,0x41,0x1f,0x1,0x9};
三、设置数码管显示循环
数码管显示循环可以不用编写一次又一次的数码管显示代码,既方便又简洁。具体代码如下:
for(int i=0;i<10;i++)
{
P0=a[i];
delay();
}
扩展资料
单片机程序进行简化可以查看是否有反复出现的代码序列,整合成循环进行更改。同一类型且用法相同的变量可以整合成数组,方便对各个内容进行访问。有特定功能的代码段可以定义一个函数进行访问。
注意:用C51语言编辑的单片机程序与普通C语言不同,C51语言中的数据类型和标准c中的数据类型不同。
以上就是关于51单片机四位一体共阳极数码管显示编程全部的内容,包括:51单片机四位一体共阳极数码管显示编程、51单片机 让数码管自动显示0至9的C程序。有没有比这个更简单的、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)