后来,我通过其他一些方法来做点阵,发现用74HC595芯片来驱动点阵效果相当好,它是串入并出或者串入串出并带有锁存功能的TTL型的芯片,可与单片机直接相连,这个做出来的动态显示LED点阵就完全没问题了,可以按自己的想法做任何显示。
希望我的回答能帮助到你。
建议你用C编程。我有例程一份,C语言的,调试通过,不过是驱动数码管的,4*4矩阵键盘扫描,16个按键按下哪个数码管就显示相应的按键编号,稍微改一改就可以用在你那里。
#include <avr/io.h>
#include <avr/delay.h>
const int i[10]={0x3f,0x06,0x05b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}/*数码字模*/
char key_value=0 //键值全局变量
/*--------------------------------------------显示程序-----------------------------------------------*/
void display(int k)
{int b,d[4]={0,0,0,0}
d[3]=k%10
d[2]=k/10%10
d[1]=k/100%10
d[0]=k/1000
for(b=0b<4b++)
{PORTA=0x00
PORTB=i[d[b]]
PORTA|=(1<<b)
_delay_ms(2)
PORTA=0x00
}
}
/*--------------------------------------------扫描程序------------------------------------------------*/
char key_scan()
{
char i,j,key
DDRC=0X0F
PORTC=0XF0
if((PINC&0XF0)==0XF0)return key_value
else
{
_delay_ms(5)
if((PINC&0XF0)==0XF0)return key_value
else
{
for(i=0i<4i++)
{
PORTC=~(1<<i)|0XF0
for(j=4j<8j++)
{
if((PINC&(1<<j))==0)
key=i*4+j-3
}
}
return key
}
}
}
/*---------------------------------------------主程序--------------------------------------------------------*/
int main()
{
char a
DDRA=0XFF
DDRB=0XFF
while(1)
{
key_value=key_scan()
display(key_value)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)