微机系统综合课程设计模拟 IC卡电话机Word格式文档下载.docx
- 文档编号:17373252
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:25
- 大小:191.65KB
微机系统综合课程设计模拟 IC卡电话机Word格式文档下载.docx
《微机系统综合课程设计模拟 IC卡电话机Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机系统综合课程设计模拟 IC卡电话机Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。
显示卡内的余额,调用延时程序,进入拨电话号码的子程序,用一开关表示接通和挂断,当开关打到高电平就表示接通,然后进入计时程序,在计时程序中满一分钟的时候调用计费程序。
当开关打到低电平就通话结束,计费停止。
注释:
因为对于此程序来说,开关对于小灯是低电平有效,所以当开关是高电平时,小灯灭,电话接通。
同理,电话挂断或者未接通,小灯亮。
1.2.1提出方案
首先通过8279芯片读入8位电话卡的卡号,并将其存入内存。
然后利用键盘存入8位电话卡的卡号,利用比较语句,一个字符一个字符比较,看是否与已存入内存的卡号一致,如果一致,则指向该卡号,继续进行下面的操作。
如果不一致,程序不往下走,继续执行输入卡号的部分。
因为不能一直输入卡号,所以限制输入卡号只能三次,如果三次都错误,则操作结束。
然后利用地址变换的方法将所输入的数据转换成所能显示的格式在8279上显示,按照流程顺序,此处显示为卡内余额。
输入卡号完成,就可以打电话了,那么就是输入电话号码的部分。
之后程序系统自动调用延时程序使之进入输入电话号码的程序。
同理,电话号码被确认正确后。
通过延时程序进入计时程序。
此处后来是加入开关对通话开始和结束进行控制的。
利用8279在数码管上同步显示卡内的余额和通话时间,余额为50元。
时间的初始值分别为00:
00,后两位代表秒,前面两位代表分。
等待电话接通,(电话接通用开关为高电平代替)接通开始计时,到一分钟时,产生中断调用计费的程序,计费结束返回。
计费分两种,分别为市话和长途。
通过判断存储电话号码的前一位是否为0分别市话和长途,如电话号码第一位是1则按照长途计费,如电话号码第一位不为1则按照市话计费。
1.2.2方案论证
8279是可编程的键盘、显示接口芯片。
它既具有按键处理功能,又具有自动显示功能。
实验箱上由八位LED数码管可完成对余额,通话时间的显示(每个各可分配两位LED数码管)。
8253是可编程定时器\计数器芯片,可经过分频和输出方波完成周期为1秒的方波脉冲由OUT2输出,进而触发可编程中断控制器8259A,并完成对秒加1。
8259A是可编程中断控制器芯片,用于管理和控制8086的外部中断请求,可实现中断优先级的判定,提供中断类型号,屏蔽中断输入等功能。
这里主要是接收8253传来的输出信号,产生近乎于秒的中断,用来实现计时操作。
1.3设计环境
硬件环境:
AEDK实验箱、PC机
软件环境:
LCT88EA应用软件、WinXP
第2章详细设计方案
2.1硬件设计
本设计中用到的硬件有AEDK实验箱,8279芯片,8253芯片,8259A芯片、小键盘,以及8个八段数码管。
8253芯片的片选CS连至译码处228-22FH,GATE0-GATE2连至电源+5V,根据题目要求,要在电话接通或者挂断的时候,有单色灯辅助显示。
所以把GATE0~GATE2这些端口并联接到开关上,不仅满足5伏电压的要求,还可以控制灯泡的的亮灭,高电平时小灯泡灭,电话开始计时,到达六十秒,调用计费程序,并对其进行相应操作。
脉冲发生器用线连至CLK0,OUT0用线连至CLK1,OUT1用线连至CLK2,OUT2用线连至8259A的中断请求输入端INT0。
8259A芯片的片选CS59连至译码处200-207H。
8279芯片的片选CS79连至译码处210-217H。
如图2.1所示。
图2.1IC卡连线图
2.2软件设计
软件设计的初始主要是:
首先通过写命令字和控制字,将8279、8253、8259A各芯片初始化,并将各个寄存器清零,然后将中断程序装入中断向量表。
这样才能准确无误的进行下面的操作。
本设计的最重要的一步就是记数功能。
因为无论是时间的计时,还是剩余金额的减少都需涉及到计数步骤地实现。
此处程序是由本题目的主要中断服务子程序来实现的,中断服务子程序由两个过程构成,change和xianshi.
其中change实现将程序初始化时的余额,通话时间的信息存入内存。
而xianshi过程则是将change存入内存的信息,在led上显示出来。
为了实现一个能够显示钱数、分、秒的显示,用波特率发生器先产生近于3000的分频,再产生100的分频。
以此来控制计数器8253的记数功能。
再将8253的输出端与8259相连,产生近乎于秒的中断。
动态显示结果由8279完成。
2.2.1主程序的设计与实现
主程序主要是用于完成各个芯片,还有中断向量的初始化,还有就是输入卡号,电话号码,显示余额的操作。
这其中有一个重要的步骤就是利用8279完成键盘的输入。
读入8位电话卡号,将其存入内存,再与每个用户的卡号依次比较,利用cmpsb语句比较卡号是否正确。
各个模块程序的流程图如下:
1、主程序是按照程序设计来一点一点实现的,先进行卡号,电话号码的输入。
金额的显示。
然后判断长途市话,来分开进行计费。
主程序流程图如图2.2所示。
图2.2主程序流程图
2、输入卡号(电话号)流程图,用键盘输入卡号,或者为电话号码,判断是否有键按下,如果有键按下,那么就是有电话卡号,或者电话号码输入,如果满足位数要求则存入内存,如果未满足要求则继续执行输入卡号。
如图2.3。
图2.3输入卡号(电话号)流程图
3、计时程序是在键盘显示金钱,分,秒之后,开关打到高电平显示通话状态。
当计时达到60秒的时候才会调用中断子程序,进行计费的操作。
如果不达六十秒,则继续计时,直到达到为止。
具体实现如图2.4。
图2.4计时程序的流程图
2.2.2显示模块
该模块程序完成余额、分、秒在8位LED数码管上的显示。
主要通过获取内存区上定义的时刻和金额、分、秒的有效地址,将每两个字节分别根据换码表转换后,将其通过8279显示在LED数码管。
其具体完成的流程图如下图2.5示。
图2.5显示模块流程图
第3章结果测试及分析
3.1结果测试
将程序源代码经过编译无误后,且将实验箱内的各芯片按照连线图,连接好各电路,并测试好实验箱的串口,开始全速运行程序,通过8279在8位LED数码管上分别显示显示IC卡的余额和通话时间。
刚开始程序按照初始化设置的卡内余额,通话时间为
5
清屏,然后输入卡号。
8
7
6
4
3
2
1
与预先设置卡号匹配,显示余额。
继续输入电话号码
当接通电话时即当开关打到高电平时,经过脉冲发生器对中断程序的触发实现对秒钟的不断加1,根据长途还是市话进行扣费并显示。
且在通话时刻时刻也能驱动另一盏灯灭,进行通话提示。
8位LED数码管显示为测试的电话号为市话,所以余额执行减一操作。
9
8位LED数码管显示为测试的电话号为长话,所以余额执行减二作。
3.2结果分析
在分析结果之前,先分析一下调试过程中出现的错误。
其中让我记忆比较深刻的有下面几个:
第一个就是计时的时候,发生时间跳转的比较慢,不像是一秒钟的计时,发现问题出在初始化进行分频时,弄错了计算方法。
根据以前设计的小程序,调整过来。
第二方面,涉及到计费的时候,没办法完成长途的计费。
通过单步调试发现问题出在判断上,导致无法实现往下跳转的命令。
第三方面,在对余额,分钟,秒,对应位置变换显示时编程出现问题,后来经老师指导,改为6[DI],从而解决问题。
第四方面,就是跳转超出字节,由于程序名字比较多,导致重复比较多的问题。
结果分析:
根据课程设计的要求,满足了输入卡号,正确则显示剩余金额,输入电话号码,显示金额,分,秒。
电话接通,开始计时,满足六十秒,开中断,根据电话号码首位,判断为长途还是市话。
长途一分钟扣两毛,市话扣一毛。
运行结果满足课设要求,所以这次课设还是比较成功的。
参考文献
[1]徐建平.微机原理与接口技术[M].北京:
航空工业出版社,2010
[2]王忠民.微型计算机原理[M].西安:
西安电子科技大学出版社,2003
[3]沈美明,温冬婵.IBM-PC汇编语言程序设计[M].北京:
清华大学出版社,2001
[4]郑初华.汇编语言、微机原理及接口技术[M].北京:
电子工业出版社,2006
[5]陆鑫.微机原理及接口技术[M].北京:
机械工业出版社,2005
[6]刘红玲等.微型原理与接口技术实用教程[M].北京:
电子工业出版社,2008
[7]王钰等.微机原理与汇编语言[M].北京:
[8]方立友.微机原理与汇编语言实用教程[M].北京:
清华大学出版社,2006
[9]朱定华.微机原理、汇编与接口学习指导[M].北京:
清华大学出版社,200
附录(程序清单)
C8253EQU22BH;
8253控制口
JSQ0EQU228H;
通道0
JSQ1EQU229H;
通道1
Z8279EQU212H;
8279控制口
D8279EQU210H;
8279数据口
O8259EQU200H;
8259偶地址
J8259EQU201H;
8259奇地址
CODESEGMENT
ASSUMECS:
CODE
STARTPROCFAR
PUSHDS
MOVAX,0
PUSHAX
JMPSSTT
LEDDB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
h1db6dup(?
)
HHDB8DUP(?
yh1db1,2,3,4,5,6,7,8
APDW7700H
HOURDW02;
卡内余额
MINDW00;
分钟
SECDW40;
秒
AP1DW7300H
HOUR1DW00;
MIN1DW00;
SEC1DW05;
秒
DISPCODEDB8DUP(0);
用于存放每次的计数值
SSTT:
CLI;
关中断
MOVAX,CS
MOVDS,AX
;
----------8255初始化-----------
MOVAL,80H
MOVDX,233H
OUTDX,AL
MOVDX,230H;
控制A口
MOVAL,0FFH
--------8253初始化-------
MOVAL,00010101B;
82530
MOVDX,22BH
MOVAL,96H
MOVDX,228H
MOVAL,01010101B;
82531
MOVAL,32H
MOVDX,229H
MOVAL,10100111B;
82532
MOVAL,01H
MOVDX,22AH
------8259初始化------
MOVDX,O8259
MOVAL,13H;
00010011B,边缘触发,单级使用
OUTDX,AL;
--ICW1----
MOVDX,J8259
MOVAL,08H;
中断类型码
---ICW2----
MOVAL,01H;
非特殊完全嵌套方式,非缓冲方式,非自动EOI方式
---ICW4---
MOVAL,0FEH;
仅保留IR0的中断请求,屏蔽掉IR1-IR7的中断请求
---OCW1----
------中断向量表的装填-----------
MOVBX,OFFSETINT0
MOVSI,20H
MOV[SI],BX
MOVBX,CS
MOVSI,22H
POPDS
----8279初始化-------
MOVDX,Z8279
MOVAL,00H;
8字符显示,左入口,编码扫描键盘,双键所定
MOVAL,38H;
扫描频率
MOVDI,OFFSETAP
CALLXIANSHI
STI;
开中断
MOVDX,212H;
8279
MOVAL,0H
MOVAL,38H
清空fifo栈
MOVAL,0C2H
MOVAL,30H;
设置时钟频率
MOVAX,8100H;
MOVCX,3
TT1:
PUSHCX
T13:
接收一个字节
INAL,DX
TESTAL,0FH
JZT13
MOVAL,40H
MOVDX,210H
输出8个点
MOVAL,90H
MOVCX,8
T12:
LOOPT12
MOVSI,OFFSETHH;
接收IC卡号
MOVDX,212H
T11:
JZT11
MOV[SI],AL
INCSI
MOVBX,OFFSETLED
XLAT
LOOPT11
CLD;
判断卡号是否正确并显示结果
MOVDI,OFFSETYH1
MOVAX,8100H
MOVES,AX
MOVCX,3
TE1:
PUSHCX
MOVBX,DI
MOVSI,OFFSETHH
MOVCX,8
REPCMPSB
JZTE7
JMPT13
TE7:
T21:
LOOPT21
输出余额
MOVCX,2
MOVAL,5BH
MOVAL,3FH
l3:
JZl3
MOVDX,220H
l2:
LOOPl2
MOVSI,OFFSETh1;
输入电话号码
MOVCX,6
T41:
JZT41
LOOPT41
JMPT4
T4:
STI
MOVCX,90H
T2:
MOVAH,01H
ANDAL,0FH
JZT1
CMPAL,0AH
JNZY0
CLI
MOVAH,0H
LEADI,AP
JMPAA
Y0:
CMPAL,0BH
JNZT4
LEADI,AP1
AA:
T5:
POPCX
MOVAL,CL
MOVCX,2H
MOVAL,0
T:
LOOPT
MOVCX,0FFFFH
LOOP$
T1:
CALLXIANSHI
CMPAH,1H
JZT2
ANDAL,0FH
JZT5
CMPAL,13H
JNZT3
CMPCX,90H
JNZLOOP22
MOVBX,1
ADD6[DI],BX
MOVBX,60
CMP6[DI],BX
JNZT5;
SEC≠60时跳
MOVBX,0
MOV6[DI],BX
JMPT5
LOOP22:
CMPCX,92H
JNZLOOP33
ADD4[DI],BX
MOVBX,60
CMP4[DI],BX
MIN≠60时跳转
MOV4[DI],BX
LOOP33:
ADD2[DI],BX
MOVBX,12
CMP2[DI],BX
JNZT5
MOVBX,0
MOV2[DI],BX
CMP[DI],7700H
JZF11
MOV[DI],7700H
JMPLOOP44
F11:
MOV[DI],7300H
LOOP44:
T3:
CMPAL,12H
JZTT5
TT5:
ADDCX,2
CMPCX,96H
JNZTT4
TT4:
XIANSHIPROC
PUSHDI
MOVSI,DI
MOVDI,OFFSETDISPCODE
MOVAX,6[SI]
CALLCHANGE
MOVAX,4[SI]
MOVAX,2[SI]
MOVAX,[SI]
MOV[DI],AL
MOV1[DI],AH
----------显示部分--------
写显示RAM命令
MOVDX,D8279
LOP1:
MOVAL,[DI]
INCDI
LOOPLOP1
POPAX
POPDI
RET
XIANSHIENDP
CHANGE:
PROC
MOVCL,10
DIVCL;
AX/CL,商在AL中,余数在AH中
MOVAL,AH
LEABX,LED
CHANGEENDP
INT0PROC;
中断服务程序
PUSHDX
PUSHBX
ADDSEC,1
CMPSEC,60
JNZLOOP1;
SEC≠60时跳转
MOVSEC,0
MOVSI,OFFSETh1
MOVAL,[SI]
CMPAL,1
JEJIAN2
DECHOUR
CMPHOUR,0
JEJIESHU
JMPJIA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机系统综合课程设计模拟 IC卡电话机 微机 系统 综合 课程设计 模拟 IC 电话机