74LS164级联控制5个数码管静态显示

74LS164级联控制5个数码管静态显示
仿真图:
74LS164级联控制5个数码管静态显示

74LS164级联控制5个数码管静态显示

源程序:
#include <reg52.h>
#include “MacroAndConst.h”
uint8 LEDBuffer[5]={0}; //显示缓冲区
//code uint8 tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};    //共阴极
code uint8 tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xbf}; //共阳极
sbit LED_DAT=P1^6;
sbit LED_CLKE=P1^5;
void bit_dat(bit i)                //向数码管写一个位
{
LED_CLKE=0;
LED_DAT=i;
LED_CLKE=1;
}
void uint_dat(uint8 i)                //向数码管写一个字母,8位
{
LED_CLKE=0;
bit_dat((bit)(tab[i]&0x80));
bit_dat((bit)(tab[i]&0x40));
bit_dat((bit)(tab[i]&0x20));
bit_dat((bit)(tab[i]&0x10));
bit_dat((bit)(tab[i]&0x08));
bit_dat((bit)(tab[i]&0x04));
bit_dat((bit)(tab[i]&0x02));
bit_dat((bit)(tab[i]&0x01));
LED_CLKE=0;
}
void uchar_dat()                //把缓存区的5个字符输入到5个数码管中
{
int j;
for(j=0;j<5;j++)
{
uint_dat(LEDBuffer[j]);
}
}
void main()
{
int i;
for(i=0;i<5;i++)
{
LEDBuffer[i]=i;
}
uchar_dat();
while(1);
}

您可能还喜欢...

8 条回复

  1. 纪 小年说道:

    test

  2. PY说道:

    我借鉴了一下你的程序,我用的两位单位共阳数码管,为什么只显示一个那,另一个不亮

  3. kangzj说道:

    好亲切,其实我也是电子系出身的,呵呵
    .-= kangzj发表了新的文章 ..CentOS中用dropbear替换OpenSSH =-.

  4. 我的国说道:

    饿 这个头晕

  5. whitmine说道:

    不管水不水,不管能不能看得懂,总之你更新了,还是两篇连一块的~

  6. 猫哥说道:

    呃,单片机编程?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据