51单片机点阵..只用三个端口,接两个74LS164,两个164输出端接8*8点阵

想要试试最少端口解决点阵,用c编。结果一晚上的测试结果都不成...哪位大神成功过的帮忙解惑下!!还是得感谢“都市黑豹”给了我点思路,以前三端口是164_1_AB、164_... 想要试试最少端口解决点阵,用c编。结果一晚上的测试结果都不成...哪位大神成功过的帮忙解惑下!!
还是得感谢“都市黑豹”给了我点思路,以前三端口是164_1_A B、164_2_A B并联成串口输入端、164_1_CLOCK时钟端、164_2_CLOCK时钟端。测试时点阵一直乱闪,扫描显示也不能静止.现在我把之前复位端接正改成可控.就能扫描显示了.
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
sbit p27=P2^7;//164_1_A B、164_2_A B串口输入
sbit p20=P2^0;//164_1时钟脉冲
sbit p21=P2^1;//164_2时钟脉冲
sbit p22=P2^2;//164_1_R、164_2_R复位端
uchar i,k,h,xx[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80},
yy[8]={0xff,0x03,0xed,0xee,0xee,0xed,0x03,0xff};
void delay(uchar x)
{
while(x--)
for(k=0;k<250;k++);
}
void main()
{
while(1)
{
for(h=0;h<8;h++)
{
p22=1;
for(i=0;i<8;i++)
{
p27=_crol_(xx[h],i)&0x80;
p20=0;p20=1;

}
for(i=0;i<8;i++)
{
p27=_crol_(yy[h],i)&0x80;
p21=0;p21=1;
}
delay(1);
p22=0;
}
}
}
希望对有兴趣的人有帮助,照我估计,后面如果再加8*8点阵的话只需要再用51的1个口接个164时钟,输出接8*8的显示位就能成立.
展开
 我来答
都市黑豹
2011-04-22 · 超过48用户采纳过TA的回答
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:69.6万
展开全部
不知道你说的三个端口是指的PA,PB,PC这样的端口。还是三条IO。
如果是三个P口的话那就有3*8=24条IO 随便你怎么使用

补充楼上所说:
164是串入并出,你可以将第二片的输入脚接到第一片的最后一个输出,让两片级联。
这样你就可以只用两条线了,一条串行数据线,一条数据移位线
但是想要点亮点阵的一个点需要两个8位数据,8*8一块64个点,所以一屏图像需要8*8*2*8=1024个时钟序列。如果再考虑24帧的话1024*24=24576,主频就应该选用1/(24576*12)*10^6=3.4MHZ至少
意法半导体(中国)投资有限公司
2023-06-12 广告
stm32怎么样?这个问题不能一概而论,要根据您的具体情况进行分析。意法半导体单片机产品线拥有业界很宽广、极具创新力的32位产品系列 – STM32,覆盖超低功耗、超高性能方向,同时兼具很强的市场竞争力。STM32是ARM Cortex内核... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
xrg0228
2011-04-22 · TA获得超过1184个赞
知道小有建树答主
回答量:1215
采纳率:100%
帮助的人:634万
展开全部
还是用四个端口吧,一对串口接164给数据,另加一对I/O口接164送行扫描。注意显示时间不能太短否则看不清楚。 显示延时按每秒20到24屏数据计算,减去送每行数据的时间,你就可以推算出送每一行数据后的延时时间了。祝你成功!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
312677762
2011-04-22 · TA获得超过101个赞
知道小有建树答主
回答量:189
采纳率:0%
帮助的人:100万
展开全部
用译码器74LS138和74HC595驱动吧。挺好用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式