六位LED八段数码管显示精.docx

上传人:b****5 文档编号:14710522 上传时间:2023-06-26 格式:DOCX 页数:15 大小:225.93KB
下载 相关 举报
六位LED八段数码管显示精.docx_第1页
第1页 / 共15页
六位LED八段数码管显示精.docx_第2页
第2页 / 共15页
六位LED八段数码管显示精.docx_第3页
第3页 / 共15页
六位LED八段数码管显示精.docx_第4页
第4页 / 共15页
六位LED八段数码管显示精.docx_第5页
第5页 / 共15页
六位LED八段数码管显示精.docx_第6页
第6页 / 共15页
六位LED八段数码管显示精.docx_第7页
第7页 / 共15页
六位LED八段数码管显示精.docx_第8页
第8页 / 共15页
六位LED八段数码管显示精.docx_第9页
第9页 / 共15页
六位LED八段数码管显示精.docx_第10页
第10页 / 共15页
六位LED八段数码管显示精.docx_第11页
第11页 / 共15页
六位LED八段数码管显示精.docx_第12页
第12页 / 共15页
六位LED八段数码管显示精.docx_第13页
第13页 / 共15页
六位LED八段数码管显示精.docx_第14页
第14页 / 共15页
六位LED八段数码管显示精.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

六位LED八段数码管显示精.docx

《六位LED八段数码管显示精.docx》由会员分享,可在线阅读,更多相关《六位LED八段数码管显示精.docx(15页珍藏版)》请在冰点文库上搜索。

六位LED八段数码管显示精.docx

六位LED八段数码管显示精

八段数码管显示

1.实验目的:

