找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2917|回复: 0
打印 上一主题 下一主题
收起左侧

单片机数码管的动态显示,带讲解

[复制链接]
跳转到指定楼层
楼主
ID:59284 发表于 2014-2-26 19:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51开发板上的数码管是共阳极 ,
两个锁存器的锁存端分别和单片机的 P2.6,P2.7 相连。
其中: U1(段选)的数据输入端接到单片机的P0口;
            U2(位选)的数据输入端接到单片机的P2口;

动态显示的过程是:
第一个数码管显示0,延迟一会,第二个显示1,延迟一会,依次。。。 利用发光二极管的余晖和人眼视觉暂留效应,使人感觉数码管的各位都在显示,其实是,数码管是一位一位的轮流显示,人眼没办法分辨出来。
注意:加消影语句。

动态显示的程序:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table1[]=
{0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x90,0x88};
uchar code table2[]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

sbit wela=P2^7;
sbit dula=P2^6;
uint n,m;
void delay ()
{ uint i,j;
    for(i=0;i<5;i++)
   for(j=0;j<100;j++);

}
void main()
{
  while(1)
{
   wela=1;
P2=0XFF;  //  消影
P2=table2[n];
wela=0;
n++;  if(n==7) n=0;
  dula=1;
            P0=0XFF;  
P0=table1[m];
dula=0;
    delay();   
        m++; if(m==7) m=0;

     }
  }

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表