单片机出租车计价器课程设计.docx
《单片机出租车计价器课程设计.docx》由会员分享,可在线阅读,更多相关《单片机出租车计价器课程设计.docx(7页珍藏版)》请在冰豆网上搜索。
单片机出租车计价器课程设计
内部编号:
(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)
单片机出租车计价器课程设计
嵌入式系统基础
课
程
说
明
书
设计题目:
出租车计价器
学院:
太原理工大学现代科技学院
班级:
电子信息
姓名:
学号:
一、设计题目:
出租车计价器
二、设计思路:
如今单片机由于其体积小,性能完善,所以广泛应用于各个行业中。
在出租车上,计价器便采用了单片机的应用技术,采用一系列的外部设备将出租车行驶以及停车等各个状态输入单片机,通过程序加以运算控制,再输出显示以及打印等。
我们试着用所学的知识,设计并模拟出租车计价器的工作方式,通过实践来掌握应用设备的工作原理。
三、设计任务
出租车计价器需要的主要外部设备有公里计数器,以及显示、定时装置,通过线路连接构成一个完整的系统。
公里计数器设想:
利用光电或者霍尔效应原理对车轮转过360°角位移产生一个脉冲信号送给单片机作为一定距离的计数值。
显示器:
用LED显示,动态扫描显示,不断输出即时价格已及时间。
定时装置(本设计中未引入):
记录在停车或某些情况下的时间,用于辅助计价。
四、里程计数器的原理(光电式)
在与车轴同步的轴上装有一隔光盘,上仅有以窄缝可以通光。
在隔光盘两侧分别装有与车体固定的光源和感光元件。
当隔光盘随轴转动时,光源发出的光被隔光盘隔离,只有在窄缝处感光元件接收到光信号,对后续电路产生一个脉冲。
这就是对里程转换为计数值的基本原理。
其产生的脉冲信号则作为单片机计数器的输入信号,当单片机中计数器计到某一数量即为车行驶一公里,并对价格进行增加。
在没有实际对这样计数装置试用,只能对其原理进行分析,在之下的程序设计中只取其脉冲信号作为单片机输入信号(P3.4)。
五、LED显示电路
对设计总体分析下,只需对其价格进行显示,选用四个LED数码管分别显示价格的百位、十位、个位以及十分位(单位:
元)。
显示方式采用动态扫描的方式,数据输出为P0口,位选为P2口,共阴极(如图)。
六、计价器的计价要求
计价方式:
起价(两公里)白天8元,晚上8.6元;由一开关进行选择。
每公里1.5元。
转数与公里数:
汽车轮胎周长近似为1.5米,故一百米需要转过67圈,计67个数产生一个溢出中断。
七、电路原理图及引脚
P0.7-P0.0
数码管输出数据
P2.7-P2.4
数码管位选
P1.0
显示小数点(长亮)
P1.2
计价器工作开关
P1.3
白天/夜间切换
P3.4
计数脉冲输入
八、源程序
ORG0000H;起始地址
AJMPSTART
ORG001BH;计数中断地址
LJMPCNT1
ORG0030H;主程序地址
START:
MOVPSW,#00H
MOVIE,#88H;IE=10001000B
MOVTMOD,#60H;TMOD=01100000B,T1工作方式2
MOVTH1,#0BDH;自动重装
MOVTL1,#0BDH;计67个数
SETBTR1;计数器启动
CLRP1.0;点亮小数点dp
MOVR4,#0FFH;置数-1
MOVR0,#20H;指向数据区首地址
MOVR1,#04H;数字个数
LP1:
MOV@R0,#00H;把00放入显示数据区
INCR0;指针加一
DJNZR1,LP1;继续置数
OFF:
SETBP1.2
JNBP1.2,ON;计价器开始跳转至ON
ACALLDISP;调用显示子程序
AJMPOFF
ON:
SETBP1.3
JBP1.3,DAY;判断白天or夜间行车
NIGHT:
MOVR2,#00H;价格后两位压缩BCD码
MOVR3,#01H;价格高两位压缩BCD码
MOV21H,#01H;显示数据区放入起价BCD码
CALLDISP;显示夜间起价
AJMPLP2
DAY:
MOVR2,#80H;价格后两位压缩BCD码
MOVR3,#00H;价格高两位压缩BCD码
MOV22H,#08H;显示数据区放入起价BCD码
LP2:
CALLDISP;显示白天起价
AJMPLP2
CNT1:
MOV35H,R5
MOV36H,R6
MOV32H,R0
MOV31H,A
MOV30H,R4;保护中断前寄存器内容
CJNER4,#00H,INCC;两公里内计数值加1
CLP0:
MOVA,R2
ADDA,#01H;后两位计价加一
DAA;十进制调整
MOVR2,A
MOVA,R3
ADDCA,#00H;前两位计价加进位
DAA;十进制调整
MOVR3,A
CLP2:
MOVA,R2
MOVB,#10H
DIVAB;将压缩BCD码拆成BCD码
MOV23H,B
MOV22H,A;按高低位存入显示数据区
MOVA,R3
MOVB,#10H
DIVAB;将压缩BCD码拆成BCD码
MOV21H,B
MOV20H,A;按高低位存入显示数据区
CALLDISP;显示价格
AJMPRETC
INCC:
INCR4;两公里内计数器加一
RETC:
MOVA,31H
MOVR0,32H
MOVR5,35H
MOVR6,36H;恢复中断前数据内容
RETI;中断结束
DISP:
MOVR5,#04H;显示子程序,显示个数
MOVR0,#20H;指向数据区首地址
MOVR6,#80H;位选
MOVDPTR,#TAB;指针指向显示列表
DLP0:
MOVA,@R0
MOVCA,@A+DPTR;取出对应的显示代码
MOVP0,A;输出数据
MOVA,R6
MOVP2,A;输出位选
RRA;右移位选
MOVR6,A
INCR0;指向下一地址
DJNZR5,DLP0;循环
RET;结束
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,
DB7FH,67H;显示代码列表
END
九、流程图
十、调试
利用KeilC51软件对其进行编译、仿真,得出比较满意的效果。
由于没有实际电路板,在调试过程中,利用显示数据存储区“20H,21H,22H,23H”对其要求显示价格进行观察,能够看到其中价格随着计数器中断在变动着,并且逢十进一,比较理想地显示了价格。
十一、总结
通过这次课程设计,我对单片机的工作原理有了更深一步的了解,对于中断、定时/计数器的工作方式更加明确,并且在应用上掌握了不少方法。
在通过与同学们交流中,也发现不少问题,并且及时的做出相应的更改,还有一些应用巧妙的方法,这些使我对单片机技术能更灵活的应用。
在我的课程设计中,当时发现的问题就是中断调用时,对现场的保护问题,由于寄存器是共用的,中断时间不确定,所以必须中断时对现场进行保护,不能让中断中的数据覆盖原来的数据。
另外,由于时间以及技术的缺乏,设计程序中没有加入定时的程序——停车计时计价,这里面也存在这许许多多的问题,比如停车是用中断判断还是扫描判断等。
这些进一步的探究我将在以后的不断学习中进行该善。
十二、参考文献
[1]杨恢先.单片机原理及应用[M].长沙:
国防科技大学出版社,2003.
[2]肖鹏,陈伟民.一种新型多功能出租车计价方案设计[J].自动化与仪器仪表,2003,第3期.
[3]何小艇.电力拖动自动控制系统电子系统设计[M].杭州:
浙江大学出版社,2000.
[4]何立民.MCS–51系列单片机应用系统设计系统配置与接口[M].北京:
北京航空学院出版社,1990.
[5]马鸿文.新一代出租车计价器微机设计系统.计算机应用[J].2005.26(6).
[6]孙涵芳.MCS–51、96系列单片机原理及应用[M].北京:
北京航空学院出版社,1988.