在proteus中共阴数码管的驱动与使用

好,今天我们来讲解一下如何在使用数码管来显示自己想要显示的数。这里讲解共阴数码管,共阳数码管的原理跟共阴差不多,只是段码变一下以及位选码变了。

首先,这里用一个例子来介绍,要求如下:
Proteus 仿真要求:在最左边 2 位 LED 共阴极数码管显示变量 num 的十进制数

在这里插入图片描述
因为这里采用的是八位数码管,所以其有8根位选线,而段选线的话无论是几位数码管都是八根线,分别控制数码管八段,也就是大家熟知的七段数码管上的那七段加一个小数点。所以你需要用八个IO口去控制数码管的段选线,而用多少个IO口则取决于你要用到几个数码管了,这里八个全用上了,所以依然用八个IO口控制。可以从下图中看出!

到这里很多朋友会有疑问,这样不是很浪费IO口嘛,是的但是相对于动态扫描,静态显示你需要更多IO口,这里我们采用动态扫描,后面代码会讲解到什么是动态扫描及其使用。另外想减少IO口的占用,你可以用译码器来实现,这里不多说。
!!!这里注意P2(数码管从左向右分别与 P2.7-P2.0 相连),如果修改了,相应连接和代码需要修改。
电路图:
在这里插入图片描述

从电路图中我们可以看到这里我用P0口连接数码管的段选,用P2口控制数码管的位选。

这里我们采用动态扫描来实现两位数字的同时显示,因为这里51单片机不能同时去处理两个任务,所以它只能一个一个数字显示过来,但是我们可以利用人眼视觉暂留来快速显示轮流显示数字,这样人眼看过去就会感觉是同时在显示的,所以我们要先使数码管全熄灭然后再给P2口送位选码同时将段码选赋值给P0口,最后延时然后选中下一个数码管重复上述过程即可实现数码管的显示。

代码如下:

//Proteus 仿真要求:在最左边 2 位 LED 共阴极数码管显示变量 num 的十进制数
//P2(数码管从左向右分别与 P2.7-P2.0 相连)
#include<reg51.h>
#include<intrins.h>	  //左移函数

unsigned char dx,wx,n=88;
unsigned char data table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};	 //0-9的数组

void delay(unsigned char m)	   //延时函数
{
 unsigned char i;
 for(;m>0;m--)
 {
   for(i=112;i>0;i--) {;}
 }
}

void display()			//数码管显示函数
{
   //这里注意因为P2(数码管从左向右分别与 P2.7-P2.0 相连),所以P2=0xbf
   P2=0xff;
   P2=0xbf;
   P0=table[n%10];	   //取num的个位
   delay(5);
   P2=0xff;
   P2=0x7f;
   P0=table[n/10];	   //取num的十位
   delay(5);
}

void main()
{
 while(1)
 {
  display();	  //一直显示
 }
}


本人水平有限,上述信息仅供学习参考,如有错误和不妥之处,请多多指教。
另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞,谢谢~

  • 8
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OMGMac

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值