利用51利用单片机p0驱动电路和4片74HC595,让16*16点阵滚动显示文字,16*16点阵由4片8*8点阵并联

关于16*16点阵,用74HC595控制问题请教【单片机吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:141,798贴子:
关于16*16点阵,用74HC595控制问题请教收藏
用的某开发板,其原理图如下:通过4个74HC595控制点阵的行与列通过一次性向74HC595发送4个字节的方式,分别控制LED点阵的行与列现碰到问题如下,为简单描述,用开发板自带的程序向老师们请教(这是显示一个点的程序):============================================================//注意使用EM3 V3 时把NE555的跳帽去掉#include&reg51.h&#include&intrins.h&#define uchar unsigned char sbit SCK=P3^6;sbit LCK=P3^5;sbit SDI=P3^4;void HC595_Send(uchar dat1,uchar dat0,uchar dat2,uchar dat3);void main(){while(1){ HC595_Send(0xff,0xfe,0x80,0x00);} }void HC595_Send(uchar dat1,uchar dat0,uchar dat2,uchar dat3){SCK=1;LCK=1;for(i=0;i&8;i++){SDI=dat0&0x01; //从高位到低位dat0&&=1;SCK=0;_nop_();_nop_();SCK=1;_nop_();_nop_(); }for(i=0;i&8;i++){SDI=dat1&0x01; //从高位到低位dat1&&=1;SCK=0;_nop_();_nop_();SCK=1;_nop_();_nop_(); }for(i=0;i&8;i++){SDI=dat2&0x01; //从高位到低位dat2&&=1;SCK=0;_nop_();_nop_();SCK=1;_nop_();_nop_(); }for(i=0;i&8;i++){SDI=dat3&0x01; //从高位到低位dat3&&=1;SCK=0;_nop_();_nop_();SCK=1;_nop_();_nop_(); }LCK=0; //下面是输出时钟_nop_();_nop_();LCK=1;_nop_();_nop_();}=====================================================这个自带的程序dat0和dat1搞混了,在这里不是重点我的疑问点在于,通过实验:如果while(1) {HC595_Send(0xff,0xfe,0x80,0x00);}我增加一行,同时去掉while(1)HC595_Send(0xff,0xfe,0x80,0x00);HC595_Send(只能显示一个点的数据);那么一共显示两个点,但应该是第一个点瞬间显示一下,之后595数据更新,显示第二个点,不更新不变化可实际上这两个点一直常亮,经过多次试验都是如此如果有多个HC595_Send,按照道理每次595更新一次数据后点阵对应的点亮,上次更新前的不应该亮了可实际做多次试验却是每次HC595_Send对应的点阵都亮请老师指点!
开发宝-靠谱的电子产品研发众包平台.单片机,电子技术,嵌入式软件,结构设计等电子产品研发领域外包服务.
普中的板子嘛
请问做这个需要的详细器件名称能发给我吗
是普中的,我看看是不是程序有问题楼上你需要的话我给你电路图
数据发送之后直接就发送输出脉冲了,两行发送数据的语句之间没有延时,执行速度很快,眼睛可能看到两个点都亮了吧
登录百度帐号推荐应用09:30 提问
求两块74hc595驱动4个8乘以8的led点阵的程序详解及原理
//--重定义函数变量--//
#define uchar unsigned char
#define uint
unsigned int
#define ulong unsigned long
//--定义SPI要使用的 IO--//
sbit MOSIO = P3^4;
sbit R_CLK = P3^5;
sbit S_CLK = P3^6;
//---全局变量声明--//
//--点阵显示数组--//
uchar code tab0[] =
{0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08,
0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80,
0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00,
0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00};
//--10字模--//
uchar code tab1[] =
{0, 0, 0, 0, 0, 0, 8, 24, 14, 36, 8, 66, 8, 66, 8, 66,
8, 66, 8, 66, 8, 66, 8, 36, 62, 24, 0, 0, 0, 0, 0, 0};
//--09字模--//
uchar code tab2[] =
{0, 0, 0, 0, 0, 0, 24, 24, 36, 36, 66, 66, 66, 66, 66,
66, 66, 100, 66, 88, 66, 64, 66, 64, 36, 36, 24, 28, 0, 0, 0, 0} ;
//--08字模--//
uchar code tab3[] =
{0, 0, 0, 0, 0, 0, 24, 60, 36, 66, 66, 66, 66, 66, 66, 36,
66, 24, 66, 36, 66, 66, 66, 66, 36, 66, 24, 60, 0, 0, 0, 0};
//--07字模--//
uchar code tab4[] =
{0, 0, 0, 0, 0, 0, 24, 126, 36, 34, 66, 34, 66, 16, 66, 16,
66, 8, 66, 8, 66, 8, 66, 8, 36, 8, 24, 8, 0, 0, 0, 0};
//--06字模--//
uchar code tab5[] =
{0, 0, 0, 0, 0, 0, 24, 56, 36, 36, 66, 2, 66, 2, 66, 26, 66,
38, 66, 66, 66, 66, 66, 66, 36, 36, 24, 24, 0, 0, 0, 0};
//--05字模--//
uchar code tab6[] =
{0, 0, 0, 0, 0, 0, 24, 126, 36, 2, 66, 2, 66, 2, 66, 26, 66,
38, 66, 64, 66, 64, 66, 66, 36, 34, 24, 28, 0, 0, 0, 0};
//--04字模--//
uchar code tab7[] =
{0, 0, 0, 0, 0, 0, 24, 32, 36, 48, 66, 40, 66, 36, 66, 36, 66,
34, 66, 34, 66, 126, 66, 32, 36, 32, 24, 120, 0, 0, 0, 0};
//--03字模--//
uchar code tab8[] =
{0, 0, 0, 0, 0, 0, 24, 60, 36, 66, 66, 66, 66, 32, 66, 24, 66,
32, 66, 64, 66, 64, 66, 66, 36, 34, 24, 28, 0, 0, 0, 0};
//--02字模--//
uchar code tab9[] =
{0, 0, 0, 0, 0, 0, 24, 60, 36, 66, 66, 66, 66, 66, 66, 32, 66,
32, 66, 16, 66, 8, 66, 4, 36, 66, 24, 126, 0, 0, 0, 0};
//--01字模--//
uchar code tab10[] =
{0, 0, 0, 0, 0, 0, 24, 8, 36, 14, 66, 8, 66, 8, 66, 8, 66, 8, 66,
8, 66, 8, 66, 8, 36, 8, 24, 62, 0, 0, 0, 0};
//--00字模--//
uchar code tab11[] =
{0, 0, 0, 0, 0, 0, 24, 24, 36, 36, 66, 66, 66, 66, 66, 66, 66, 66,
66, 66, 66, 66, 66, 66, 36, 36, 24, 24, 0, 0, 0, 0};
//--GO--//
uchar code tab12[] =
{0, 0, 0, 0, 0, 0, 60, 28, 34, 34, 34, 65, 1, 65, 1, 65, 1, 65, 113,
65, 33, 65, 34, 65, 34, 34, 28, 28, 0, 0, 0, 0};
//--全局函数声明--//
void HC595SendData(
uchar BT3, uchar BT2,uchar BT1,uchar BT0);
/*******************************************************************************
*******************************************************************************/
void main(void)
//显示时间
//--显示10--//
for(ms = ms & 0; ms--)
for(k = 0; k & 16; k++)
HC595SendData(~tab1[2*k +1],~tab1[2*k],tab0[2*k],tab0[2*k + 1]);
//--清屏--//
HC595SendData(0xff,0xff,0,0);
//--显示09--//
for(ms = ms & 0; ms--)
for(k = 0; k & 16; k++)
HC595SendData(~tab2[2*k +1],~tab2[2*k],tab0[2*k],tab0[2*k + 1]);
//--清屏--//
HC595SendData(0xff,0xff,0,0);
//--显示08--//
for(ms = ms & 0; ms--)
for(k = 0; k & 16; k++)
HC595SendData(~tab3[2*k +1],~tab3[2*k],tab0[2*k],tab0[2*k + 1]);
//--清屏--//
HC595SendData(0xff,0xff,0,0);
//--显示07--//
for(ms = ms & 0; ms--)
for(k = 0; k & 16; k++)
HC595SendData(~tab4[2*k +1],~tab4[2*k],tab0[2*k],tab0[2*k + 1]);
//--清屏--//
HC595SendData(0xff,0xff,0,0);
//--显示06--//
for(ms = ms & 0; ms--)
for(k = 0; k & 16; k++)
HC595SendData(~tab5[2*k +1],~tab5[2*k],tab0[2*k],tab0[2*k + 1]);
//--清屏--//
HC595SendData(0xff,0xff,0,0);
//--显示05--//
for(ms = ms & 0; ms--)
for(k = 0; k & 16; k++)
HC595SendData(~tab6[2*k +1],~tab6[2*k],tab0[2*k],tab0[2*k + 1]);
//--清屏--//
HC595SendData(0xff,0xff,0,0);
//--显示04--//
for(ms = ms & 0; ms--)
for(k = 0; k & 16; k++)
HC595SendData(~tab7[2*k +1],~tab7[2*k],tab0[2*k],tab0[2*k + 1]);
//--清屏--//
HC595SendData(0xff,0xff,0,0);
//--显示03--//
for(ms = ms & 0; ms--)
for(k = 0; k & 16; k++)
HC595SendData(~tab8[2*k +1],~tab8[2*k],tab0[2*k],tab0[2*k + 1]);
//--清屏--//
HC595SendData(0xff,0xff,0,0);
//--显示02--//
for(ms = ms & 0; ms--)
for(k = 0; k & 16; k++)
HC595SendData(~tab9[2*k +1],~tab9[2*k],tab0[2*k],tab0[2*k + 1]);
//--清屏--//
HC595SendData(0xff,0xff,0,0);
//--显示01--//
for(ms = ms & 0; ms--)
for(k = 0; k & 16; k++)
HC595SendData(~tab10[2*k +1],~tab10[2*k],tab0[2*k],tab0[2*k + 1]);
//--清屏--//
HC595SendData(0xff,0xff,0,0);
//--显示00--//
for(ms = ms & 0; ms--)
for(k = 0; k & 16; k++)
HC595SendData(~tab11[2*k +1],~tab11[2*k],tab0[2*k],tab0[2*k + 1]);
//--清屏--//
HC595SendData(0xff,0xff,0,0);
//--一直显示G0--//
for(k = 0; k & 16; k++)
HC595SendData(~tab12[2*k +1],~tab12[2*k],tab0[2*k],tab0[2*k + 1]);
/*******************************************************************************
: HC595SendData
: 通过595发送四个字节的数据
: BT3:第四个595输出数值
* BT2: 第三个595输出数值
* BT1:第二个595输出数值
* BT0:第一个595输出数值
*******************************************************************************/
void HC595SendData(
uchar BT3, uchar BT2,uchar BT1,uchar BT0)
//--发送第一个字节--//
for(i=0;i&8;i++)
MOSIO = BT3 && 7 ;
//从高位到低位
BT3 &&= 1;
S_CLK = 0;
S_CLK = 1;
//--发送第一个字节--//
for(i=0;i&8;i++)
MOSIO = BT2 &&7;
//从高位到低位
BT2 &&= 1;
S_CLK = 0;
S_CLK = 1;
//--发送第一个字节--//
for(i=0;i&8;i++)
MOSIO = BT1 && 7;
//从高位到低位
BT1 &&= 1;
S_CLK = 0;
S_CLK = 1;
//--发送第一个字节--//
for(i=0;i&8;i++)
MOSIO = BT0 && 7;
//从高位到低位
BT0 &&= 1;
S_CLK = 0;
S_CLK = 1;
//--输出--//
R_CLK = 0; //set dataline low
R_CLK = 1; //片选
R_CLK = 0; //set dataline low
顺便帮忙解释一下这个程序
其他相关推荐【图文】基于51单片机的4个16×16点阵LED电子显示屏的设计_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于51单片机的4个16×16点阵LED电子显示屏的设计
大小:524.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢网站已改版,请使用新地址访问:
595and154(16_16led) 一个16*16左右移的led点阵程序,
里面使用的51单片机和595和154驱动显示的 SCM 开发 256万源代码下载-
&文件名称: 595and154(16_16led)& & [
& & & & &&]
&&所属分类:
&&开发工具: C++ Builder
&&文件大小: 179 KB
&&上传时间:
&&下载次数: 5
&&提 供 者:
&详细说明:一个16*16左右移的led点阵程序,
里面使用的51单片机和595和154驱动显示的-A move around 16* 16 led lattice program,
Use of 51 single-chip microcomputer and drive shows 595 and 154
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&595+154&&.......\595+154穿行三线控制电路.DSN&&.......\595+154穿行三线控制电路.EDF&&.......\595+154穿行三线控制电路.LYT&&.......\595+154穿行三线控制电路.SDF&&.......\Backup Of 595+154穿行三线控制电路.LBK&&.......\KELL&&.......\....\595+154_点阵&&.......\....\595+154_点阵.LST&&.......\....\595+154_点阵.M51&&.......\....\595+154_点阵.OBJ&&.......\....\595+154_点阵.c&&.......\....\595+154_点阵.hex&&.......\....\595+154_点阵.lnp&&.......\....\595+154_点阵.plg&&.......\....\595+154_点阵.uvopt&&.......\....\595+154_点阵.uvproj&&.......\....\595+154_点阵_uvopt.bak&&.......\....\595+154_点阵_uvproj.bak&&.......\....\code seg.LST&&.......\....\code seg.OBJ&&.......\....\seg.LST&&.......\....\seg.OBJ&&.......\....\seg.h&&.......\Last Loaded 595+154穿行三线控制电路.LBK
&[]:纯粹是垃圾
&近期下载过的用户:
&输入关键字,在本站256万海量源码库中尽情搜索:
&[] - 本程序是用AT89C51单片机,595做列驱动16*64的点阵显示程序,有电路图,可以对电路进行仿真,自己还可以更改显示代码,显示自己想要的汉子!
&[] - 锁存器74HC595的应用方案,其有有详细的说明和简介,希望对大家有所帮助。
&[] - 单片机C51开发16乘以16点阵的笑脸变化效果,可以作为学习,也可以作为给朋友的小礼物
&[] - 此程序为16x16点阵程序STM89C52做主控花样显示文字与图案
&[] - 基于fpga的595驱动数码管动态显示,从00加到99
&[] - 16*16LED点阵字符或花样显示设计,本设计中可以实现花样显示,并可根据自己要求更改频率、花样字样等
&[] - 采用16*16点阵显示屏,闪烁循环显示,利用74HC154,课程设计需要
&[] - LED点阵
16*64 用74HC154
8个74HC595控制字的显示
&[] - 用74HC595与74LS154设计的16×16点阵屏 内含protues原理图及源程序
&[] - 用仿真软件Protues对16X16点阵进行显示实验,用2个74HC138级联做行驱动,2个74HC595做列驱动,静态显示一个汉字。附有程序及仿真电路。

我要回帖

更多关于 利用单片机p0驱动电路 的文章

 

随机推荐