理论教育 C51单片机数码管动态显示

C51单片机数码管动态显示

时间:2023-11-25 理论教育 版权反馈
【摘要】:◇任务要求◇掌握数码管动态显示方法,并在模块上显示01234567。图3-3数码管动态显示仿真电路图三、74LS377芯片介绍74LS377是8D锁存器,其引脚如图3-4所示。我们再把亮点时间缩短至1ms,编译下载,这时8个数码管非常稳定﹑清晰地显示着数字“01234567”。这段程序可以使数码管清晰地进行显示,非常重要。六、数码管动态显示参考程序Keil C51的数据结构1.标识符标识符就是编程时使用的表示某个事件名称的符号,如函数名﹑变量名﹑引脚名﹑特殊功能寄存器名等。

C51单片机数码管动态显示

◇任务要求◇

掌握数码管动态显示方法,并在模块上显示01234567。

◇任务准备◇

一、掌握动态显示工作原理

所谓动态扫描显示,即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉的暂留作用,使人感觉好像各位数码管同时都在显示,而实际上多位数码管是一位一位轮流显示的,只是轮流显示的速度非常快,人眼无法分辨出来。

二、设计仿真电路图

数码管动态显示仿真电路如图3-3所示。

图3-3 数码管动态显示仿真电路图

三、74LS377芯片介绍

74LS377是8D锁存器,其引脚如图3-4所示。在74LS377片选CE端为低电平时,选中该芯片,在CP为上升沿时能把输入信号锁入芯片中。

图3-4 74LS377芯片引脚

74LS377真值表如表3-10所示。

表3-10 74LS377的真值表

四、数组的概念

在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类型数据元素的集合称为数组。在C语言中,数组属于构造数据类型。

数组可分为一维数组﹑二维数组﹑字符数组及字符串。

本书中我们仅对程序中可能用到的一维数组进行介绍。

1.一维数组的定义

定义:数组是有序数据(必须是相同的数据类型结构)的集合。

格式:类型说明符 数组名[常量表达式]

例如:int a[10]表示数组名为a,有10个元素,并且每个元素的类型都是int型的。

2.一维数组元素的初始化

一维数组有下列初始化方法:

(1)在定义数组时,对数组元素赋初值。

例如,in a[10]={0,1,2,3,4,5,6,7,8,9},等价于a[0]=0,a[1]=1,…a[9]=9。

(2)可以只给一部分元素赋初值。

例如,int a[10]={0,1,2,3,4},表示只给数组的前5个元素赋初值,后5个元素的值,系统自动默认为0。

(3)在对全部数组元素赋初值时,可以不指定数组长度

例如,int a[5]={0,1,2,3,4},可以改写为int a[]={0,1,2,3,4};但是,int a[10]={0,1,2,3,4},不能改写为int a[]={0,1,2,3,4};

3.一维数组的引用

数组必须先定义﹑后使用。C语言规定,只能逐个引用数组元素,而不能一次引用整个数组。数组的引用形式为:数组名[下标]。

其中,下标可以是整型常量也可以是整型表达式,例如,led=a[2]。

五、动态显示程序设计方案

通过P0,WR,CS1控制段码锁存器,通过P0,WR,CS2控制位码锁存器,按照题目要求,每显示一位数字需要送入一位段码和相应的位码,要显示8个数字,上述步骤要重复8次,每次显示完成后要有延时。编译代码,下载程序后观察,上面的代码实现了题目的要求,但还没有体现出动态显示的特点,下面将每个数码管点亮的时间缩短到100 ms,编译下载,可以看见以数码管变换显示的速度快多了。我们再把亮点时间缩短至10 ms,编译下载,此时已经可隐约看见8个数码管上同时显示数字“01234567”,但是看上去会有些晃眼。我们再把亮点时间缩短至1ms,编译下载,这时8个数码管非常稳定﹑清晰地显示着数字“01234567”。

程序编写过程中需要注意的是:在每次送完段选数据后,在送入位选数据之前,需要加上一句“P0=0xff”,这条语句的专业名称叫做“消影”。这段程序可以使数码管清晰地进行显示,非常重要。

六、数码管动态显示参考程序

【知识链接】Keil C51的数据结构

1.标识符

标识符就是编程时使用的表示某个事件名称的符号,如函数名﹑变量名﹑引脚名﹑特殊功能寄存器名等。标识符有系统标识符和用户自定义标识符之分。

标识符的命名规则如下:

(1)标识符第一个字符必须是字母下划线

(2)标识符只能由字母﹑数字和下划线三类字符组成。

(3)标识符是区分大小写的,如A和a是两个不同的标识符。

(4)标识符有效长度不超过32个字符。

