zoukankan      html  css  js  c++  java
  • 多位数码管动态显示中的虚影消除

    最近刚做好一个站,基于rails 3,教程为主,大家捧场看看,谢谢!www.yo945.com

    书买的郭天祥的《51单片机C语言教程——入门、提高、开发、拓展全攻略》,看了60来页,书是不错,可是书中用的是他自己弄的板子,得卖近400,我买的100来块,功能一点不比他的少,BS一下~

    由于书上的代码和自己的板子不兼容,所以得自己改了,不过也好,更锻炼人~

    在学习动态显示时,发现有一个问题,数字是正常显示了,但是好几个数字上面,某些不应该亮的地方,有一些微微亮,导致数字显示不是很清楚,代码如下(说明:数码管可以显示8个数字,共阳,P3用于选择亮哪一个,P0用于输出数字):

    #include <reg52.h>
    	
    #define uchar unsigned char
    
    //随手抄来的,虽然我只显示0-7
    uchar code table[] = {
    	0xC0,0xF9,0xA4,0xB0,
    	0x99,0x92,0x82,0xf8,
    	0x80,0x90,0x88,0x83,
    	0xC6,0xA1,0x86,0x8E
    };
    
    uchar i;
    void main()
    {		  
    	P3 = 0xFF; 
    	P0 = 0xFF; 
    	while(1)
    	{		  
    		for(i=0;i<8;i++)
    		{ 
    			//共阳,P3用于选择亮哪一个,P0用于输出数字,不同开发板不一样
    			P3 = 0xFF & (~( 1 << (i%8) ));//选择使用哪一个数码管
    			P0 = table[i];//数码管代码
    		}
    	}
    }

    后来仔细看了代码,才发现书上有延时的代码,也就是设置完成后,延时1到2毫秒,本来以为没什么用,没想到 一加上,效果立杆见影啊,修改后如下:

    #include <reg52.h>
    	
    #define uchar unsigned char
    
    void delay1ms()
    {
    	uchar j;
    	for(j=110;j>0;j--)
    		;
    }		
    
    //随手抄来的,虽然我只显示0-7
    uchar code table[] = {
    	0xC0,0xF9,0xA4,0xB0,
    	0x99,0x92,0x82,0xf8,
    	0x80,0x90,0x88,0x83,
    	0xC6,0xA1,0x86,0x8E
    };
    
    uchar i;
    void main()
    {		  
    	P3 = 0xFF; 
    	P0 = 0xFF; 
    	while(1)
    	{		  
    		for(i=0;i<8;i++)
    		{ 
    			//共阳,P3用于选择亮哪一个,P0用于输出数字,不同开发板不一样
    			P3 = 0xFF & (~( 1 << (i%8) ));//选择使用哪一个数码管
    			P0 = table[i];//数码管代码
    			
    			/************加上延时后,数码管马上变清晰了**************/
    			delay1ms();
    			delay1ms();//试了下,2毫秒效果比较好
    		}
    	}
    }

  • 相关阅读:
    C#调用C++编译的DLL--
    Visual studio 生成后事件说明
    页面缓存
    片段缓存
    数据缓存中的依赖关系
    四十条测试你是不是合格的PHP程序员
    YII的关联查询
    views中的公共代码放在一起
    html中出现的script失效
    Linux配置apache等系列
  • 原文地址:https://www.cnblogs.com/varlxj/p/1646289.html
Copyright © 2011-2022 走看看