单片机中动态数码管闪烁问题
以51单片机为例,数码管动态显示如何让某一位数值闪烁,考虑到有新人不一定能熟练运用定时器和中断,这里提供两种简单的思路。
本次示例中让数码管某一位亮起的函数为 XianShi(数码管位置,显示的字符)。
1.利用if语句让需要闪烁的一位先显示一段时间(或次数),再让其显示“空”一段时间。
数码管是不能同时显示多位字符的,我们可以先让某一位显示,再让其显示空字符,其他位置的数码管不变,利用main函数的刷新原理和人眼的视觉暂留就可以实现闪烁,本次示例均令第一位数码管闪烁,示例代码如下:
unsigned char HaoMa[]={1,2,3,4,5,6,7,8};//需要显示的数组
void main()
{ unsigned char a=0,b=0,i;while(1){if(a<100) {for(i=1;i<9;i++){XianShi(i,HaoMa[i-1]);}a++;} //一开始全部显示,每显示一次a加1,当显示100次(a等于100)时,跳出此循环if(a==100){XianShi(1,0x00); //第一位显示空for(i=2;i<9;i++){XianShi(i,Hao[i-1]);} //其余位正常显示b++;if(b==100) {a=0;}} //a等于100时,让第一位显示空(0x00),其余位置正常显示。每显示一次b加1,当显示100次(b=100)时,让a=0,跳出此循环}
}
这样,先正常显示100次,再让闪烁位显示空100次,再利用主函数刷新原理即可实现某一位或多位闪烁。
2.利用while嵌套循环(需注意重复赋值)
另一种思路是利用while循环,这样做能使代码更简洁,但容易出错,读者在编写程序时需注意,示例代码如下:
unsigned char HaoMa[]={1,2,3,4,5,6,7,8};
unsigned char a;
void main()
{ while(1){a=200;for(i=1;i<9;i++){XianShi(i,HaoMa[i-1]); //所有位正常显示}while(a--) //闪烁的时间是a自减到0的时间 {XianShi(1,0x00); //第一位显示空for(i=2;i<9;i++){XianShi(i,HaoMa[i-1]); //其余位正常显示}}}
此代码在嵌套循环结束时变量a=0,因此需要在主函数while循环时,要将a变量赋初值,这里测试时150-250比较合适,读者可自行尝试其他数值。
以上两个代码均可移至中断函数中,利用这两种思路也可实现多位动态显示闪烁,有兴趣的读者可自行尝试。
单片机中动态数码管闪烁问题相关推荐
- 51单片机入门——动态数码管显示详解
51单片机:动态数码管显示 - 模块图 - 显示原理 – 消抖 静态数码管技术 + 人眼视觉停留 显示原理类似于以前的 胶片机放影视,也就是只要我切换的速度足够快你就看不出来其实我是一次次显示的(滑稽 ...
- 单片机入门——动态数码管显示
前言 在实际应用中通常都需要显示多位数值,如果采用静态数码管显示就不够好,因此就需要采用另外一种显示方式,即数码管动态显示.开发板上板载2 个四位一体的共阴数码管,接下来我们就来介绍下如何使用51 单 ...
- 51单片机:动态数码管
51单片机:动态数码管 目录 51单片机:动态数码管 一.显示原理 1.简介 2.静态显示与动态显示 二.原件使用 1. 74HC138芯片 2. 74HC245芯片 三.硬件连接 四.程序设计 五. ...
- 51单片机静态动态数码管显示
51单片机静态动态数码管显示 通过此实训了解动态数码管的显示原理,掌握编码方法.共阴极和其阴极数码管的不同之处及常用设计方法. 实训设备 这里使用的377锁存器模块控制的数码管下面就是电路图 显示内容 ...
- 51单片机之动态数码管
51单片机实现动态数码管 单片机型号:AT89C51 数码管型号:7SEG-MPX6-CC 我使用定时器作为计算时间,请看下列代码 #include <REGX51.H> #define ...
- 蓝桥杯单片机(四)动态数码管
如果你对开发板原理图上译码器和锁存器和还有与非门连接的电路还不够了解,那么请看: 蓝桥杯单片机(一)流水灯 首先我们分析数码管依旧从原理图开始: 蓝桥杯单片机开发板上一共有8根数码管,与上图一一对应, ...
- 51单片机c语言显示hello,51单片机控制动态数码管显示12345和HELLO字样的设
1.实验任务 如图4.13.1所示,P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,P1.7接一个开关,当开关接高电平时,显示"12345"字样:当开关接低电平 ...
- 51单片机控制动态数码管的显示
动态数码管的显示 学会设计静态数码管的显示后,我们可以在各个静态数码管显示之间加入延时函数,写进while(1)循环内,这样就能实现动态数码管的显示.根据以前的内容,我们先生成延时函数,然后写一个简单 ...
- 复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)
本章所要实现的功能是:控制动态数码管从左至右显示数字 0-7.学习本章可以参考 前面的实验章节内容.本章分为如下几部分内容: 1 数码管介绍 2 74HC245 和 74HC138 芯片介绍 3 硬件 ...
最新文章
- 国人如此浮躁为哪般? --- 我看2018年度AI圈八大造假事件华人独占6件
- FM的调制matlab仿真
- Ubuntu没有chkconfig服务解决办法
- 你一定会用的18个linux网络监控工具
- 值得一用的Windows软件
- 信息学奥赛C++语言: 绝对素数
- JS把命令式语句转换为表达式
- VUE使用Stylus插件
- 软件中Undo(撤回)和Redo(重做)的实现
- 【工业机器人】全球工业机器人详细产业链梳理!
- bootstrap之文字排版
- 局域网共享文件搭建方法
- gvim 换行符替换
- Containerd镜像lazy-pulling「详细解读 」
- 支付宝SDK集成服务端(java)
- 分布式框架DSF的搭建
- UDT 最新源码分析(二) -- 开始与终止
- Android打包混淆压缩
- fastapi python_fastapi安装及访问页面
- 开源的麦克纳姆轮全向移动机器人套件
热门文章
- ibm服务器卡在开机界面_使用HTTPS配置IBM Integration Bus Web用户界面
- 智慧校园:校务助手微信小程序端源码
- 平生事,此时凝睇,谁会凭栏意!(4)
- win7安装网络打印机显示windows无法连接到打印机,出现错误0x00000bcb
- iOS下载APP之后直接跳转到信任界面
- 人人皆可二次元!小姐姐生成不同风格动漫形象,肤色、发型皆可变
- 使用Trove的integration定制化trove镜像
- 基于QT-QGraphicsView的网络拓扑图
- 60秒Dapp快讯 | 全球公有链技术评估:以太坊在应用性上排第一;蚂蚁金服区块链试水医疗电子票据
- Linux学习(CentOS-7)---Linux开机流程