微机课设Word下载.docx

上传人:b****1 文档编号:13410685 上传时间:2022-10-10 格式:DOCX 页数:15 大小:189.53KB
下载 相关 举报
微机课设Word下载.docx_第1页
第1页 / 共15页
微机课设Word下载.docx_第2页
第2页 / 共15页
微机课设Word下载.docx_第3页
第3页 / 共15页
微机课设Word下载.docx_第4页
第4页 / 共15页
微机课设Word下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

微机课设Word下载.docx

《微机课设Word下载.docx》由会员分享,可在线阅读,更多相关《微机课设Word下载.docx(15页珍藏版)》请在冰豆网上搜索。

微机课设Word下载.docx

(4)n=6,t=2s:

每两个灯管一组,间隔2秒循环点亮。

(5)n=4,t=1s:

每三个灯管一组,间隔1秒循环点亮。

(6)n=4,t=2s:

每三个灯管一组,间隔2秒循环点亮。

(7)n=3,t=1s:

每四个灯管一组,间隔1秒循环点亮。

(8)n=3,t=2s:

每四个灯管一组,间隔2秒循环点亮。

2.要求按键盘的“A”、“B”、“C”、“D”分别表示选择灯管数目(一个一组,两个

一组,三个一组,四个一组),按键盘的“E”、“F”表示选择间隔时间(1秒和2秒)。

序启动时默认按第一种方式进行循环,当按动“A-F”时,根据设定情况随时改变循环方式,

当按“G”键时退出程序,所有灯管灭。

【课题55】模拟计算器运算(加,减,乘)

1.通过小键盘做加、减、乘、括号运算。

七段数码管显示器作输入数据和结果数据的显示。

2、设计思想

该题的主程序是不断地检测小键盘是否有按键按下,若有按键(A、B、C、D、E、F)按下则按预先设定的功能改变中断服务程序中的时间间隔或LED灯的组数,否则,则继续检测按键。

按题目要求,时间间隔的控制利用8253芯片完成,隐含使用8259中断控制器。

利用8253芯片1s或2s产生的高电平信号,使8259触发硬件中断,中断服务程序中利用8255芯片完成LED灯的亮灭。

●8253:

时钟信号接试验箱上2MHZ的时钟,利用两个通道,一个工作在方式2,一个工作在方式3.利用BCD码,进行两级分频,产生时间间隔为1s和2s的信号。

●8255:

8255要完成两个功能:

1.对小键盘的设置

实验所使用的小键盘为2*8的小键盘(2行8列),由8255的B口产生列线扫描信号,C口的低两位测试行线产生的信号,若测试到低电平,则说明有键按下。

小键盘图如下:

图2小键盘原理图

若按下小键盘的E或者F键,则对8253重新初始化,改变8253的输出频率:

我们在程序中使用了两级计数器对原始输入频率进行放大,在8253初始化程序中,变量TI和ME分别是两个计数器初始化的值,因此,在接收到按键E或F的按键信息后,用地址表跳转到的程序段对变量TI和ME重新赋值,再调用8253初始化子程序,即可实现按键E、F改变LED灯移动频率。

2.对LED灯的控制

若按下A,B,C,D则改变灯序列的初值,使一开始有相应个灯亮,在程序中定义了两个变量LEDLIST8和LEDLIST4,它们分别表示前8个灯和后4个灯,在接收到按键A、B、C、D的按键信息后,运用地址表跳转到的程序段对变量LEDLIST8和LEDLIST4重新赋值,即可实现A、B、C、D按键改变点亮的LED灯的分组情况;

若按下1键,则灯处于全灭,此时再按下除1键的其他键,LED灯又会按之前的序列继续依次点亮,接收到按键1的按键信息后,运用地址表跳转到的程序段,向8255的A口和C口高四位输出全1的12位二进制序列,然后在进入小键盘检测按键子程序,即可实现按键1停机,其它按键唤醒的功能。

LED灯序列移位的操作在中断服务程序中完成。

中断服务程序中先将CF位置1,再将LEDLIST8用带进位循环移位一次,此时已将CF移至LEDLIST8的第1位,将第8位移至CF中;

再将LEDLIST4用带进位循环移位一次,此时借助于CF标志位已将LEDLIST8的第8位移至LEDLIST4的第1位,使用TEST指令,测试LEDLIST4的第五位,根据测试结果再对CF进行置位(STC)或复位(CLC)操作。

3、功能流程图

4、结果讨论

实验结果能完成实验要求的所有功能:

按下小键盘A键,12个LED灯分为12组,每组1个灯,依次循环(默认)间隔1秒点亮;

