《任务3.1 单个数码管的显示.doc》由会员分享,可在线阅读,更多相关《任务3.1 单个数码管的显示.doc(7页珍藏版)》请在金锄头文库上搜索。
1、3.1 单个数码管的显示项目3 简易数字钟的设计(1)“简易数字种的设计”是本书第一个项目教学实例,提出项目任务要求,分解任务和知识点,逐个突破,最后再完成整个项目设计,达到学以致用的目的,这是项目教学的精髓。本单元是“简易数字钟”的第一部分,介绍各模块的基本知识点。【任务要求】(1) 在6位数码管上分别显示时、分、秒,分与秒、小时与分之间用小数点间隔开。(2) 通过单片机内部定时器控制走时,走时准确。(3) 系统有四个按键,功能分别是调整,加,减,确定。在按下调整键时候,显示“时”的两位数码管以1 Hz 频率闪烁。如果再次按下调整键,则“分”开始闪烁,“时”恢复正常显示,依次循环,直到按下确
2、定键,恢复正常的显示。在数码管闪烁的时候,按下加或者减键可以调整相应的显示内容。【内容安排】3.1 单位数码管的显示3.2 多位动态数码管的显示3.3 独立按键检测原理及实现3.4 中断的原理及应用 3.5 定时器的原理及应用 3.1 单个数码管的显示3.1.1 任务要求本单元“简易数字钟的设计”使用6位数码管作为时间显示器件,要掌握6位数码管的驱动方法,先从单个数码管入手。本节的任务要求:在掌握单个数码管原理的基础上,在开发板的单个数码管上依次显示0、1、2.”9、A、b、C、d、E、F16个数字或字母,间隔时间1s。3.1.2 知识准备1、数码管的特点和外观数码管能显示数字和有限个数的字母
3、,由于它具有显示清晰、亮度高、寿命长、价格低廉等特点,因此在电子产品中经常使用,图3.1.1是市面上常见到的数码管外观。数码管按位数来区分,有单个位的,也有2位、3位和4位一体的。按大小分,有0.28寸、0.36寸、0.56寸和0.8寸等。按发光颜色分,有红色、绿色和蓝色等。图3.1.1 数码管外形图片2、单个数码管的显示原理我们小时候玩过的“火柴棒游戏”,几根火柴组合起来,可以拼成各种各样的图形,数码管实际上就是利用这个原理做成的。单个数码管由8个发光二极管组成,其中7个长条形的发光二极管排列成一个“日”字形,另1个圆点形的发光二极管在数码管的右下角作为小数点用。这些发光二极管,我们称之为“
4、段”,每个段有一个名字,从中上的段开始按顺时针分别为:a、b、c、d、e、f、g,小数点对应段的名字为dp。数码管显示不同的数字或字符,点亮对应的发光二极管就可以了,如图3.1.2所示。 3.1.2 数码管显示数字或字母图3.1.3是单个数码管的段标号以及外接引脚排列图。从图中可以看出,单个数码管共有10个引脚,上排和下排各5个。其中8个引脚分别与数码管的段相连,另外3脚和8脚的标号为“COM”。“COM”是什么意思呢?在数码管内部,8个发光二极管的一端与数码管的8个引脚连接接,另外一端连接在一起,称之为公共端(COM)。8个发光二极管的阴极连接在一起,称之为“共阴数码管”,点亮数码管,段(阳
5、极)接高电平,公共端(阴极)接低电平。相反,8个发光二极管的阳极接在一起,称之为“共阳数码管”,点亮数码管,段(阳极)接高电平,公共端(阴极)接低电平。图3.1.4分别是共阴数码管和共阳数码管内部原理图。 图3.1.3 引脚标号 图3.1.3 共阴数码光和共阳数码管内部结构 2、 数码管的字型表掌握了数码管显示原理,单片机驱动数码管的方法就变得简单了。以单片机通过I/O口控制数码管显示数字0为例:数码管显示数字0,a、b、c、d、e、f段需要被点亮,而g和dp段则不被点亮,我们用单片机的一组I/O口(假设为P1口,8个位)和数码管的8个段相连。对于共阴数码管,公共端(COM)接地,向P1口输出
6、0b00111111(十六进制0x3F);对于共阳数码管,公共端(COM)接高电平(5V),向P1口输出0b110000000xC0(十六进制0xC0)。表3.1.1 数码管字型编码表将显示的数字和字母的值按顺序排列,形成一张表,这张表被称为“段码表”,表3.1.1是从0到F共16位数字和字母的段码表,表中的各段的1和0代表该段被点亮和不被点亮。字 型dpgfedcba共阴极共阳极0001111113FHC0H10000011006HF9H2010110115BHA4H3010011114FHB0H40110011066H99H5011011016DH92H6011111017DH82H700
7、00011107HF8H8011111117FH80H9011011116FH90HA0110111177H88Hb011101007CH83HC0011100139HC6Hd010111105EHA1HE0111100179H86HF011100017EH8EH3、 数码管段驱动芯片(74HC245)开发板上的数码管是3位一体共阳型数码管,没有单个数码管。我们可以从多位数码管中拆出一位来作为单个数码管来使用。具体做法:在开发板上标有位选的接口一共有6个,把其中的一个位选接低电平就可以了(下一节介绍位选接低电平的原因),然后段选接P1口就可以了。在上一单元中我们已经介绍过,51单片机I/O驱动
8、能力比较弱,在驱动大功率器件(数码管、蜂鸣器、继电器、点阵)时,通常借助一些中间器件来完成大功率器件的驱动。这些中间的器件的特点是输入电流小,输出电流大,输入端可以直接和单片机I/O口连接,输出端和大功率器件连接。这些器件有三极管、MOS管和数字IC等。数字IC输入电流小,可以直接和单片机相接,而输出电流又相对大一些,所以在单片机电路中,经常见到用74HC04、74HC573(74HC373)、74HC245(74HC244)等数字IC作为功率驱动,来提高单片机的带负载能力。开发板上用了一片74HC245来连接单片机P1口和数码管的段,用以增加数码管段的驱动能力。74HC245是一种三态输出、
9、8路信号收发器,主要应用于显示屏及其它产品中增加驱动。图3.1.4是其引脚图和逻辑图。输出使能输出控制工作状态DIRLLBn输入,An输出LHAn输入,Bn输出H高阻态 (1)引脚图 (2)逻辑功能图 图3.1.3 74HC235的引脚及逻辑图从74HC245的逻辑图中,我们可以得到该芯片的使用方法,19引脚为使能引脚,当为高电平,An和Bn都呈现高阻态,为低电平,芯片处于工作状态。1引脚DIR为方向控制端,DIR高电平,An为输入端,数据从An到Bn;DIR为低电平,则Bn为输入端,数据从Bn到An。在开发板上,OE端接地,DIR端接高电平,数据从An到Bn。从74HC245的datashe
10、et上我们还可以到芯片的单个I/O口输出的拉电流和灌电流最大值为35mA,总电流为70mA,能够胜任数码管段的驱动。另外开发板上还有8550型号的PNP三极管,作为位驱动,具体用法在一下节介绍。3.1.3 任务实施将开发板上数码管的位选引脚(D0)接低电平(0V),P1口和数码管段选引脚相连。然后编写程序,下载观察。程序如下:include#define uchar unsigned char #define uint unsigned int/开发板的数码管为共阳数码管/code是KeilC51关键字,表示数组中的值存放到FlashROM中。uchar code Seg7Code=0xC0,
11、0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E;/ms级延时函数void DelayMs(uint xms) uint i,j;for(i=0;ixms;i+) for(j=0;j122;j+);/主函数void main(void)uchar i=0;while(1)for(i=0;i16;i+) P1=Seg7Codei; /向P1口送段码DelayMs(1000); /间隔1S,显示下一位 程序解释:(1) 在程序中,我们把需要显示的数字和字母的段码放到数组Seg7Code中,在数码管上显示这些数字和字母时,只需要通过数组的下标找到相应的段码值,送给P1口就可以了,数组的使用带来了很大的方便。(2) 程序中定义数组时,数组类型和数组名中间多了个“code”,code是KeilC51关键字,表示数组元素存放到FlashRom中。通常我们定义数组时,数组中元素是存放到SRAM中,其值可以随时修改,但对于51单片机而言,SRAM的空间相对于FlashRom偏小,通过关键字“code”把像段码值这样一旦定义不会再修改的值,定义到到FlashRom中,可以节约有限的SRAM空间。7