51单片机并行口驱动LED数码管显示电路及程序_第1页
51单片机并行口驱动LED数码管显示电路及程序_第2页
51单片机并行口驱动LED数码管显示电路及程序_第3页
51单片机并行口驱动LED数码管显示电路及程序_第4页
51单片机并行口驱动LED数码管显示电路及程序_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

-.z51单片机并行口驱动LED数码管显示电路及程序介绍利用51单片机的一个并行口实现多个LED数码管显示的方法,给出了利用此方法设计的多路LED显示系统的硬件电路构造原理图和软件程序流程,同时给出了采用51汇编语言编写程序。1硬件电路多位LED显示时,常将所有位的段选线并联在一起,由一个8位I/O口控制,而共阴极点或共阳极点分别由另一个8位I/O口控制;也可采用并行扩展口构成显示电路,通常,需要扩展器件管脚的较多,价格较高。本文将介绍一种利用单片机的一个并行I/O口实现多个LED显示的简单方法,图1所示是该电路的硬件原理图。其中,74LS138是3线-8线译码器,74LS164是8位并行输出门控串行输入移位存放器,LED采用L05F型共阴极数码管。

显示时,其显示数据以串行方式从89C52的P12口输出送往移位存放器74LS164的A、B端,然后将变成的并行数据从输出端Q0~Q7输出,以控制开关管WT1~WT8的集电极,然后再将输出的LED段选码同时送往数码管LED1~LED8。位选码由89C52的P14~P16口输出并经译码器74LS138送往开关管Y1~Y8的基极,以对数码管LED1~LED8进展位选控制,这样,8个数码管便以100ms的时间间隔轮流显示。由于人眼的残留效应,这8个数码管看上去几乎是同时显示。

<51单片机并行口驱动LED数码管显示电路>2软件编程

该系统的软件编程采用MCS-51系列单片机汇编语言完成,并把显示程序作为一个子程序,从而使主程序对其进展方便的调用。图2所示是其流程图。具体的程序代码如下:

<51单片机并行口驱动LED数码管显示程序>pic单片机驱动led数码管显示程序;*****该程序用于驱动led数码管显示,在8个LED数码管上依次显示数字1、2、3、4、5、6、7、8*******

;****.blmcu.单片机学习网经典程序已测试,led数码管共阴和共阳不同请修改码值转换表局部LISTP=18F458

INCLUDE"P18F458.INC"

;所用的存放器

*IANREQU0*20

ORG0*00

GOTOMAIN

ORG0*30

;****************以下为码值转换表********************

CONVERTADDWFPCL,1

RETLW0*C0;0,显示段码与具体的硬件连接有关

RETLW0*F9;1

RETLW0*A4;2

RETLW0*B0;3

RETLW0*99;4

RETLW0*92;5

RETLW0*82;6

RETLW0*D8;7

RETLW0*80;8

RETLW0*90;9

RETLW0*88;A

RETLW0*83;B

RETLW0*C6;C

RETLW0*A1;D

RETLW0*86;E

RETLW0*8E;F

RETLW0*7F;"."

RETLW0*BF;"-"

RETLW0*89;H

RETLW0*FF;DARK

RETURN

;**************初始化子程序*****************

INITIAL

BCFTRISA,5;置RA5为输出方式,以输出锁存信号

BCFTRISC,5

BCFTRISC,3;设置SCK与SDO为输出方式

BCFINTCON,GIE;关闭所有中断

MOVLW0*C0

MOVWFSSPSTAT;设置SSPSTAT存放器

MOVLW0*30

MOVWFSSPCON1;设置SPI的控制方式,允许SSP方式,并且时钟下降

;沿发送数据,与"74HC595当其SCLK从低到高电平

;跳变时,串行输入数据(DI)移入存放器"的特点相对应

MOVLW0*11;显示值存放器赋初值,每个值占两个字节,

MOVWF*IANR;从8开场显示

RETURN;返回

;***************led数码管显示子程序******************

;SPI发送显示子模块

DISPLAY

TRANSMITCLRFPORTA;LACK送低电平,为锁存做准备

MOVWFSSPBUF;启动发送

WAIT

BTFSSPIR1,SSPIF

GOTOWAIT;等待发送完毕

BCFPIR1,SSPIF;去除中断标志

NOP

BSFPORTA,5;最后给一个锁存信号,代表一显示任务完成

RETURN

;*****************pic单片机驱动led显示程序的主程序开场***************

MAINNOP

CALLINITIAL;调用系统初始化子程序

LOOPMOVF*IANR,W

CALLCONVERT;查出*IANR的显示段码值

CALLDISPLAY

DECF*IANR

DECF*IANR;显示值减2,因为按字存放,按字节读取

MOVF*IANR,W

SUBLW0*01

BTFSSSTATUS,Z

GOTOLOOP;假设送完显示的数,则退出显示

HEREGOTOHERE

ENDC语言源程序如下:/*************************************************

程序名称:8位数码管移位显示0-F

简要说明:使用共阳型数码管

P0口输出数码管段码,P2口输出数码管位码

编写:Jiang*.net

时间:2008-8-21

*************************************************/*include<reg51.h>

*defineucharunsignedchar

*defineuintunsignedint

*defineduanP0//定义段码输出

*defineweiP2//定义位码输出

uchara=0,b=0;//全局变量。a:定时器循环次数;b:移位量

ucharcodeTAB[]={0*ff,0*ff,0*ff,0*ff,0*ff,0*ff,0*ff,//空白

0*c0,0*f9,0*a4,0*b0,0*99,0*92,0*82,0*f8,0*80,0*90,//数字0-9

0*88,0*83,0*C6,0*a1,0*86,0*8e,//字母A-F

0*ff,0*ff,0*ff,0*ff,0*ff,0*ff,0*ff,0*ff//空白

};/*****************延时子程序*****************/

voiddelay(n)

{

while(n--){

uintj;

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

}

}/*****************程序初始化*****************/

voidinit()

{

TMOD=0*1;//定时方式1

TH0=0*b8;

TL0=0*63;//设置计时时间为50ms

wei=~0;//设置位扫描初值}/*****************定时器中断0****************/

voidtimer0(void)interrupt1

{

TH0=0*b8;

TL0=0*63;

a++;//移位变量累加

if(a==20){

a=0;

b++;

}

if(b==24){

b=0;

}

}/******************显示子程序****************/

voiddisplay()

{

uchari;

uchark;

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

{

温馨提示

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

评论

0/150

提交评论