基于Proteus学习单片机系列(二)——驱动数码管

本文程序以及仿真下载

例程下载

   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;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_39020934/article/details/80013531