龙空技术网

数码管应用开发

正道物联网大讲堂 67

前言:

此时我们对“数码管动态显示实验程序流程图”大概比较着重,咱们都想要剖析一些“数码管动态显示实验程序流程图”的相关文章。那么小编同时在网摘上收集了一些有关“数码管动态显示实验程序流程图””的相关文章,希望兄弟们能喜欢,各位老铁们一起来了解一下吧!

编写静态数码管显示和动态数码管显示程序,编译并下载到单片机中,实现数码管显示效果。数码管,也称作辉光管,是一种可以显示数字和其他信息的电子设备。玻璃管中包括一个金属丝网制成的阳极和多个阴极。大部分数码管阴极的形状为数字。管中充以低压气体。给某一个阴极充电,数码管就会发出颜色光,视乎管内的气体而定。按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。

1、知识基础1.1 理解数码管显示实现原理

共阴数码管电路图,如图1.1所示。

实物如图1.3所示:

1.3 软件设计流程图

数码管的显示方法有两种,分别是静态式和动态式。数码管的显示经过位选后确定要点亮的数码管,在一般的开发板中,为了节约引脚资源,数码管的位选会使用译码器(74LS139)进行,因此,多位的数码管是不能同时点亮的,一次只能点亮一位数码管,这种方法即为数码管的静态显示。然而,我们希望数码管可以同时显示,形成一组数字。为了能实现这种功能,需要使用动态式显示,所谓动态式显示,就是让数码管一位一位显示,因为中间间隔非常短,所以在人的眼中就像是同时显示。

软件设计流程图如下图1.4所示:

2、创建名为【smg_show】项目工程2.1 在桌面上的【Experiment】文件夹下创建名为【Test5】的文件夹,用于存放本次实验的项目文件;2.2 参考实验3的项目创建流程,在桌面上“Experiment/Test5/”路径下创建名为【smg_show】的项目工程;2.3 在桌面上“Experiment/Test5/”路径下新建名为【smg_show.c】的项目文件,并将其添加至项目工程中;3、静态数码管显示。编辑项目文件,实现静态数码管显示效果3.1 编辑【smg_show.c】项目文件,导入头文件并定义单片机引脚

导入头文件,分别定义数码管、39译码器对应的单片机引脚,定义数码管的码段

#include <reg52.h>#include <intrins.h>/************************************************************************ 本地宏定义***********************************************************************/#define DIG_PORT P0 // 共阴极数码管段码经74HC573接P0端口/************************************************************************ 本地全局变量***********************************************************************/sbit gA = P2^4; // 39译码器输入口Asbit gB = P2^5; // 39译码器输入口B// 共阴数码管 0~F 码段unsigned char code gDuanMa[16]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};

注:实验中所有代码的编写,如需复制粘贴代码块代码,需要先自行创在桌面创建一个文本文档,使平台中的文档处于中文输入法模式,再将代码粘贴至文本文档(可自行在桌面创建),若文档中已有内容则直接替换原有内容,然后在复制文本文档中的内容粘贴至开发环境。

输入代码后点击保存按钮,保存程序(如有弹框直接点“是”或“确定”)。

3.2 编辑【smg_show.c】项目文件,编写主函数

编写主函数,通过控制引脚的高低电平在主函数中实现数码管静态显示的功能/********************************************************************** 函 数 名 : main* 函数功能 : 主函数* 参数列表 : 无* 函数输出 : 无*********************************************************************/void main(void){DIG_PORT = 0; //消隐gA = 0;gB = 0;DIG_PORT = gDuanMa[8]; //第一位显示8while (1){} }输入代码后点击保存按钮,保存程序(如有弹框直接点“是”或“确定”)。
4、编译项目程序,生成HEX文件并完成下载4.1 编译项目程序

参考实验3的编译程序步骤,完成生成HEX文件设置,并编译项目文件,得到【smg_show.hex】文件

点击【编译】后,查看软件最下方编译输出框,显示0个错误,0个警告,即为编译成功。编译成功后,在该工程编译输出文件夹中多出一个【smgshow.hex】文件,即为编译生成的HEX文件,工程编译输出文件夹默认为工程文件(smgshow.uvproj)所在的文件夹。如下图所示。

4.2 将【smg_show.hex】文件拷贝至桌面的【Code】文件夹下,然后点击实验环境右侧的【下载】按钮,将文件下载至本地计算机上

参考实验三中下载程序的步骤,找到下载好的【smgshow.hex】文件,打开本地计算机上的51单片机下载工具,点击【打开程序文件】,选择下载好的【smgshow.hex文件】

4.3 点击【下载/编程】,开始下载程序,直到提示【操作成功】,表明程序烧录完成5、静态数码管显示结果验证5.1 将程序下载至开发板后,观察数码管显示状态,数码管将会静态显示一个数字8,实验结果如下图所示6、动态数码管显示。修改【smg_show.c】文件,实现动态数码管显示效果6.1 在已有的【smg_show.c】文件的基础上,在2.1步骤之后定义延时函数,为数码管动态显示提供时间延迟的功能

/***延时函数*****/void delayms(unsigned int x) //延时{unsigned char i;while(x--){for(i = 0; i < 113; i++);}}

输入代码后点击保存按钮,保存程序(如有弹框直接点“是”或“确定”)。

6.2 修改主函数程序,通过控制引脚的高低电平在主函数中实现数码管动态显示的功能

/********************************************************************** 函 数 名 : main* 函数功能 : 主函数* 参数列表 : 无* 函数输出 : 无*********************************************************************/void main(void){int i=0;int j=0;//这4行程序是静态显示,需要将这段程序其注释// DIG_PORT = 0; //消隐// gA = 0;// gB = 0;// DIG_PORT = gDuanMa[8]; //第一位显示8while (1){for(j=0;j<100;j++){// 显示第一位gA = 0;gB = 0;DIG_PORT = gDuanMa[i];delayms(5); // 调用延时程序 延时500ms// 显示第二位gA = 1;gB = 0;DIG_PORT = gDuanMa[i];delayms(5); // 调用延时程序 延时500ms// 显示第三位gA = 0;gB = 1;DIG_PORT = gDuanMa[i];delayms(5); // 调用延时程序 延时500ms// 显示第四位gA = 1;gB = 1;DIG_PORT = gDuanMa[i];delayms(5); // 调用延时程序 延时500ms }i++;if(i==10) //显示0~9{i=0;}} }

输入代码后点击保存按钮,保存程序(如有弹框直接点“是”或“确定”)。

7、再次编译项目程序,生成HEX文件并完成下载8、动态数码管显示结果验证8.1 将程序下载至开发板后,观察数码管显示状态,数码管将会动态显示数字0~9,实验结果如下图所示

标签: #数码管动态显示实验程序流程图 #动态数码管显示程序流程图