首页 理论教育数码管静态显示器优势及示例展示

数码管静态显示器优势及示例展示

【摘要】:本实验机的数码管显示器是以两片74HC164组成两管静态共阳显示器。因而显示亮度好,显示稳定,无闪烁。⑧跳出for循环,执行下一个语句,结果为显示35。跟踪运行证明,变量byte、din移位正确,能准确地在数码管移位输出字形码0x92。结束后,在实验机上应显示“35”。程序点评本例只是将变量a进行/10和%10运算,得到低位和高位数,进行取字形码并送send()显示。

本实验机的数码管显示器是以两片74HC164组成两管静态共阳显示器。其特点是在新数据刷新前原数据一直保持,不需扫描。因而显示亮度好,显示稳定,无闪烁。

1.【例4-34】 用字形码在数码管显示十六进制数0x35

(1)编辑C语言源程序

(2)编译

对于C语言程序,必须通过编译生成HEX文件才能被执行。由于输入字符错误、语法错误、变量设置格式错误等问题,会导致编译不能通过。因此,对每一个语句应注意检查语法格式。在信息栏显示出错信息时,应按显示的内容进行修改,然后重新编译,直到通过为止。

(3)执行

编译通过,只说明语法通过,若让程序运行达到预定目标,必须经过调试。

一般来说,一段程序,不管是汇编语言程序还是C语言程序,不经过任何调试检验直接下载到目标机执行就能通过是不太可能的,除非粘贴已调试好的程序,或很简单的程序。调试过程是程序由设计到运行之间必须经过的一个阶段。其中调试平台的性能和设计者操作的熟练程度是决定调试进度的关键因素。

调试的目的是通过使用跟踪、单步、断点等手段检验程序运行中各个变量、参数是否正确,从而确定程序能否达到设计要求。调试分为软仿真调试和在线仿真调试两种。软仿真是在不连接硬件系统的条件下,单纯地在计算机上模拟硬件系统的运行。它可以避免硬件系统的故障和损坏。这对初学者特别有利,可以放心地在模拟系统上通过各种方法运行程序,检验它的运行结果。

1)软仿真调试。

①单击“调试”→“开始→停止”,在main的第1条语句处出现米黄色箭头图标,表示已经进入调试状态。

②单击“外围设备”→“I/O-Ports”→“Port_3”,显示P3状态窗口。

③单击“视图”→“符号窗口”→“din”,数据din的位地址为0xB0.3。

④单击“视图”→“M存储器窗口”,在下面信息栏显示地址内容,如果是第一次使用,内容是片内RAM的状态。初始值全部为00。

⑤单击“视图”→“W监视&调用堆栈窗口”,在信息栏显示变量窗口。

⑥连续单击“跟踪”执行程序,进入send()子函数内,在变量窗口显示形参byte和i的值。

⑦连续单击“跟踪”执行程序,观察变量byte、i、din的变化,具体如下:

由于74HC164是由低位到高位输入,因而i=7时din的数值应为10010010,即0x92,也就是5的字形码。

⑧跳出for循环,执行下一个语句,结果为

显示35。

跟踪运行证明,变量byte、din移位正确,能准确地在数码管移位输出字形码0x92(5)。继续执行跟踪,下一个字形码0xb0(3)也是正确的。可以点击“RST”,复位后重新开始,反复进行,了解变量变化状态,加强对程序的理解。

通过调试,证明程序运行达到要求。

2)下载到实验机。将HEX文件下载到目标机。若有串行接口,可设置为COM1。若无串行接口,可用USB/RS232转换器,将通信线DB9端口接转换器的输出,另一端接实验机的通信插座T2,转换器的USB插口接PC的USB接口。

①检测计算机的COM接口编号。

②进入ISP软件界面,MCU型号为STC89C51RC。

③设置串口号:COM1或已查明的串行接口号。

④打开源程序HEX文件,下载到界面的文件窗口。

⑤设置通信速率:2400~38400bit/s。

⑥单击下载,然后打开实验机电源,开始下载文件。

结束后,在实验机上应显示“35”。(www.chuimin.cn)

(4)程序点评

本例采用变量传送的方式,将主调函数send()中的实参(字形码)传送到被调函数send()的形参。这种变量传送方式是C语言中的主要传送方式。在下面的程序例中要经常被用到。

2.【例4-35】 将字形码放入数组,显示十六进制数0x48。

(1)编辑C语言源程序

程序中的序号和注释是为分析用,不用输入。

(2)编译

(3)执行

1)软仿真。本例只是将实参的字形码变为由数组获取。对低位数码管只屏蔽高4位,取低4位输入数组,得到低位字形码(见语句27)。对高位数码管要先屏蔽低4位,然后左移4位,输入数组,得到高位字形码(见语句28)。

①单击“视图”→“W监视&调用堆栈窗口”,出现变量信息栏。

②图标在第25语句处开始,单击“跟踪”,一步步地执行程序。当转入子函数send()内第14条语句,在信息栏显示局部变量byte及i的当前值,byte=form[0x48&0x0F]=0x80。数码管的低位应是0x08,它的字形码应是0x80,i=0。

③继续单击“跟踪”,到执行第28条语句,byte=form[0x04]=0x99,即04的字形码,显示0x99,i=0。

din及ck的变化与上节相同,不再重复。由上面的变化可以看到,程序准确地进行移位。通过软仿真执行,证明程序正确。

2)下载到实验机,显示“48”。

(4)程序点评

本例将显示字形码放入数组,要显示的变量先取低8位字符作为数组的元素,调出对应的字形码,作为实参送send()。下一个取显示变量的高8位字符,调出对应的字形码,作为实参送send()。

3.【例4-36】 秒进位计数器

(1)编辑C语言源程序

(2)编译

(3)执行

1)软仿真

①单击“调试”→“开始/停止调试”,进入调试状态,main显示米黄色图标。

②单击“跟踪”,进入子函数send(),byte=form[0%10]=form[0]=0xC0。

③单击“跟踪”,完成send(),进入第2个send(),byte=form[0/10]=form[0]=0xC0。

④连续单击“单步”,a=0+1=1。因a≠60,所以继续循环。

⑤连续单击“单步”,直到a=60,则a=0重新下一轮循环。

通过软仿真调试,可以证明程序正确执行,达到预定目标。

2)下载到实验机。程序执行后,从00开始秒计数,到59后回00循环进行。

(4)程序点评

本例只是将变量a进行/10和%10运算,得到低位和高位数,进行取字形码并送send()显示。