51单片机入门之四:静态数码管

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhenxing2000/article/details/50706016

本文旨在介绍单片机入门的基础知识,为初接触或即将接触单片的新手提供一个入门指导。本文章会陆续推出,隔几天一个章节。所使用单片机为ATMEL公司的AT89C52,软件为PROTEUSKEIL;只提供原理图和KEIL环境下的注释,希望对广大即将接触单片机的人有所帮助,如果有错误欢迎回帖指出与本人交流或加入QQ143586739. 微信公众号:micropoint8.

LED数码管是单片机外围接口设备中常用的显示设备,有七段管和米字管两种,实验室中常用的是七段管。其工作方式有两种:共阴极和共阳极。所谓共阴极是把LED的com端都接地,而共阳极就是把com端都接高电平。其驱动显示方式也有两种:静态显示和动态显示。

静态显示中每个数码管占用单片机的一个八位口I/O口,工作时点亮的段常亮。于该种方式而言,硬件电路简单,编程简单,但是浪费单片机的I/O口。下面简单演示一下该种驱动方式。

P2口接一个数码管,数码管显示的数字每秒钟自动加一,加到9后清0,一直循环,本实验中数码管采用共阴极接法。

实验原理图如下:


实验程序如下:

#include<reg52.h>
#define uchar unsigned char;
#define uint unsigned int;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极数码管数据表
uchar a,i,j,z;

void delay(z)   //延时子函数
{
   for(j=z;j>0;j--)
      for(i=110;i>0;i--);
}

void main()   //主函数
{
  while(1)
    {
for(a=0;a<10;a++)//从0到9,共10次循环   
     {
     P2=table[a];   //P2口从数据表中取数据
     delay(1000); //延时大约1s 
      }      
    }
}

试验结果如下:


更多电子知识请关注微信公众号:


猜你喜欢

转载自blog.csdn.net/zhenxing2000/article/details/50706016