历史上的今天
今天是:2025年04月04日(星期五)
2020年04月04日 | 51单片机之动态数码管的实现
2020-04-04 来源:eefocus
1.为什么是动态的?
1.采用了发光管的余晖和人眼的视觉暂留效应,使人看到好像各位数码管都在同时显示
2.特点:
1.同样是利用了138译码器对高低电平进行操作
2. 动态显示将所有的数码管的段选线并联,采用循环的方式对每一位进行操作
3.关于138译码器
输出高低电频是有着一定规律的
如果是110(LSA,LSB,LSC),则为L3为低电平;(反向二进制)
同时,要注意看真值表(X为任意值,L为低电平,H为高电平)

4.关于怎样实现动态的具体操作
1.使用数组来时数码管实现输出数字
2.使用for循环来时函数进行循环操作
3.使用switch case函数实现不同字段的选择
4.同时使用delay()函数和最后对P0值刷新进行消影处理
#include typedef unsigned char u8; typedef unsigned int u16; //138译码器 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; u8 code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //书写子函数 void delay(u16 i) { while(i--); } void Digdisplay() //显示0到7 { u8 i; for(i=0;i<8;i++) { switch(i) { case 0: LSA=0;LSB=0;LSC=0;break; case 1: LSA=1;LSB=0;LSC=0;break; case 2: LSA=0;LSB=1;LSC=0;break; case 3: LSA=1;LSB=1;LSC=0;break; case 4: LSA=0;LSB=0;LSC=1;break; case 5: LSA=1;LSB=0;LSC=1;break; case 6: LSA=0;LSB=1;LSC=1;break; case 7: LSA=1;LSB=1;LSC=1;break; } //发送字码 P0=smgduan[i]; //延时 delay(100); //进行消影处理,防止重影 P0=0X00; } } void main() { while(1) { Digdisplay(); } }
上一篇:51单片机的静态数码管
史海拾趣
|
3. 应用例子: 目前吉时利已经将上面所介绍的设计方法成功应用于其最新的S600DC/RF APT系统中,用于实现过程监控。其关键的性能指标包括: 基于吉时利S600 APT带固态转换开关的直流测试系统以及Anritsu VNA技术,高速的射频测量能力实现了1KHz的 ...… 查看全部问答> |
|
全国赛快到了,实验室老师让我画一批板子培训用,我果断用了811,晒图啊。。。有不足的地方欢迎大家提意见啊。就是下载器比较头疼啊,Jlink80一个,11个下载器就得九百啊。。。。soso姐送块811板子吧,我们山寨一下Mlink吧再附上LCD液晶屏的电路 [ ...… 查看全部问答> |
|
2530 + 2591,最大电流是多大? 看资料2530的输出电流是30mA,2591是100mA,而我测的只有30mA。 这是怎么一回事呢… 查看全部问答> |




