第二篇:数码管基础 静态显示

数码管仿真 及静态驱动

数码管原理

是最常见的显示器件,其内部是8个led,按照连接方法分共阳和共阴两种。共阳的com端接正电,信号端接低电平亮;共阴的com端接GND,信号端接高电平亮。 资料请自行百度。

仿真模型

新建proteus空工程,在主窗口区域点右键,选 放置-原件-从库 如图在左上第一个框里输入7seg 回车,在右面找 7seg-mpx1-ca。ca是共阳,cc是共阴。 搭电路如下验证。 电源和接地符号在主窗口左侧竖立的工具条,从上往下数第八个,点击后其右侧出现power、Gnd 等端子,点击并放置到电路图即可,连线简单,自己尝试即可。

数码管的静态驱动电路

单片机驱动数码管,一般都选共阳数码管,原因在于单片机芯片吸收(灌入)电流比较容易,输出电流比较困难,会导致发热增大。

现在看起来只需要把数码管的8个信号端代替连接上节课的8个独立led即可。请自行复制粘贴 刚才画的数码管到上节课电路实验。(先留备份,再修改) 修改后电路如图。运行程序,会发现有显示,但是不是你预想的数字。 注意----电路仿真没有问题,但如果要实际稳定使用,需要给数码管每一位信号上串入270欧姆电阻,用来限制流过led的电流。具体计算书上有,自己看看。

修改程序,显示数码。

原程序第20行

unsigned char code led1[] ={
          
    0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};	//试试看,把0x后面的值 改成其它--16进制数--有什么效果。

改成

unsigned char code led1[] ={
          
    0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};	//试试看,把0x后面的值 改成其它--16进制数--有什么效果。

第48行改成

for (time=0;time<16;time++)		//for循环什么意思

运行看看,数码管已经可以显示0–f ,一位十六进制数了。

思考:码表的每一个数字是怎么来的? 看书、百度、bing……搞明白。

经验分享 程序员 微信小程序 职场和发展