微机原理课程设计.docx
- 文档编号:24326162
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:27
- 大小:265.52KB
微机原理课程设计.docx
《微机原理课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计.docx(27页珍藏版)》请在冰豆网上搜索。
微机原理课程设计
课程设计报告
(—年度第一学期)
课程:
微机原理及应用
题目:
模拟汽车限速
院系:
自动化系
班级:
自动化1302
学号:
学生姓名:
指导教师:
设计周数:
一周
成绩:
日期:
年月日
《微机原理及应用》课程设计
任务书
一、目的与要求
1.通过对微机系统分析和具体设计,使学生加深对所学课程的理解。
2.掌握汇编语言程序设计的基本方法和典型接口电路的基本设计方法。
3.培养学生分析问题、解决问题的能力。
4.培养学生对微型计算机应用系统的基本设计能力。
5.提高学生的实践动手能力和创新能力。
二、主要内容
1.模拟汽车限速
2.针对所选择的设计题目进行硬件设计,合理选用所需元器件,绘制系统结构框图、硬件接线图,并在实验系统上完成电路的连接和调试。
3.根据所选题目的要求对微机系统进行程序设计,绘制程序总体流程图并编写源程序上机调试。
4.写出课程设计报告,对整个设计过程进行归纳和综合,对设计中所存在的问题和不足进行分析和总结,提出解决的方法、措施、建议和对这次设计实践的认识和收获。
三、进度计划
序号
设计内容
完成时间
备注
1
选择课程设计题目,查阅相关资料
2016年1月11日
2
进行软硬件设计
2016年1月11日
3
上机调试
2016年1月13日
4
撰写设计报告
2016年1月14日
5
演示及答辩
2016年1月15日
四、设计成果要求
1.系统硬件设计合理,软件编程达到设计要求。
2.系统硬件结构图和软件流程图绘制清楚规范。
3.设计报告完整规范。
五、考核方式
根据设计任务的完成情况、课程设计报告撰写情况及演示答辩情况采用五级记分制评定成绩。
一、课程设计目的与要求
1.通过对微机系统分析和具体设计,使学生加深对所学课程的理解。
2.掌握汇编语言程序设计的基本方法和典型接口电路的基本设计方法。
3.培养学生分析问题、解决问题的能力。
4.培养学生对微型计算机应用系统的基本设计能力。
5.提高学生的实践动手能力和创新能力。
二、课程设计正文
1.设计题目:
模拟汽车限速
2.设计思想
1)总体设计方案
本设计主要是模拟汽车限速,通过统计开关次数判断汽车处于何种状态并用LED灯及点阵显示出来,并用按键“0”结束系统,按键“1”重启系统。
8253的计数器0、1分别工作在方式0(计数)、3(方波);用8259来申请中断;8255用来输出红绿灯状态;用1片74138和4片74574模拟实验箱上16*16点阵的内部电路设计,用来显示字符;用几个逻辑门电路和74373/74245芯片模拟实验箱上6位7段数码管的内部电路,并其进行位选。
2)系统主要功能
手动开关模拟行车速度,每按动开关一次产生一次中断,统计按的次数,每10秒采集一次统计结果。
并用数码管不断做精确的10秒倒计时,若按开关次数在6次以内(包括6次),亮绿灯、16*16点阵显示“安全”;若超过6次(不包括6次),亮黄灯报警、16*16点阵显示“超速”;若超过8次(不包括8次),亮红灯表示拦截、扬声器报警而且16*16点阵显示“违规”。
3.系统工作原理介绍
1.硬件接口电路设计
(1)74HC138总译码电路如下图,A15需维持1才能保证74HC138正常工作,则
、
、
、
、
分别对应地址8000H-8FFFH、9000H-9FFFH、0A000H-0AFFFH、0B000H-0BFFFH、0C000H-0CFFFH。
(2)16*16点阵的片选地址为0C000H,则
接入其
.
注:
数据总线低8位AD[0..7]即偶存储体传输数据,即8086的A0需维持0,导致8086的A2、A1接入74HC138的B、A,则16*16点阵的列低八位(CLCK)、列高八位(CHCK)、行低八位(RLCK)、行高八位(RHCK)地址分别为0C000H、0C002H、0C004H、0C006H。
(3)6位7段数码管的片选地址为0B000H,则
接入
。
注:
数据总线低8位AD[0..7]即偶存储体传输数据,即8086的A0需维持0,导致8086的A3、A2、A1分别接入三个与非门,则数码管位选/键盘列输出(OUTBIT)、数码管段选(OUTSEG)地址分别为0B004H、0B008H。
(4)8253A的片选地址为0A000H,则
接入
。
[计数器0、1分别工作在方式0(计数)、3(方波)]
A.CLK0、CLK1接入125kHz的时钟源;
B.OUT0持续输出低电平直至2ms后变高电平,OUT1输出的2500Hz方波接出蜂鸣器;
C.GATE0接入电源保证计数器0能持续计数,GATE1接入Q3即8255的PA3口。
注:
数据总线低8位AD[0..7]即偶存储体传输数据,即8086的A0需维持0,导致8086的A2、A1接入8253A的A1、A0,则8253A的计数器0、计数器1、控制器地址分别为A000H、A002H、A006H。
(5)8255A的片选地址为8000H,则
接入
。
A.PA口输出数据:
PA3、PA2、PA1、PA0分别接出8253的GATE1(控制计数器1是否工作,即决定蜂鸣器是否发声)、红色LED、黄色LED、绿色LED(控制LED的亮灭);
B.PB口读入数据:
PB0接入8253的OUT0(通过读入OUT0状态,判断是否已到2ms)。
注:
数据总线低8位AD[0..7]即偶存储体传输数据,即8086的A0需维持0,导致8086的A2、A1接入8255A的A1、A0,则8255A的PA口、PB口、控制器地址分别为8000H、8002H、8006H。
(6)Proteus的8086模型取的中断号是最后一次IO操作时总线上的数据,而非8259设置的中断号。
担心这个缺陷给后续仿真带来影响,故Proteus中暂时不使用8259A,直接向8086的NMI端接入中断请求信号(由开关提供),上升沿触发中断。
但在实验室中需由8259A提供中断申请,电路也需做出修改。
8259A的片选地址为9000H,则
接入
[IR2端输入中断请求信号(由开关提供)上升沿触发。
]
5.系统调试结果
1.上一个10s之内不按开关,结果为:
绿灯亮,16*16点阵滚动显示“安全”。
2.上一个10s之内按7次开关,结果为:
黄灯亮,16*16点阵滚动显示“超速”。
3.上一个10s之内按12次开关,结果为:
红灯亮,蜂鸣器发出响声,16*16点阵滚动显示“违规”。
三、课程设计总结
1)问题分析与总结
在实验室搭建硬件电路要注意与Proteus上的区别,有些是在proteus上可以连接的,但在实验箱上是没有的。
比如NMI中断,又比如在Proteus上5253芯片有3个计数器,但在实验箱上只有2个计数器。
在实验箱上16*16点阵是可以显示完整的汉字的,但在Proteus上第8列单步运行时是可以被点亮,但全速运行时不能被点亮,这个问题目前还没有被解决。
也是在Proteus仿真中,点阵显示个别汉字时仍看得到闪烁,证明动态显示做得不够好,尝试过几种方法,比如:
扫描换为列扫描;考虑可能是未消隐带来影响,扫描下一行前,关掉所有行;原意为2ms扫描一行(对应频率为31.25Hz),实际上还需执行其他指令,会延长扫描时间即降低频率,可能会到达人眼可分辨的区间内,故试图1ms扫描一行,但1s计数次数CX增加至512左右时程序会跑飞,且暂时原因不明,目前尚未能解决这个问题。
2)实验心得
本次试验从最开始的尝试到最后全部完成,历经很长时间,做了很多努力,让我们都非常欣慰,在做实验的过程中,不断尝试,优化,大大提高了我们对专业知识的掌握,设计的过程虽然有点辛苦,但都很开心,我认为这点很重要。
希望每次的实验都可以从兴趣而发,以乐趣结束,不再为书本而苦恼。
相信我们也会越做越好。
另外感谢老师的耐心指导和周围同学们的无私帮助,给了我们很大的帮助。
四、参考文献
[1]马平,姚万业,微机原理及应用,北京:
中国电力出版社,2002.12
附录(设计流程图、程序等)
设计流程图:
源程序及注释
;Proteus:
加入数码管,2ms列扫描点阵,使用NMI中断
A8255EQU8000H;8255的PA口地址
B8255EQU8002H;8255的PB口地址
K8255EQU8006H;8255控制器地址
O8259EQU9000H;8259偶地址
J8259EQU9002H;8259奇地址
J8253_0EQU0A000H;8253计数器0地址
J8253_1EQU0A002H;8253计数器1地址
K8253EQU0A006H;8253控制器地址
KEYINEQU0B002H;键盘行读入
OUTBITEQU0B004H;数码管位选/键盘列输出地址
OUTSEGEQU0B008H;数码管段选地址
COLLOWEQU0C000H;点阵列低八位地址
COLHIGHEQU0C002H;点阵列高八位地址
ROWLOWEQU0C004H;点阵行低八位地址
ROWHIGHEQU0C006H;点阵行高八位地址
CODESEGMENT
ASSUMECS:
CODE
START:
CLI;关中断
;8253A初始化(CLK0=CLK1=125000Hz)
MOVDX,K8253
MOVAL,30H;00110000B
OUTDX,AL;计数器0:
工作方式0(计数)+二进制
MOVAL,76H;01110110B
OUTDX,AL;计数器1:
工作方式3(方波)+二进制
MOVDX,J8253_0
MOVAL,0FAH;计数器0预置值250=0FAH
OUTDX,AL;计数器0持续低电平直至2ms后变高电平
MOVAL,00H
OUTDX,AL
MOVDX,J8253_1
MOVAL,32H;计数器1预置值50=32H
OUTDX,AL;计数器1输出2500Hz方波
MOVAL,00H
OUTDX,AL
;8255初始化
MOVDX,K8255
MOVAL,82H;10000010B=82H
OUTDX,AL;A口方式0输出,B口方式0输入
;非规范装入NMI中断向量
MOVAX,0
MOVDS,AX;中断向量表段基址0000H
MOVBX,02H*4;BX为NMI即2号中断向量指针
MOVAX,OFFSETINTP
MOV[BX],AX
INCBX
INCBX
MOVAX,SEGINTP;中断子程序INTP入口地址
MOV[BX],AX;放入NMI中断向量表2号
;主程序
MOVDX,A8255
MOVAL,00H;LED全灭+计时器2停止工作
OUTDX,AL
MOVAX,DATA
MOVDS,AX
STI;开中断
L8:
MOVBH,5;速度标志初始化为5
;等待定时时间到
L0:
MOVDI,0;中断统计次数初始化为0
MOVBL,10;10s计数次数初始化为10
L1:
MOVCX,0;1s计数次数初始化为0
L2:
MOVDX,B8255
INAL,DX;读OUT0即PB0口状态
ANDAL,01H;屏蔽PB口高7位
CMPAL,1;OUT0输出高电平则2ms到
JNZL2
;2ms到则重新启动计数器0
MOVDX,K8253
MOVAL,30H;01110000B
OUTDX,AL;计数器0:
工作方式0(计数)+二进制
MOVDX,J8253_0
MOVAL,0FAH;计数器0预置值250=0FAH
OUTDX,AL
MOVAL,00H
OUTDX,AL
;考虑7段数码管显示
CMPBL,9
JLEL6;BL<=9转到L6
CALLSMG1;BL=10调用SMG1
;考虑16*16点阵显示
L6:
CMPBH,5
JEL3;BH=5转到L3
CALLDIAN;BH!
=5调用DIAN
L3:
INCCX
CMPCX,500
JNZL2;CX=500则1s到
MOVDX,OUTBIT
MOVAL,0DFH;11011111B
OUTDX,AL;低电平扫描第1列
MOVDX,KEYIN
INAL,DX;读第1列的行键
NOTAL
ANDAL,0FH;屏蔽无用的高4行
CMPAL,1
JNEL7
CALLSTOP;AL=1(即按下键'0')调用STOP
JMPL8
L7:
CALLSMG2;调用SMG2
DECBL
JNZL1;BL=0则10s到
;[空,空,空,空,声,红,黄,绿](高电平:
点灯+计时器1输出方波)
CMPDI,8
JGL5
CMPDI,6
JGL4
MOVDX,A8255
MOVAL,01H;00000001B
OUTDX,AL;DI<=6即未超速,点绿灯
MOVBH,0
JMPL0
L4:
MOVDX,A8255
MOVAL,02H;00000010B
OUTDX,AL;6 MOVBH,1 JMPL0 L5: MOVDX,A8255 MOVAL,0CH;00001100B OUTDX,AL;DI>8即严重超速,点红灯+启动扬声器 MOVBH,2 JMPL0 ;按下键'0'停止系统子程序 STOPPROCNEAR ;关闭LED和扬声器 MOVDX,A8255 MOVAL,00H OUTDX,AL ;关闭6位数码管 MOVDX,OUTSEG MOVAL,00H OUTDX,AL ;关闭点阵所有列 MOVAL,0FFH MOVDX,COLLOW OUTDX,AL MOVDX,COLHIGH OUTDX,AL ;查询按键'1'是否按下(即重启系统) T0: MOVDX,OUTBIT MOVAL,0DFH;11011111B OUTDX,AL;低电平扫描第1列 MOVDX,KEYIN INAL,DX;读第1列的行键 NOTAL ANDAL,0FH;屏蔽无用的高4行 CMPAL,2 JNET0 RET;AL=2(即按下键'1')返回 STOPENDP ;数码管动态显示'10'子程序 SMG1PROCNEAR PUSHCX MOVAX,CX;AX=CX MOVCL,2;CL=2 DIVCL;AX%CL=CX%2=AH CMPAH,0 JNZS1 S0: MOVDX,OUTBIT MOVAL,01H;00000001B选WEI0 OUTDX,AL MOVDX,OUTSEG MOVAL,3FH;显示'0' OUTDX,AL JMPS3 S1: MOVDX,OUTBIT MOVAL,02H;00000010B选WEI1 OUTDX,AL MOVDX,OUTSEG MOVAL,06H;显示'1' OUTDX,AL S3: POPCX RET SMG1ENDP ;数码管静态显示'9'~'1'子程序 SMG2PROCNEAR PUSHBX MOVBH,0 DECBL;BX=BL MOVSI,BX;SI=BX=BL LEABX,SMGDM MOVDX,OUTBIT MOVAL,01H;00000001B选WEI0 OUTDX,AL MOVDX,OUTSEG MOVAL,[BX+SI];显示 OUTDX,AL POPBX RET SMG2ENDP ;点阵动态显示汉字子程序 DIANPROCNEAR PUSHCX PUSHBX ;选出要扫描的列(每隔4ms扫描下列) MOVAX,CX MOVCL,16 DIVCL;AX%CL=CX%16=AH MOVCL,AH;CL存放右移次数 ;选出本列要输出的行数据 SHLAH,1 MOVAL,AH;AL=AH*2 MOVAH,0 MOVSI,AX;SI存放行数据的相对位置 ;向要扫描的列放入低电平 MOVAX,7FFFH;0111111111111111B RORAX,CL MOVDX,COLLOW OUTDX,AL MOVDX,COLHIGH MOVAL,AH OUTDX,AL ;选择要输出哪组字: '安全','超速','违规' SHLBH,1 SHLBH,1;BH=BH*4 MOVCL,BH;CL存放组相对TABLE的位置 ;选择本组要输出的字(第1、第2个字隔1s输出) MOVBH,0 MOVAX,BX MOVBL,2 DIVBL;BL%2=AH SHLAH,1;AH存放字相对组的位置 ADDCL,AH MOVCH,0;CX存放字相对TABLE的位置 PUSHSI MOVSI,CX LEABX,TABLE MOVCX,[BX+SI] MOVBX,CX;BX存放字相对DATA的位置 POPSI ;高电平选择输出的行 MOVDX,ROWHIGH MOVAL,[BX+SI] OUTDX,AL MOVDX,ROWLOW MOVAL,[BX+SI+1] OUTDX,AL POPBX POPCX RET DIANENDP ;中断服务子程序 INTPPROCNEAR INCDI IRET INTPENDP CODEENDS;"CODE"逻辑段结束 DATASEGMENT;"DATA"逻辑段开始 ;共阴极数码管段码表 SMGDMDB3FH,06H,5BH,4FH;[0-7] DB66H,6DH,7DH,07H DB7FH,6FH,77H,7CH;[8-F] DB39H,5EH,79H,71H ;字模低电平列扫描,高电平点亮行(先输出高8位,后输出低8位) ;"安" Z1_0DB01H,00H,09H,01H,31H,01H,21H,21H DB21H,62H,21H,92H,0AFH,14H,61H,08H DB21H,08H,21H,34H,21H,0C4H,21H,02H DB29H,01H,31H,00H,01H,00H,00H,00H ;"全" Z1_1DB01H,00H,01H,02H,02H,02H,04H,22H DB0AH,22H,12H,22H,22H,22H,0C3H,0FEH DB22H,22H,12H,22H,0AH,22H,04H,22H DB02H,02H,01H,02H,01H,00H,00H,00H ;"超" Z2_0DB02H,01H,12H,06H,12H,0F8H,12H,04H DB0FFH,0FEH,12H,22H,12H,22H,42H,02H DB45H,0F2H,79H,12H,41H,12H,45H,12H DB43H,12H,7DH,0F2H,00H,02H,00H,00H ;"速" Z2_1DB02H,00H,02H,02H,42H,04H,33H,0F8H DB00H,04H,20H,12H,2FH,22H,29H,42H DB29H,82H,0FFH,0FAH,29H,82H,29H,42H DB2FH,22H,20H,12H,00H,02H,00H,00H ;"违" Z3_0DB02H,02H,42H,04H,33H,0F8H,00H,04H DB20H,82H,24H,82H,24H,82H,24H,82H DB0FFH,0FEH,24H,82H,24H,82H,24H,92H DB24H,8AH,20H,0F2H,00H,02H,00H,00H ;"规" Z3_1DB01H,02H,11H,04H,11H,18H,0FFH,0E0H DB11H,10H,11H,0DH,01H,02H,7FH,0C4H DB40H,18H,40H,60H,4FH,80H,40H,7EH DB40H,01H,7FH,0C1H,00H,07H,00H,00H ;字模表(1个字占2字节,1组字占4字节) TABLEDWZ1_0,Z1_1,Z2_0,Z2_1,Z3_0,Z3_1 DATAENDS;"DATA"逻辑段结束 ENDSTART;源程序结束 在实验室中,代码须作出以下修改: ;地址修改 A8255EQU8000H;8255的PA口地址 B8255EQU8001H;8255的PB口地址 K8255EQU8003H;8255控制器地址 O8259EQU9000H;8259偶地址 J8259EQU9001H;8259奇地址 J8253_0EQU0A000H;8253计数器0地址 J8253_1EQU0A001H;8253计数器1地址 K8253EQU0A003H;8253控制器地址 KEYINEQU0B001H;键盘行输入地址 OUTBITEQU0B002H;数码管位选/键盘列输出地址 OUTSEGEQU0B004H;数码管段选地址 COLLOWEQU0C000H;点阵列低八位地址 COLHIGHEQU0C001H;点阵列高八位地址 ROWLOWEQU0C002H;点阵行低八位地址 ROWHIGHEQU0C003H;点阵行高八位地址 ;添加8259A初始化 MOVDX,O8259;8259A偶地址9000H MOVAL,13H;ICW1=00010011B=13H, OUTDX,AL;上升沿触发+单片+8086必设ICW4 MOVDX,J8259;8259A奇地址9002H MOVAL,80H;ICW2=10000000B=80H, OUTDX,AL;中断类型号为80H—87H MOVDX,J8259;8259A奇地址9002H MOVAL,01H;ICW4=00000001B=01H, OUTDX,AL;全嵌套+非缓冲+普通中断结束 ;非规范装入中断向量 MOVAX,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课程设计