出租车计价器微机接口课程设计.docx

上传人:b****5 文档编号:11887140 上传时间:2023-04-08 格式:DOCX 页数:17 大小:405.71KB
下载 相关 举报
出租车计价器微机接口课程设计.docx_第1页
第1页 / 共17页
出租车计价器微机接口课程设计.docx_第2页
第2页 / 共17页
出租车计价器微机接口课程设计.docx_第3页
第3页 / 共17页
出租车计价器微机接口课程设计.docx_第4页
第4页 / 共17页
出租车计价器微机接口课程设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

出租车计价器微机接口课程设计.docx

《出租车计价器微机接口课程设计.docx》由会员分享,可在线阅读,更多相关《出租车计价器微机接口课程设计.docx(17页珍藏版)》请在冰豆网上搜索。

出租车计价器微机接口课程设计.docx

出租车计价器微机接口课程设计

信息科学与技术学院

微机原理与接口技术

课程设计报告

 

 

题目名称:

出租车计价器

学生姓名:

王彪

学号:

15

专业年级:

电信10级

(2)班

指导教师:

刘恩博老师

时间:

 

程序框图———————————————————————6

各模块程序分析————————————————————7

程序运行——————————————————————10

评判分析——————————————————————11

6心得体会———————————————————————12

 

1.课程设计综述

课程设计的目的

微机原理与接口技术是一门理论结合实践的专业基础课,同时也是考研的考察科目。

能够毫不夸张的说,学勤学精微机原理,在就业时就有了超级大的优势。

为了让咱们更好的把握汇编语言和各类芯片的特点和功能,安排了咱们这次课程设计。

8086CPU及其相应的外围可编程芯片实现对计价器主体功能的实现是本次实验的目的。

课程设计的题目

出租车计价器

题目要求

(1)、实现计价功能。

(2)、实现手动设计单价。

(3)、实现显示里程、单价与总价。

(4)、扩展功能:

实现自动依照时刻设定单价。

2.方案选择

依照题目要求,需要一个显示单价的显示器,并能够手动调整大小,要有一个千米显示器,来显示行走的路程,还有一个总价显示器,来达到计价功能。

翻阅大量资料后得知千米显示器的增加需要一个固定的脉冲或霍尔式脉冲信号,咱们用一个8253来设置脉冲。

把单价起始值设为5,设置一个加1和一个减1按钮,实现对单价的手动设置。

最后通过代码的相乘运算,把结果送到总价显示器,完成初步的实验目的。

为了显示以上三个数值,咱们选用了三片8255芯片、1个2位7段LED数码管和2个4位7段LED数码管,CPU选用8086,地址总线通过两片74LS373进行地址锁存,一片连接74LS138连通3片8255的片选信号CS,一片连接各个8255的操纵端口A1和A0。

通过3个单脉冲开关按钮实现对整个电路的操纵。

原理框图如下所示:

3.硬件原理电路图的设计及分析

整体电路图

各模块功能原理分析

3.2.1CPU模块

选定8086工作在最小模式下,地址选通信号连接两片74LS373用于地址锁存,RD和WR信号连接3片8255的RD和WR引脚。

74LS373模块

CPU的总线连到两片74LS373的输入端,AD0~AD7接第一片用于三片8255和8253的A一、A0的选择操纵,AD8~AD15接第二片用于连到74LS138并对三片8255和8253的CS片选信号进行选择。

LE信号连接CPU的地址选通引脚ALE,OE信号固定接地使之一直能够把锁存器中的数据传送到输出端。

74LS138模块

74LS138为经常使用的三线八线译码器,咱们用它来进行3片8255和8253的选择,设置E一、E二、E3为有效电平使之工作,CBA为三线输入,000选择Y0端口输出,001选择Y1端口,010选择Y2端口,100选择Y4端口。

由此,三片8255和8253的端口地址已经能够确信,如下表所示:

端口

IOA/OUT0

IOB/OUT1

IOC/OUT2

IOCON/CON1

8255A0

8000H