(1了解数码管动态显示的原理。

(2了解74LS164扩展端口的方法。

2.实验内容:

利用实验仪提供的显示电路,动态显示一行数据。

3.实验线路:

PB0数据输入

PB1时钟输入

说明:

这里只是显示草图,详细原理参见"8155接口实验"

4.实验器材:

(1QTH2008下载式综合实验仪1台(2QTH2008仿真器1台

(3计算机1台

5.实验说明:

(1本实验仪提供了8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。

显示共有6位,用动态方式显示。

8段码是由8155的PB0、PB1经74LS164“串转并”后输出得到。

6位位码由8155(或8255的PA0-5口输出,经uA2003反向驱动后,选择相应显示位。

74LS164是串行输入并行输出转换电路,串行输入的数据位由8155的PB0控制,时钟位由8155的PB1控制输出。

写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位置到74LS164中,并且实现移位。

向显示位选通地址输出高电平就可以点亮相应的显示位。

本实验仪中数据位输出地址为0e102H,时钟位输出地址为0e102H,位选通输出地址为0e101H。

本实验涉及到了8155I0/RAM扩展芯片的工作原理以及74LS164器件的工作原理。

7.参考程序(SY10.ASM:

OUTBITequ0e101h;位控制口

CLK164equ0e102h;段控制口(接164时钟位DAT164equ0e102h;段控制口(接164数据位INequ0e103h;键盘读入口

LEDBufequ60h;显示缓冲

Numequ70h;显示的数据

DelayTequ75h

org0000h

ljmpStart

LEDMAP:

;八段管显示码

db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71hDelay:

;延时子程序

movr7,#0

DelayLoop:

djnzr7,DelayLoop

djnzr6,DelayLoop

ret

DisplayLED:

movr0,#LEDBuf

movr1,#6;共6个八段管

movr2,#00100000b;从左边开始显示Loop:

movdptr,#OUTBIT

mova,#00h

movx@dptr,a;关所有八段管

mova,@r0

movB,#8;送164

DLP:

rlca

movr3,a

movacc.0,c

ANLA,#0FDH

movdptr,#DAT164

movx@dptr,a

movdptr,#CLK164

orla,#02h

movx@dptr,a

anla,#0fDh

movx@dptr,a

mova,r3

djnzB,DLP

movdptr,#OUTBIT

mova,r2

movx@dptr,a;显示一位八段管movr6,#1

callDelay

mova,r2;显示下一位

rra

movr2,a

incr0

djnzr1,Loop

movdptr,#OUTBIT

mova,#0

movx@dptr,a;关所有八段管

ret

Start:

movdptr,#0e100h

mova,#03h

movx@dptr,a

movsp,#40h

movNum,#0

MLoop:

incNum

mova,Num

movb,a

movr0,#LEDBuf

FillBuf:

mova,b

anla,#0fh

movdptr,#LEDMap

movca,@a+dptr;数字转换成显示码

mov@r0,a;显示在码填入显示缓冲

incr0

incb

cjner0,#LEDBuf+6,FillBuf

movDelayT,#30

DispAgain:

callDisplayLED;显示

djnzDelayT,DispAgain

ljmpMLoop

END

八位数码管显示:

8155控制

参考程序2:

对8155初始化,使I/O口控制LED的显示情况。

ORG0000H

MOVDPTR,#4400H;指向8155命令寄存器

MOVA,#03H

MOVX@DPTR,A;写入控制字。

A口、B口为输出,C口为输入INCDPTR;指向8155A口

MOVA,#00H

MOVX@DPTR,A;向A口写入00H,

;输出选中所有8个LED

INCDPTR;指向8155B口

MOVA,#0FFH

MOVX@DPTR,A;向B口写入某个字型

码,输出点亮8个LED

SJMP$

8155控制8位数码管和键盘电路图

2多位动态显示接口应用采用8051与8155接口,再采用8155的I/O口控制数码管的段码和位码,同时,采用动态扫描方式依次循环点亮各位数码管,即可构成多位动态数码管显示电路。

整体设计思路如下:

由8155的A口控制段码输出,C口控制位码输出。

采用定时器中断方式实现动态扫描,每隔20ms扫描一次,每位数码管点亮的时间为1ms。

在单片机内部RAM设置待显示数据缓冲区,由查表程序完成显示译码。

将缓冲区内待显示数据转换成相应的段码,再将段码通过8051的P0口送至8155的A口;位码数据由累加器循环左移指令产生,再通过P0口送至8155的C口。

硬件电路设计如下:

上图为数码管动态显示电路。

其中,8路驱动采用74LS244总线驱动器,6路驱动采用74LS07OC门驱动器。

74LS244输出经300Ω上拉(或限流电阻后接至电源,同时,接至数码管的各段,控制数码管的显示字符。

74LS07输出经1kΩ上拉电阻接至电源,同时接至各位数码管的公共端,控制每位数码管的显示时间,实现动态扫描。

模拟生产线计数的按键信号接至P3.3口。

六位实现6位显示的秒表:

从左到右每2位LED分别显示小时、分和秒,并正常计数进位;上电后小时000000,当显示到235959后,6位显示清零,从头开始显示。

软件设计如下:

以单片机内部RAM的30H~35H单元作为显示数据缓冲区,六位数码管段码的获取及每位数码管的显示时间均由显示子程序完成。

采用定时器中断方式实现动态扫描,每隔50ms扫描一次,每位数码管点亮的时间为1ms。

单片机每接收一次按键信号(即模拟交通灯改变计数信号,显示缓冲区的待显示数据被刷新一次,数码管相应的显示数值也就随之发生变化。

如连续按键进行测试,即可产生计数数据从左至右循环移动的效果。

根据图中IO/、与单片机的连接可知,可以确定命令/状态字A口、B口、C口、计数值低8位寄存器及高6位和方式寄存器地址分别为:

0100H、0101H、0102H、0103H、0104H、0105H。

片内资源分配如下表:

主程序:

MSECEQU20H;50MS计数单元

SECONDEQU21H;秒单元

MINEQU22H;分单元

HOUREQU23H;小时单元

ORG0000H

LJMPMAIN

ORG000BH

LJMPCONT

MAIN:

MOVSP,#3FH

MOVTMOD#01H

MOVTH0,#3CH

MOVTL0,#0B0H

MOVIE,#82H

MOVSECOND,#00H

MOVMIN,#00H

MOVHOUR,#00H

MOVMSEC,#14H

MOV35H,#00H

MOV34H,#00H

MOV33H,#00H

MOV32H,#00H

MOV31H,#00H

MOV30H,#00H

SETBTR0

START:

LCALLDISP

SJMPSTART

;LED动态显示子程序

;功能:

动态显示六个数码管

;入口:

显示缓冲区30H—35H中待显示的6个数据

DISP:

MOVR0,#30H;显示缓冲区首址

MOVR7,#00H;设定每位显示延时时间

MOVR2,#06H;显示位数

MOVR3,#20H;共阳管位码初始值,从右端先亮MOVA,@R0;取显示缓冲区的一个数据DISP1:

MOVDPTR,#TAB;查表首址给DPTR

MOVCA,@A+DPTR;查表得到显示字符的字型码MOVP0,A;将字型码送P0口

MOVDPTR,#0101H

MOVX@DPTR,A;字型码送8155A口

MOVA,R3;位选码送A

MOVP2,A;位码送P2口

MOVDPTR,#0103H

MOVX@DPTR,A;位码送8155C口

DJNZR7,$;延时

DJNZR7,$;延时

RRA;位码右移

MOVR3,A;位码回送R3

INCR0;指向下一位

MOVA,@R0;取显示缓冲区下一个数据

DJNZR2,DISP1;6位显示一遍吗?

RET

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

主程序流程图:

;定时器中断子程序:

;功能:

50MS执行一次,完成秒、分、小时单元的刷新并拆开放到显示缓冲区

;出口:

显示缓冲区30H—35H中存放待显示的6个数据

CONT:

PUSHACC

MOVTH0,#3CH

MOVTL0,#0B0H

DJNZMSEC,RN;判断到20次吗?

(暨1秒到1秒,返回主程序

MOVMSEC,#14H;1秒到,重置MSEC=20

INCSECOND

MOVA,SECOND

MOVR1,#31H;指向显示缓冲区的31H单元

LCALLBINBCD;调用拆字子程序,将秒拆开为十位、个位,分别放31H,30HMOVA,SECOND

CJNEA,#60,RN;到60秒?

未到返主程序

MOVA,#0

MOVSECOND,A;60秒到,秒单元清零

显示子程序流程图:

MOVR1,#31H;指向31H单元

LCALLBINBCD;调用拆字子程序

MOVA,MIN

INCA;分单元内容加1

MOVMIN,A

MOVR1,#33H;R1指向33H单元

LCALLBINBCD;调用拆字子程序,将分单元拆开为十位、个位,分别存放33H和32H单元

MOVA,MIN

CJNEA,#60,RN;到60分吗?

未到返主程序

MOVA,#00

MOVMIN,A;60分到,分单元清零

MOVR1,#33H;指向33H单元

LCALLBINBCD;调用拆字子程序

MOVA,HOUR

INCA;小时单元内容加1

MOVHOUR,A

MOVR1,#35H;R1指向35H单元

LCALLBINBCD;调用拆字子程序,将小时拆开为十位、个位,分别存放到35H和34H单元

MOVA,HOUR

CJNEA,#24,RN;到24小时吗?

未到返回主程序

MOVA,#00

MOVHOUR,A;到24小时,小时单元清零

MOVR1,#35H

LCALLBINBCD

RN:

POPACC

RETI

定时中断子程序流程图:

;BCD码拆字子程序:

;入口参数:

A,待拆开的BCD码

;R1:

拆开后BCD码存放的末地址;功能:

将A中的两个十六进制数拆开为哦两个BCD码,分别存放到R1指向的两个缓冲单元BINBCD:

MOVB,#10DIVABMOV@R1,ADECR1MOVA,BMOV@R1,ARETEND

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 可爱清新

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2