单片机C51 LED点阵显示驱动程序设计

单片机C51 LED点阵显示驱动程序设计,第1张

点阵原理就是一个LED的两端都接IO,当正极为1,负极为0时点亮相应的LED。

下面是8×8的LED点阵程序,参考一下吧

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

uchar code TAB[]={

0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,

0x00,0x82,0xFE,0x82,0x80,0xC0,0x00,0x00,

0x00,0x7C,0x82,0x82,0x82,0x7C,0x00,0x00,

0x02,0x0E,0x72,0x80,0x70,0x0E,0x02,0x00,

0x00,0x82,0xFE,0x92,0xBA,0x82,0xC6,0x00,

0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00

}

/*delay(uint t)

{

uint a,b

for(a=0a<ta++)

for(b=0b<110b++)

} */

void main(void)

{

uint i,j,xx

uchar bittemp=0x01

while(1)

{

for(i=0i<40i++)

{

for(xx=0xx<500xx++)

{

bittemp=0x80

for(j=0j<8j++)

{

P2=0x00 //消隐

P0= ~TAB[i+8-j]

P2 = bittemp

bittemp >>= 1

}

}

}

}

}

这还不简单!看大神帮你解答。

/****显示函数****/

void display(void)

{

unsigned char i

count=0x00

gate=1

for(i=1i<=31i+=2)

{

send8bit(i+32)//由于使用移位寄存74hc595,先发送一列的下半部

send8bit(i-1+32) //后发送一列的上半部分,第2个字

send8bit(i) //由于使用移位寄存74hc595,先发送一列的下半部分

send8bit(i-1) //后发送一列的上半部分,第1个字。

so=0

so=1 //产生上升沿锁存信号

lie() //一个字的上半部分和下半部分发送完毕点燃该列。

delay() //调用延时子程序

gate=1 //关列显示

}

}

/**机内码发送子程序**/

void send8bit(unsigned int n)

{

for(q=0q<8q++)

{

dat=!((_cror_(disbuf[n],q))&0x01)//右移(7-q)位,从低位到高位取。即595发送,

clock=0

clock=1 //寄存器时钟上跳沿,将一位数据存入移位寄存器。

}

}

/***列扫描***/

void lie(void)

{

gate=0 //允许列选择

P1=count

count++

if(count==16)

{

count=0

count++

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11347821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存