实验七八 七段数码管.docx

上传人:b****3 文档编号:11632448 上传时间:2023-06-01 格式:DOCX 页数:11 大小:179.95KB
下载 相关 举报
实验七八 七段数码管.docx_第1页
第1页 / 共11页
实验七八 七段数码管.docx_第2页
第2页 / 共11页
实验七八 七段数码管.docx_第3页
第3页 / 共11页
实验七八 七段数码管.docx_第4页
第4页 / 共11页
实验七八 七段数码管.docx_第5页
第5页 / 共11页
实验七八 七段数码管.docx_第6页
第6页 / 共11页
实验七八 七段数码管.docx_第7页
第7页 / 共11页
实验七八 七段数码管.docx_第8页
第8页 / 共11页
实验七八 七段数码管.docx_第9页
第9页 / 共11页
实验七八 七段数码管.docx_第10页
第10页 / 共11页
实验七八 七段数码管.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验七八 七段数码管.docx

《实验七八 七段数码管.docx》由会员分享,可在线阅读,更多相关《实验七八 七段数码管.docx(11页珍藏版)》请在冰点文库上搜索。

实验七八 七段数码管.docx

实验七八七段数码管

 

课程实验报告

学年学期 2013-2014学年第1学期

课程名称 微机原理

实验名称 实验七七段数码管

专业年级  电气113班

学生姓名  屈巧鸽

学生学号  2011011976

提交时间2013,12.

成  绩

任课教师 朱晓群,谭亲跃

 

实验七七段数码管

2.4.1实验目的

(1)掌握8255的基本工作原理及编程方法。

(2)掌握数码管显示数字的原理。

2.4.2实验内容

(1)实验电路如图2-17所示,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。

编程从8255C口输入数据,再从A口输出。

实验程序流程图如图2-18所示。

(2)实验电路如图2-19所示,按图3连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。

编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。

注:

实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。

编程从8255C口输入数据,再从A口输出。

实验程序流程图如图2-20所示。

2.4.3参考程序

(1)参考程序1

ioportequ0cf00h-0280h

io8255aequioport+288h;8255A口地址

io8255bequioport+28bh;8525控制端口地址

io8255cequioport+28ah

codesegment

assumecs:

code

start:

movdx,io8255b;设置8255工作方式:

C口输入,A口输出

moval,89h

outdx,al

inout:

movdx,io8255c;从C口输入数据

inal,dx

movdx,io8255a;将该数据从A口输出

outdx,al

movdl,0ffh;判断是否有按键

movah,06h

int21h

jzinout;若无,则继续自C口输入,A口输出

movah,4ch;否则返回DOS

int21h

codeends

endstart

(2)参考程序2

datasegment

ioportequ0cf00h-0280h

io8255aequioport+288h;8255A口地址

io8255bequioport+28bh;8525控制端口地址

leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

mesg1db0dh,0ah,'Inputanum(0-9h):

',0dh,0ah,'$'

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movdx,io8255b;使8255的A口为输出方式

moval,89h

outdx,al

sss:

leadx,mesg1;显示提示信息

movah,09h

int21h

movah,1;从键盘接收字符

int21h

cmpal,30h;是否小于0

jlexit;若是则转exit,退出

cmpal,39h;是否大于9

jgexit;若是则转exit,退出

subal,30h;将所得字符的ASCII码减30H

leabx,led;取bx为数码表的起始地址

xlat;查数码表,求出相应的段码

movdx,io8255a;从8255的A口输出段码

outdx,al

jmpsss;转sss

exit:

movah,4ch;返回DOS

int21h

codeends

endstart

(3)参考程序3(动态显示)

datasegment

ioportequ0cf00h-0280h

io8255aequioport+28ah

io8255bequioport+28bh

io8255cequioport+288h

leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;段码

buffer1db0,0;存放要显示的十位和个位

bzdw?

;位码

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movdx,io8255b;将8255设为A口输出

moval,80h

outdx,al

movdi,offsetbuffer1;设di为显示缓冲区

loop1:

movcx,0300h;循环次数

loop2:

movbh,02

lll:

movbyteptrbz,bh

pushdi

decdi

adddi,bz

movbl,[di];bl为要显示的数

popdi

movbh,0

movsi,offsetled;置led数码表偏移地址为SI

addsi,bx;求出对应的led数码

moval,byteptr[si]

movdx,io8255c;自8255A的口输出

outdx,al

moval,byteptrbz;使相应的数码管亮

movdx,io8255a

outdx,al

pushcx

movcx,0ffffh;如果显示过快,可更改cx值为最大0ffffh

delay:

loopdelay;延时

popcx

movbh,byteptrbz

shrbh,1

jnzlll

looploop2;循环延时

movax,wordptr[di]

cmpah,09

jnzset

cmpal,09

jnzset

movax,0000

mov[di],al

mov[di+1],ah

jmploop1

set:

movah,01

int16h

jneexit;有键按下则转exit

movax,wordptr[di]

incal

aaa

mov[di],al;al为十位

mov[di+1],ah;ah中为个位

jmploop1

exit:

movdx,io8255a

moval,0;关掉数码管显示

outdx,al

movah,4ch;返回DOS

int21h

codeends

endstart

 

课程实验报告

学年学期 2013-2014学年第1学期

课程名称 微机原理

实验名称 实验八交通灯控制实验

专业年级  电气113班

学生姓名  屈巧鸽

学生学号  2011011976

提交时间2013,12.

成  绩

任课教师 朱晓群,谭亲跃

 

2.5实验八交通灯控制实验

2.5.1实验目的

通过8255实现十字路口交通灯的模拟控制,并进一步掌握对并行口的使用。

2.5.2实验内容

实验电路图如图2-21所示,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。

编程使六个灯按交通灯变化规律亮灭。

图2-21实验电路图

2.5.3程序流程图

图2-22实验电路图

编程提示:

十字路口交通灯的变化规律要求:

(a)南北路口的绿灯、东西路口的红灯同时亮30秒左右。

(b)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。

(c)南北路口的红灯、东西路口的绿灯同时亮30秒左右。

(d)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。

(e)转(a)重复。

2.5.4参考程序

datasegment

ioportequ0d400h-0280h

io8255aequioport+28ah;8255C口地址

io8255bequioport+28bh;8255控制端口地址

portc1db24h,44h,04h,44h,04h,44h,04h;六个灯可能

db81h,82h,80h,82h,80h,82h,80h;的状态数据

db0ffh;结束标志

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

moval,90h;设置8255为C口输出

movdx,io8255b

outdx,al

movdx,io8255a

re_on:

xorbx,bx;从portc1开始依次取出六个灯的状态数据

on:

moval,portc1[bx]

cmpal,0ffh;状态数据是否为ffh

jere_on;若是,转re_on

outdx,al;否则,点亮相应的灯

incbx

movcx,4500

testal,21h;判断是否两个绿灯亮

jzde1;没有,转del,短延时

movcx,65535;有,长延时

de1:

movdi,9000

de0:

decdi

jnzde0

loopde1

pushdx

movah,06h

movdl,0ffh

int21h

popdx

jzon;没有,转到on

exit:

movah,4ch;返回DOS

int21h

codeends

endstart

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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