8002H

8004H

8006H

8255A1

9000H

9008H

9010H

9018H

8255A2

0A000H

0A020H

0A040H

0A060H

8253A

0C000H

0C002H

0C004H

0C006H

8253模块

8253是按时计数器,使计时器0工作在模式3,咱们设置为60次记千米。

实现了车轮转速和千米数的转换。

8255模块

8255是通用的并行接口,在本次设计中,咱们把PA口当做输入,PB和PC口当做输出,PB0~7和PC1~4连接LED灯做操纵和显示作用。

由于三片8255的连线一致,因此咱们把操纵字统一设置为90H,使PA口做输入,工作在方式0,PB口做输出,亦工作在方式0,PC的高四位和低四位都工作在输出状态。

7段LED数码管显示模块

7段LED数码管分为共阳极和共阴极两种,本次设计咱们采纳共阴极,ABCDEFG是每一段LED的引脚,1234为位选通信号,由于是共阴极,因此是低电平有效,采纳动态显示的方式显示每一名数码管。

由此能够取得数字0~9相对的ABCDEFG电平,如下表所示:

0

1

2

3

4

5

6

7

8

9

3FH

06H

5BH

4FH

66H

6DH

7DH

07H

7FH

6FH

假设要加入小数点显示,那么十六进制的第二位全数加8即可,具体如下表所示:

0

1

2

3

4

5

6

7

8

9

0BFH

86H

0DBH

0CFH

0E6H

0EDH

0FDH

87H

0FFH

0EFH

 

4.程序设计与分析

程序框图

 

各模块程序分析

DATASEGMENT

COUNTDB05;单价计数器,初值为5

COUNT1DB00;公里计数器,初值为0

SHIWEIDB?

;单价十位

GEWEIDB?

;单价个位

BAIWEI1DB?

;公里百位

SHIWEI1DB?

;公里十位

GEWEI1DB?

;公里个位

BAIWEI2DB?

;总价百位

SHIWEI2DB?

;总价十位

GEWEI2DB?

;总价个位

TEMPDB0;以下三个为按钮判断值

TEMP1DB0

TEMP2DB0

SEGTABDB3FH,06H,5BH,4FH,66H

DB6DH,7DH,07H,7FH,6FH

;不带小数点的7段LED数码管码制

SEGTAB1DB0BFH,86H,0DBH,0CFH,0E6H

DB0EDH,0FDH,87H,0FFH,0EFH

;带小数点的7段LED数码管码制

DATAENDS

CODESEGMENT;

ASSUMECS:

CODE,DS:

DATA

IOAEQU8000H;各个端口的端口地址

IOBEQU8002H

IOCEQU8004H

IOCONEQU8006H

IOA1EQU9000H

IOB1EQU9008H

IOC1EQU9010H

IOCON1EQU9018H

IOA2EQU0A000H

IOB2EQU0A020H

IOC2EQU0A040H

IOCON2EQU0A060H

JSQ0EQU0C000H

JSQ1EQU0C002H

JSQ2EQU0C004H

CON1EQU0C006H

START:

MOVAX,DATA

MOVDS,AX

MOVAL,90H;设置8255控制字

MOVDX,IOCON

OUTDX,AL;输出到三个控制端口

MOVDX,IOCON1

OUTDX,AL

MOVDX,IOCON2

OUTDX,AL

MOVAL,16H;设置8253控制字

MOVDX,CON1

OUTDX,AL

MOVAL,60

MOVDX,JSQ0

OUTDX,AL

START1:

MOVDX,IOA

INAL,DX;接收来自PA口的脉冲信号

NOTAL;接收为低电平,变为高电平

ANDAL,01H;屏蔽其它位,只接收PA0口

CMPAL,TEMP

JZSTART2

MOVTEMP,AL

;与判定值相较,假设不同那么不跳转,假设相同则说明长按或者没按,直接跳转到START2

ADDAL,COUNT

MOVCOUNT,AL;对单价计数器加1

START2:

MOVDX,IOA2

