一、设计内容

汽车速度控制系统:在自行设计接口板的按键转换汽车的挡位;发光二极管显示挡位;数码管显示汽车的速度。加速控制:拨动对应的档位再拨动加速开关,数码管显示速度递增至99(加速要与档位匹配,若不匹配则,加速失效);减速控制:拨动减速开关,速度减至0。

二、设计方案

1. 器件需求

1.开关控制速度加速、减速,4个档位控制,共需6个开关。
2.两个数码管显示2位十进制数。
3.4个二极管显示档位(档位对应亮灯个数)。
4.8086CPU,以及8255端口芯片。

2. 器件连接
  • 6个输入开关K1-K4、K7-K8 连接到8255输入端PA0 ~ PA3、PA6~PA7。

  • 数码管端A~ Dp连接到8255输出端PB0~PB7。

  • 数码管显示单元X1X2连接到8255输出端PC6~PC7,用于选择数码管。

  • 4个led灯与8255的输出端PC0~PC3相连,用于显示档位。

  • 8255 A0、A1连接系统总线XA1、XA2。

  • 8255数据端D0-D7与CPU总线数据端XD0~XD7相连,用于数据交换。

  • 8255片选端CS与总线IOY端相连。

  • 8255WR和RD分别与总线IOW和IOR端相连。

3、系统原理图

三、程序设计

1. 程序流程图



2.程序代码
ASSUME CS:CODE,DS:DATA,SS:STACK
DATA_PORT                   EQU 0606H
DATA_CONTROAL               EQU 10010000B
PORT_A                      EQU 0600H
PORT_B                      EQU 0602H
PORT_C                      EQU 0604H
LOOP_COUNT                  EQU 200D
DIGIT_LAMP_FIRST            EQU 01110000B
DIGIT_LAMP_SECOND           EQU 10110000B
DIGIT_NUMBER_UPPER          EQU 9D
DIGIT_LAMP_OFF              EQU 00000000BDATA SEGMENTSPEED              DW 0HNUMBER                 DW 0H,0HDIGIT               DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHLEVE                  DB 0HUP_STATE           DB 0HDOWN_STATE         DB 0HLAST_INPUT_DATA    DB 0H
DATA ENDSSTACK SEGMENTDW 50 DUP(?)
STACK ENDSCODE SEGMENT START:MOV DX,DATA_PORT    ;写控制字MOV AL,DATA_CONTROALOUT DX,ALMOV AX,DATA         ;初始化 数据段,堆栈段MOV DS,AXMOV AX,STACKMOV SS,AXLOP:CALL GET_STATE ;获取速度档位信息CALL PRINT_SPEED ;打印速度CMP UP_STATE,10000000B   ;判断加减速JNE IS_DOWN_SYSTEM    CALL SPEED_UP_SYSTEMJMP TO_ENDIS_DOWN_SYSTEM:   CMP DOWN_STATE,01000000BJNE TO_ENDCALL SPEED_DOWN_SYSTEMTO_END:JMP LOPMOV AX,4C00HINT 21HGET_STATE:MOV DX,PORT_AIN AL,DXCMP LAST_INPUT_DATA,ALJE GET_STATE_ENDMOV LAST_INPUT_DATA,ALMOV UP_STATE,AL   ;截取加速信息AND UP_STATE,10000000BMOV DOWN_STATE,AL ;截取减速信息AND DOWN_STATE,01000000BMOV LEVE,AL  ;截取档位信息AND LEVE,00001111BGET_STATE_END:RETSPEED_UP_SYSTEM:MOV AX,SPEEDCMP AL,98JA SPEED_UP_SYSTEM_ENDCMP AL,46JA SPEED_OVER_47__UPCMP AL,35JA SPEED_46_AND_36__UPCMP AL,24JA SPEED_35_AND_25__UPJMP SPEED_24_AND_0__UPSPEED_24_AND_0__UP:MOV BL,LEVECMP BL,1JNE SPEED_UP_SYSTEM_ENDCALL ADD_SPEEDJMP SPEED_UP_SYSTEM_ENDSPEED_35_AND_25__UP:MOV BL,LEVECMP BL,2JNE SPEED_UP_SYSTEM_ENDCALL ADD_SPEEDJMP SPEED_UP_SYSTEM_ENDSPEED_46_AND_36__UP:MOV BL,LEVECMP BL,4JNE SPEED_UP_SYSTEM_ENDCALL ADD_SPEEDSPEED_UP_SYSTEM_END:RETSPEED_DOWN_SYSTEM:MOV AX,SPEEDCMP AL,1JB SPEED_DOWN_SYSTEM_ENDCALL SUB_SPEEDSPEED_DOWN_SYSTEM_END:RETPRINT_LEVE:MOV AL,LEVECMP AL,0  ;档位为0 退出JE END_SUB AL,1  ;波动2个以上档位退出AND AL,LEVEJNZ  END_MOV AL,LEVE ;档位灯数计算SUB AL,1OR AL,LEVEMOV DX,PORT_COUT DX,ALCALL WAIT_TIMEEND_:    RETPRINT_SPEED:MOV AX,SPEEDMOV BX,10DIV BL   ;截取十位和个位MOV BYTE PTR NUMBER[0],ALMOV BYTE PTR NUMBER[2],AHMOV CX,LOOP_COUNTLOOP_PRINT:MOV DX,PORT_C  MOV AL,DIGIT_LAMP_FIRST   ;选择数码管OUT DX,ALMOV DI,WORD PTR NUMBER[0]CALL OUT_DIGIT ;输出数MOV DX,PORT_CMOV AL,DIGIT_LAMP_SECONDOUT DX,ALMOV DI,WORD PTR NUMBER[2]CALL OUT_DIGITCALL PRINT_LEVE ;打印档位LOOP LOOP_PRINTRETADD_SPEED:MOV AX,SPEED   INC ALMOV SPEED,AXRETSUB_SPEED:MOV AX,SPEED DEC ALMOV SPEED,AXRETWAIT_TIME:PUSH CXMOV CX,000CHWAIT_LOOP:LOOP WAIT_LOOPPOP CXRETOUT_DIGIT:CMP DI,DIGIT_NUMBER_UPPERJA OUT_DIGIT_ENDMOV DX,PORT_BMOV AL,DIGIT[DI]OUT DX,ALCALL WAIT_TIME ;延时MOV AL,DIGIT_LAMP_OFF  ;关闭数码管OUT DX,ALOUT_DIGIT_END:RETCODE ENDSEND START

