找回密码
 立即注册

QQ登录

只需一步,快速开始

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

数码管_动态扫描

[复制链接]
跳转到指定楼层
楼主
ID:1 发表于 2010-1-2 18:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/************************************************
跳线设置:双排针除PSEN外全部插上
显示效果:  在开发板的四位八段共阴数码管上显示0-7
相关知识点:1.数码管的驱动显示方式
            2.利用2个74HC573芯片将P0口分时复用输出
注意:在做本实验之前先要弄懂74hc573的原理
************************************************/
#include"AT89x52.h"
#include"intrins.h"
#include"51hei.h"
        
#define uint unsigned int
#define uchar unsigned char

sbit DUAN=P2^6;     //74HC573的LE端  U1  LED数码管的段选端
sbit WEI=P2^7;      //74HC573的LE端  U2  LED数码管的位选端
uchar Temp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //共阴显示字库

void delay(uint z)              //1ms延时
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

main()
{
        uchar i,y;
        uchar temp=0xfe;      //化为2进制为11111110,供动态扫描移位用
        guandz();             //关掉8*8点阵的显示

        WEI=0;
        DUAN=0;

        while(1)
        {
                for(i=0;i<8;i++)
                {  
           //----动态扫描分3个步骤,以后板子上用动态显示的地方都可以套用此程序-----------------
                   //-----步骤一:送位码---------------------------------------------------
            P0=temp;     //位选送p0,其实在任一个时刻八个数码管中只有一个是亮的,因为temp始终只有一个位为0.  
                         //但是我们看到的是连续的,我们的眼睛欺骗了自己,原因是由于交替的速度非常快,视觉暂留
                        WEI=1;       //让第2个74hc573处于直通状态,这样就把P0口上的位码到数码管了.
                        WEI=0;       //锁存,保持第2个74hc573输出的位码不变,即不受P0输入的影响.
                    
             //-----步骤二:送段码-------------------------------------------------
            P0=Temp[ i];  //段码送入P0口
                        DUAN=1;      //让第一个74hc573处于直通状态,这时刚送P0口的段码将被送到数码管上了,因为之前输入了位码,所以现在某一个数码管将会被点亮   
                        DUAN=0;      //锁存,让段码维持在第一个74hc573的输出上不变,不受P0输入的影响.
        delay(1);            //把数码管点亮1毫秒, 如果改为delay(60); 你将看到动态扫描的慢镜头,让你彻底的理解动态扫描
        temp=_crol_(temp,1); //移位,让下一个数码管亮

             //-----步骤三:消隐---------------------------------------------------
                    P0=0x00;    //00送p0口
                        DUAN=1;     //把p0口上的00H送到负责段选的74hc573上,其实就是灭掉所有数码管的显示                 
                        DUAN=0;     //锁存,维持第一个74hc573的输出不变
          delay(2); //熄灭的时间长短,可调整亮度
                }
        }
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:20672 发表于 2010-1-2 22:23 | 只看该作者

好东西 ,我顶

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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