求用51单片机接两个数码管,0-99动态显示程序(用C语言)
这是一个使用微控制器5 1 驱动两个数字管道并获得0-9 9 的动态视图的示例程序。该程序定义了数字管的DSY_CODE DASY_CODE CODY,并通过延迟延迟延迟实现显示效果。
在主要主函数中,显示0到9 9 之间的数字用于循环。
特定代码如下:#Incluber#defineucharunsigncha#defineuintunsneduchardsy_code [] = {0x3 f,0x06 .0x5 b,0x4 f,0x6 6 .0x6 d,0x7 d,0x7 d,0x07 .0x7 f,0x7 f,0x6 f,0x6 f}; ; 我<1 2 0; i ++);} voidmain(){uchari; p0 = 0x00; p2 = 0x00; 而(1 ){for(i = 0; i <= 9 9 ; i ++){p0 = dsy_code [i/1 0]; p2 = dsy_code [i%1 0]; 延迟(1 00); 启动循环,通过循环观察0-9 9 之间的数字。
每次显示一个数字时,延迟将需要延迟功能才能获得动态显示效果。
应当指出,必须将5 1 个微控制P0端口连接到上拉电阻,否则信号可能不稳定。
您可以在开发环境中复制上面的代码以填写和执行它,以确保程序正常工作。
在数码管上动态显示数字
从内存变量开始的值为5 ,数字在接口设备操作框中的两个数字管上动态显示,即5 5 -6 6 -7 7 -7 7 -8 8 -9 9 -00-。。
。
。
。
用单片机控制2位数码管,不用锁存器能显示动态扫描码?比如说从0到99。 如果能程序怎么写?
编写一个程序以使用微控制器来控制2 位数字管以显示动态扫描代码,从0到9 9 ,它甚至在开放中也无法正常工作。这是一个简单的示例程序:它不是第一个定义数字段段的数组:chandcodeduanxan [] = {0x3 f,0x06 ,05 b,0x4 f,0x6 6 ,06 d,0x6 6 ,06 d,0x4 f,0x4 f,0x6 6 .0x6 6 .0x6 d variables:0x6 6 .0x6 d变量:: Chari,J X; inty; 延迟的定义:vacanyanshi(charshu){with(shu -1 1 0,x ++变量,vougmain(){y =(3 0); while(y,1 ,1 ,1 ,//如果数字管道使用了通用集合1 .p0 = duanxuan [i]:yanshi(5 ); p0 = 0x00;} =}}}该程序使用动态扫描技术通过控制状态P2 1 和P2 0 PIS将数字管切换为5 毫秒。
我希望这个示例会有所帮助。
设置。
如果使用P2 1 的通用阴极数字管,则必须保持低电影。
为什么数码管一般采用动态显示
动态显示技术(也称为扫描显示)旨在减少所需的IO端口数量。例如,例如,8 *8 矩阵只需要1 6 个IO端口才能运行8 个7 个段数字管,包括7 个片段和小数点。
如果未使用扫描技术,则需要6 4 个IO端口才能运行相同的数字管。
这显然是不现实的。
具体而言,动态显示的操作原理依次揭示了多个数字管,并以非常快速的速度启用每个,从而为人们提供幻想,同时同时显示所有数字管。
例如,要在八个数字试管上显示数字,您可以显示第一个数字管,显示数字,然后快速关闭,揭示第二个数字管,显示不同的数字并在此周期中重复。
由于人眼的视觉维护,您可以同时看到所有数字管上显示的数字。
该技术不仅降低了硬件成本,而且还提高了系统灵活性。
通过合理地使用动态显示技术,对微控制器IO端口的需求可以有效地减少,这对于资源有限的嵌入式系统尤为重要。
此外,动态显示可以通过编程(例如滚动显示和闪烁效果)实现各种复杂的显示效果。
但是,动态显示具有局限性。
您需要快速切换,因此您对系统响应速度的需求会增加。
如果显示频率不够高,则可以眨眼或中断。
此外,动态显示的实施通常需要特定的编程技术,并且可能需要更多时间来理解和掌握初学者。
然而,在许多领域,尤其是资源有限的应用程序中,动态显示技术仍然是一种非常实用和有效的方法。
优化的设计和合理的编程使您能够最大程度地利用自己的优势并实现高效且灵活的数字显示效果。