单片机控制数码管显示的设计与实现Word下载.docx
《单片机控制数码管显示的设计与实现Word下载.docx》由会员分享,可在线阅读,更多相关《单片机控制数码管显示的设计与实现Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
1.1单片机
微型计算机的出现是电子数字计算机广泛应用到人们日常工作、生活领域中去的一个重大的转折点。
它已经深入应用到非微型计算机所无法应用的领域,对社会产生了极大的影响。
单片机微型计算机是微型计算机发展中的一个重要的分支,它以其独特的结构和性能,越来越普及地应用到国民经济的各个领域。
随着大规模、超大规模集成电路技术的发展和计算机微型化的需要,将微型计算机的基本功能部件:
中央处理器(CPU)、存储器、输入/输出接口、定时器/计数器、中断系统等多种资源集成在一个半导体芯片上,使得一块集成电路芯片就能构成一个完整的微型计算机。
这种集成电路芯片被称为单片微型计算机。
由于它的结构及功能均是按照工业控制要求设计的,所以其确切的名称应是单片微型控制器。
在单片机的结构设计上,它的硬、软件系统及I/O接口控制能力等方面都有独到之处,具有较强而有效的功能。
从其组成、逻辑功能上来看,单片机都具备了微型系统的基本部件。
但需要指出的是,单片机毕竟还只是一个芯片,只有在配置了应用系统所需的接口芯片、输入/输出设备后,才能构成使用的单片机应用系统。
1.2数码管
在单片机应用系统中,显示器是一个不可缺少的人机交互设备之一,是单片机应用系统中最基本的输出装置。
通常需要用显示器显示运行状态以及中间结果等信息,便于人们观察和监视单片机系统的运行状况。
而单片机系统中最为常见的显示器是发光二极管数码显示器(简称LED显示器)。
LED显示器具有低成本、配置简单、安装方便和寿命长等特点。
但显示内容比较有限,一般不能用于显示图形。
LED显示器是由若干个发光二极管组成,数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);
当发光二极管导通时,相应的一个点或一个笔画发亮。
控制不同组合的二极管导通,就能显示出各种字符。
2数码管显示原理
2.1显示原理
数码管显示器有共阳极和共阴极两种。
共阴极LED显示器的发光二极管的阴极连接在一起,通常是其公共阴极接地当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。
同样,共阳极LED显示器的发光二极管的阳极连接在一起,通常是其公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段就被显示。
在控制LED数码管过程中,将不同的8位二进制数送到数码管中就可以使数码管显示不同的数字了。
在单片机应用系统中,单片机与数码管的连接可以分为静态显示和动态显示。
静态显示时,较小的电流能得到较高的亮度且字符不闪烁。
在单片机系统设计时,静态显示通常利用单片机的串行口实现。
当显示器位数较少时,采用静态显示的方法比较适合。
N位静态显示器要求有N*8根I/O口线,占用I/O口线较多。
所以在位数较多时往往采用动态显示方式。
所谓动态显示方式就是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方法称为位扫描。
通常,各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;
各位的位选线(公共阴极或阳极)由另外的I/O口线控制。
动态方式显示时,各数码管分时轮流选通。
要使其稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码。
依此规律循环,即可使各位数码管显示将要显示的字符。
虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人以同时显示的感觉。
2.2图解(以下为具体图解说扫描法LED的显示原理)
8段数码管一般由8个发光二极管(Llight-emittingdiode,LED)组成,每一个位段就是一个发光二极管。
一个8段数码管分别由a、b、c、d、e、f、g位段,外加上一个小数点的位段h(或记为dp)组成。
根据公共端所接电平的高低,可分为共阳极和共阴极两种,如图2-1所示。
实物外型见图2-2。
有时数码管不需要小数点,只有7个位段,称7段数码管。
共阴极8段数码管的信号端高电平有效,只要在各个位段上加上相应的信号即可使相应的位段发光,比如:
要使a段发光,则在a段加上高电平即可。
共阳极的8段数码管则相反,在相应的位段加上低电平即可使该位段发光。
因而,一个8段数码管就必须有8位(即1个字节)数据来控制各个位段的亮灭。
比如:
对共阴极8段数码管,PTA0~7分别接a~g、dp,即PTA=0b011111111时,a段亮;
当PTA=0b00000001时,除h位段外,其他位段均亮。
如此推算,有几个8段数码管,就必须有几个字节的数据来控制各个数码管的亮灭。
这样控制虽然简单,却不切实际,MCU也不可能提供这么多的端口用来控制数码管,为此,往往是将几个8段数码管合在一起使用,通过一个称为数据口的8位数据端口来控制段位。
而一个8段数码管的公共端,原来接到固定的电平(对共阴极是GND,对共阳极是Vcc),现在接MCU的一个输出引脚,由MCU来控制,通常叫“位选信号”,而把这些由n个数
码管合在一起的数码管组称为n连排数码管。
这样,MCU的两个8位端口就可以控制一个8连排的数码管。
若是要控制更多的数码管,则可以考虑外加一个译码芯片。
例如:
一个4连排的共阴极数码管,它们的位段信号端(称为数据端)接在一起,可以由MCU的一个8位端口控制,同时还有4个位选信号(称为控制端),用于分别选中要显示数据的数码管,可用MCU另一个端口的4个引脚来控制。
如图2-3所示。
对于图2-3所示的4连排数码管,利用CS3、CS2、CS1、CS0控制各个数码管的位选信号,每个时刻只能让一个数码管有效,即CS3、CS2、CS1、CS0只能有一个为0,例如令CS3=0,CS2、CS1、CS0=111,则数据线上的数据体现在第一个数码管上,其他则不受影响。
要让各个数据管均显示需要的数字,则必须逐个使相应位选信号为0,其他位选信号为1,并将要显示的一位数字送到数据线上。
这种方法叫“位选线扫描法”。
虽然每个时刻只有一个数码管有效,但只要延时适当,由于人眼的“视觉暂留效应”(约100ms左右),看起来则是同时显示的。
3硬件及软件设计
3.1硬件设计
硬件设计的任务是根据总体设计要求,在所选定的单片机类型的基础上,具体确定系统中所用的元器件及系统构成方式。
单片机应用系统中可用的各种元器件的种类繁多、功能各异、价格不等,这就为用户在元器件功能、特性等方面的选择提供了较大的自由度。
本次设计选用的主控芯片是Freescale公司推出的MC68HC980GP32芯片
图3-1给出了一个4连排共阴极8段数码管的编程实例。
在硬件连接上,利用MCU的A口控制8个位段(数据),用B口的低四位控制数码管的位选信号。
图中,PTA7~0分别接h~a位段,PTB3~0分别过1K电阻与CS3~0位选端相接,这样PTB3就控制最左边一个数码管的显示,PTB0则控制最右边一个数码管的显示。
接在位选线上的1K电阻是限流电阻,避免电流过大烧坏数码管。
3.2软件设计
LED编程汇编语言例
实例编号:
A08路径:
\ASM\A08_数码管LED(LEDMain.asm)
*------------------------------------------------------*
*文件名:
LEDMain.asm*
*硬件连接:
PTA7-0分别接LED的数据线hgfedcba*
*PTB3-0分别接各LED的位选线(自左到右)*
*程序描述:
在4连排数码管上从左至右显示3568*
*目的:
实现数码管的显示*
*说明:
SD-HC08实验仪器未提供LED的固定接线,也未提供LED,可*
*自行购买,在IC扩展区接线,同时注意LCD及键盘的可能影响*
*-------《嵌入式应用技术基础教程》教学实例-------------*
*[头文件]
$include"
GP32ASM.H"
;
包含GP32的头文件
*[两个起始地址名]
RAMstartAddrequ$0040;
RAM的起始地址
FlashStartAddrequ$8000;
程序开始地址
*[LED相关信号口]
LEDdataequPTA;
LED数据线接口
LEDdata_DequDDRA;
数据线相应方向寄存器
LEDcsequPTB;
位选线接口
LEDcs_DequDDRB;
位选线相应方向寄存器
*[内存变量]
orgRAMstartAddr;
CSrmb1;
位选信号
LEDbufrmb4;
LED显示缓冲区
I1rmb1;
临时变量
I2rmb1;
*======================================================
*[主程序]
orgFlashStartAddr;
程序起始地址
start:
复位后程序从此开始执行
[堆栈初始化]
SEI
LDHX#$023F
TXS
JSRGP32Init;
调系统初始化子程序GP32Init
[LED口初始化]
LDA#%11111111
STALEDdata_D;
数据口为输出到LED
STALEDcs_D;
位选口为输出到LED
MainLoop:
LEDbuf[0-3]中放入要显示的数字
MOV#!
3,LEDbuf
5,{LEDbuf+1}
6,{LEDbuf+2}
8,{LEDbuf+3}
在4位共阴极LED上显示LEDbuf中的4个数据(只允许0-9)
MOV#%11110111,I1;
初始位选信号(共阴极情况)
4,I2;
显示个数
LDHX#LEDBuf
LEDShow:
PSHH;
保护数据地址
PSHX
LDX,X;
数据
LDAI1;
JSRLEDshow1;
显示一个数据
变动位选信号
SEC
RORA
STAI1
延时
LDHX#!
10
JSRDelay_ms
PULX;
恢复数据地址
PULH
AIX#!
1;
指向下一个数据
DBNZI2,LEDShow
JMPMainLoop
*LEDshow1:
在1个LED上显示数字---------------------------*
*功能:
在第A个LED上显示数字X(本处转码)*
*入口:
A(LED信号,决定位选)X(要显示的数字)*
*出口:
无*
*------------------------------------------------------*
LEDshow1:
保护HX
CLRH
STALEDcs;
送位选信号
LDATable,X;
取显示码
STALEDdata;
送到LED数据线
PULH;
恢复H
RTS
*[显示码表]0123456789
Table:
FCB$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F
*[外部子程序存放处,这些子程序都在当前目录中]
$INCLUDE"
GP32init.asm"
Delay.asm"
*[中断向量]
ORG$FFFE
DWstart;
复位向量
4总结
本文设计的单片机控制数码管显示,已经在我们设计的系统中成功应用,基本达到设计要求。
致谢
首先,要衷心感谢的是我的指导老师,刘雪兰老师!
从我刚接触题目到最终完成,刘老师一直保持着密切关注的态度,给我提出很多宝贵的意见和建议,在此,向刘老师致以最挚的谢意!
感谢刘老师的耐心辅导!
我还要感谢所有教导过我的老师们!
你们传授给我的专业知识是我不断成长的源泉,也是完成本论文的基础,谢谢你们!
此刻,我向在座的所有老师说一声”谢谢老师,老师你们辛苦了!
”
参考文献
1毛谦敏.单片机原理及应用系统设计[M].北京:
国防工业出版社,2005.
2陈光东,赵性初.单片微型计算机原理与接口技术(第二版)[M].武汉:
华中科技大学出版社.1999
3李华等.MCS-51系列单片机实用接口技术[M].北京:
北京航空航天大学出版社,1993
4戴胜华等.单片机原理与应用[M].北京:
清华大学出版社,2005