单片技术实践 2_第1页
单片技术实践 2_第2页
单片技术实践 2_第3页
单片技术实践 2_第4页
单片技术实践 2_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

工作模块3---数码管显示控制

情境导入

在乘坐电梯时,到了目标楼层,就会有一个电子显示器件显示当前楼层,这个就是数码管,如图3.1所示。在家中或者办公室中,会使用一个电子时钟显示当前时间,这个显示器件也是数码管,如图3.2所示。许多场合,都会用到数码管来显示数字,有时用到1个,有时用到多个。当走上电子技术员或者单片机工程师工作岗位后,也会经常用到数码管,学习单片机控制数码管的显示,有着非常现实的意义。内容图谱任务描述

某电子科技有限公司要生产一批计算器,显示模块采用数码管显示,现在你作为公司技术员,要实现显示模块的开发制作。初期任务是通过单片机控制1位数码管的显示,显示内容是数字从0-9,数字切换的时间间隔是1秒,设计电路原理图,编写程序,并仿真功能。初级能力:实现单片机控制一位共阳极数码管显示的功能。高级能力:能够设计单品机驱动共阳极数码管和共阴极数码管的硬件电路,并编写显示程序。执行思路实施过程3-1-1ProteusISIS设计电路原理图共阳极数码管实施过程3-1-1ProteusISIS设计电路原理图序号元件名称元件型号元件参数1单片机AT89C52

2瓷片电容CAP30pF3电解电容CAP-ELEC22uF4晶振CRTSTAL12MHZ5按键BUTTON

6电阻RES10k、4707排阻Respack-810K8数码管7SEG-MAP1-CA共阳极数码管实施过程3-1-1绘制原理图重点知识链接3-1数码管结构

数码管是一个8字的结构,8字的每个笔划都一个发光二极管,每个笔划称为一个段,因此“8”字一共是7段。在使用过程中还经常会用到小数点,加上小数点,其实是8段的数码管。知识链接3.1数码管的结构

数码管的每个段本质都是一个发光二极管,而每个发光二极管分别有阳极和阴极,因此,数码管根据公共端的不同,可以分成共阴极和共阳极的数码管,如图3.13a,b所示,而且数码管的每个段,都给它一定的编号,分别是a,b,c,d,e,f,g段,外加一个dp点字段。一共是8个段,对应数码管的8个引脚,com端有两个引脚,需要接在一起,如图3.12C所示。知识链接3.2数码管的结构

以共阳极的数码管显示字形2为例,共阳极的数码管,公共端为高电平,需要某个段发光,则需要给相应的段送0,因此如果需要显示2,则可以得到相应的字形码如图3.13所示。知识链接3.2数码管的结构

通过上面的分析,可以很容易得到共阳极数码管对于“2”的字形码为10100100,表示为BCD码即为:0xa4;同理,共阴极数码管的“2”的字形码,即为相应共阳极字形码按位取反得到,即为0x5B,(0xff-0xa4=0x5B)。知识链接表3-2LED数码管显示字型码表静态显示方式每个数码管的段选线必须与一个八位I/O端口相连,公共端恒定接地或电源。静态显示是各位数码管恒定导通或截止。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。静态显示知识链接3.3数组的使用

具有相同类型的一批数据作为一个整体,叫做数组(Array),数组均由连续的存储单元组成,数组可以是一维的,也可以是多维的。知识链接3.3.1一维数组1.一维数组的定义定义形式:类型符

数组名

[常量表达式];intarr[15];//类型符:整型数据类型;数组名:arr,元素个数:15

chararr[20];//类型符:字符型数据类型;数组名:arr,元素个数:20知识链接3.3.1一维数组2.一维数组的初始化数组初始化时,可以先定义数组再给数组赋值,也可以在定义数组的同时赋值,例如:inta[4]={20,45,400,22};

知识链接3.3.1一维数组3.数组的使用先定义数组,才可以引用数组中的每个元素。数组元素的引用方式∶数组名[数组元素下标]。disnum[0]=0xc0;disnum[1]=0xf9;disnum[2]=0xa4

