已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告( 年度第 一 学期)课 程: 微机原理及应用 题 目: 模拟汽车限速 院 系: 自动化系 班 级: 自动化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位ad0.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位ad0.7即偶存储体传输数据,即8086的a0需维持0,导致8086的a3、a2、a1分别接入三个与非门,则数码管位选/键盘列输出(outbit)、数码管段选(outseg)地址分别为0b004h、0b008h。(4)8253a的片选地址为0a000h,则接入。计数器0、1分别工作在方式0(计数)、3(方波)a.clk0、clk1接入125 khz的时钟源;b.out0持续输出低电平直至2ms后变高电平,out1输出的2500hz方波接出蜂鸣器;c.gate0接入电源保证计数器0能持续计数,gate1接入q3即8255的pa3口。 注:数据总线低8位ad0.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位ad0.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中断a8255 equ 8000h ;8255的pa口地址b8255 equ 8002h ;8255的pb口地址k8255 equ 8006h ;8255控制器地址o8259 equ 9000h ;8259偶地址j8259 equ 9002h ;8259奇地址j8253_0 equ 0a000h ;8253计数器0地址j8253_1 equ 0a002h ;8253计数器1地址k8253 equ 0a006h ;8253控制器地址keyin equ 0b002h ;键盘行读入outbit equ 0b004h ;数码管位选/键盘列输出地址outseg equ 0b008h ;数码管段选地址collow equ 0c000h ;点阵列低八位地址colhigh equ 0c002h ;点阵列高八位地址 rowlow equ 0c004h ;点阵行低八位地址rowhigh equ 0c006h ;点阵行高八位地址code segment assume cs:codestart:cli ;关中断;8253a初始化(clk0=clk1=125000hz) mov dx,k8253 mov al,30h ;00110000b out dx,al ;计数器0:工作方式0(计数)+二进制 mov al,76h ;01110110b out dx,al ;计数器1:工作方式3(方波)+二进制 mov dx,j8253_0 mov al,0fah ;计数器0预置值250=0fah out dx,al ;计数器0持续低电平直至2ms后变高电平 mov al,00h out dx,al mov dx,j8253_1 mov al,32h ;计数器1预置值50=32h out dx,al ;计数器1输出2500hz方波 mov al,00h out dx,al;8255初始化 mov dx,k8255 mov al,82h ;10000010b=82h out dx,al ;a口方式0输出,b口方式0输入;非规范装入nmi中断向量 mov ax,0 mov ds,ax ;中断向量表段基址0000h mov bx,02h*4 ;bx为nmi即2号中断向量指针 mov ax,offset intp mov bx,ax inc bx inc bx mov ax,seg intp ;中断子程序intp入口地址 mov bx,ax ;放入nmi中断向量表2号;主程序 mov dx,a8255 mov al,00h ;led全灭+计时器2停止工作 out dx,al mov ax,data mov ds,ax sti ;开中断 l8: mov bh,5 ;速度标志初始化为5;等待定时时间到l0: mov di,0 ;中断统计次数初始化为0 mov bl,10 ;10s计数次数初始化为10l1: mov cx,0 ;1s计数次数初始化为0l2: mov dx,b8255 in al,dx ;读out0即pb0口状态 and al,01h ;屏蔽pb口高7位 cmp al,1 ;out0输出高电平则2ms到 jnz l2 ;2ms到则重新启动计数器0 mov dx,k8253 mov al,30h ;01110000b out dx,al ;计数器0:工作方式0(计数)+二进制 mov dx,j8253_0 mov al,0fah ;计数器0预置值250=0fah out dx,al mov al,00h out dx,al ;考虑7段数码管显示 cmp bl,9 jle l6 ;bl=9转到l6 call smg1 ;bl=10调用smg1;考虑16*16点阵显示l6: cmp bh,5 je l3 ;bh=5转到l3 call dian ;bh!=5调用dianl3: inc cx cmp cx,500 jnz l2 ;cx=500则1s到 mov dx,outbit mov al,0dfh ;11011111b out dx,al ;低电平扫描第1列 mov dx,keyin in al,dx ;读第1列的行键 not al and al,0fh ;屏蔽无用的高4行 cmp al,1 jne l7 call stop ;al=1(即按下键0)调用stop jmp l8l7: call smg2 ;调用smg2 dec bl jnz l1 ;bl=0则10s到;空,空,空,空,声,红,黄,绿(高电平:点灯+计时器1输出方波) cmp di,8 jg l5 cmp di,6 jg l4 mov dx,a8255 mov al,01h ;00000001b out dx,al ;di=6即未超速,点绿灯 mov bh,0 jmp l0l4: mov dx,a8255 mov al,02h ;00000010b out dx,al ;6di8即严重超速,点红灯+启动扬声器 mov bh,2 jmp l0;按下键0停止系统子程序stop proc near;关闭led和扬声器 mov dx,a8255 mov al,00h out dx,al;关闭6位数码管 mov dx,outseg mov al,00h out dx,al;关闭点阵所有列 mov al,0ffh mov dx,collow out dx,al mov dx,colhigh out dx,al;查询按键1是否按下(即重启系统)t0: mov dx,outbit mov al,0dfh ;11011111b out dx,al ;低电平扫描第1列 mov dx,keyin in al,dx ;读第1列的行键 not al and al,0fh ;屏蔽无用的高4行 cmp al,2 jne t0 ret ;al=2(即按下键1)返回stop endp;数码管动态显示10子程序smg1 proc near push cx mov ax,cx ;ax=cx mov cl,2 ;cl=2 div cl ;ax%cl=cx%2=ah cmp ah,0 jnz s1s0: mov dx,outbit mov al,01h ;00000001b选wei0 out dx,al mov dx,outseg mov al,3fh ;显示0 out dx,al jmp s3s1: mov dx,outbit mov al,02h ;00000010b选wei1 out dx,al mov dx,outseg mov al,06h ;显示1 out dx,als3: pop cx retsmg1 endp;数码管静态显示91子程序smg2 proc near push bx mov bh,0 dec bl ;bx=bl mov si,bx ;si=bx=bl lea bx,smgdm mov dx,outbit mov al,01h ;00000001b选wei0 out dx,al mov dx,outseg mov al,bx+si ;显示 out dx,al pop bx retsmg2 endp;点阵动态显示汉字子程序dian proc near push cx push bx;选出要扫描的列(每隔4ms扫描下列) mov ax,cx mov cl,16 div cl ;ax%cl=cx%16=ah mov cl,ah ;cl存放右移次数;选出本列要输出的行数据 shl ah,1 mov al,ah ;al=ah*2 mov ah,0 mov si,ax ;si存放行数据的相对位置;向要扫描的列放入低电平 mov ax,7fffh ;0111111111111111b ror ax,cl mov dx,collow out dx,al mov dx,colhigh mov al,ah out dx,al;选择要输出哪组字:安全,超速,违规 shl bh,1 shl bh,1 ;bh=bh*4 mov cl,bh ;cl存放组相对table的位置;选择本组要输出的字(第1、第2个字隔1s输出) mov bh,0 mov ax,bx mov bl,2 div bl ;bl%2=ah shl ah,1 ;ah存放字相对组的位置 add cl,ah mov ch,0 ;cx存放字相对table的位置 push si mov si,cx lea bx,table mov cx,bx+si mov bx,cx ;bx存放字相对data的位置 pop si;高电平选择输出的行 mov dx,rowhigh mov al,bx+si out dx,al mov dx,rowlow mov al,bx+si+1 out dx,al pop bx pop cx retdian endp;中断服务子程序intp proc near inc di iretintp endpcode ends ;code逻辑段结束data segment ;data逻辑段开始;共阴极数码管段码表smgdm db 3fh,06h,5bh,4fh ;0-7 db 66h,6dh,7dh,07h db 7fh,6fh,77h,7ch ;8-f db 39h,5eh,79h,71h;字模低电平列扫描,高电平点亮行(先输出高8位,后输出低8位);安z1_0 db 01h,00h,09h,01h,31h,01h,21h,21h db 21h,62h,21h,92h,0afh,14h,61h,08h db 21h,08h,21h,34h,21h,0c4h,21h,02h db 29h,01h,31h,00h,01h,00h,00h,00h;全z1_1 db 01h,00h,01h,02h,02h,02h,04h,22h db 0ah,22h,12h,22h,22h,22h,0c3h,0feh db 22h,22h,12h,22h,0ah,22h,04h,22h db 02h,02h,01h,02h,01h,00h,00h,00h;超z2_0 db 02h,01h,12h,06h,12h,0f8h,12h,04h db 0ffh,0feh,12h,22h,12h,22h,42h,02h db 45h,0f2h,79h,12h,41h,12h,45h,12h db 43h,12h,7dh,0f2h,00h,02h,00h,00h;速z2_1 db 02h,00h,02h,02h,42h,04h,33h,0f8h db 00h,04h,20h,12h,2fh,22h,29h,42h db 29h,82h,0ffh,0fah,29h,82h,29h,42h db 2fh,22h,20h,12h,00h,02h,00h,00h ;违 z3_0 db 02h,02h,42h,04h,33h,0f8h,00h,04h db 20h,82h,24h,82h,24h,82h,24h,82h db 0ffh,0feh,24h,82h,24h,82h,24h,92h db 24h,8ah,20h,0f2h,00h,02h,00h,00h;规z3_1 db 01h,02h,11h,04h,11h,18h,0ffh,0e0h db 11h,10h,11h,0dh,01h,02h,7fh,0c4h db 40h,18h,40h,60h,4fh,80h,40h,7eh db 40h,01h,7fh,0c1h,00h,07h,00h,00h;字模表(1个字占2字节,1组字占4字节)table dw z1_0,z1_1,z2_0,z2_1,z3_0,z3_1data ends ;data逻辑段结束 end start ;源程序结束在实验室中,代码须作出以下修改:;地址修改a8255 equ 8000h ;8255的pa口地址b8255 e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中考物理复习专题5间接测量类实验课件
- 电机与电气控制实训课程教案
- Photoshop创意合成实例教案
- 《鲤鱼风筝》教案
- 中小学教务管理聘用协议书
- 幼儿园体弱儿关怀计划
- 教育培训中心箱涵施工合同
- 临时销售电脑租赁合同范本
- 超市卖场租赁续约协议
- 矿产资源勘查单位聘用合同模板
- 建筑消防工程施工操作规程
- 项目现场余料与废料处理的管理规定
- GB/T 42461-2023信息安全技术网络安全服务成本度量指南
- 乡村振兴专题知识考试题库(核心600题)
- 大学生劳动教育PPT新时代大学生劳动教育教程全套完整教学课件
- (完整word版)扣字词汇124
- 最新医疗PPT-腰椎间盘突出症诊疗指南PPT(精选)
- 2023届广东省广州市高三一模语文现代文阅读小说《给我一枝枪》讲评课件
- 第6章开放式创新课件
- GB/T 27548-2011移动式升降工作平台安全规则、检查、维护和操作
- GB/T 15007-2017耐蚀合金牌号
评论
0/150
提交评论