按下小键盘B键,12个LED灯分为6组,每组2个灯,依次循环(默认)间隔1秒点亮;

按下小键盘C键,12个LED灯分为4组,每组3个灯,依次循环(默认)间隔1秒点亮;

按下小键盘D键,12个LED灯分为3组,每组4个灯,依次循环(默认)间隔1秒点亮;

按下小键盘E键,LED灯间隔1秒依次循环点亮;

按下小键盘F键,LED灯间隔2秒依次循环点亮;

按下小键盘2键,LED灯全灭;

实验成功。

附录:

实验代码(完整的源程序)

8259A、8255A

B3区:

CS、A0

——

A3区:

CS3、A0

INT、INTA

INTR、INTA

IR0

C4区:

OUT1

D3区:

CS、A0、A1

CS1、A0、A1

PC0、PC1

F5区:

KL1、KL2

JP23(0-7)

A(1-8)

JP20(0-7)

F4区:

JP18(1-8)

JP24(4-7)

JP19(1-4)

8253A

CS2、A0、A1

CLK0

B2区:

2M

OUT0

CLK1

GATE

C1区的VCC

;

利用8255A和8253使发光二极管按一定规律轮流点亮

HFUT2015.07.02XuanChengCampus

.MODELTINY

EXTRNInitKeyDisplay:

NEAR;

初始化小键盘

IO8259_0EQU0250H;

8259端口号

IO8259_1EQU0251H

COM_ADDREQU0263H;

8253端口号

T0_ADDREQU0260H

T1_ADDREQU0261H

COM_8255EQU0273H

PA_8255EQU0270H;

8255端口号

PB_8255EQU0271H

PC_8255EQU0272H

.STACK100

.DATA

LEDLIST8DB01111111B;

B口LED灯序列

LEDLIST4DB11111111B;

C口LED灯序列

TIDB20H;

计数器1频率高位

MEDB00H;

OPDWO0,O1,O2,O3,O4,O5,O6,O7,O8,O9,OA,OB,OC,OD,OE,OF;

分支改变地址表

.CODE

START:

MOVAX,@DATA

MOVDS,AX

MOVES,AX

NOP

CLD;

0->

DF,地址自动递增

CALLInitKeyDisplay;

初始化

CALLInit8255

CALLInit8259

CALLWriIntver;

将终端向量写入内存中

MOVAL,LEDLIST8

MOVDX,PA_8255

OUTDX,AL;

初始灯显示

MOVAL,LEDLIST4

MOVDX,PC_8255

LED灯前两个亮

CALLInit8253_0

CALLInit8253_1

MOVAH,1

STI;

开中断

START1:

CALLKEYI;

扫描键盘

AGAIN:

MOVBL,AL

MOVBH,0

CLI

SHLBL,1

STI

;

MOVBL,2

CLI

PUSHF

MULBL

POPF

STI

MOVSI,BX

JMPOP[SI];

跳转

分支

O0:

JMPSTART1

O1:

JMPFINISH

O2:

O3:

O4:

O5:

O6:

O7:

O8:

O9:

OA:

MOVLEDLIST8,01111111B

MOVLEDLIST4,11111111B

OB:

MOVLEDLIST8,00111111B

OC:

MOVLEDLIST8,00011111B

MOVLEDLIST4,11111111B

OD:

MOVLEDLIST8,00001111B

JMPSTART1

OE:

MOVTI,20H

MOVME,00H

OF:

MOVTI,40H

MOVME,00H

Init8255PROCNEAR;

8255初始化

MOVDX,COM_8255

MOVAL,81H

PA、PB、PC(高四位)输出,PC(低四位)输入

RET

Init8255ENDP

Init8259PROCNEAR;

8259初始化

MOVDX,IO8259_0

MOVAL,13H

OUTDX,AL

MOVDX,IO8259_1

MOVAL,08H

MOVAL,09H

MOVAL,0FEH

RET

Init8259ENDP

Init8253_0PROCNEAR;

8253计数器0初始化

movdx,COM_ADDR

moval,35h

outdx,al

moval,00h

movdx,T0_ADDR

moval,10h

ret

Init8253_0ENDP

Init8253_1PROCNEAR;

8253计数器1初始化

PUSHDX

PUSHAX

moval,77h

moval,ME

movdx,T1_ADDR

moval,TI

POPAX

POPDX

Init8253_1ENDP

WriIntverPROCNEAR;

保存中断服务程序入口地址

PUSHES

MOVAX,0

MOVDI,20H;

8259初始化的中断类型号为08H

LEAAX,

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1