版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、硬件课程设计报告题 目: 出租车计价器 目 录1引言41.1设计目的41.2设计任务41.3设计思路42.需求分析42.1芯片原理42.1.1可编程计数器/定时器8253/8254原理52.1.2可编程外围接口芯片8255原理52.1.3 12864液晶显示器ST7920原理52.2硬件设计52.3软件设计52.3.1功能模块图52.3.2程序流程图52.3.3模块流程图53.详细设计53.1程序模块分析83.1.1初始化模块程序分析83.1.2判断开关程序模块分析83.1.3圈数统计模块程序分析83.1.4计算里程模块程序分析83.1.5显示模块程序分析83.1.6结束模块程序分析83.2程
2、序代码84.程序结果95.分析与测试96.体会9附录A:参考文献10一、引言1.1设计目的现在各大城市出租车已经成为了一种重要的交通工具,当然出租车的收费问题也成了人们关注的焦点,那么怎么样才能实现一种合理的收费方式让大家都认可呢?在这种要求下,出租车自动计价器就走进了人们的生活,当然这就要求有一种合理公正的计价器收费方式。这不仅关系到出租车计价器的市场,也影响这出租车的市场,这就要求我们设计出更好的计价器来满足人们的需求。本设计是关于出租车计价器的设计。在本次设计中,我以计价器的基本功能作为设计的重点。为了完成上述设计,我们采用了8254、8255等芯片,用计算机汇编语言进行软件功能的实现。
3、1.2设计任务1.实现一个出租车计价器,可以显示起步价。2.一个键来控制是否到达终点,是否计价要清零。3.基于路程的出租车计价方式。1.3设计思路利用直流电机来模仿出租车轮子的转动来计算出租车行进的路程。将直流电机的直流端与滑动变阻器相连,通过人工控制滑动变阻器来模拟出租车的行进;并将计数端与8253CLK0端相连,GATE0接高电平,工作方式为方式二。直流电机每转1000圈,8253输出一个高电平,假设出租车已经走了1公里。同时将8253OUT0接入8255方便CPU读取。再将8255与ST7920显示器相连,CPU通过控制8255来控制显示,一旦8255从8253读入一个高电平,则公里数加
4、一,同时价格相应增加。另有一个开关连入8255,用以判断出租车计价器是否启动。二、需求分析2.1芯片原理本节主要在介绍本次设计所用到的芯片的原理,共有可编程计数器/定时器8253/8254、可编程外围接口芯片8255和12864液晶显示器ST7920原理三种芯片。2.1.1可编程计数器/定时器8253/8254原理图2-1 8254内部结构图从图2-1可见,8254内部包含数据总线缓冲器、读/写控制逻辑、控制字寄存器和3个结构完全相同的计数器,这3个计数器分别称为计数器0、计数器1和计数器2。图2-2 8254管脚图A1、A0:地址输入线,用来控制8253内部的4个端口,即3个计数器和1个控制
5、字寄存器与CPU系统地址线相连。CLK0-2:时钟脉冲输入端,用于输入定时脉冲或计数脉冲信号。CLK可以是系统的时钟脉冲,也可以由系统时钟分频或者其他脉冲源提供。当用于定时时,这个脉冲必须是均匀的、连续的、周期精确的,而用于计数时,这个脉冲可以是不均匀的、断续的、周期不定的。GATE0-2:门控输入端,用于外部控制计数器的启动计数和停止计数的操作。两个或两个以上计数器连用时,可用此信号同步,也可用于与外部某信号的同步。OUT0-2:计数输出,当计数器从初值开始完成计数操作进,OUT引脚输出相应的信号。8253的方式控制字图2-3 8254控制字图本设计中8254的功能 只是用通道1,采用方式三
6、。采用二进制计数,输入0FFFH。先输入低字节,再输入高字节。当8254从0FFFFH递减到159FH时(即转了60000圈时),8254向总线发信号使程序向下进行。2.1.2可编程外围接口芯片8255原理内部结构如图所示,由以下4个部分组成: 图2-4 8255内部结构图(1)输入/输出端口A、B、C 。这三个端口均可看作是I/O端口,但它们的结构和功能也稍有不同。A口和B口是一个独立的8位I/O口。C口:可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口。 (2)A组和B组控制电路。这是两组根据CPU命令控制8255A工作方式的电路,这些控制电路内部设有控制寄存器,可以根
7、据CPU送来的编程命令来控制8255A的工作方式,也可以根据编程命令来对C口的指定位进行置/复位的操作。A组控制电路用来控制A口及C口的高4位;B组控制电路用来控制B口及C口的低4位(3)读/写控制逻辑 。(同上:它负责管理8255A的数据传输过程。它接收CS*及RD*、WR*、RESET,还有来自系统地址总线的口地址选择信号A0和A1。将这些信号组合后,得到对A组控制部件和B组控制部件的控制命令,并将命令发给这两个部件,以完成对数据、状态信息和控制信息的传输。)(4)数据总缓冲器 。(同上:它是8位的双向的三态缓冲器。作为8255A与系统总线连接的界面,输入/输出的数据,CPU的编程命令以及
8、外设通过8255A传送的工作状态等信息,都是通过它来传输的。)如图所示8255A的芯片引脚信号。除了电源和地以外,其他信号可以分为两组:图2-5 8255管脚图1.和外设一边相连的: PA7-PA0:A组数据信号 PB7-PB0:B组数据信号 PC7-PC0:C组数据信号 2.和CPU一边相连的: RESET:复位信号,低电平有效。 当RESET信号来到时,所有内部寄存器就被清除,同时,3个数据端口被自动设为输入端口。D7-D0:它们是8255A的数据线,和系统数据总线相连。 CS*:芯片选择信号,低电平有效。在一个系统中,一般根据全部接口芯片来分配若干较低位地址(比如A5、A4、A3)来组成
9、各种芯片选择码,当这几位地址组成某一个代码时,译码器便往8255A的CS*端输出一个低电平,于是8255A被选中。只有当 CS*有效时,读信号RD*和写信号WR*才对8255A有效。 RD*:芯片读出信号低电平有效。 WR*:芯片写入信号低电平有效。 8255的方式控制字格式图2-6 8255控制字图本设计中8255的功能 8255PA0-PA7和PC0-PC2与ST7920相连,控制输出。PB0与8253的OUT1相连,读入8253OUT1 的数据。PB1与开关K0相连,读入K0的数值用于确定是否开启计价器。2.1.3可编程外围接口芯片8255原理ST7920控制器系列中文图形液晶模块的软件
10、特性主要由ST7920控制驱动器决定。ST7920同时作为控制器和驱动器,它可提供33路com输出和64路seg输出。在驱动器ST7921的配合下,最多可以驱动256×32点阵液晶。ST7920是台湾矽创电子公司生产的中文图形控制芯片,它是一种内置12864汉字图形点阵的液晶显示控制模块,用于显示汉字及图形。该芯片共内置8192个中文汉字(16×16点阵)、128个字符的ASCII字符库(8×16点阵)及64×256点阵显示RAM(GDRAM)。为了能够简单、有效地显示汉字和图形,该模块内部设计有2MB的中文字型CGROM和64×256点阵的G
11、DRAM绘图区域;同时,该模块还提供有组可编程控制的16×16点阵造字空间;除此之外,为了适应多种微处理器和单片机接口的需要,该模块还提供了4位并行、8位并行、2线串行以及3线串行等多种接口方式。利用上述功能可方便地实现汉字、ASCII码、点阵图形、自造字体的同屏显示,所有这些功能(包括显示RAM、字符产生器以及液晶驱动电路和控制器)都包含在集成电路芯片里,因此,只要一个最基本的微处理系统就可以通过ST7920芯片来控制其它的芯片图2-7 ST7920外观尺寸图本设计中ST7920的功能用于显示出租车行驶路程与应收费用。2.2硬件设计 其中,8253GATE1连+5V高电平,直流电机
12、连0+5V,8253连280h287h,8255连288h28fh。8255PA0-PA7连ST7920显示器D0-D7,PC0连DI,PC1连RW,PC2连E。开关K0连8255PB0。8253CLK1连直流电机计数端。 图2-8硬件连接图实际连接图如下图所示图2-9硬件实际连接图2.3软件设计 2.3.1功能模块图本节先给出一个程序的功能模块图。图2-10软件功能模块图2.3.2程序流程图本节先给出一个程序的整体流程图。 图2-11软件程序流程图2.3.3模块流程图如果对整个程序进行细分则可以分为初始化模块,判断开关模块,圈数统计模块,计算里程模块、结束模块和显示模块。其中初始化模块是82
13、53芯片、8255芯片和显示屏的初始化。判断开关模块是对8255的b0端是否有高电平进行判断。圈数统计模块是对直流电机传入8253中高电平的数量进行圈数统计。计算里程模块是对里程及价格进行计算的模块。结束模块是程序结束的操作与方法。显示模块是控制显示屏显示计算模块的结果。图2-12软件模块流程图三、详细设计3.1程序模块分析我们将按模块分析程序的功能并给出模块内的功能流程图。3.1.1初始化模块分析在初始化模块中,我们定义了需要使用的8255和8254的接口,需要使用的变量如JSS,要输出的字符串等,初始化了DS,完成了8255的初始化以及显示屏的初始化。其流程图为图3-1初始化模块流程图3.
14、1.2判断开关模块分析以上为判断开关模块,在判断开关模块中,系统读入8255PB0的电平,如果是高电平则程序继续进行,如果是低电平则程序调用chushi函数,用屏幕显示“空车 欢迎乘坐”,并继续度8255PB0直到有高电平为止。其流程图如下所示:图3-2判断开关模块流程图3.1.3圈数统计模块分析在圈数统计模块中,我们将直流电机计数端连入8254CLK1中(8253采用方式三),在CLK1中读所记的数,从0FFFFH向下计,一直计到159FH,即转了6000圈后,进入程序的下一段。其流程图如下所示:图3-3圈数统计模块流程图3.1.4计算里程模块分析我们用地址JSS里表示已经走过的公里,即82
15、54传过来的高电平,同时我们采用价格公式来计算价格,将其里程和价格对应的中文字码表存入要显示的字符串中。我们用地址JSS里表示已经走过的公里,即8254传过来的高电平,同时我们采用价格公式来计算价格,将其里程和价格对应的中文字码表存入要显示的字符串中。计算公式为:价格=(里程-3)* 2(里程>3) 价格= 7.(里程<=3)并调用显示模块来显示这些字码其流程图如下所示:图3-4计算里程模块流程图3.1.5显示模块分析在显示模块中,我们使用ST7920显示我们要显示的两行字符串。我们采取先显示第一行,再显示第二行的方法,只是用ST7920的中间两行。图3-5显示模块流程图3.1.6
16、结束模块分析结束模块在程序的尾部在结束模块中,我们规定只要在键盘上按任意一个键就会结束整个程序。如果无键按下,则程序自动跳转到程序头部。其程序流程图如下图所示:图3-6结束模块流程图3.2程序代码IO8253A EQU 280HIO8253B EQU 281HIO8253C EQU 283HDATA SEGMENTHZ DW 0C2B7H,0B3CCH,0A3B0H,0A3B0H,0A3AEH,0A3B0H,0B9ABH,0C0EFH DW BCDBH,0B8F1H,0A3B0H,0A3B0H,0A3B0H,0A3AEH,0A3B0H,0D4AAH;存放原始输出HZ_TAB DW 0C2B7H
17、,0B3CCH,0A3B0H,0A3B0H,0A3AEH,0A3B0H,0B9ABH,0C0EFH DW 0BCDBH,0B8F1H,0A3B0H,0A3B0H,0A3B0H,0A3AEH,0A3B0H,0D4AAH ;存放要输出的值HZ_BG DW 0BFD5H,0B3B5H,0A2A0H,0A2A0H,0BBB6H,0D3ADH,0B3CBH,0D7F8H DW 0A2A0H,0A2A0H,0A2A0H,0A2A0H,0A2A0H,0A2A0H,0A2A0H,0A2A0H;存放“空车 欢迎乘坐”HZ_ADR DB ? ;存放显示行起始端口地址JSS DW 0000HDII DW 0000H
18、GAO DW 0000HZHE DW 0000HNUMBER DW 0A3B0H,0A3B1H,0A3B2H,0A3B3H,0A3B4H,0A3B5H,0A3B6H,0A3B7H,0A3B8H,0A3B9HDATA ENDSIO_ADDRESS EQU 288HCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AX MOV DX,IO_ADDRESSADD DX,3MOV AL,82HOUT DX,AL ;8255初始化MOV AL,0FFHMOV DX,300HOUT DX, ALCALL CLEAR ;LCD 清除LLL:
19、 MOV DX,IO_ADDRESSADD DX,1IN AL,DX ;判断开关是否打开AND AL,01HCMP AL,01HJZ F0CALL CHUSHI JMP LLLF0:MOV AL,01110110BMOV DX,IO8253COUT DX,AL ;8254初始化MOV AL,0FFHMOV DX,IO8253BOUT DX,ALMOV AL,0FFH ;设置计数初值0FFFFHOUT DX,ALF1:MOV AL,01000000B MOV DX,IO8253COUT DX,ALMOV DX,IO8253B IN AL,DXMOV AH,ALIN AL,DXXCHG AH,AL
20、CMP AX,159FH ;查看是否下降到159FHJA F1 ;不满足条件继续读值MOV AL,01110110B ;重置8253MOV DX,IO8253COUT DX,ALMOV AL,0FFHMOV DX,IO8253BOUT DX,ALMOV AL,0FFHOUT DX,ALCALL DISP ;调显示子程序CALL DDSPCALL DELAYPUSH DX MOV AH,06H MOV DL,0FFHINT 21HPOP DX JZ LLL MOV AH,4CH ;退出 INT 21HL1: JMP START ; L1CHUSHI PROC NEARLEA SI, HZ_TAB
21、LEA DI,HZMOV CX,0FHF3:ADD SI,2ADD DI,2MOV AX,DIMOV SI,AXLOOP F3 ;重置HZ_TABMOV AX,0000HLEA BX,JSSMOV BX,AXLEA BX, HZ_BGMOV CH,2 CALL LCD_DISPLEA BX, HZ_BGMOV CH,3 ;显示“空车 欢迎乘坐”CALL LCD_DISPRETCHUSHI ENDPDDSP PROC NEARLEA DI,HZ_TABLEA BX,JSSLEA SI,NUMBERMOV AX,WORD PTRBXMOV BP,AXAND BP,00FFHADD BP,BP MO
22、V DX,WORD PTRBP+SIMOV WORD PTRDI+6,DX ;将JSS中低八位传入HZ_TABMOV BP,AXAND BP,0FF00HROR BP,8ADD BP,BPMOV DX,WORD PTRBP+SIMOV WORD PTRDI+4,DX ;将JSS中高八位传入HZ_TAB LEA BX, HZ_TAB MOV CH,2 ;显示第2行信息 CALL LCD_DISPLEA DI,HZ_TABLEA BX,JSSLEA SI,NUMBERMOV AX,WORD PTRBXCMP AX,0003H ;比较路程与3的大小JBE L3 CALL BJLEA BX,JSSJM
23、P L4L3:MOV BP,0007H ;路程比3小的情况ADD BP,BPMOV DX,WORD PTRBP+SI MOV WORD PTRDI+24,DXJMP L4L4: LEA BX, HZ_TAB MOV CH,3 ; 显示第3行信息 CALL LCD_DISPRETDDSP ENDPBJ PROC NEARLEA DI,HZ_TABLEA BX,JSSLEA SI,NUMBERMOV AX,WORD PTRBXCMP AL,03HJAE BJ1SUB AH,01HADD AL,0AHSUB AL,03HAAS ;路程减三并十进制化JMP BJ2BJ1: SUB AX,0003HBJ
24、2:MOV CX,AXAND AX,00FFHADD AL,ALAAAADD AX,07HAAA ;路程加七并十进制化LEA BX,DIIMOV BX,AX ;DIIMOV BP,AXAND BP,00FFHADD BP,BPMOV DX,WORD PTRBP+SIMOV WORD PTRDI+24,DX ;先计算个位MOV AX,CXSHR AX,8AND AX,00FFHADD AL,AL ;十位相加AAALEA BX,GAOMOV BX,AX ;GAOLEA BX,DIIMOV DX,BX ;DIIAND AX,00FFHAND DX,0FF00HSHR DX,8AND DX,00FFH
25、ADD AL,DL ;再加进位AAALEA BX,ZHEMOV BX,AX ;ZHEMOV BP,AXAND BP,00FFHADD BP,BPMOV DX,WORD PTRBP+SIMOV WORD PTRDI+22,DX ;再计算十位LEA BX,ZHEMOV DX,BXLEA BX,GAOMOV AX,BXAND DX,0FF00HAND AX,0FF00HSHR AX,8SHR DX,8ADD DL,AL ;百位加进位AAAMOV BP,DXAND BP,00FFHADD BP,BPMOV DX,WORD PTRBP+SIMOV WORD PTRDI+20,DX ;最后计算百位RET
26、BJ ENDP DISP PROC NEAR ;显示子程序 PUSH DX LEA BX, JSS MOV AX,WORD PTRBX ADD AL,01H CMP AL,09H ;判断是否<=9 JLE NUM ;若是则为'0'-'9',ASCII码加30H MOV AL,00H ADD AH,01H CMP AH,0AH JZ L2NUM: MOV WORD PTRBX,AX ADD AL,30H ADD AH,30H MOV DL,AH MOV DH,AL MOV AH,02H ;屏幕显示 INT 21H MOV DL,DH MOV AH,02H ;
27、屏幕显示 INT 21H MOV DL,0DH ;加回车符 INT 21H MOV DL,0AH ;加换行符 INT 21H POP DX RET ;子程序返回DISP ENDPL2: MOV AH,4CH ;退出 INT 21H CLEAR PROC MOV AL,0CH MOV DX, IO_ADDRESS OUT DX,AL ;设置CLEAR命令 CALL CMD_SETUP ;启动LCD执行命令 RETCLEAR ENDPFUNCUP PROC ; MOV AL, 0FH ;LCD功能设置命令 ; OUT DX, AL ; CALL CMD_SETUP MOV AL, 34H ;LCD
28、显示状态命令 OUT DX, AL CALL CMD_SETUP RETFUNCUP ENDPLCD_DISP PROC; LEA BX, HZ_TAB CMP CH, 2 JZ DISP_SEC MOV BYTE PTR HZ_ADR, 88H ;第三行起始端口地址 ADD BX,16 ;指向第二行信息 JMP NEXTDISP_SEC: MOV BYTE PTR HZ_ADR,90HNEXT: MOV CL,8CONTINUE: PUSH CX MOV AL,HZ_ADR MOV DX, IO_ADDRESS OUT DX, AL CALL CMD_SETUP ;设定DDRAM地址命令 M
29、OV AX,BX PUSH AX MOV AL,AH ;先送汉字编码高位 MOV DX,IO_ADDRESS OUT DX,AL CALL DATA_SETUP ;输出汉字编码高字节 CALL DELAY ;延迟 POP AX MOV DX,IO_ADDRESS OUT DX, AL CALL DATA_SETUP ;输出汉字编码低字节 CALL DELAY INC BX INC BX ;修改显示内码缓冲区指针 INC BYTE PTR HZ_ADR ;修改LCD显示端口地址 POP CX DEC CL JNZ CONTINUE RETLCD_DISP ENDPCMD_SETUP PROC MOV DX,IO_ADDRESS ;指向8255端口控制端口 ADD DX,2 NOP MOV AL,00000000B ;PC1置0,PC0置0 (LCD I端=0,W端0) OUT DX, AL CALL DELAY NOP MOV AL,00000100B ;PC2置1 (LCD E端1) OUT DX, AL NOP CALL DELAY MOV AL, 00000000B ;PC2置0,(LCD E端置0) OUT DX, AL CALL DELAY RETCMD_SETUP ENDPDATA_SETUP PROC MOV DX,IO_AD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络客服工作总结及时解答解决用户问题
- 食品行业食品安全培训总结
- AIDS抗病毒治疗课件
- 2025年全球及中国血流动力学监测解决方案行业头部企业市场占有率及排名调研报告
- 2025-2030全球新能源交流继电器行业调研及趋势分析报告
- 2025-2030全球刚性墙庇护所行业调研及趋势分析报告
- 2025年全球及中国游戏视频背景音乐行业头部企业市场占有率及排名调研报告
- 2025-2030全球滑移转向岩石拾取器行业调研及趋势分析报告
- 2025-2030全球甲氧氯普胺片行业调研及趋势分析报告
- 2025年全球及中国工业级硅酸钾行业头部企业市场占有率及排名调研报告
- 充电桩知识培训课件
- 2025年七年级下册道德与法治主要知识点
- 2025年交通运输部长江口航道管理局招聘4人历年高频重点提升(共500题)附带答案详解
- 老年髋部骨折患者围术期下肢深静脉血栓基础预防专家共识(2024版)解读
- 偏瘫足内翻的治疗
- 药企质量主管竞聘
- 信息对抗与认知战研究-洞察分析
- 心脑血管疾病预防课件
- 手术室专科护士工作总结汇报
- 2025届高三听力技巧指导-预读、预测
- 苏州市2025届高三期初阳光调研(零模)政治试卷(含答案)
评论
0/150
提交评论