收藏 分销(赏)

微机原理优秀课程设计.doc

上传人:天**** 文档编号:2683853 上传时间:2024-06-04 格式:DOC 页数:27 大小:213.04KB 下载积分:10 金币
下载 相关 举报
微机原理优秀课程设计.doc_第1页
第1页 / 共27页
微机原理优秀课程设计.doc_第2页
第2页 / 共27页


点击查看更多>>
资源描述
电子信息工程专业 微机原理课程设计汇报 课题名称: 出租车计价器 学生班级: 自动化1班 学生学号: 学生姓名: 指导老师: 成绩评定: 元 月 1日 摘 要 当有些人乘车时,司机按“开始键START”同时开动汽车。经过转速传感器装置,这个装置能够在车轮转动时产生源脉冲,源脉冲经过修整后,送至含有计数和显示功效主体模块。其中显示部分有三个部分:里程显示、价格显示、和等时显示。要求设定里程从零开始计,价格从起步价(能够设定为5元)开始计,而且在小于起步里程(设定为5公里)时,价格一直是起步价5元,若超出起步里程,计价显示在原有起步价基础之上然后加上对应里程费用。设单位里程一公里价格2元。当在运作过程中是因为红灯或客人需要有效等候时,专题模块30S假如没有检测到脉冲信号,则计价显示工作,而且每隔30S计价器就增加一元。这便是出租车计价器原理和设计思绪。 关键词: 模块化设计 8086CPU 汇编程序设计 目录 摘要 2 关键字 2 正文 3 序言 3 本论 3 一、开题论证 3 二、系统整体论证 4 三、硬件方案选择部分 4 四、软件编写部分 5 五、整体测试情况 18 结论和感想 19 谢辞 20 参考文件 20 正文 序言 微机原理和接口技术是一门理论结合实践专业基础课,同时也是考研考察科目。能够毫不夸张说,学好学精微机原理,在就业时就有了很大优势。为了让我们愈加好掌握汇编语言和多种芯片特点和功效,安排了我们这次课程设计。8086 CPU及其对应外围可编程芯片实现对计价器主体功效实现是此次试验目标,需要充足考虑了星研电子ES-PCI环境下硬件条件,我负责这次设计统筹步骤,并负责书写汇报。 本论 一、 开题论证: 设计满足基础要求包含: 1、里程显示 价格显示(起步价和起步价以后里程费用显示) 2、等时收费 3、复位。 当有些人乘车时,司机按“开始键START”,且开动汽车。经过转速传感器装置,这个装置能够在车轮转动时产生源脉冲,源脉冲经过修整后,送至含有计数和显示功效主体模块。其中显示部分有三个部分:里程显示、价格显示、和等时显示。要求设定里程从零开始计,价格从起步价(能够设定为5元)开始计,而且在小于起步里程(设定为5公里)时,价格一直是起步价5元,若超出起步里程,计价显示在原有起步价基础之上然后加上对应里程费用。设单位里程一公里价格2元。当在运作过程中是因为红灯或客人需要有效等候时,专题模块30S假如没有检测到脉冲信号,则计价显示工作,而且每隔30S计价器就增加一元。增强功效能够设计白天黑夜转换、语音提醒功效。 由基础要求,初步设想能够实现基础功效。 出租车上含有多位显示计价器(基于单片机) 二、 系统整体论证: 依据星研试验环境下,包含怎么样去实现开题要求,在现有试验室条件下能否演示,或能否演示其中主体功效。只能依据已学知识利用16位CPU及其对应外围可编程控制芯片实现。 三、 硬件方案选择部分: 1.脉冲产生电路包含光电式霍尔式也能够用一个固定脉冲 2.计数器采取8253计数结束中止方法 3.中止控制器采取8259A 4.显示控制部分用两种选择采取8255控制显示或8279控制显示 5.显示器件 数码管 LCD 最终经过相关论证能够绘制出所要硬件原图: D7-D0 8086CPU M/IO WR RD INTR INTRA WR PA0 RD PB0-PB7 8255 CS PC0-PC7 INT IR0 INTA WR 8259 RD A0 CS OUT1 VC WR CLK1 RD 8253 CS 74138 74138 74138 D7-D0 +5V +5V M/IO M/IO 显示低四位里程高四位总价 说明: 以8086CPU为关键,其经过对应地址线和译码器相连实现对外围芯片片选(在星研ESPCI硬件环境下片选能够直接实现),经过低地址数据线完成和外围芯片数据传输(对外围芯片初始化编程、程序监控),计数器采取计数中止结束方法计数,依据现实条件设定一个初始值N,当有N个脉冲经过CLK1时,8253OUT1向8259输出一个脉冲,此时8259向CPU发送一个中止请求,CPU处理中止子程序,对8255进行控制,并经过8255控制显示。 四、 软件编写部分: 1.系统步骤图 说明: 本程序应用8255作为总控制,其中PA口接按键(开启控制),PB接8位数码管显示部分,而PC口接位选,其中PC口高4位显示价钱,低4位显示里程。采取8253技术,其中计数器T0,T1和1MHZ产生1HZ信号,接IR0计数;08H中止一直计数TIME(时间),而09H为信号接收时中止,将里程(COUNT)+1,并将时间(TIME)清0;若无信号输入,09H将不产生中止,此时即为等候状态,08H中止TIME++,当达成30s时,价钱增加2元,并将TIME清0循环。 2.源代码及其注释 .MODEL TINY PCIBAR3 EQU 1CH ; 8位I/O空间基地址(它就是试验仪基地址,也为DMA & 32 BIT RAM板卡上8237提供基地址) Vendor_ID EQU 10EBH ;厂商ID号 Device_ID EQU 8376 ;设备ID号 DLYC2 EQU 200 ;显示时间系数 .STACK 100 .DATA COM_ADDR DW 00B3H T0_ADDR DW 00B0H T1_ADDR DW 00B1H COM_ADD DW 00F3H ;控制口偏移量 PA_ADD DW 00F0H ;PA口偏移量 PB_ADD DW 00F1H ;PB口偏移量 PC_ADD DW 00F2H ;PC口偏移量 IO8259_0 EQU 0E00H ;待定*********************** IO8259_1 EQU 0E01H ;***************************** OLDOA1 DD ? ;存放原08H中止地址 OLDOA2 DD ? ; 存放原09H中止地址 COUNT DW 00H ;里程计数 TIME DW 00H ;时间计数 DDBB1 DW 4 DUP (0) ;存放里程计数值 DDBB2 DW 4 DUP(0) ;存放价钱计数值 IO_Bit8_BaseAddress DW ? msg0 DB 'BIOS不支持访问PCI $' msg1 DB '找不到Star PCI9052板卡 $' msg2 DB '读8位I/O空间基地址时犯错$' TB DB 40H,79H,24H,30H,19H DB 12H,02H,78H,00H,18H .CODE START: MOV AX,@DATA MOV DS,AX NOP CALL InitPCI CALL ModifyAddress ;依据PCI提供基地址,将偏移地址转化为实地址 CLI ;关中止 CALL I8255A ;8255A初始化 CALL RD08 ;读出08H中止向量 CALL WRITE08 ;写入08H中止向量 CALL RD09 ;读出09H中止向量 CALL WRITE09 ;写入09H中止向量 CALL I8259 ;开放用户中止 STI ;开中止 ;***************************************************** MOV DX,PA_ADD ;按键扫描 IN AL,DX AND AL,0FFH CMP AL,0FFH JNZ BB COUNT DW 00H ;清零 TIME DW 00H BB: MOV DX,COM_ADDR MOV AL,34H OUT DX,AL ;计数器T0设置在模式2状态,二进制计数 MOV DX,T0_ADDR MOV AL,00H OUT DX,AL MOV AL,10H OUT DX,AL ;CLK0/1000 MOV DX,COM_ADDR MOV AL,76H OUT DX,AL ;计数器T1为模式3状态,输出方波,二进制计数 MOV DX,T1_ADDR MOV AL,00H OUT DX,AL MOV AL,10H OUT DX,AL ;CLK1/1000 ;OUT1输出频率为1S方波 MOV DX,COM_ADDR MOV AL,10110000B OUT DX,AL MOV DX,T2_ADDR MOV AL,00H OUT DX,AL MOV DX,T2_ADDR MOV AL,10H OUT DX,AL CALL BCDTO1;将统计数放在存放器BBDD1中 CALL DISP1; 调用动态显示,PC低四位显示里程 MOV AX, COUNT MOV BX, 02H MUL AX, BX CALL B2TOBCD;将二进制转换为BCD码 MOV BX,0006H ;给予起步价6元 CMP AX,BX ; 若计数值小于6元,交换AX,BX JA TT XCHG AX,BX TT: CALL BCDTO 2 ;将统计数分别放入存放器BBDD2中 CALL DISP2 ;调用动态显示,PC高四位显示价钱 CALL RESTER08H ;恢复08H,09H型中止 CALL RESTER09H ;************************************************************** DL20ms PROC NEAR PUSH AX PUSH DX MOV DX,20 ;延时20ms MOV AH,0FFH ;星研企业提供软中止 INT 21H POP DX POP AX RET DL20ms ENDP ;*************************************************************** I8255A PROC MOV DX,COM_ADD MOV AL,10010000B ;PA输入,PB PC输出 OUT DX,AL MOV DX, PC_ADD MOV AL,0FFH ;关数码管 OUT DX,AL RET I8255A ENDP ;**************************************************************** RD08 PROC MOV AH,35H MOV AL,0AH INT 21H MOV WORD PTR OLD0A1,BX MOV WORD PTR OLD0A1+2,ES RET RD08 ENDP ;******************************************************************** WRITE08 PROC PUSH DS MOV AX,@CODE MOV DS,AX MOV DX,OFFSET SERVICE1 MOV AX,2508H INT 21H POP DS RET WRITE08 ENDP ;**************************************************************** RD09 PROC MOV AH,35H MOV AL,09H INT 21H MOV WORD PTR OLD0A2,BX MOV WORD PTR OLD0A2+2,ES RET RD09 ENDP ;******************************************************************** WRITE09 PROC PUSH DS MOV AX,@CODE MOV DS,AX MOV DX,OFFSET SERVICE2 MOV AX,2509H INT 21H POP DS RET WRITE09 ENDP ;**************************************************************** ;**************************************************************** I8259 PROC MOV AL,12H ;单级使用,边缘触发,不需要设计ICW4 OUT 0E00H ,AL; MOV AL,0A0H;一般EOI循环方法,IR0最低级 OUT 0E00H,AL; RET I8259 ENDP ;***************************************************************** SERVICE 1 PROC PUSH AX PUSH DS MOV AX,@DATA MOV DS,AX INC TIME MOV AX,TIME MOV BX,30 CMP AX,BX JNA AA1 TIME DW 00H INC COUNT ;相当于价钱加2元 AA1 MOV AL,20H OUT 0E00H,AL ;中止结束中止地址 POP DS POP AX IRET SERVICE1 ENDP ;*************************************************************** SERVICE 2 PROC PUSH AX PUSH DS MOV AX,@DATA MOV DS,AX INC COUNT MOV AX,COUNT MOV BX,4500 CMP AX,BX JNA AA1 COUNT DW 00H MOV AX,COUNT AA2: CALL B2TOBCD MOV AL,20H OUT 0E00H,AL ;中止结束中止地址 POP DS POP AX IRET SERVICE2 ENDP ;******************************************************************** RESTER08H PROC PUSH DS MOV DX,WORD PTR OLDOA1 MOV DS,WORD PTR OLDOA1+2 MOV AH,25H MOV AL,08H INT 21H POP DS RET RESTER08H ENDP ;*************************************************************************** RESTER09H PROC PUSH DS MOV DX,WORD PTR OLDOA2 MOV DS,WORD PTR OLDOA2+2 MOV AH,25H MOV AL,09H INT 21H POP DS RET RESTER09H ENDP ;**************************************************************** B2TOBCD PROC NEAR CMP AX,9999 ;AX>9999,则CF置1 JBE TRAN STC JMP EXIT TRAN: PUSH CX PUSH DX SUB DX,DX ;DX清0 MOV CX,1000 ;计算千位数 DIV CX XCHG AX,DX ;商在DX中,余数在AX中 MOV CL,4 SHL DX,CL ;DX左移4位 MOV CL,100 ;计算百位数 DIV CL ADD DL,AL ;百位数加到DL中,DX左移4位 MOV CL,4 SHL DX,CL XCHG AL,AH ;余数保留在AL中 SUB AH,AH MOV CL,10 ;计算十位数 DIV CL ADD DL,AL ;十位数加到DL中,DX左移4位 MOV CL,4 SHL DX,CL ADD DL,AH ;加个位数 MOV AX,DX ;结果送到AX中 POP DX POP CX EXIT1: RET B2TOBCD ENDP ;**************************************************************** BCDTO PROC NEAR MOV SI,OFFSET DDBB MOV BH,00H MOV BL,AL MOV CL,04H ROR BX,CL MOV [SI+1],BL ;将统计数十位放在其中 SHR BH,CL MOV [SI],BH ;将统计数个位放在其中 SUB BH,BH MOV BL,AH MOV CL,04H ROR BX,CL MOV [SI+3],BL ;将统计数千位放在其中 SHR BH,CL MOV [SI+2],BH ;将统计数百位放在其中 RET BCDTO ENDP ;************************************************************** DISP1 PROC NEAR MOV SI,OFFSET DDBB1 MOV AL,[SI] ;显示个位 MOV BX,OFFSET TB XLAT TB MOV DX,PB_ADD ;用PB口做动态扫描 OUT DX,AL MOV DX,PC_ADD ;用PC口做位选 MOV AL,0FEH ;用PC口低位显示 OUT DX,AL MOV CX,DLYC2 LP0: LOOP LP0 MOV AL, 0FFH OUT DX,AL INC SI MOV AL,[SI] ;显示百位 MOV BX,OFFSET TB XLAT TB MOV DX,PB_ADD ;用PB口做动态扫描 OUT DX,AL MOV DX,PC_ADD ;用PC口做位选 MOV AL,0FDH ;用PC口低位显示 OUT DX,AL MOV CX,DLYC2 LP1: LOOP LP1 MOV AL, 0FFH OUT DX,AL INC SI MOV AL,[SI] ;显示百位 MOV BX,OFFSET TB XLAT TB MOV DX,PB_ADD ;用PB口做动态扫描 OUT DX,AL MOV DX,PC_ADD ;用PC口做位选 MOV AL,0FBH ;用PC口低位显示 OUT DX,AL MOV CX,DLYC2 LP2: LOOP LP2 MOV AL, 0FFH OUT DX,AL INC SI MOV AL,[SI] ;显示千位 MOV BX,OFFSET TB XLAT TB MOV DX,PB_ADD ;用PB口做动态扫描 OUT DX,AL MOV DX,PC_ADD ;用PC口做位选 MOV AL,0F7H ;用PC低位显示 OUT DX,AL MOV CX,DLYC2 LP3: LOOP LP3 MOV AL,0FFH OUT DX,AL RET DISP1 ENDP ;*************************************************************** DISP2 PROC NEAR MOV SI,OFFSET DDBB2 MOV AL,[SI] ;显示个位 MOV BX,OFFSET TB XLAT TB MOV DX,PB_ADD ;用PB口做动态扫描 OUT DX,AL MOV DX,PC_ADD ;用PC口做位选 MOV AL,0EFH ;用PC口高位显示 OUT DX,AL MOV CX,DLYC2 LP0: LOOP LP0 MOV AL, 0FFH OUT DX,AL INC SI MOV AL,[SI] ;显示百位 MOV BX,OFFSET TB XLAT TB MOV DX,PB_ADD ;用PB口做动态扫描 OUT DX,AL MOV DX,PC_ADD ;用PC口做位选 MOV AL,0DFH ;用PC口高位显示 OUT DX,AL MOV CX,DLYC2 LP1: LOOP LP1 MOV AL, 0FFH OUT DX,AL INC SI MOV AL,[SI] ;显示百位 MOV BX,OFFSET TB XLAT TB MOV DX,PB_ADD ;用PB口做动态扫描 OUT DX,AL MOV DX,PC_ADD ;用PC口做位选 MOV AL,0BFH ;用PC口高位显示 OUT DX,AL MOV CX,DLYC2 LP2: LOOP LP2 MOV AL, 0FFH OUT DX,AL
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服