四、总结

对于汇编的编写,与C稍微不同,即对寄存器使用。刚开始还不会使用内存空间,只知道寄存器。于是就挨个用寄存器,甚至下意识将某些寄存器当做存储空间。这很明显展示了自己的低水平。所以,我单独研究如何申请空间,将寄存器数据存储到空间里。程序的关键数据保存到内存里,这种做法为程序解耦奠定基础。我觉得程序设计最忌讳的是胡子眉毛一起抓,将代码堆砌在一起,如同一字长蛇。这种代码最容易出现bug,难以修改。代码过长,过一会儿就不知道前面在写什么。故程序模块设计,仍旧是编码最有力、最清楚、最省事的编写手段。通过函数设计,使得编写变得容易清楚,头脑逻辑清晰,不知不觉中体会到程序解耦优势。这样一来再加入新功能时,就不必担心运行过程中寄存的数据流失。程序的设计结构:外层是循环,内部是对数据的分支处理。主要两大主分支,加速系统和减速系统;一个数据输出处理。设计框架和设计思想确立后,剩下的就是实现的细节问题和程序bug,只有耐心地发现问题。最后感谢队友帮助,共同完成此次课设。

微机原理:汽车速度控制系统的设计与实现相关推荐

  1. 微机原理课程设计-汽车速度控制系统

    1.8255基本输入输出 能够在自行设计的接口开发板上,实现拨动开关控制LED的亮灭. DATA SEGMENT DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE ...

  2. 计算机微机原理与接口技术课程设计课题,微机原理与接口技术课程设计报告

    <微机原理与接口技术课程设计报告>由会员分享,可在线阅读,更多相关<微机原理与接口技术课程设计报告(12页珍藏版)>请在人人文库网上搜索. 1.微机原理与接口技术课程设计设计题 ...

  3. 微型计算机接口与技术的交通灯,微机原理及接口技术课程设计交通灯

    微机原理及接口技术课程设计交通灯 序言 十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则.十字道 口的交通红绿灯控制是保证交通安全和道路畅通的关键.当前,国内大多数城市正在 采用" ...

  4. 【汇编】微机原理与接口技术课程设计

    本文是微机原理与接口技术课程设计 完整的程序和实验报告开源在我的Github上: https://github.com/zstar1003/XDU_Homework/tree/main/%E5%BE% ...

  5. 微型计算机接口与技术的交通灯,微机原理与接口技术课程设计——交通灯设计.doc...

    微机原理与接口技术课程设计--交通灯设计.doc 1 任务及要求 1.1设计任务 交通信号灯的控制: (1)通过8255A并口来控制LED发光二极管的亮灭. (2)A口控制红灯,B口控制黄灯,C口控制 ...

  6. 太原理工大学微型计算机接口技术,微机原理与接口技术课程设计 太原理工大学.doc...

    微机原理与接口技术课程设计 太原理工大学.doc 还剩 18页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 1 ...

  7. 8255,8253微机原理课程十字路口交通灯设计(带交通管制)

    8255,8253微机原理课程十字路口交通灯设计(带交通管制) 前绪 CPU 采 用 8088 设 计 , 采 用 其 最 大 工 作 模 式 . 通 过 245,373,8288 等设计形成地址总线 ...

  8. 微型计算机接口课程设计报告,微机原理与接口技术课程设计报告

    <微机原理与接口技术> 课程设计报告 院系 专业 班级 学号 姓名 指导教师 1.设计目的 使学生根据所学的微机原理和数字电子技术知识,熟悉几种典型波形产生的原理,掌握AD转换电路在智能化 ...

  9. 微型计算机原理设计存储系统,微机原理与接口技术存储器设计.pdf

    2018版 微机原理与接口技术 第六章 存储器设计 董明皓 dminghao@xidian.edu.cn 准备知识 存储器的性能指标-存储容量(常用单位) 存储容量的表示  Bit -- 用二进 ...

