问答对人有帮助,内容完整,我也想知道答案
0
` 相信很多朋友都喜欢LED点阵屏吧,可是对于初学者而言,可能点阵的驱动会有点困难。现在就此讲解一下点阵的驱动方法。上几个图看看我做的点阵的效果吧。首先上个单色点阵的吧,
,这个有原理图,那么就给大家看看原理图吧,
这个是595芯片,串入并出,作为列输出,注意这个芯片有锁存输出,也就是说只有锁存脚有脉冲信号时输出才会改变,再看看行输出,就是控制选通每一行的,
,这个芯片和595主要的区别是没有锁存输出,为什么行不要锁存输出呢?因为每次选通一行,每来一个时钟信号改变一行,若行为低电平有效,164上电默认输出为1,则先移入一个0进去,然后一直移入1,直到16行移完,再循环,这里没来一个时钟输出都会变一下,而如果列输出也这样的话,列数据是经过16次的变化才得到最终的正确数据,而不是一次得到一个正确数据。然后继续下一个啊,这个是双色点阵
,这个其实是红色、绿色、红绿结合(橙色),这个我没原理图,但是这些都可以做,现在要自己分析了,不要原理图!对于大部分点阵都是逐行扫描的,行扫描一般都是A、B、C、D四根线组成的,再经过译码形成16根行选通信号线,再加上列数据输入线、列时钟线、列锁存线基本就没什么线了,再加个OE吧,这个用来控制亮度的,红、绿各有自己的数据线,但其他线都是公用的,先查查里面用的芯片,再先选通一行,再写入一个字节数据,看显示出来的和你的数据是怎么样的。下面展示一下彩色点阵,有三原色的,RGB,扫描方式是分上下两屏同时16行扫描,数据断独立,控制端共用,无原理图
像这样的屏幕一般都有ABCD的,前面说了这个是行扫描,16行的,然后LAT(列锁存),CLK(时钟),每种颜色有独立的数据输入。先讲到这里吧,上传几个程序供大家参考,不是通用的啊,根据原理图更改相应程序。有兴趣的朋友可以交流交流啊。`
参考程序.rar
(13.45 KB, 下载次数: 1201
)
fft.zip
(1.73 KB, 下载次数:
)
26
评分
参与人数 1积分 +20
收起
理由
dongyumin
+ 20
资源分享达人,加分鼓励!
查看全部评分
2013-7-17 16:40:54
评论
淘帖0
邀请回答
您可以邀请以下用户,快速回答问题
×
谢新貌
该类别下有 43 个回答。
邀请回答
新星之火12138
该类别下有 39 个回答。
邀请回答
911119qianhao
该类别下有 35 个回答。
邀请回答
hgimtk
该类别下有 35 个回答。
邀请回答
wang21cj
该类别下有 32 个回答。
邀请回答
独孤辉二
该类别下有 27 个回答。
邀请回答
wuli北
该类别下有 26 个回答,其中被选为最佳答案 1 次。
邀请回答
hy381
该类别下有 25 个回答。
邀请回答
butterflydw
该类别下有 24 个回答。
邀请回答
hisysteeoke
该类别下有 24 个回答。
邀请回答
名士流
该类别下有 24 个回答。
邀请回答
周鹏生
该类别下有 24 个回答。
邀请回答
牛牛爱吃草
该类别下有 24 个回答。
邀请回答
horayte
该类别下有 24 个回答,其中被选为最佳答案 1 次。
邀请回答
修罗君
该类别下有 24 个回答,其中被选为最佳答案 1 次。
邀请回答
a732538
该类别下有 23 个回答。
邀请回答
大洼球王
该类别下有 23 个回答。
邀请回答
蔡甸一角
该类别下有 23 个回答。
邀请回答
32949523596693
该类别下有 23 个回答。
邀请回答
ggfx
该类别下有 23 个回答,其中被选为最佳答案 1 次。
邀请回答
举报
嵌入式linux工程
相关推荐
• 如何用595芯片来驱动LED点阵呢
2897
• 什么是LED点阵?
1620
• led点阵屏08接口能否用51单片机驱动?
568
• 怎么实现基于FPGA的LED点阵显示字符设计?
1313
• LED点阵模块怎么封装 ?
2417
• 有关自己接LED点阵的问题
5600
• LED点阵显示控制系统结构及工作原理是什么
2840
• LED点阵显示屏
4729
• 求做LED点阵书写屏的资料
3267
• 怎样去设计16×16LED汉字点阵滚动显示屏?
4163
提交评论
143个回答
答案对人有帮助,有参考价值
0
不错
。。。。。。。。。。。
2013-7-17 18:23:56
评论
举报
shofay
提交评论
答案对人有帮助,有参考价值
0
自己顶一下,里面有错别字,没来一个时钟改为每来一个时钟,后面的点阵不要原理图都可以驱动起来的
2013-7-17 20:00:45
评论
举报
嵌入式linux工程
提交评论
答案对人有帮助,有参考价值
0
能讲的更加简单点不!
2013-7-17 21:17:48
评论
举报
shujian200148
提交评论
答案对人有帮助,有参考价值
0
你如果有点阵的话,你有原理图的话上传一下,我看看再讲解一下吧。
2013-7-17 22:25:30
评论
举报
嵌入式linux工程
提交评论
答案对人有帮助,有参考价值
0
点阵驱动电路。
2013-7-18 10:26:01
评论
举报
薄迪
提交评论
答案对人有帮助,有参考价值
0
看的不明白啊,能不能详细点了,有空自己动手做个放家里
2013-7-18 15:17:04
评论
举报
刘雨帆
提交评论
答案对人有帮助,有参考价值
0
我来详细讲解一下吧,我先讲16*16单色点阵
2013-7-18 18:59:57
评论
举报
嵌入式linux工程
提交评论
答案对人有帮助,有参考价值
0
首先还是讲一下芯片。先讲164芯片,它用作行扫描,行为低电平有效(0有效)。,这个芯片叫做移位寄存器,根据芯片手册,把AB相连作为数据输入端,CLK作为时钟端,CLK是上升沿有效,来一个时钟,输出数据往右移动一次。若上电时芯片输出为 1111 1111 1111 1111,16个高电平,上电时AB为0,时钟信号来了一个上升沿,则AB移入寄存器,这时输出为0111 1111 1111 1111,这时选中了一行,若AB仍然保持为0,再来一个时钟信号时,这时输出为0011 1111 1111 1111,已经移入了两个0了,选中了两行,而点阵是逐行扫描显示的,就是一行一行往下显示,每次只有一行才会显示,切换速度加快你就看起来它们是同时显示的,上面有两行选中了所以不行。所以第一个时钟信号过后即输出为0111 1111 1111 1111时应该把AB设置为1,下一个时钟信号来时,由于AB为1了,所以输出为1011 1111 1111 1111,也就是说第二个时钟时选中了第二行,以此类推依次选中到16行,当输出为1111 1111 1111 1110时由于再移动一次最低位的0就移出去了,所以这时要把AB改为0了,再来时钟时输出为0111 1111 1111 1111,这就是行扫描。下面将列扫描,列扫描为高电平有效(1有效)。,这是595芯片,也是一个移位寄存器,和164的不同是有锁存功能。锁存功能意思就是说你的时钟信号在给,数据也随着时钟信号一个一个输入到寄存器,但是寄存器的输出仍然没有改变,直到锁存引脚有高脉冲时,已经移位好的数据才会输出到引脚。若行数据选中的是第1行时,列数据输出为1110 1110 1110 1110这16个数据时,那么就是隔一个灯亮3个灯。若没有锁存引脚那么,每来一个时钟信号,输出引脚跟着改变,灯的状态一直在变化,直到16次之后才会正常,这样的话就乱了。
2013-7-18 19:21:41
评论
举报
嵌入式linux工程
提交评论
答案对人有帮助,有参考价值
0
shujian200148 发表于 2013-7-17 21:17
能讲的更加简单点不!
已经补充16*16单色点阵了
2013-7-18 19:23:38
评论
举报
嵌入式linux工程
提交评论
答案对人有帮助,有参考价值
0
发个程序,前面发的程序是买点阵时送的,个人感觉不好,下面是我自己写的
/*--------16*48点阵屏的移动显示------------*/
/*--------16*48点阵屏的移动显示------------*/
/*--------16*48点阵屏的移动显示------------*/
/*--------16*48点阵屏的移动显示------------*/
/*--------16*48点阵屏的移动显示------------*/
#include
#include
typedef unsigned char uchar
typedef unsigned int uint
#define DATE_OUT P1 //指定P1口做为输出
***it DATA=DATE_OUT^0; //列数据输出位
***it LCLK=DATE_OUT^1; //列扫描时钟位
***it LAT=DATE_OUT^2; //列数据锁存位
***it AB =DATE_OUT^3; //行数据输出位
***it HCLK =DATE_OUT^4; //行扫描时钟位
uchar DatCnt = 0;
idata unsigned char TempDat[6][16]={
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0第1个部分的,即第1个8列*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",1第2个部分的,即第2个8列*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0第3个部分的,即第3个8列*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",1第4个部分的,即第4个8列*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0第5个部分的,即第5个8列*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",1第6个部分的,即第6个8列*/
};//缓存数据
//非常好用的字摸软件PCtoLCD2002完美版 字模选项:阳码、行列式、顺向
code unsigned char DisplayDat[][16]={
{0xFD,0xFD,0xFD,0xFC,0xC1,0xDD,0xDC,0xD1,0xDD,0xDC,0xC1,0xFD,0xFD,0xFE,0xFF,0xFF},
{0xFF,0xFF,0xFF,0x1F,0xDF,0xDF,0x5F,0xDF,0xDF,0x1F,0xFF,0xFB,0xFB,0x03,0xFF,0xFF},/*"电",6*/
{0xFF,0xFE,0xE1,0xFF,0xFD,0xFE,0xFE,0x80,0xFE,0xFE,0xFE,0xFE,0xF6,0xFA,0xFD,0xFF},
{0xFF,0x0F,0xDF,0xBF,0x7F,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"子",7*/
{0xFF,0xFF,0xFF,0xE0,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x81,0xFF,0xFF,0xFF},
{0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0xFF,0xFF,0xFF,0xFF},/*"工",8*/
{0xFF,0xF9,0xC7,0xF7,0xF1,0x87,0xF3,0xE4,0xD7,0xB7,0x76,0xF7,0xF7,0xF4,0xF7,0xFF},
{0xFF,0xCF,0x2F,0x6F,0x4F,0x3F,0xC7,0x3F,0xBF,0x87,0x3F,0xBF,0x83,0x7F,0xFF,0xFF},/*"程",9*/
{0xFF,0xFE,0xE1,0xFD,0xFB,0xF0,0xFD,0xFB,0xF7,0xE0,0xFA,0xF6,0xEE,0xDC,0xFE,0xFF},
{0x9F,0x7F,0xFF,0xBF,0x7F,0xFF,0xBF,0xDF,0x0F,0xEF,0xFF,0x9F,0xE7,0xF7,0xFF,0xFF},/*"系",10*/
{0xFD,0xFD,0xFD,0xFC,0xC1,0xDD,0xDC,0xD1,0xDD,0xDC,0xC1,0xFD,0xFD,0xFE,0xFF,0xFF},
{0xFF,0xFF,0xFF,0x1F,0xDF,0xDF,0x5F,0xDF,0xDF,0x1F,0xFF,0xFB,0xFB,0x03,0xFF,0xFF},/*"电",6*/
{0xFF,0xFE,0xE1,0xFF,0xFD,0xFE,0xFE,0x80,0xFE,0xFE,0xFE,0xFE,0xF6,0xFA,0xFD,0xFF},
{0xFF,0x0F,0xDF,0xBF,0x7F,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"子",7*/
{0xFF,0xFF,0xFF,0xE0,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x81,0xFF,0xFF,0xFF},
{0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0xFF,0xFF,0xFF,0xFF},/*"工",8*/
{0xFF,0xF9,0xC7,0xF7,0xF1,0x87,0xF3,0xE4,0xD7,0xB7,0x76,0xF7,0xF7,0xF4,0xF7,0xFF},
{0xFF,0xCF,0x2F,0x6F,0x4F,0x3F,0xC7,0x3F,0xBF,0x87,0x3F,0xBF,0x83,0x7F,0xFF,0xFF},/*"程",9*/
{0xFF,0xFE,0xE1,0xFD,0xFB,0xF0,0xFD,0xFB,0xF7,0xE0,0xFA,0xF6,0xEE,0xDC,0xFE,0xFF},
{0x9F,0x7F,0xFF,0xBF,0x7F,0xFF,0xBF,0xDF,0x0F,0xEF,0xFF,0x9F,0xE7,0xF7,0xFF,0xFF},/*"系",10*/
{0xFD,0xFD,0xFD,0xFC,0xC1,0xDD,0xDC,0xD1,0xDD,0xDC,0xC1,0xFD,0xFD,0xFE,0xFF,0xFF},
{0xFF,0xFF,0xFF,0x1F,0xDF,0xDF,0x5F,0xDF,0xDF,0x1F,0xFF,0xFB,0xFB,0x03,0xFF,0xFF},/*"电",11*/
{0xF7,0xF7,0xF7,0xEF,0xE8,0xCF,0xAC,0x6F,0xEC,0xEF,0xEC,0xED,0xED,0xEC,0xED,0xFF},
{0x7F,0xBF,0xFF,0x83,0x7F,0x8F,0x7F,0x8F,0x7F,0x8F,0x6F,0xEF,0x8F,0x7F,0xFF,0xFF},/*"信",12*/
{0xFF,0xFF,0xFF,0xEF,0xCF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE7,0xFF,0xFF,0xFF},/*"1",13*/
{0xFF,0xFF,0xFF,0xE3,0xDB,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF,0xFF},/*"0",14*/
{0xFF,0xFF,0xFF,0xE3,0xDB,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF,0xFF},/*"0",15*/
{0xFF,0xFF,0xFF,0xEF,0xCF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE7,0xFF,0xFF,0xFF},/*"1",16*/
{0xFE,0xFE,0xF2,0x8E,0xEE,0xEA,0xE2,0xCA,0xEA,0xEE,0xE9,0xE5,0x9B,0xFA,0xF7,0xFF},
{0xFF,0xFF,0xE3,0x1F,0xDF,0xDF,0xC7,0x9F,0xDF,0xDF,0xDF,0xDF,0xC1,0x3F,0xFF,0xFF},/*"班",17*/
{0xFF,0xFF,0xFD,0xFB,0xFB,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xFB,0xFB,0xFD,0xFE,0xFF},/*"(",0*/
{0xFF,0xF8,0xF7,0xEF,0xDF,0xBF,0xBF,0xBE,0xBE,0xBF,0xBF,0xDF,0xEF,0xF7,0xF8,0xFF},
{0xFF,0x1F,0xEF,0xF7,0xFB,0xFD,0xFD,0x7D,0x7D,0xFD,0xFD,0xFB,0xF7,0xEF,0x1F,0xFF},/*"⊙",1*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0xFF,0xFF,0xFF},/*"_",2*/
{0xFF,0xF8,0xF7,0xEF,0xDF,0xBF,0xBF,0xBE,0xBE,0xBF,0xBF,0xDF,0xEF,0xF7,0xF8,0xFF},
{0xFF,0x1F,0xEF,0xF7,0xFB,0xFD,0xFD,0x7D,0x7D,0xFD,0xFD,0xFB,0xF7,0xEF,0x1F,0xFF},/*"⊙",3*/
{0xFF,0xFF,0xBF,0xDF,0xDF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xDF,0xDF,0xBF,0x7F,0xFF},/*")",4*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",5*/
};
/*下面函数扫描模式:点阵屏为16*48,我分成了6个16*8的,为了简便我采用
16进制写,6个16*8的如下排列
1 2 3 4 5 6
0xff 0xfe 0xfb 0xfc 0xfe 0x55 第1行 这些数据都是我随便写的,做个假设
0xff 0xfe 0xfb 0xfc 0xfe 0x55 第2行
0xff 0xfe 0xfb 0xfc 0xfe 0x55 第3行
0xff 0xfe 0xfb 0xfc 0xfe 0x55 第4行
... ... ... ... ... ... ...
... ... ... ... ... ... ...
0xff 0xfe 0xfb 0xfc 0xfe 0x55 第15行
0xff 0xfe 0xfb 0xfc 0xfe 0x55 第16行
*/
void Display(uchar flag)
{
unsigned char i,j,temp,x; //定义变量
DATE_OUT = 0XFF; //置位高电平做准备
AB=0; //将列数据位清0,准备移位,行为低电平有效
for(i=0;i<16;i++) //因为有16行,所以要16次循环,依次选中1行
{ //循环输出16行数据
HCLK=0; //为列移位做准备,列移位为上升沿有效
LAT=0; //为行锁存做准备,行锁存输出为上升沿有效
for(x=6;x>0;x--) //分成了6个部分,所以循环6次,
{ //若为16*16的点阵,分成两个部分就可以了,循环两次
if(flag == 1)
{
temp = TempDat[x-1][i]; //读取点阵数据做输出,这里用到ia目的是先读取点阵数据的第二位字节,因一行16个点由两个字节组成, //电路中的移位寄存器最后一位对应最后一列,所以要先输出一行中的第二个字节数据
}
if(flag == 0) //用于清屏
temp = 0xff; //由于我的点阵里面用了8550三极管,相当于非门,所以这里高电平为灭
for(j=0;j<8;j++) //移动列数据,移动6个字节后锁存输出才打开,因为1行的列数据分成了6个字节
{
LCLK = 0; //为列移位做准备
DATA = temp&0x01; //将数据低位做输出,由电路图可知,移位寄存器的最后一位对应最后一列,因此先移最后一位
temp >>= 1; //将数据缓冲右移一位,为下次输出做准备
LCLK = 1; //将DATA上的数据移入寄存器
} //移入单字节结束
}
HCLK = 1; //HCLK拉高,列数据移位,相应行拉低,三极管导通输出电量到相应行点阵管阳极(共阳)
LAT = 1; //LAT拉高,将数据锁存输出到相应行的点阵发光管显示,显示一行后将保持到下一行显示开始
AB = 1; //列数据位只在第一行时为0,其它时候都为1,当将这个0移入寄存器后,从第一位开始一直移位最后一位, //移位的过程,AB就必需是1,这是因为不能同时有两个及两个以上0的出现,否则显示出乱
}
j = 64;
while(j--); //每一行的显示,保持16个移位时间,因此,最后一行的显示,也要加入保持时间,补尝显示的亮度
HCLK = 0; //
HCLK = 1; //将最后一行数据移出
}
void DisplayMoveLeft(uint DatNum,uint MoveSpeed)
{
uchar NextByte[16];//下半个汉字的数据
uchar i,j=8,a,b;
for(i=0;i<16;i++)
{
NextByte[i]=DisplayDat[DatCnt][i];
}
DatCnt++;
if((DatNum*2)==DatCnt)DatCnt=0;
while(j--)//8次移位
{
for(i=0;i<16;i++)//16个字节移位
{
for(a=0;a<5;a++)
{
TempDat[a][i]<<=1;
if(TempDat[a+1][i]&0x80){TempDat[a][i]+=1;}
}
TempDat[5][i]<<=1;
if(NextByte[i]&0x80)
{
TempDat[5][i]+=1;
}
NextByte[i]<<=1;
}
for(b=0;b
{
Display(1);
}
}
}
void main(void) //主入口函数
{
Display(0);
while(1)
{
DisplayMoveLeft(30,12);
}
}
2013-7-18 20:00:06
评论
举报
嵌入式linux工程
提交评论
答案对人有帮助,有参考价值
0
我最近弄了一个32*32的点阵,点阵里有HC595 和HC138芯片,我怎么弄懂不亮,能麻烦给个例子吗,我用AVR ATMEGE16编的,太谢谢了。
2013-7-23 16:20:11
评论
举报
韩古月
提交评论
答案对人有帮助,有参考价值
0
韩古月 发表于 2013-7-23 16:20
我最近弄了一个32*32的点阵,点阵里有HC595 和HC138芯片,我怎么弄懂不亮,能麻烦给个例子吗,我用AVR ATME ...
我给你分析一下吧,向这种点阵一般是把HC138作为行扫描的,因为这个译码器可以级联,输出低电平有效,所以行为0有效,级联后行有四根输入,一般的点阵都是写ABCD着四根引脚,ABCD=“0000”就选中第0行,这样只可以选中16行,但是把点阵分为上下两屏的话,上下两屏的行一样,即0-17行,1-18行,这样依次下去,当选中第0行时第17行同时也选中,当选中第1行时第18行也同时选中,这是16扫的,就是分为上下两屏同时扫描,每屏16行,所以程序大概这样:
unsigned char DataBuffer[8][16]={//32列的点阵,分为4个8列
/*上半屏 16*32*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0第1个部分的,即第1个8列*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",1第2个部分的,即第2个8列*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0第3个部分的,即第3个8列*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",1第4个部分的,即第4个8列*/
/*下半屏 16*32*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0第1个部分的,即第1个8列*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",1第2个部分的,即第2个8列*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0第3个部分的,即第3个8列*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",1第4个部分的,即第4个8列*/
};//缓存数据
//595有CLK,LAT,DATA 3个主要信号
void Send_Byte(unsigned char sel,unsigned data)
{
usnigned char j;
for(j=0;j<8;j++)
{
CLK = 0; if(UP == sel) DATAUP = data&0x01;
if(DOWN == sel) DATADOWN= data&0x01;
temp >>= 1;
CLK = 1; //将数据移位
} }
void Set_ABCD(unsigned char value)//行选中函数,若P1.0~P1.3输出到ABCD四个引脚
{
P1OUT = value &0x0f;
}
void Send_Row_Data(unsigned char (*buf)[16],unsigned char n)//参数为要发送的数据,行数
{
unsigned char i;
for(i=0;i<4;i++)
{
Send_Byte(UP,buf[n]);//每次移动8位数据,循环四次共32位,对应32列
Send_Byte(DOWN,buf[i+4][n]);
}
LAT = 0;
LAT = 1;//将数据输出
}
void Led_Display(void)
{
for(i=0;i<16;i++)//16行扫描
{
Set_ABCD(i);//选中某一行
Send_Row_Data(DataBuffer,i);
}
}
这个供你参考,这还要看你的点阵是什么样子的,要具体点阵测试才好些,
2013-7-23 17:00:36
评论
举报
嵌入式linux工程
提交评论
答案对人有帮助,有参考价值
0
好的,非常感谢非常感谢,我弄弄看看
2013-7-25 11:16:37
评论
举报
韩古月
提交评论
答案对人有帮助,有参考价值
0
拜托有AVR做音乐频谱的程序吗,我想学学,希望您能分享一下
2013-7-31 07:52:34
评论
举报
韩古月
提交评论
答案对人有帮助,有参考价值
0
韩古月 发表于 2013-7-31 07:52
拜托有AVR做音乐频谱的程序吗,我想学学,希望您能分享一下
我有msp430单片机的
2013-7-31 08:27:14
评论
举报
嵌入式linux工程
提交评论
答案对人有帮助,有参考价值
0
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
2013-7-31 10:06:38
评论
举报
不可丶预知的未
提交评论
答案对人有帮助,有参考价值
0
行,多谢,我都弄好几天啦,头都大了,adc单端输入还是差分输入那不懂,还有fft那,哎,麻烦你给我发一下,非常感谢
2013-7-31 10:07:17
评论
举报
韩古月
提交评论
答案对人有帮助,有参考价值
0
点阵16*16驱动程序 C语言的
2013-7-31 10:25:53
评论
举报
不可丶预知的未
提交评论
答案对人有帮助,有参考价值
0
太牛啦真不错顶起
2013-7-31 23:29:23
评论
举报
陈志敏
提交评论
撰写答案
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
B
Color
Link
Quote
Code
Smilies
您需要登录后才可以回帖 登录/注册
发布答案
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
12345678 / 8 页下一页