也可以是整型表达式

例如b[i];c[6*i]数组元素下标从0开始,长度为n的数组合法下标取值范围∶0至n-1。知识链接3.3.1一维数组voidmain() //主函数{unsignedchari;intsum,ave,MCU_scores[6]={84,83,89,93,91,60};sum=0;for(i=0;i<6;i++) //变量i,循环6次{sum=sum+MCU_scores[i]; }Ave=sum/15;}}知识链接3.3.2二维数组1.二维数组的定义类型说明符数组名[常量表达式][常量表达式];inta[3][4];

表示定义了3行4列总共有12个元素的数组a。这12个元素的名字依次是:a[0][0]、a[0][1]、a[0][2]、a[0][3];a[1][0]、a[1][1]、a[1][2]、a[1][3];a[2][0]、a[2][1]、a[2][2]、a[2][3]。。知识链接3.3.2二维数组2.二维数组初始化1)分行给二维数组赋初值。inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};2)也可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。比如

inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};3)也可以只对部分元素赋初值。比如:

inta[3][4]={{1,2},{5},{9}};知识链接3.3.2二维数组3.二维数组的使用二维数组有行和列,数组的元素也是一个一个的输出。在一维数组中是用一个for循环进行输出,而二维数组元素的输出要使用两个for循环嵌套。知识链接3.3.3字符数组1.字符数组用来存放字符的数组称为字符数组,chara[10];//一维字符数组charb[5][10];//二维字符数组charc[20]={'c','','p','r','o','g','r','a','m'};//给部分数组元素赋值chard[]={'c','','p','r','o','g','r','a','m'};//对全体元素赋值时可以省去长度知识链接3.3.3字符数组1.字符数组C语言规定,可以将字符串直接赋值给字符数组charstr[10]={"abcdefg"};或者charstr[10]="abcdefg";数组第0个元素为'a',第1个元素为'b',第2个元素为'c',后面的元素以此类推。为了方便,也可以不指定数组长度。知识链接3.3.3字符数组2.字符串数组字符串是一系列连续的字符的组合,字符串总是以'\0'空字符作为结尾,所以'\0'也被称为字符串结束标志,或者字符串结束符。该字符既不能显示,也没有控制功能。例如,"abc123"从表面看起来只包含了6个字符,其实不然,C语言会在最后隐式地添加一个'\0',这个过程是在后台默默地进行的。实施过程3-1-2一位数码管显示参考程序#include<reg51.h>

//头文件#defineucharunsignedchar

//定义常量uchar#defineuintunsignedint

//定义常量uintucharcodedisnum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

//code是把数组存储在程序存储区,这是共阳极数码管从0-9的字形编码voiddelay(unsignedinti)//函数定义{

unsignedintj,k;

//定义无符号整型变量j和k

for(k=0;k<i;k++)

//双重for循环语句实现延时

for(j=0;j<125;j++);}voidmain()

//主函数{

uchari;

for(i=0;i<10;i++)

//变量i,循环10次

{

P0=disnum[i];

delay(1000);

}}

P0=disnum[i];语句是把数组disnum中的每一个元素赋值给P0,数码管的每一段是LED灯,把不同位置的LED灯点亮,就会构成要显示的数字。实施过程3-1-2一位数码管显示参考程序#include<reg51.h>

//头文件#defineucharunsignedchar

//定义常量uchar#defineuintunsignedint

//定义常量uintucharcodedisnum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

//code是把数组存储在程序存储区,这是共阳极数码管从0-9的字形编码voiddelay(unsignedinti)//函数定义{

unsignedintj,k;

//定义无符号整型变量j和k

for(k=0;k<i;k++)

//双重for循环语句实现延时

for(j=0;j<125;j++);}voidmain()

//主函数{

uchari;

for(i=0;i<10;i++)

//变量i,循环10次

{

P0=disnum[i];

delay(1000);

}}定义数组disnum时,前面加上code,是把数组存储在程序存储区,节省数据存储区,但是定义在程序存储区,数组的元素不能更改。