INAL,DX

NOTAL

ANDAL,01H

CMPAL,TEMP2

JZSTART3

MOVTEMP2,AL

CMPCOUNT,0;若单价为0则不再减1

JZSTART3

SUBAL,COUNT

MOVCOUNT,AL;对单价计数器减1

START3:

MOVDX,IOA1

INAL,DX

NOTAL

ANDAL,01H

CMPAL,TEMP1

JZFENJIE

MOVTEMP1,AL

ADDAL,COUNT1

MOVCOUNT1,AL;对公里计数器加1

FENJIE:

;对单价计数器的值进行分解

MOVAL,COUNT

MOVAH,0

MOVCL,10

DIVCL

MOVSHIWEI,AL;分成十位和个位

MOVGEWEI,AH

FENJIE1:

;对公里计数器进行分解

MOVAL,COUNT1

MOVAH,0

MOVCL,10

DIVCL

MOVGEWEI1,AH

MOVAH,0

DIVCL

MOVSHIWEI1,AH

MOVBAIWEI1,AL;分百位十位和个位

FENJIE2:

;对总价进行分解

MOVAL,COUNT

MOVAH,0

MOVCL,COUNT1

MOVCH,0

MULCX;单价和公里数相乘得总价

MOVCL,10

DIVCL

MOVGEWEI2,AH

MOVAH,0

DIVCL

MOVSHIWEI2,AH

MOVBAIWEI2,AL;分百位十位和个位

DISP:

;三个值的显示程序

MOVAL,00000110B

;单价显示器是二位7段LED数码管,因此只屏蔽两位位选信号,1是未选中

MOVDX,IOC

OUTDX,AL

MOVAL,00011110B

;总价和总千米用四位7段LED数码管

MOVDX,IOC1

OUTDX,AL

MOVDX,IOC2

OUTDX,AL

;显示千米百位

XORAX,AX

MOVAL,BAIWEI1

MOVSI,AX

MOVAL,SEGTAB[SI];数码管码制转换

MOVDX,IOB1

OUTDX,AL;输出百位

MOVAL,00011010B;开百位位选信号

MOVDX,IOC1

OUTDX,AL

CALLYS

;输出后执行延时,让该位短暂显示

;总价百位

XORAX,AX

MOVAL,BAIWEI2

MOVSI,AX

MOVAL,SEGTAB[SI]

MOVDX,IOB2

OUTDX,AL

MOVAL,00011010B

MOVDX,IOC2

OUTDX,AL

CALLYS

;显示后继续全数关闭

MOVAL,00000110B

MOVDX,IOC

OUTDX,AL

MOVAL,00011110B

MOVDX,IOC1

OUTDX,AL

MOVDX,IOC2

OUTDX,AL

;单价十位

XORAX,AX

MOVAL,SHIWEI

MOVSI,AX

MOVAL,SEGTAB[SI]

MOVDX,IOB

OUTDX,AL

MOVAL,00000100B

MOVDX,IOC

OUTDX,AL

CALLYS

;千米十位

XORAX,AX

MOVAL,SHIWEI1

MOVSI,AX

MOVAL,SEGTAB1[SI]

;用带小数点显示十位

MOVDX,IOB1

OUTDX,AL

MOVAL,00010110B

MOVDX,IOC1

OUTDX,AL

CALLYS

;总价十位

XORAX,AX

MOVAL,SHIWEI2

MOVSI,AX

MOVAL,SEGTAB1[SI]

;用带小数点显示十位

MOVDX,IOB2

OUTDX,AL

MOVAL,00010110B

MOVDX,IOC2

OUTDX,AL

CALLYS

;显示后继续全数关闭

MOVAL,00000110B

MOVDX,IOC

OUTDX,AL

MOVAL,00011110B

MOVDX,IOC1

OUTDX,AL

MOVDX,IOC2

OUTDX,AL

;单价个位

XORAX,AX

MOVAL,GEWEI

MOVSI,AX

MOVAL,SEGTAB[SI]

MOVDX,IOB

