共阴极7段数码管显示C程序
以下是对原文的重写,保持了原意但调整了语气和表述方式:以下为单片机7 段数码管动态显示程序的相关代码及说明:c include
unsigned char dis_digit; // dis_digit用于位选通,通过P2 口输出,以激活特定数码管,例如,设置为0xFE时,将激活P2 .0口的数码管 unsigned char dis_code[1 1 ] = {0xc0, 0xf9 , 0xa4 , 0xb0}; // 数码管编码数组,对应数字0至3 的显示
补充说明:数码管的驱动方式分为直流驱动和动态显示驱动。
直流驱动是通过单片机的I/O端口直接驱动每个数码管的段码,或利用BCD码二-十进制译码器进行驱动。
其编程简便,显示亮度较高,但缺点是会占用较多的I/O端口。
动态显示驱动则通过分时轮流控制数码管的COM端,实现各数码管的轮流显示。
所有数码管的8 个显示笔划(a, b, c, d, e, f, g, dp)同名端连接在一起,并为每个数码管增加独立的位选通控制电路,通过I/O线进行控制。
单片机输出字形码时,所有数码管都会接收到相同的码,而哪个数码管会显示字形,则由单片机对位选通COM端电路的控制决定。
只需开启需显示数码管的选通控制,相应位就会显示字形,未被选通的数码管则保持熄灭。
详情可参考百度百科关于七段数码管的介绍。
用单片机实现一位数码管循环显示‘0-1-2-3-4-5-6-7-8-9-0’,当按一个按键后就停止循环,只显示一个数字
用单片机搞定一位数码管从0到9 的循环显示,这事儿其实挺简单的,靠写程序就行。说白了,就是让数码管这么显示:0-1 -2 -3 -4 -5 -6 -7 -8 -9 ,然后回到0,再接着这么循环。
具体咋弄,我给你捋捋:
第一步,得把数码管跟单片机连对。
数码管一般有8 个脚,7 个负责点亮不同的段来显示数字,还有1 个公共端。
连的时候,得保证每个脚都接对了,别搞混了。
第二步,开始写程序。
这里可以用个循环,一个接一个地显示0到9 显示每个数字的时候,就得点亮对应的段。
比如要显示0,就得点亮a、b、c、d、e、f这些段;要显示1 ,就点亮b和c。
明白吧?
为了让数码管循环显示,你可以用一个计数器,比如叫它i。
这个i从0开始,每次循环就加1 ,然后根据i的值来更新数码管显示的数字。
当i加到1 0的时候,让它重新变回0,然后继续循环。
另外,你还想加个按键,让循环能随时停下来。
没问题,你在程序里加个按键检测的代码就行。
当检测到按键被按下去的时候,循环就停了,数码管就显示当前那个数字。
具体怎么实现呢?简单,把那个按键的引脚设成输入模式,然后读取它的状态。
要是状态是低电平,就说明按键被按了,这时候你就停止循环,数码管就显示当前的数字。
最后,还得注意数码管的刷新频率。
要是刷新太慢,数码管就会一闪一闪的,看着不舒服。
所以,刷新频率最好高于1 000Hz,这样显示效果就会很流畅。
好了,以上就是用单片机实现一位数码管循环显示0-1 -9 ,并且能按按键停止的方法。
只要把数码管的脚接对,然后写好程序,这个功能就轻松实现了。
求救啊!单片机AT89C51 8位8段LED数码管(共阴)动态显示0到7
驱动8 位8 段数码管其实挺简单的,不管它是共阴还是共阳的型号。实现动态显示的话,可以这样操作:每次只点亮一个数码管,向它发送需要显示的数据,然后关闭这个数码管,接着点亮下一个,发送数据,这样循环下去,每个数码管都能轮流显示数据。
如果还有不明白的地方,随时可以再问我。