完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
本人新手
P1是列,P2是行。求帮忙修改,谢谢! 程序如下: #include unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code graph[11][8]={ {0x0,0x8,0x18,0x8,0x8,0x8,0x8,0x8},//1 {0x0,0x18,0x24,0x24,0x8,0x10,0x20,0x3C},//2 {0x0,0x18,0x24,0x4,0x8,0x24,0x24,0x18},//3 {0x0,0x8,0x8,0x18,0x28,0x3C,0x8,0x8},//4 {0x0,0x3C,0x20,0x38,0x4,0x4,0x24,0x18},//5 {0x0,0x18,0x24,0x20,0x38,0x24,0x24,0x18}//6 }; unsigned char DisplayData; unsigned char count; unsigned char cnta; ***it P35=P3^5;//按键开关定义 void Delay() { unsigned char a,b; for(a=5;a>0;a--) for(b=248;b>0;b--); } void main() { TMOD=0x01; TH0=(65536-3000)/256; TL0=(65536-3000)%256; TR0=0; ET0=1; EA=1; while(1) { DisplayData=TH0%10; if(P35==0) { while(P35==0); { TR0=1; P2=tab[cnta]; P1=graph[DisplayData][cnta]; Delay(); } } } } void t0(void) interrupt 1 using 0 { TH0=(65536-3000)/256; TL0=(65536-3000)%256; P2=tab[cnta]; P1=graph[DisplayData][cnta]; cnta++; if(cnta==8) { cnta=0; } } |
|
相关推荐
13个回答
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
我的观点是和延时没有太大关系,主要原因是因为: P2=tab[cnta]; P1=graph[DisplayData][cnta];
当你考虑到第二个周期回来的时候,P1还是上一个状态,但是P2已经发生了改变,这个时候会将LED瞬间点亮一下造成鬼影,解决方法应该是:在P2=tab[cnta]之前先让P1输出无效,比如你P1输出全部高电平就是LED全灭那么可以在前面加上P1=0xFF,反之P1=0; |
|
|
|
|
|
5楼的方法是对的~~~~~~~~~~~~~~
|
|
|
|
|
|
楼上正解,对于任何LED的使用,在改变输出前需要先消影,然后才是改变输出,否则会有鬼影
|
|
|
|
|
|
|
|
|
|
|
|
貌似不怎么懂,看了好长时间
|
|
|
|
|
|
|
|
|
|
|
|
一样的问题我也遇到了,正在解决中。
|
|
|
|
|
|
改一下中断里面的延时
|
|
|
|
|
|
路过,学习学习.....
|
|
|
|
|
|
只要在动态扫描之前将点阵全部关闭就可以了
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
435 浏览 0 评论
464 浏览 0 评论
450 浏览 0 评论
806 浏览 0 评论
RT-Thread与英飞凌(infineon)合作得板子PSOC 6 板子学习
748 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
17012 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 08:09 , Processed in 1.059666 second(s), Total 95, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4407