1,目标
使用51单片机控制8位数码管,分别滚动显示单个数字0~7,程序运行之后,单片机先控制最左边的第一位数码管显示0,其他的熄灭,延时一段时间之后,控制左边第二个数码管显示1,其它熄灭,以此类推,反复循环上述过程。
2,设计方式
使用P0输出段码,P2输出位码,因为单片机的电流不足以点亮数码管,因此,我们可以通过使用由8个NPN型三极管组成的位驱动电路来对数码管进行位驱动和位控制扫描,话不多说,上程序
3,代码如下
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};//共阳数码管段码表 01234567
//0xf8,0x82,0x92,0x99,0xb0,0xa4,0xf9,0xc0 7~0
void delay(uint t) //延时子函数
{
uchar i;
while(t--) for(i=0;i<200;i++);
}
void main()
{
uchar i,j=0x80;//10000000
while(1)
{
for(i=0;i<8;i++)
{
j=_crol_(j,1); //_crol_(j,1)——将j循环左移1位
P0=dis_code[i]; //P0口输出段码
P2=j; //P2口输出位控码
delay(200);
P0=0x00;
}
}
}
4,仿真图如下
5,小结文章来源:https://www.toymoban.com/news/detail-534044.html
由于数码管的余晖和人眼的“视觉暂留”,只要控制好数码管的显示时间并减小延时时间,即可实现8位数码管“同时点亮”的效果。文章来源地址https://www.toymoban.com/news/detail-534044.html
到了这里,关于三、51单片机 使用Proteus仿真实现8位数码管滚动显示(仿真及代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!