求助,关于数码管重影淘宝 有问题向你求助

君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
IC读卡器设计
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口请教 数码管做了个加法计算器 相邻两位有重影_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:130,489贴子:
请教 数码管做了个加法计算器 相邻两位有重影收藏
六位共阴数码管
P0口接了2个74HC573 现在的问题是
相邻的两位有重影
比如第一位显示1
第二位隐约也显示1
但是能看见
我觉得问题还在动态扫描函数里 但是找了几个小时了 还是不行
头都大了 程序如下
请各位帮忙看下 谢谢了 #include&reg52.h&sbit dula=P2^6;sbit wela=P2^7;sbit KEY_IN_1=P3^4;sbit KEY_IN_2=P3^5;sbit KEY_IN_3=P3^6;sbit KEY_IN_4=P3^7;sbit KEY_OUT_1=P3^0;sbit KEY_OUT_2=P3^1;sbit KEY_OUT_3=P3^2;sbit KEY_OUT_4=P3^3;unsigned char code LedChar[]={
//数码管显示字符转换表0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char LedBuff[6]={
//数码管显示缓冲区0x00,0x00,0x00,0x00,0x00,0x00};unsigned char code KeyCodeMap[4][4]={{0x31,0x32,0x33,0x26},{0x34,0x35,0x36,0x25},{0x37,0x38,0x39,0x28},{0x30,0x1b,0x0d,0x27}};unsigned char KeySta[4][4]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};void KeyDriver();void main(){EA=1;TMOD=0x01;TH0=0TL0=0x67;ET0=1;TR0=1;while(1){KeyDriver();}}void ShowNumber(unsigned long num){unsigned char buf[6];for(a=0;a&6;a++){buf[a]=num%10;num=num/10;}for(a=5;a&=1;a--){if(buf[a]==0){LedBuff[a]=0x00;}else}for(;a&=0;a--){LedBuff[a]=LedChar[buf[a]];}} void KeyAction(unsigned char keycode){static unsigned long result=0;static unsigned long addend=0;if((keycode&=0x30)&&(keycode&=0x39)){addend=(addend*10)+(keycode-0x30);ShowNumber(addend);}else if(keycode==0x26){result+=addend=0;ShowNumber(result);}else if(keycode==0x0d){result+=addend=0;ShowNumber(result);}else if(keycode==0x1b){addend=0;result=0;ShowNumber(addend);}}void KeyDriver(){unsigned char i,j;static unsigned char backup[4][4]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};for(i=0;i&4;i++){for(j=0;j&4;j++){if(backup[i][j]!=KeySta[i][j]){if(backup[i][j]!=0){KeyAction(KeyCodeMap[i][j]);}backup[i][j]=KeySta[i][j];}}}}void KeyScan(){static unsigned char keyout=0;static unsigned char keybuf[4][4]={{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff}};keybuf[keyout][0]=(keybuf[keyout][0]&&1)|KEY_IN_1;keybuf[keyout][1]=(keybuf[keyout][1]&&1)|KEY_IN_2;keybuf[keyout][2]=(keybuf[keyout][2]&&1)|KEY_IN_3;keybuf[keyout][3]=(keybuf[keyout][3]&&1)|KEY_IN_4;for(i=0;i&4;i++){if((keybuf[keyout][i]&0x0f)==0x00){KeySta[keyout][i]=0;}else if((keybuf[keyout][i]&0x0f)==0x0f){KeySta[keyout][i]=1;}}keyout++;keyout=keyout&0x03;switch(keyout){case 0:KEY_OUT_4=1;KEY_OUT_1=0;case 1:KEY_OUT_1=1;KEY_OUT_2=0;case 2:KEY_OUT_2=1;KEY_OUT_3=0;case 3:KEY_OUT_3=1;KEY_OUT_4=0;default:}}void LedScan(){static unsigned char a=0;switch(a){case 0:P0=0wela=1;P0=0wela=0;P0=0;dula=1;P0=LedBuff[0];dula=0;a++;case 1:P0=0wela=1;P0=0wela=0;P0=0;dula=1;P0=LedBuff[1];dula=0;a++;case 2:P0=0wela=1;P0=0xf7;wela=0;P0=0;dula=1;P0=LedBuff[2];dula=0;a++;case 3:P0=0wela=1;P0=0wela=0;P0=0;dula=1;P0=LedBuff[3];dula=0;a++;case 4:P0=0wela=1;P0=0wela=0;P0=0;dula=1;P0=LedBuff[4];dula=0;a++;case 5:P0=0wela=1;P0=0wela=0;P0=0;dula=1;P0=LedBuff[5];dula=0;a=0;default:}}void Timer0() interrupt 1{TH0=0TL0=0x67;LedScan();KeyScan();}
单片机海同强大的师资阵容,因人制定课程内容,分阶段学习.单片机就到正规Java培训机构-海同科技,培训Java面对面教学,免费重读!
俺c语言不懂,以前用汇编语言刚编写显示程序的时候有这种情况出现过,当时我是用p1口接uln2003做段驱动,p2口接9012做位驱动。 出现这种事的原因是段驱动还没关闭就把下一个位给置位了。解决方法是,先输出段驱动,再输出位驱动,跟着关闭段驱动,再关闭位驱动,再空操作,再输出下一位的段驱动,再输出下一位的位驱动,关闭段驱动,关闭位驱动,空操作…………
哈哈 托各位的福
发现问题所在了
我发现贴吧还真是个福地儿
有问题一发出来
没过一会就想明白了
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或后使用快捷导航没有帐号?
查看: 3296|回复: 17
数码管,点阵的问题。(小白求助)
在线时间12 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
数码管的位选能不接三极管直接接IO口吗?为什么?
点阵可不可以不接芯片,直接用三极管驱动?为什么?
点阵可不可以直接接IO口?为什么?
请各位大大教教小白。
那还有一个问题就是接电阻的作用是限流,但是限流不就让电流更小了吗?那不就不会亮了吗?那为什么还要接电阻?
[ 本帖最后由 koco12233 于
16:02 编辑 ]
在线时间768 小时
威望117075分
芯币14728枚
TA的帖子TA的资源
接三极管主要是为了增加驱动能力
所以看你io口的驱动能力够不够了
我追求崇本务实,我追求完美第一!我选择低调做人,我选择高调做事!
在线时间1644 小时
威望8255分
芯币10915枚
E金币358枚
TA的帖子TA的资源
五彩晶圆(高级), 积分 8255, 距离下一级还需 1745 积分
五彩晶圆(高级), 积分 8255, 距离下一级还需 1745 积分
bukeyi不可以 点阵数码管其实里面都是LED&&51的驱动电流才几ma的&&是不够的
在线时间219 小时
威望2599分
芯币1233枚
TA的帖子TA的资源
五彩晶圆(初级), 积分 2599, 距离下一级还需 901 积分
五彩晶圆(初级), 积分 2599, 距离下一级还需 901 积分
回复 楼主 koco12233 的帖子
这个和51单片机的带载能力有关,把单片机看作一个水泵,,假设他输出的水流是每分钟2立方,驱动一个led需要1个立方,那么这个口只能带2个灯,如果要带多就要三极管,或者是驱动芯片括流!
在线时间12 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
回复 4楼 小小白 的帖子
哦,那还有一个问题就是接电阻的作用是限流,但是限流不就让电流更小了吗?那不就不会亮了吗?那为什么还要接电阻?
在线时间25 小时
TA的帖子TA的资源
一粒金砂(高级), 积分 216, 距离下一级还需 284 积分
一粒金砂(高级), 积分 216, 距离下一级还需 284 积分
回复 5楼 koco12233 的帖子
三极管可以放大电流的么
在线时间1512 小时
威望41496分
芯币45864枚
E金币1196枚
TA的帖子TA的资源
楼主要注意MCU的IO输出能力是有限的,是否能满足驱动LED的要求决定了是否需要采用外部扩流措施,不论是位选还是点阵驱动。限流电阻是针对驱动电路具有超出LED工作电流的输出能力时采取的保护性措施。
在线时间19 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 62, 距离下一级还需 138 积分
一粒金砂(中级), 积分 62, 距离下一级还需 138 积分
回复 6楼 Learner_new 的帖子
可以的。看怎么输出阻抗高 带负载能力是加强的
在线时间39 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
单片机的IO口比喻是家里的小水管,洗洗碗是够用的,如果开家洗车店就需要用外面的粗的大水管,而三极管就是那个大水管上面的一个开关阀门
[ 本帖最后由 boysmo 于
03:28 编辑 ]
在线时间2259 小时
威望10072分
芯币2130枚
E金币350枚
TA的帖子TA的资源
数码管的位选能不接三极管直接接IO口吗?为什么?
答:也可但不会亮的,因为电流太弱
点阵可不可以不接芯片,直接用三极管驱动?为什么?
答:不可以因为得时序问题
点阵可不可以直接接IO口?为什么?
请各位大大教教小白。
那还有一个问题就是接电阻的作用是限流,但是限流不就让电流更小了吗?那不就不会亮了吗?那为什么还要接电阻?
答:为了保护单片机,至于亮不亮楼主找个差不多点的电阻配合好就行
在线时间1346 小时
威望6220分
芯币20355枚
E金币300枚
TA的帖子TA的资源
led的串联限流电阻的原因是:led本身的工艺有差异,工作电压可能不太一致。
比如标定1.2V的led可能有的实际工作在1.19V,这多余的0.01V会造成电流急剧增大,即使短时间可能不会有问题,但时间长了会影响寿命。另一个原因要考虑电源电压的微小波动。
在线时间1346 小时
威望6220分
芯币20355枚
E金币300枚
TA的帖子TA的资源
一切都要按手册来,即使是一个小小的led!
在线时间2 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 30, 距离下一级还需 170 积分
一粒金砂(中级), 积分 30, 距离下一级还需 170 积分
回复 楼主 koco12233 的帖子
都和IO口的驱动能力有关,同时也要考虑对IO的保护。
在线时间13 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
数码管的位选能不接三极管直接接IO口吗?为什么?
-----可以,只是亮度不会太高
点阵可不可以不接芯片,直接用三极管驱动?为什么?
-----不可以,IO口也不可能全用来显示呀,就算是也可能不够
点阵可不可以直接接IO口?为什么?
-----点陈直接用I,也没那么多呀,
请各位大大教教小白。
那还有一个问题就是接电阻的作用是限流,但是限流不就让电流更小了吗?那不就不会亮了吗?那为什么还要接电阻?
------限流分压,LED上亮时的电压不能直接接输出,会烧IO的
在线时间1307 小时
威望42346分
芯币11410枚
TA的帖子TA的资源
裸片初长成(高级), 积分 42346, 距离下一级还需 7654 积分
裸片初长成(高级), 积分 42346, 距离下一级还需 7654 积分
14楼辛苦啦。我又学会不少知识!
在线时间62 小时
TA的帖子TA的资源
纯净的硅(初级), 积分 713, 距离下一级还需 87 积分
纯净的硅(初级), 积分 713, 距离下一级还需 87 积分
路过 学习了
在线时间3 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 20, 距离下一级还需 180 积分
一粒金砂(中级), 积分 20, 距离下一级还需 180 积分
lz还是回去多学学模拟电路吧。这样学起来轻松很多
在线时间9 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 50, 距离下一级还需 150 积分
一粒金砂(中级), 积分 50, 距离下一级还需 150 积分
回复 5楼 koco12233 的帖子
那是 限制流回单片机的电流,限流电阻都是一端接VCC,一端接单片机。单片机输出高电平时候 可以增加带负载能力,输出低电平时候,防止大量电流流入单片机
技术导师勋章
论坛威望大于30000或网友提名:坛子里公认的技术导师
荣誉会员勋章
曾经的版主且威望大于2000,或对EEWORLD论坛有突出贡献的坛友
论坛测评队员
Powered by
逛了这许久,何不进去瞧瞧?单片机学习(15)
单片机数码管重影和闪烁
在进行数码管动态扫描时,经常出现相邻LED某些段位微亮的重影。
产生重影的原因:
由于数码管是由发光管组成的,发光管是有反应时间的,太快就会因为发光管没有来的急放电就要显示下一状态,两种状态叠加显示,就成了重影。’
其实LED的响应时间在纳秒级,相当快。但是人的眼睛有视觉滞留的特点,所以当你扫描时间太短的时候,某一个段码已经由亮转为暗,但是人的眼睛还没有反应过来,还以为它是亮的,接着下一个段码就被点亮了,所以就出现了重影现象。如果用高速的摄像机拍摄下来,仔细分析每一帧,是会发现LED段码的确按照你的要求在亮或者灭,只是停留时间较短而已。
解决重影的办法:
<span style="color:#.显示前先将所有数码管熄灭,然后再显示。
2.除了显示数码外,其他时间都是熄灭的。
3.检查是否存在交替显示不同数字。
4.扫描速度要足够快。
如果数码段选端连接P0,则共阴极数码管消除重影为:
#define SEGPORT P0
sbit bit_select = P2^0;
sbit seg_select = P2^1;
SEGPORT = 0;
seg_select = 1;
seg_select = 0;
SEGPORT = 0
bit_select = 1;
bit_select = 0;
如果停留时间太长的话,也就意味着暗的时间太长,人&#30524;没能将亮暗的变化连续起来。就像拍摄电影,如果帧数较少的时候,在激烈动作的时候会出现跳帧。换个例子,就像本来每秒<span style="color:#帧的静态图片可以在人&#30524;中形成连续的画面,你从中间抽取<span style="color:#帧画面,还在一秒内重放这些画面,就会感觉到闪烁。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:15750次
积分:1652
积分:1652
排名:千里之外
原创:146篇
转载:20篇
(17)(12)(6)(30)(29)(31)(21)(4)(23)关于“数码管左移”的问题,新手求助... - 单片机论坛 - 中国电子技术论坛 -
Powered by Discuz! Archiver
い无与伦比ぉ
关于“数码管左移”的问题,新手求助...
#include&reg52.h& //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
sbit LATCH1=P2^6;//定义锁存使能端口 段锁存
sbit LATCH2=P2^7;//& && && && && &位锁存
unsigned char code DuanMa={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};// 显示段码值0~9
unsigned char code WeiMa[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//分别对应相应数码管点亮即位码
unsigned char TempD //存储显示值的全局变量
void Delay(unsigned int t); //函数声明
void Display(unsigned char FirstBit,unsigned char Num);
/*------------------------------------------------& && && && && && &主函数------------------------------------------------*/
unsigned char i,k,j;
while(1)& &
& && && &j++;
& && && &if(j==20)& &
& && && && &
j=0;& && && && && &
if(0==k)& && && && &
{& && && && &
for(s=0;s&8;s++) //完全循环完成后清零所有缓冲区& &
& && && && && && && &
TempData=0
& && && && && &
TempData=DuanMa; //把需要显示的字符依次送缓冲区//& &
TempData=0//不需要显示的区域清零& &
& &i++;& && && && && &
if(i==(8-k))& && && && && && &
{& && && && && && &
if(k==8)& && &
k=0;& && && && && && && &
& && && && && && && && && &
Display(0,8);//从第一位显示,共显示8位
*------------------------------------------------ 延时函数,含有输入参数 unsigned int t,无返回值 unsigned int 是定义无符号整形变量,其值的范围是 0~65535------------------------------------------------*/
void Delay(unsigned int t)
while(--t);
/*------------------------------------------------ 显示函数,用于动态扫描数码管 输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示 如输入0表示从第一个显示。 Num表示需要显示的位数,如需要显示99两位数值则该值输入2------------------------------------------------*/
void Display(unsigned char FirstBit,unsigned char Num)
& && && && && &for(i=0;i&Ni++)
& && && &{
& && &DataPort=0& &//清空数据,防止有交替重影
& && & LATCH1=1;& &//段锁存& &
& && & LATCH1=0;
& && & DataPort=WeiMa; //取位码
& && & LATCH2=1;& &//位锁存
& && & LATCH2=0;
& && & DataPort=TempD //取显示数据,段码
& && &LATCH1=1;& &//段锁存
& && & LATCH1=0;
& && & Delay(200); // 扫描间隙延时,时间太长会闪烁,太短会造成重影& &
以上是标准代码& && && &
TempData=DuanMa; //把需要显示的字符依次送缓冲区//& && && &
TempData=0//不需要显示的区域清零
这两行看得不太明白,i的初始值是0这里TempData=0怎么能实现不需要显示的区域清零?
い无与伦比ぉ
怎么是这种效果??{:10:}
{:soso_e161:}
很凌乱 粘贴的格式不兼容 你修改下
diangongshi
{:soso_e127:}不好意思, 种格式的看不了啊, 直接给你发个流水灯吧.
#include&reg51.h&
#include &intrins.h&
void delayms(unsigned char ms)
// 延时子程序
& && & while(ms--)
& && && && &for(i = 0; i & 120; i++);
& && & unsigned char LED;
& && & LED = 0
& && & P0 = LED;
& && & while(1)
& && && && & delayms(250);& &
& && && && & LED = _crol_(LED,1);//循环右移1位,点亮下一个LED
& && && && & P0 = LED;
额& &眼都花了
是的呵& && && && &嗯
查看完整版本:}

我要回帖

更多关于 淘宝问题求助 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信