数码管显示
来源:互联网 发布:obs点歌软件 编辑:程序博客网 时间:2024/05/21 12:51
一、区分数码管的类别
共阴数码管:即所有数码管的阴极接在一起。要使某个数码管点亮,只需置上高电平,代码中该位置'1'
共阳数码管:即所有数码管的阳极接在一起。要使某个数码管点亮,只需置上低电平,代码中该位置'0'
二、单个数码管显示
a~h:表示单个数码管上面的8个LED。
根据共阴共阳的特性,点亮相应的LED,组成想要的数字(一般由取模软件得到)
如:共阴数码管显示数字'0,即代码中该数码管赋值0x3F (0011 1111)
三、多位数码管显示
1、区分段、位:段指的是单个数码管上的8段LED;位指的是数码管所在的位置
2、存在问题:
a)各个数码管轮流闪烁显示——原因:数码管逐个显示的间隔时间长
b)数码管显示存在乱码残影——原因:数码管显示存在“鬼影”,即没有做消隐处理
四、数码管消隐
对不需要显示的数码管进行关闭操作即可。
五、消除鬼影,残影
1、为什么存在“鬼影”
程序执行代码需要时间,存在瞬态,上一代码数据,会造成下一代码数据的干扰
2、如何消除鬼影
总的来说,就是对端口赋新值时,先清空上一次的数据。
法1)操作段前,先关闭段
//个位DataPort = 0xff;//关闭段DataPort = Data[curNum%10];//设置段,两个段操作之间有其他运算代码,即有时间间隔Location = 0x02;//设置位delay(20);//延时//十位DataPort = 0xff;DataPort = Data[curNum/10];Location = 0x01;delay(20);
法2)操作位前,先关闭位
/*ERRORDataPort = Data[curNum%10];//设置段Location = 0x00;//关闭位Location = 0x02;//设置位,两个位操作没有时间间隔,显示仍然会有残影*///个位DataPort = Data[curNum%10];//设置段Location = 0x02;//设置位delay(20);//延时//十位Location = 0x00;DataPort = Data[curNum/10];Location = 0x01;delay(20);
注意:对段/位的关闭、赋值的操作不能是上下语句关系,必须要有时间间隔
六、连接数码管
1、可以数码管引脚直接与单片机连接,但是对于共阴数码管,因为单片机引脚驱动能力不足,需要外加电源驱动
2、使用74HC573节省I/O口
代码中的位锁存,段锁存(LATCH),其实分别控制两个74HC573的使能端。
哪个使能有效,P0口的数据就往位或者段传送,达到对位和段的分别控制。
0 0
- 数码管显示
- 数码管显示
- 数码管显示
- 数码管显示
- 数码管显示
- 数码管显示
- 数码管动态显示字符
- 定时器数码管显示秒表
- 数码管显示"HELLO!"
- 数码管滚动显示
- 按键控制数码管显示
- 数码管显示键值
- 单片机数码管动态显示
- ds1302 数码管显示 C51
- 按键控制数码管显示
- LED数码管的显示
- 静态数码管显示
- 数码管显示模板
- Volley源码学习——打造网络通信框架
- android解析一个本地txt文件
- 2015 百度之星(资格)1004
- Qt 线程基础(QThread、QtConcurrent等)
- jsp include标签使用
- 数码管显示
- 最长公共子序列问题—水水的Dp
- 【MFC】程序框架及基础知识
- Elasticsearch安装中文分词插件ik
- 简单的DatePicker样式设置
- POJ1273 Drainage Ditches(最大流)
- 第十一周项目二 储藏班长信息的学生类(1)
- style和theme:一组属性值
- PHP单例模式