微机课设Word下载.docx
《微机课设Word下载.docx》由会员分享,可在线阅读,更多相关《微机课设Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
![微机课设Word下载.docx](https://file1.bdocx.com/fileroot1/2022-10/10/eed1512f-8eb5-4138-9b9c-5309f638c4d7/eed1512f-8eb5-4138-9b9c-5309f638c4d71.gif)
(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,