最新文章

  1. 参加峰会“金点子”的材料
  2. Webview--如何让加载进来的页面自适应手机屏幕分辨率居中显示
  3. vue.js快速入门
  4. SpringMVC-获得Restful风格的参数
  5. 【Beta阶段】发布说明
  6. Python实现PLA(感知机)
  7. 还在用背单词App?使用Python开发英语单词自测工具,助你逆袭单词王!
  8. Canvas基础-粒子动画Part2
  9. Android文件上传
  10. C语言用广播星历求卫星坐标,GPS广播星历计算卫星位置和速度-Read
  11. 奥克兰大学计算机专业世界排名,奥克兰大学,15学科排名世界前50!
  12. Excel取整函数汇总
  13. nginx做域名映射到指定端口(阿里云服务器、阿里域名服务)
  14. 安装教程:PostgreSQL + PostGIS + pgAdmin
  15. 昆仑万维重磅发布AIGC全系列算法与模型,领跑未来
  16. 支气管分割并3D展示效果
  17. 《Large scale GAN training for high fidelity natural image synthesis》论文阅读记录
  18. 英语语法---定语详解
  19. facebook surround360 环境配置,编译,测试(生成双目立体全景图)
  20. 智能监控系统、人脸识别、智能抓拍、预警系统、机动车辆抓拍、行人抓拍、监控预警管理后台、人流监控、人脸信息采集、语音报警、轨迹分析、抓拍检索、园区监控、实时监控、录像回放、防盗预警、智能算法、跟踪分析

热门文章

  1. python爬虫爬取音频文件
  2. js逆向之rpc远程调用(你强任你强,我无视一切)
  3. Linux上的虚拟机软件有哪些
  4. thinkphp monolog日志写入失败问题解决
  5. vue 本地文件下载 pdf excel 等文件
  6. maltose-BSA 麦芽糖-牛血清白蛋白 BSA-PEG-maltose,牛血清白蛋白-PEG-麦芽糖
  7. 软件公司是如何倒闭的
  8. 关于SynchronousQueue线程池使用的一些认识
  9. 华为孟晚舟:预计2030年人工智能算力将增长10倍|北京青年报
  10. 手指气缸MHL2-10D2/MHL2-16D1/MHL2-20D2