完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
` 本帖最后由 官炎钦 于 2013-4-9 17:54 编辑 学校里搞了个比赛。我打算做个16*16书写点阵屏。 网上关于书写点阵屏的资料比较少。其大致原理如下: 1:让单片机快速扫描点阵。也就是轮流让点亮每个LED灯,但是点亮时间极短,让其显示微亮状态 2:用三级管组成的光笔电路检测扫描到的坐标并存储起来 3:让单片机显示点阵,这次因为每个LED显示时间长了点,所以肉眼看到的是亮的而不是微亮状态。 我现在做的是让一块点阵先显示微亮状态,我先在实验板上实验一块8*8点阵。结果出现了不可预知的问题: 学习板上的点阵的行列是各自用两块74hc573锁存器接到p0口驱动的。也就是用P0口输出行数据后,锁存住,第一块锁存器的数据便作为行的数据。然后P0口再输出锁存的第二块锁存器的数据作为列数据。 实验开发板的硬件电路不复杂,如果我说的不明白麻烦大家看下我的开发板电路 测试函数如下: #include #include #define uint unsigned int #define uchar unsigned char ***it liegate=P2^6;//74hc573列片选 ***it wela=P2^7;//此例主要用来关闭数码管 ***it hangate=P2^5;//74hc473行片选 uchar i,j,t0,a,b,c,x,u,cout,num; uint code hangdata[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; uchar code liedata[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar idata shuju[8]; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);//延时 x ms } void saomiao() { b=1; for(j=0;j<8;j++)//循环进行8次列扫描 { liegate=1; //列选通 ************************ P0=liedata[j];//让哪一列亮 采用列扫描轮流送入列数据 liegate=0; //列数据锁定 ************************ hangate=1;//行选通 ************************ P0=0xff;//让8行的数据都输入1 hangate=0;//行锁定 ************************ while(b--); //延时 } } void main() { c=0xf0; wela=1; P0=0xff; wela=0; delay(5);//关闭数码管 while(1) { saomiao(); } } 我用这个函数写进去,本来应该是全部64个LED灯都亮了。为什么第一列的LED灯却显示了 “微亮” 呢。 是我软件的问题还是开发板P0口接太多其它硬件干扰导致的问题。求解! `
TX-1C增强版原理图.pdf
(943.37 KB, 下载次数: 8
)
|
|
相关推荐
1 个讨论
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
690 浏览 0 评论
735 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
624 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1099 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1092 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11794 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 07:30 , Processed in 0.737688 second(s), Total 44, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号