单片机 数码管显示模块怎么确定极性数码管显示模块怎么确定极性极性与编码不一致

进入手机店铺
深圳市长圣电子有限公司
咨询电话SERVICE LINE
您所在的位置:&&&&&&&&&
进入手机店铺
邹先生女士(联系我时,请说明是在捷配仪器仪表网看到的,谢谢)
— 买家还在看 —
进入手机店铺
深圳市长圣电子有限公司
联系人:邹先生女士手机:传真:1所在地:广东省
深圳市类型:工厂地址:深圳市福田区华强北都会100大厦B座19Q
提示:您在捷配仪器仪表网上采购商品属于商业贸易行为。以上所展示的信息由卖家自行提供,内容的真实性、准确性和合法性由发布卖家负责,请意识到互联网交易中的风险是客观存在的。 请广大采购商认准带有捷配仪器仪表网认证的(金牌会员、VIP会员、至尊VIP会员、百维通)供应商进行采购!
进入手机店铺【图文】数码管LED常用接口电路_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数码管LED常用接口电路
阅读已结束,下载本文到电脑
想免费下载本文?
登录百度文库,专享文档复制特权,积分每天免费拿!
你可能喜欢自学单片机学到中断部分,用数码管动态显示刷新频率高的时候会有重影,为了消除重影我查找了网上很多资料,好多错的。
看看原理图:
百度百科:& &
-----------------------------------------------------------------------------------------------------------
74HC573是拥有八路输出的透明,输出为三态门,是一种高性能硅栅器件。
SL74HC573跟LS/AL573的管脚一样。器件的输入是和标准输出兼容的,加上拉电阻他们能和LS/ALSTTL输出兼容。
-----------------------------------------------------------------------------------------------------------
数码管动态显示接口是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------
由上面可以知道,数码管要显示得位码和段码都分别赋值(赋值前选通控制打开,赋值后选通关闭)才行,位码或段码赋值完成数值立即被锁存,只要不重新给位码或段码赋值则锁存的值不变。(注意,给锁存器赋值的是P0端口,只要不给P0重新赋值,则P0的值也不变)所以:
通常是 &(1)清除位码 → (2)给锁存器赋下一位要显示的段码(字形码),开通段选,关闭段选 → (3)给锁存器赋下一位要显示的位码(位置码),开通位选,关闭位选
= <span style="color: #xff;//消除重影,关闭所有位选
wela = <span style="color: #;
wela = <span style="color: #;
= digitron_table[shi];//调用八段数码管代码表
dula = <span style="color: #;
dula = <span style="color: #;
= <span style="color: #xbf;
wela = <span style="color: #;
wela = <span style="color: #;
<span style="color: #
delay(<span style="color: #);
<span style="color: #
<span style="color: #
= <span style="color: #xff;//消除重影
<span style="color: #
wela = <span style="color: #;
<span style="color: #
wela = <span style="color: #;
<span style="color: #
= digitron_table[ge];//调用八段数码管代码表
<span style="color: #
dula = <span style="color: #;
<span style="color: #
dula = <span style="color: #;
<span style="color: #
= <span style="color: #x7f;
<span style="color: #
wela = <span style="color: #;
<span style="color: #
wela = <span style="color: #;
<span style="color: #
delay(<span style="color: #);
也可以 &(1)清除段码 → (2)给锁存器赋下一位要显示的位码(位置码),开通位选,关闭位选&→ (3)给锁存器赋下一位要显示的段码(字形码),开通段选,关闭段选
= <span style="color: #x00;//消除重影,关闭段选
dula = <span style="color: #;
dula = <span style="color: #;
= <span style="color: #xbf;
wela = <span style="color: #;
wela = <span style="color: #;
= digitron_table[shi];//调用八段数码管代码表
dula = <span style="color: #;
dula = <span style="color: #;
<span style="color: #
delay(<span style="color: #);
<span style="color: #
<span style="color: #
= <span style="color: #x00;//消除重影
<span style="color: #
dula = <span style="color: #;
<span style="color: #
dula = <span style="color: #;
<span style="color: #
= <span style="color: #x7f;
<span style="color: #
wela = <span style="color: #;
<span style="color: #
wela = <span style="color: #;
<span style="color: #
= digitron_table[ge];//调用八段数码管代码表
<span style="color: #
dula = <span style="color: #;
<span style="color: #
dula = <span style="color: #;
<span style="color: #
delay(<span style="color: #);
这样,不论多快的刷新频率都不会有重影。
--------------------------------------------------------------------------------------
完整代码:
1 //使用定时器1中断让8个LED循环右移,间隔500ms,同时使用定时器0中断方式让数码管前2位间隔1000ms从0显示到60,
2 //如果有外部中断产生则停止数码管走数(外部中断0低电平触发方式)
4 #include &reg52.h&
5 #include &intrins.h&
7 //宏定义,方便书写
8 #define uchar unsigned char
9 #define uint unsigned int
11 sbit dula = P2^<span style="color: #;
12 sbit wela = P2^<span style="color: #;
13 uchar counter_s;
15 //子函数声明
16 void interrupt_timer_init();
17 void display(uchar i);
18 void delay(uint z);
20 //八段数码管代码表
21 uchar code digitron_table[] = {//LED单元 dp g f e
<span style="color: #x3F,
<span style="color: #x06,
<span style="color: #x5B,
<span style="color: #x4F,
<span style="color: #x66,
<span style="color: #x6D,
<span style="color: #x7D,
<span style="color: #x07,
<span style="color: #x7F,
<span style="color: #x6F,
<span style="color: #x77,
<span style="color: #x7C,
<span style="color: #x39,
<span style="color: #x5E,
<span style="color: #x79,
<span style="color: #x71,
<span style="color: #x76,
<span style="color: #x38,
<span style="color: #x37,
* * * * * dp * *
<span style="color: #x3E,
<span style="color: #x73,
<span style="color: #x5C,
<span style="color: #x40,
<span style="color: #x00,
<span style="color: #x00
49 //主函数部分
50 void main()
interrupt_timer_init();
while (<span style="color: #) {
display(counter_s);
58 //中断服务特殊功能寄存器配置和定时器初始化
59 void interrupt_timer_init()
TMOD = <span style="color: #x11;//定时方式工作模式0和1,工作模式寄存器TMOD的地址是0x89,不能被8整除,只能对字节操作,不能位操作
= <span style="color: #x4c;//公式:定时时间t = (2^16 - T1初值) * 振荡周期 * 12
(振荡周期 * 12 即机器周期)
= <span style="color: #x4c;
= <span style="color: #x00;//T1 = 2^16 - t *
(此定时时间为 50ms, T1 = 19456 = 0x4c00)
= <span style="color: #x00;
= <span style="color: #;
//定时器运行控制位置1,TCON的地址是0x88,可以对位操作
= <span style="color: #;
= <span style="color: #; //定时器/计数器T1的溢出中断允许位置1,允许T1中断, 中断允许寄存器IE(A8H)
= <span style="color: #;
= <span style="color: #;
= <span style="color: #;
= <span style="color: #; //中断允许总控制位置1,CPU开放中断, 中断允许寄存器IE(A8H)
P1 = <span style="color: #x7f;
77 void interrupt_program_INT0() interrupt <span style="color: # //(1)中断函数无返回值,会破坏栈 (2)不能向ISR传递参数,会破坏栈 (3)ISR应该尽可能的短小精悍 (4)中断函数不能被调用,硬件决定
TR0 = <span style="color: #;
82 //T1中断服务程序
83 void interrupt_program_T1() interrupt <span style="color: #
counter++;
= <span style="color: #x4c;
= <span style="color: #x00;
if (counter == <span style="color: #) {
P1 = _cror_(P1, <span style="color: #);
counter = <span style="color: #;
95 //T0中断服务程序
96 void interrupt_program_T0() interrupt <span style="color: #
uchar counter_
counter_ms++;
<span style="color: #0
= <span style="color: #x4c;
<span style="color: #1
= <span style="color: #x00;
<span style="color: #2
if (counter_ms == <span style="color: #) {
<span style="color: #3
counter_ms = <span style="color: #;
<span style="color: #4
counter_s++;
<span style="color: #5
if (counter_s == <span style="color: #) {
<span style="color: #6
counter_s = <span style="color: #;
<span style="color: #7
<span style="color: #8
<span style="color: #9 }
<span style="color: #0
<span style="color: #1 //延时函数
<span style="color: #2 void delay(uint z)
<span style="color: #3 {
<span style="color: #4
<span style="color: #5
for (x = <span style="color: #; x & x++)
<span style="color: #6
for (y = <span style="color: #; y & <span style="color: #4; y++);
<span style="color: #7 }
<span style="color: #8
<span style="color: #9 //数码管显示函数
<span style="color: #0 void display(uchar i)
<span style="color: #1 {
<span style="color: #2
uchar shi,
<span style="color: #3
shi = i / <span style="color: #;//求模
<span style="color: #4
ge = i % <span style="color: #;//求余
<span style="color: #5 //实际产品中,(1)关所有位选→(2)输出下一位要显示的段码→(3)开通下一位要显示的位选
<span style="color: #6 //其实也可以,(1)关所有段码→(2)开通下一位要显示的位选→(3)输出下一位要显示的段码
<span style="color: #7
= <span style="color: #x00;//消除重影,关闭段选
<span style="color: #8
dula = <span style="color: #;
<span style="color: #9
dula = <span style="color: #;
<span style="color: #0
= <span style="color: #xbf;
<span style="color: #1
wela = <span style="color: #;
<span style="color: #2
wela = <span style="color: #;
<span style="color: #3
= digitron_table[shi];//调用八段数码管代码表
<span style="color: #4
dula = <span style="color: #;
<span style="color: #5
dula = <span style="color: #;
<span style="color: #6
delay(<span style="color: #);
<span style="color: #7
<span style="color: #8
= <span style="color: #x00;//消除重影
<span style="color: #9
dula = <span style="color: #;
<span style="color: #0
dula = <span style="color: #;
<span style="color: #1
= <span style="color: #x7f;
<span style="color: #2
wela = <span style="color: #;
<span style="color: #3
wela = <span style="color: #;
<span style="color: #4
= digitron_table[ge];//调用八段数码管代码表
<span style="color: #5
dula = <span style="color: #;
<span style="color: #6
dula = <span style="color: #;
<span style="color: #7
delay(<span style="color: #);
<span style="color: #8
<span style="color: #9 /*
<span style="color: #0
= 0//消除重影,关闭所有位选
<span style="color: #1
<span style="color: #2
<span style="color: #3
= digitron_table[shi];//调用八段数码管代码表
<span style="color: #4
<span style="color: #5
<span style="color: #6
<span style="color: #7
<span style="color: #8
<span style="color: #9
<span style="color: #0
<span style="color: #1
= 0//消除重影
<span style="color: #2
<span style="color: #3
<span style="color: #4
= digitron_table[ge];//调用八段数码管代码表
<span style="color: #5
<span style="color: #6
<span style="color: #7
<span style="color: #8
<span style="color: #9
<span style="color: #0
<span style="color: #1 */
<span style="color: #2 }
如有错误还请指出,如有侵权还请告知,如需转载请注明出处! & & & & & & & & & & & & & & & & & & & & & & &
本人博客:
阅读(...) 评论()LED数码管显示矩阵键盘按键的设计_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
LED数码管显示矩阵键盘按键的设计
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢单片机3数码管显示功能的实现_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
单片机3数码管显示功能的实现
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
&#xe64e;加入VIP
还剩4页未读,
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 单片机与plc的区别 的文章

更多推荐

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

点击添加站长微信