(5)标识符不能是Keil C51的关键字。

2.数据类型

(1)char:有符号字符型,一字节,值域:-128~127。

(2)int:有符号整型,两字节,值域:-32768~32767。

(3)long:有符号长整型,四字节,值域:-2147483648~2147483647。

(4)unsigned char:无符号字符型,一字节,值域:0~255。

(5)unsigned int:无符号整型,两字节,值域:0~65535。

(6)unsigned long:无符号长整型,四字节,值域:0~4294967295。

(7)float:浮点型(都是有符号的),四字节,值域:±1.175494E-38~± 3.402823E+38。

(8)bit:位变量,一个二进制位,值域:0~1。

(9)sbit:51单片机特殊功能寄存器位,值域:0~1。

(10)Sfr:51单片机特殊功能寄存器,值域:0~255。(www.daowen.com)

(11)sfr16:51单片机特殊功能寄存器,如DPTR,值域:0~65535。

(12)bit,sbit,sfr,sfr16:不是标准C的内容,是51单片机及Keil C51编译器特有的,不能用指针对它们进行操作。

3.变量

Keil C51规定所有变量在使用前都必须加以说明。变量说明语句由数据类型﹑可选的存储类型和其后的一个或多个变量名组成,形式如下:

数据类型 [存放类型] 变量表;

变量的作用范围:在花括号内说明(也称声明或定义)的变量,其作用范围仅限该花括号内,称为局部变量;在所有函数外面定义的变量,其作用范围是整个程序,称为全局变量。

静态变量:在类型前加关键词static说明的变量,称为静态变量。在函数内部定义的静态变量也是局部变量,但它在函数下次调用时,能保存上次调用的值。在函数外面定义的静态变量,是全局变量,但它只在当前C文件中有效,这样可以防止多个C文件中同名冲突。

4.位变量

使用Keil C的关键字sbit来定义位变量。

第一种方法:sbit 位变量名=位地址值;

第二种方法:sbit 位变量名=字节名称^序号

第三种方法:sbit 位变量名=字节地址值^序号。

5.常量

常量就是不可改变的量,是一个常数。同变量一样,常量也可以有各种数据类型。常量可以用以下几种方式定义:

(1)宏定义

#define OFF 1/*定义常量标识符OFF,其值为1*/。

(2)使用CODE空间

char code array[]={1,2,3,4};/*定义一个常数表,存放在程序存储器中*/。

(3)常量定义关键词const

const int MAX = 60。

(4)enum枚举常量

enum switchENUM {ON,OFF};/*ON 值为0,OFF值为1*/。

七、单片机程序下载

YL-236型单片机实训平台使用YL-ISP在线下载器在线下载程序,操作步骤如下:

(1)连接YL-ISP在线下载器,将在线下载器的排线与主机模块的ISP下载接口相连,并将在线下载器的USB接口与计算机的USB接口相连。

(2)启动YL-ISP在线下载器程序,检测下载器的连接状态。

(3)单击“选择器件”下拉按钮,选择需要的芯片型号。

(4)单击“调入Flash文件”栏中的文件夹图标,调入可执行文件(扩展名为.hex),文件会自动加载。

(5)单击“自动编程”按钮写入程序,写入成功后,信息输出列表框中会反馈“操作成功”字样。

◇任务实施◇

一、硬件电路搭建

分析单片机控制数码管的动态显示电路,在YL-236型单片机实训平台上选取主机模块﹑电源模块和显示模块,搭建单片机控制数码管动态显示电路。

1.模块选择

本任务所需要的模块具体如表3-11所示。

表3-11 本任务所需要的模块

2 工具和器材

本任务所需要的工具和器材如表3-12所示。

表3-12 表具和器材

3.电路搭建

搭建数码管动态显示仿真电路(如图3-3所示)的连接图。

二、程序代码的编写、编译

(1)启动Keil C51编程软件,新建工程﹑文件并均以“SMG”为名保存在文件夹中。

(2)在SMG.c文件的文本编辑器窗口中输入程序代码。

(3)编译源程序,排除程序输入错误,生成SMG.hex文件。

三、系统调试

系统调试的步骤如下:

(1)使用程序下载专配USB线将计算机的USB接口与单片机主机模块程序下载接口连接起来。

(2)打开电源总开关,启动程序下载软件,下载可执行文件至单片机中。

(3)观察LED状态,若实现任务要求,则系统调试完成;否则,需要进行故障排除。

◇任务评价◇

一、工艺性评分标准

工艺性评分标准如表3-13所示。

表3-13 工艺性评分标准

二、功能评分标准

功能评分标准如表3-14所示。

表3-14 功能评分标准

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