如何利用单片机让4位数码管显示?

如何利用单片机让4位数码管显示?,第1张

程序如下(用的是STC89C52芯片):

#include<reg52.h>//52系列单片机头文件

#define uchar unsigned char

#define uint unsigned int

uint x,y

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71}//共阴极数码管编码

void display(uchar,uchar,uchar,uchar)//声明子函数

void delay(int)//声明子函数

void main()

{

while(1)

{

display(1,2,3,4)//主程序始终调用数码管显示子程序

}

}

void display(uchar a,uchar b,uchar c,uchar d)

{

P2=0xef\t

P0=table[a]//给第一个数码管送"a"

delay(1)//延时1ms

P2=0xdf

P0=table[b]//给第二个数码管送"b"

delay(1)//延时1ms

P2=0xbf

P0=table[c]//给第三个数码管送"c"

delay(1)//延时1ms

P2=0x7f

P0=table[d]//给第三个数码管送"d"

delay(1)//延时1ms

}

void delay(uint z)//延时子函数

{

uint x,y

for(x=zx>0x--)

for(y=110y>0y--)

}

扩展资料

led数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。

位数有半位,1,2,3,4,5,6,8,10位等等,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。

参考资料来源:百度百科-数码管

不清楚你的电路构成如何,因此先按下面的假设执行段码及位码的输出;

其中,延时值可根据实验效果予以调整;

设 P0 为输出七段码(共阳极数据);

四位数码管有4个阳极,设位码分别与P2.4--P2.7对应,并且=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

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7849576.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存