《单片机控制数码管显示.ppt》由会员分享,可在线阅读,更多相关《单片机控制数码管显示.ppt(33页珍藏版)》请在三一办公上搜索。
1、,思考:用单片机系统可控制LED可实现信号灯的不同效果显示,那么能不能用单片机系统控制LED来实现字符显示呢?,学习情境2 数码管显示系统设计,1、终极目标:制作在数码管上显示任意字符的单片机控制系统。2、促成目标:(1)掌握单片机查表程序的设计方法;(2)掌握单片机的LED显示接口电路工作原理及其应用;(3)掌单片机LED显示接口的程序设计方法;(4)初步掌握单片机应用系统分析和软硬件设计的基本方法,建立单片机系统设计的基本概念;,【教学目标】,任务1:数码管循环显示 09,【活动一】总体设计,1.系统组成 本系统功能由硬件和软件两大部份协调完成,硬件部分主要完成信息的显示;软件主要完成信号
2、的处理及控制功能等。本系统的硬件采用模块化设计,以AT89S52单片机为核心,与数码管接口电路组成控制系统。该系统硬件主要包括以下几个模块:AT89S52主控模块、数码管显示模块等。其中AT89S52主要完成外围硬件的控制以及一些运算功能,数码管显示模块完成字符、数字的显示功能。系统组成方框图如图2.1所示。,【项目实践】,图2.1 数码管显示系统组成方框图,【项目实践】,应用软件采用模块化设计方法。该系统软件主要由主程序、延时子程序等模块组成,系统软件结构框图如图2.2所示。,图2.2 系统软件结构框图,2.系统工作原理 数码管由8个发光二极管构成,可以用来显示数字、字符等,它在家电及工业控
3、制中有着很广泛的应用,例如用来显示温度、数量、重量、日期、时间等,具有显示醒目、直观的有点,如图2.3所示。,图2.3 数码管实物图,图2.4 数码管内部结构图,【项目实践】,硬件设计,74LS245,74LS245是8路同相三态双向数据总线驱动芯片,具有双向三态功能,既可以输出,也可以输入数据。/G为低电平有效;DIR=“1”,信号由 A 向 B 传输。引出端符号:A 总线端 B 总线端/G 三态允许端(低电平 有效)DIR 方向控制端,硬件电路,软件设计,1.算法设计 对于数码管而言,要想显示数字或字母,首先应该选中该数码管,然后相应字段被点亮。例如:显示一个“3”字,那么应当是a亮、b亮
4、、c亮、d亮、e不亮、f不亮、g亮、dp不亮。那么可以列出数码管显示数字的段码表如表2.1所示。,表2.1 共阳数码管显示数字的段码表,如表2.1所示,由于数码管显示的数字“09”的字型码“0C0H、0F9H、0A4H、0B0H、99H、92H、82H、0F8H、80H、90H”没有规律可循,只能采用查表的方式来完成我们所需的要求。在程序设计中可以设计一个变量,每隔一定时间在“09”之间变化,然后按照这个数据去查找段码表,把查到的数据送到P2口。所谓表格是指在程序中定义的一串有序的常数,如平方表、字形码表、键码表等。因为程序一般都是固化在程序存储器(通常是只读存储器ROM类型)中,因此可以说表
5、格是预先定义在程序的数据区中,然后和程序一起固化在ROM中的一串常数。在程序设计中,有时需要预先把非线性数据以表格的形式存放在存储器中,然后使用程序读出,这种能读出数据表格的程序就称为查表程序。查表程序的关键是表格的定义和如何实现查表。,定义段码表,unsigned char code tab=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;,unsigned char k;while(1)for(k=0;k10;k+)P2=tabk;/查表取数,查表语句,数组:一种数据类型,数据类型,基本类型构造类型指针类型空类型,整型
6、实型字符型,数组结构联合枚举,单精度型双精度,C语言的数据类型,分隔符为分号,数组的概念,数组是构造数据类型,是一组有序数据的集合,数组中的每个元素都属于同一种数据类型,不允许在同一数组中出现不同类型的变量,数组元素的数据类型就是该数组的基本类型。例如,整型数据的有序集合称为整型数组,字符型数据的有序集合称为字符型数组。数组分为一维、二维、三维和多维数组等,常用的是一维、二维和字符数组。,数组的基本特点,构造类型数据:由基本类型数据按照一定规则组成。数组:是有序数据的集合;数组中的每一个元素都属于同一个数据类型,用一个统一的数组名和下标来唯一地确定数组中的元素。应用场合:需要处理的数据为数量已
7、知的若干相同类型的数据时。注意:先定义,后使用。,一维数组的定义和引用,一维数组的定义:一般格式:类型标识符 数组名常量表达式;int array10;unsigned char num7;说明:数组名见名知意;数组名中存放的是一个地址常量,它代表整个数组的首地址。同一数组中的所有元素,按其下标的顺序占用一段连续的存储单元。方括弧而非圆括弧;常量表达式:可以是常量或符号常量;表示数组元素的个数(也称数组长度)。不允许对数组大小作动态定义。数组元素下标从0开始。array0,array1,array9;,遵循标识符命名规则,一般格式:数据类型 数组名常量表达式初值表1.定义时赋初值;int sc
8、ore5=1,2,3,4,5;2.给一部分元素赋值;int score5=1,2;3.不对数组全部元素赋值,则全部元素被赋值为0;int score5;4.给全部数组元素赋初值时,可以不指定数组长度;int score=1,2,3,4,5;,一维数组的初始化,一维数组的查表功能,数组的一个非常有用的功能之一就是查表。表可以事先计算后装入程序存储器中。如:,unsigned char code tab=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/定义数组tab,并初始化unsigned char k;while(1)f
9、or(k=0;k10;k+)P2=tabk;/查表取数,4.LED数码管显示方式 根据LED显示的硬件设计方法的不同,LED显示驱动分为静态法和动态法两种方法。,静态显示方式,连接 所有LED的位选均共同连接到+VCC或GND,每个LED的8根段选线分别连接一个8位并行I/O口,从该I/O口送出相应的字型码显示字型。特点 原理简单;显示亮度强,无闪烁;占用I/O资源较多。,动态显示方式,连接 所有LED的段选线共同连接在一起共用一个 8位I/O口,而每个LED的位选分别由一根相应的I/O口线控制。因此必须采用动态扫描显示方式,每一个时刻只选通其中一个LED,同时在段选口送出该位LED的字型码。
10、,任务2 0-99计数器,利用AT89S52单片机来制作一个099计时器,并且通过两个共阴数码管显示计数结果,数码管显示采用静态显示方式。,0-99计数器电路设计,静态显示的概念,静态显示是指显示驱动电路具有输出锁存功能,待显示的字符编码被CPU送出后,数码管会一直显示该字符不变,CPU不需要再控制数码管,如果要显示新的字符,CPU只要再次送出即可。采用静态显示方式,较小的电流就可以获得较高的亮度,且占用CPU时间较少,编程简单,显示便于检测和控制,但其占用的I/O口线较多,硬件电路复杂,成本高,只适合显示位数较少的场合。,0-99计数显示c语言程序,#include/包含AT89X52.H头
11、文件/*定义09十个数字的字型码表*/unsigned char code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;unsigned char Count;/定义变量放置计数数值void delay10ms(void)/定义10ms延时函数 unsigned char i,j;for(i=20;i0;i-)for(j=248;j0;j-);,0-99计时器显示c语言程序,void main(void)Count=0;/计数变量初始为0 For(Count=0;Count10;Count+)P0=tableCount/10;/显示十位数 P2=tableCount%10;/显示个位数 delay10ms();while(1)/等待,动态显示,动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。,