c51单片机编程 led点阵

来源:百度知道 编辑:UC知道 时间:2024/07/04 19:06:25
做了个16*32的点阵屏,16个行分别用npn接到单片机的p0和p2口,32个列用了四个74hc595级联,从右边的74hc595输入信号(接p1 ^0口),然后级联;4个移位时钟输入端连一起接单片机的p1^1口;4个锁存时钟连一块接p1^2口;4个主复位连一起接p1^3口;4个使能端接地。请高手指点一下这程序为什么输出乱码,也可提供更好的程序c51语言的 谢了
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit dd=P1^0;//74hc595信号输入
sbit ss=P1^1;//74hc595移位时钟控制
sbit rr=P1^2;//74hc595锁存控制输入
sbit ms=P1^3;//74hc595主复位

uchar code h1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//行选择码p0口输出
uchar code h2[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//行选择码p2口输出
uchar code zk[][32]={/*-- 文字: 自 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xFE,0xFF,0xFE,0x7F,0xFD,0xFF,0xE0,0x07,0xEF,0xF7,0xEF,0xF7,0xE0,0x07,0xEF,0xF7,
0xEF,0xF7,0xEF,0xF7,0xE0,0x07,0xEF,0xF7,0xEF,0xF7,0xEF,0xF7,0xE0,0x07,0xEF,0xF7,

/*-- 文字: 强 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xFF,0

程序和具体电路结合起来才能看出问题,有一个办法可以不用具体研究代码和电路:把你调试用的汉字点阵全部改为0XFF,看是否该汉字所在位置是否全部显示,然后把第一个字节改为0X00或0XEF,看对应显示是否正确,也可以再改其他字节的点阵。用这种方法可以找出问题所在!

第7-15行是汉字的下半部分,据此查看一下程序和电路。