控制要求:请设计单片机控制共阴极数码管的电路,并编写程序。扩展任务共阴极数码管与共阳极数码管硬件电路区别扩展任务小贴士:单片机驱动共阴极数码管电路图与共阳极电路图对比,区别有:

1.P0口接了上拉电阻后,数码管的控制引脚不用再接限流电阻;

2.共阴极数码管的型号是7SEG-MPX1-CC;

3.共阴极数码管的公共端接地。任务3-2描述

通过单片机控制8位数码管的显示,使8位数码管同时稳定显示数字0-7,设计电路原理图,编写程序,并仿真功能。初级能力:实现本次任务的显示功能。高级能力:能够设计不同方案的硬件电路,并编写显示不同内容的程序。执行思路

思考并设计单片机连接8位数码管的电路,数码管的静态显示无论从电路和程序方面都无法实现8位数码管的控制,探索数码管的动态显示方式,灵活运用C语言的基本语句,编写数码管显示的程序。实施过程3-2-1ProteusISIS设计电路原理图知识链接3.4数码管动态显示原理

每位数码管都有8根段码线,一根位选线(公共端),按照静态显示的原理,一片STC89C51或者STC89C52RC等单片机,最多只能接4位数码管,当需要控制多位数码管的时候,I/O资源就不够。而在实际生产中,多需要控制多位数码管时,一般采用数码管的动态显示控制方式。。知识链接3.4数码管的静态显示

动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。知识链接

显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。若数码管的数目不大于8位,则控制显示器公共极电位只需8位口(称为位选口),控制各位显示器所显示的字形也需要一个8位口(段选口)。。3.4数码管的静态显示知识链接补充:在使用电路板时,为了增加引脚的复用,经常使用74HC573数据锁存芯片74HC573是8位数据锁存器。1是低电压激活芯片2~9脚是数据的输入脚从D0到D710脚是接地11脚是高电压激活芯片12~19脚是数据的输出脚20是电源数据锁存:当输入的数据消失时,在芯片的输出端,数据仍然保持;这个概念在并行数据扩展中经常使用到。◆OE:output_enable,输出使能;◆LE:latch_enable,数据锁存使能,atch是锁存的意思;◆Dn:第n路输入数据;◆On:第n路输出数据;知识链接补充:在使用电路板时,为了增加引脚的复用功能,经常使用74HC573锁存芯片74HC573真值表,意思如下:第一行/第二行:当OE=0、LE=1时,输出端数据等于输入端数据;第三行:当OE=0、LE=0时,输出端保持不变;第四行:当OE=1是无论Dn、LE为何,输出端为高阻态;知识链接补充:在使用电路板时,为了增加引脚的复用功能,经常使用74HC573锁存芯片高阻态

就是输出既不是高电平,也不是低电平,而是高阻抗的状态;在这种状态下,可以多个芯片并联输出;但是,这些芯片中只能有一个处于非高阻态状态,否则会将芯片烧毁。高阻态的概念在RS232和RS422通讯中还可以用到。知识链接74HC573芯片高阻态

就是输出既不是高电平,也不是低电平,而是高阻抗的状态;在这种状态下,可以多个芯片并联输出;但是,这些芯片中只能有一个处于非高阻态状态,否则会将芯片烧毁。高阻态的概念在RS232和RS422通讯中还可以用到。实施过程3-2-2数码管动态显示程序实施过程3-2-2数码管动态显示程序P0=~(0x01<<(i-1));<<:按位左移运算符,这条语句的功能是把0x01字节依次左移0位,1位,2位直到7位。实施过程3-2-2数码管动态显示程序

数码管在动态显示时,要点亮一位数码管,段选信号和位选信号要配合,或者同时,或者时间间隔非常短,ms以内。每完成一位数码管显示时,要关一次数码管,可采用对公共端送关显示的信号,即共阳极数码管送0,共阴极数码管送1,否则数码管会将上一个字符显示在下一个字符位置上很短的时间,形成拖影,导致显示效果不好。扩展任务

控制要求:请再设计一款控制4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论