OUTDX,AL

MOVAL,00000010B

MOVDX,IOC

OUTDX,AL

CALLYS

;总千米个位

XORAX,AX

MOVAL,GEWEI1

MOVSI,AX

MOVAL,SEGTAB[SI]

MOVDX,IOB1

OUTDX,AL

MOVAL,00001110B

MOVDX,IOC1

OUTDX,AL

CALLYS

;总价个位

XORAX,AX

MOVAL,GEWEI2

MOVSI,AX

MOVAL,SEGTAB[SI]

MOVDX,IOB2

OUTDX,AL

MOVAL,00001110B

MOVDX,IOC2

OUTDX,AL

CALLYS

JMPSTART1;完成一次显示后继续

YSPROCNEAR

MOVCX,500

DELY:

NOP

LOOPDELY

RET

YSENDP

CODEENDS

ENDSTART

5.系统评判

程序运行

整个程序能够正常运行和显示,运行图如下所示:

(1)开始运行

(2)千米数增加

(3)手动设置单价

评判分析

本设计针对出租车计价器还有许多不足的地方,并非是现今流行的出租车计价器,即必然千米数内为定价,超出千米数后开始计价,只完成了题目的初步要求。

本设计的特点在于能够手动设置单价

整个电路其实并非用太多的8255芯片,能够把两片对应于4位7段LED数码管的显示部份进行精简,即用一个8255芯片操纵两个数码管,让他们公用输出端口,只要输出时正确选择位选信号即可。

对单价做减价处置时,单价为0时再也不做减1处置,但运行时发觉有不稳固显示现象,即在按钮按住不放时显示不正确,可能是对各个寄放器的处置并非到位,处置方式能够是做好各个寄放器的爱惜工作。

系统只设置了单价从0到99,总价和千米从0到,假设超出那么会显现乱码现象,咱们能够在计数器以后设置判定和跳转指令,即超出显示范围时对计数器赋0处置。

整体来讲,本次设计大体完成了题目要求。

6.心得体会

通过本次课程设计,让我受益颇丰。

拿到题目时,我即联想到了实验课上教师给咱们演示的显示系统,以后,我翻阅了微机接口的有关图书资料后,对设计整体思路有了可能把握。

查阅了7段LED数码管的工作原理,由于在实验时忽略了共阴极和共阳极的区别,因此在位选时出了很多过失,但最后取得了解决,共阴极的位选信号是0有效,共阳极的位选信号是1有效。

关于8255和8253芯片的利用也取得了进一步的提升,关于最初的地址设置步骤也取得了进一步练习,即能够通过锁存器对地址进行锁存,译码器对地址进行译码转换,让CPU的地址线取得扩展。

本次实验最大的收成是学会了如何正确利用7段LED数码管和对程序设计的整体分析及把握。

程序在刚开始运行时存在很多错误,通过量次从头更改和测试取得了改善,关于汇编的很多细节取得了更好的熟悉,例如16位的数字假设开头是字母那么应该在字母前面加0来表示16进制。

关于PROTEUS的利用也取得了进一步的熟练,使我能够加倍驾轻就熟的利用这款软件,在翻阅资料的进程中发觉PROTEUS是设计单片机的重要软件,许多单片机设计都在该软件中设计,这使我明确了接下来的学习方向和对PROTEUS的重视,这款软件还有许多其他的分析仿真功能等待咱们去利用,应该尽力学习,为以后的单片机课程打下基础。

本次实验的成功也使得我对学习微机原理和单片机的热情高涨,不足和不懂的地方还有许多,望教师能够多加指导。

参考文献:

[1]戴梅萼史嘉权•微型运算机技术及应用(第4版)•清华大学出版社,2020

[2]宋廷强等•32位微机原理与接口技术实验指导•化学工业出版社,2020

[3]佘新平等•数字电路设计仿真测试•华中科技出版社,2020

[4]周润景等•基于PROTEUS的电路及单片机设计与仿真(第2版)•北京航空航天大学,2020

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1