1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本人最近在网上买了一块点阵,在弄程序的时候出了一个大问题 求哪位大神帮帮小弟解决下。参考程序(能够正常的显示0——9):
求各位师傅帮帮忙啊! //资源:串行输出存储锁存线RCK // 串行数据输入时钟线SCK // 串行数据输入线SER // C信号=P2.3 B信号=P2.4 A信号=P2.5 //说明:ABC信号是74HC138的输入行选信号,其它信号是串行输入列显示数据,逐行扫描动态显示0-9 #include"reg52.h" #define uint unsigned int #define uchar unsigned char ***it RCK=P2^4; //声明SER接口 ***it SCK=P2^5; //声明RCK接口 ***it SER=P2^3; //声明SCK接口 ***it HC=P2^2; //声明C信号接口 ***it HB=P2^1; //声明B信号接口 ***it HA=P2^0; //声明A信号接口 #define ROW1 HC=0;HB=0;HA=0; //定义使能第1行,请参考74HC138逻辑表 #define ROW2 HC=0;HB=0;HA=1; //定义使能第2行,请参考74HC138逻辑表 #define ROW3 HC=0;HB=1;HA=0; //定义使能第3行,请参考74HC138逻辑表 #define ROW4 HC=0;HB=1;HA=1; //定义使能第4行,请参考74HC138逻辑表 #define ROW5 HC=1;HB=0;HA=0; //定义使能第5行,请参考74HC138逻辑表 #define ROW6 HC=1;HB=0;HA=1; //定义使能第6行,请参考74HC138逻辑表 #define ROW7 HC=1;HB=1;HA=0; //定义使能第7行,请参考74HC138逻辑表 #define ROW8 HC=1;HB=1;HA=1; //定义使能第8行,请参考74HC138逻辑表 uchar dat[12][8]= //定义0-9共10个数字的点阵数据 { {0x00,0x3C,0x24,0x24,0x24,0x24,0x24,0x3C}, //0 {0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04}, //1 {0x00,0x3C,0x04,0x04,0x3C,0x20,0x20,0x3C}, //2 {0x00,0x3C,0x04,0x04,0x3C,0x04,0x04,0x3C}, //3 {0x00,0x24,0x24,0x24,0x3C,0x04,0x04,0x04}, //4 {0x00,0x3C,0x20,0x20,0x3C,0x04,0x04,0x3C}, //5 {0x00,0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C}, //6 {0x00,0x3C,0x04,0x04,0x04,0x04,0x04,0x04}, //7 {0x00,0x3C,0x24,0x24,0x3C,0x24,0x24,0x3C}, //8 {0x00,0x3C,0x24,0x24,0x3C,0x04,0x04,0x3C}, //9 {0x00,0x10,0x38,0x54,0x10,0x10,0x10,0x00}, {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF} }; uchar h; //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- void delay(uint z) //延时函数,单位ms { uint i,j; for(i=z;i>0;i--) for(j=110;j>0;j--); } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- void ROW(void) //行驱动函数 { switch(h) { case 0: ROW1;break; case 1: ROW2;break; case 2: ROW3;break; case 3: ROW4;break; case 4: ROW5;break; case 5: ROW6;break; case 6: ROW7;break; case 7: ROW8;break; } RCK=1; RCK=0; } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- void in_data(uchar n) //数据打入74HC595函数,时序请参考74HC595规格书 { uchar x,y; y=n; for(x=8;x>0;x--) { if(y&0x01) //特别注意先打入的是高位对应第8列,最后打入低位对应第1列 SER=1; else SER=0; y=y>>1; //对应先高位后对位应往右移位数据 SCK=1; SCK=0; } } //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- //主函数 void main(void) { uchar a=3,b=0; RCK=0; //清零锁存线 SCK=0; //清零时钟线 while(1) { for(h=0;h<8;h++) //控制8行数据 { in_data(dat[h]); //打入对应的数据 ROW(); //行驱动 delay(1); //稳定显示 } a--; //控制1个数字显示一段时间 if(a==0) { a=30; if(b++==10) b=10; } } } 自己对照参考程序改写的关于点阵的部分程序(只能定在0上不走了,说明b变量没有完成加一,这里不解啊) void in_data(uchar n) //数据打入74HC595函数,时序请参考74HC595规格书 { uchar x,y; y=n; for(x=8;x>0;x--) { if(y&0x01) //特别注意先打入的是高位对应第8列,最后打入低位对应第1列 SER=1; else SER=0; y=y>>1; //对应先高位后对位应往右移位数据 SCK=1; SCK=0; } } void dianzhen() { uchar a=3,b=0; for(h=0;h<8;h++) //控制8行数据 { in_data(dat[b][h]); //打入对应的数据 ROW(); //行驱动 delay(1); //稳定显示 } a--; //控制1个数字显示一段时间 if(a==0) { a=30; if(b++==10) b=10; } } //----------------------------------------------------------------------------- void main() { init_devices(); display(); P0=0xff; delay(1000); RCK=0; //清零锁存线 SCK=0; //清零时钟线 TR0=1; TR1=1; while(1) { dianzhen(); } } |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
644 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1819 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1262 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
1136 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1357 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12024 浏览 31 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 02:12 , Processed in 0.478420 second(s), Total 67, Slave 51 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号