概述
获取更多资源,请关注微信公众号:嵌入式基地
获取项目资源:公众号后台回复:单片机仿真
基于Proteus学习单片机系列(一)——点亮LED
基于Proteus学习单片机系列(二)——驱动数码管
基于Proteus学习单片机系列(三)——按键
基于Proteus学习单片机系列(四)——中断
基于Proteus学习单片机系列(五)——定时器实现电子表
基于Proteus学习单片机系列(六)——I2C总线AT24C04
基于Proteus学习单片机系列(七)——实时时钟DS1302
基于Proteus学习单片机系列(八)——AD转换及其应用--TLC549
基于Proteus学习单片机系列(九)——DA转换及其应用--TLC5615
基于Proteus学习单片机系列(十)——LCD1602
基于Proteus学习单片机系列(十一)——LCD12864
本文程序以及仿真下载
例程下载
1. 数码管显示原理
1.1 数码管结构原理
单片机系统常用的数码管有共阳和共阴两种。两种类型的数码管外形和结构类似,只是数码管内部组成数码段和标点的LED接法不同,两种极性的数码管内部电路结构见图3-3-1所示,其中(a)为数码管引脚排列。共阳型数码管的内部所有LED的正极接在一起为公共极引脚 COM,称为位选端,负极分别引出,依次命名为a、b、c、d、e、f、g、dot,称为段选端。
共阳型数码管使用时,其公共极接电源负极或加低电平电平,段选端分别接驱动电路,段选端加低电平时,对应的段发光二极管才亮。
共阴型数码管与共阳型数码管解法刚好相反,由于内部所有LED的负极接在一起,所以数码管显示时需要在数码管的公共端接电源正极或加高电平,段选高电平有效。
(a)
(b)
(c)
1.2 数码管的字型码
数码管可以显示0到9共十个数字,如果加上小数点的显示,驱动一个数码管显示的段选信号共需要8位数据。驱动数码管显示数字所需的8位段选数据编码见图1-2-1和1-2-2所示,其中图1-2-1为共阳型数码管数字编码,图1-2-2为共阴型编码。图中dot为高位,a为低位。在单片机系统中,一组I/O的输出(如P0)刚好可以作为数码管的段选信号。
(1-2-1)
(1-2-2)
1.3 数码管驱动原理
小尺寸数码管的每一段都是由1个LED组成,段驱动电流一般较小,如SM11050K型0.56英寸的数码管寸每段电流在5毫安左右即可点亮,其驱动与LED一样可以直接由单片机的I/O口驱动。利用P0口直接驱动共阳型数码管电路见图3-3-2所示,其中数码管的共阳极(位选端)接电源正极,段选端a~dot依次接P0.0~P0.7,R0~7是限流电阻,一般取几百欧姆。只要段选端出现有低电平,数码管对应的段就会亮,通过组合就可以形成一定的数字。例如,让数码管显示1,即让数码管b、c段亮,程序控制让P0输出0xbe十六进制编码即可,因此共阳数码管显示0~9十进制数字,需要把显示0~9的10个数字编码放在一个数组中,如seven_seg[10] = {0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80, 0x90}。
(单只数码管驱动)
2. Protuess 设计电路
3.程序设计
#include<reg51.h>
unsigned char code seven_seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90};//共阳数码管 0 - 9
unsigned char i = 0;
void delay(unsigned int x)//延时函数
{
while(x--);
}
void main()
{
while(1)
{
P0 = seven_seg[i];//显示数字
delay(50000);//延时
i++;
if(i>9)i = 0;
}
}
最后
以上就是贤惠哈密瓜为你收集整理的基于Proteus学习单片机系列(二)——驱动数码管的全部内容,希望文章能够帮你解决基于Proteus学习单片机系列(二)——驱动数码管所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复