资源描述
嵌入式系统设计课程设计
设计名称:出租车计价器
学院:现代科技学院
专业班级:信息0801
姓名:张 腾
学号:100767
目录
一.设计任务及思绪…………………………………………………………………2
二.里程计数器原理………………………………………………………………2
三.LED显示电路……………………………………………………………………2
四.计价器计价要求………………………………………………………………2
五.电路原理图及引脚………………………………………………………………2
六.步骤图……………………………………………………………………………3
七.源程序……………………………………………………………………………4
八.调试………………………………………………………………………………5
九.心得体会…………………………………………………………………………6
十.参考文件…………………………………………………………………………6
一.设计任务及思绪
1.出租车计价器需要关键外部设备有公里计数器,和显示、定时装置,经过线路连接组成一个完整系统。
2.公里计数器设想:利用光电或霍尔效应原理对车轮转过360°角位移产生一个脉冲信号送给单片机作为一定距离计数值。
3.显示器:用LED显示,动态扫描显示,不停输出即时价格已立即间。
4.定时装置(本设计中未引入):统计在停车或一些情况下时间,用于辅助计价。
二、里程计数器原理(光电式)
在和车轴同时轴上装有一隔光盘,上仅有以窄缝能够通光。在隔光盘两侧分别装有和车体固定光源和感光元件。当隔光盘随轴转动时,光源发出光被隔光盘隔离,只有在窄缝处感光元件接收到光信号,对后续电路产生一个脉冲。这就是对里程转换为计数值基础原理。其产生脉冲信号则作为单片机计数器输入信号,当单片机中计数器计到某一数量即为车行驶一公里,并对价格进行增加。在没有实际对这么计数装置试用,只能对其原理进行分析,在之下程序设计中只取其脉冲信号作为单片机输入信号(P3.4)。
三、LED显示电路
对设计总体分析下,只需对其价格进行显示,选择四个LED数码管分别显示价格百位、十位、个位和十分位(单位:元)。显示方法采取动态扫描方法,数据输出为P0口,位选为P2口,共阴极(图)。
四、计价器计价要求
1.计价方法:起价(两公里)白天8元,晚上10元;由一开关进行选择。每公里一元,即每一百米加价一角。
2.转数和公里数:汽车轮胎周长近似为1.5米,故一百米需要转过67圈,计67个数产生一个溢出中止。
五、电路原理图及引脚
P0.7-P0.0
数码管输出数据
P2.7-P2.4
数码管位选
P1.0
显示小数点(长亮)
P1.2
计价器工作开关
P1.3
白天/夜间切换
P3.4
计数脉冲输入
出租车计价器电路原理
六、步骤图
N
开始
开始计价
昼夜选择
显示零
显示零
Y
显示夜间起价
显示白天起价
夜
昼
显示价格
主程序步骤图
T1中止
够67次
N
Y
R4=0 ?
N
Y
R4+1
价格寄存器加一
调整BCD码
放入数据显示区
返回
中止程序步骤图
七、源程序
ORG 0000H ;起始地址
AJMP START
ORG 001BH ;计数中止地址
LJMP CNT1
ORG 0030H ;主程序地址
START: MOV PSW, #00H
MOV IE, #88H ;IE=10001000B
MOV TMOD, #60H ;TMOD=01100000B,T1工作方法2
MOV TH1, #0BDH ;自动重装
MOV TL1, #0BDH ;计67个数
SETB TR1 ;计数器开启
CLR P1.0 ;点亮小数点dp
MOV R4, #0FFH ;置数-1
MOV R0, #20H ;指向数据区首地址
MOV R1, #04H ;数字个数
LP1: MOV @R0, #00H ;把00放入显示数据区
INC R0 ;指针加一
DJNZ R1, LP1 ;继续置数
OFF: SETB P1.2
JNB P1.2, ON ;计价器开始跳转至ON
ACALL DISP ;调用显示子程序
AJMP OFF
ON: SETB P1.3
JB P1.3, DAY ;判定白天or夜间行车
NIGHT: MOV R2, #00H ;价格后两位压缩BCD码
MOV R3, #01H ;价格高两位压缩BCD码
MOV 21H, #01H ;显示数据区放入起价BCD码
CALL DISP ;显示夜间起价
AJMP LP2
DAY: MOV R2, #80H ;价格后两位压缩BCD码
MOV R3, #00H ;价格高两位压缩BCD码
MOV 22H, #08H ;显示数据区放入起价BCD码
LP2: CALL DISP ;显示白天起价
AJMP LP2
CNT1: MOV 35H, R5
MOV 36H, R6
MOV 32H, R0
MOV 31H, A
MOV 30H, R4 ;保护中止前寄存器内容
CJNE R4, #00H, INCC ;两公里内计数值加1
CLP0: MOV A, R2
ADD A, #01H ;后两位计价加一
DA A ;十进制调整
MOV R2, A
MOV A, R3
ADDC A, #00H ;前两位计价加进位
DA A ;十进制调整
MOV R3, A
CLP2: MOV A, R2
MOV B, #10H
DIV AB ;将压缩BCD码拆成BCD码
MOV 23H, B
MOV 22H, A ;按高低位存入显示数据区
MOV A, R3
MOV B, #10H
DIV AB ;将压缩BCD码拆成BCD码
MOV 21H, B
MOV 20H, A ;按高低位存入显示数据区
CALL DISP ;显示价格
AJMP RETC
INCC: INC R4 ;两公里内计数器加一
RETC: MOV A, 31H
MOV R0, 32H
MOV R5, 35H
MOV R6, 36H ;恢复中止前数据内容
RETI ;中止结束
DISP: MOV R5, #04H ;显示子程序,显示个数
MOV R0, #20H ;指向数据区首地址
MOV R6, #80H ;位选
MOV DPTR, #TAB ;指针指向显示列表
DLP0: MOV A, @R0
MOVC A, @A+DPTR ;取出对应显示代码
MOV P0, A ;输出数据
MOV A, R6
MOV P2, A ;输出位选
RR A ;右移位选
MOV R6, A
INC R0 ;指向下一地址
DJNZ R5, DLP0 ;循环
RET ;结束
TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H,
DB 7FH, 67H ;显示代码列表
END
八、调试
利用KeilC51软件对其进行编译、仿真,得出比较满意效果。因为没有实际电路板,在调试过程中,利用显示数据存放区“20H,21H,22H,23H”对其要求显示价格进行观察,能够看到其中价格伴随计数器中止在变
动着,而且逢十进一,比较理想地显示了价格。
九、心得体会
经过这次课程设计,我对单片机工作原理有了更深一步了解,对于中止、定时/计数器工作方法愈加明确,而且在应用上掌握了不少方法。在经过和同学们交流中,也发觉不少问题,而且立即做出对应修改,还有部分应用方法,这些使我对单片机技术能更灵活应用。我不仅加深了对单片机理论了解,将理论很好地应用到实际当中去,而且我还学会了怎样去培养我们创新精神,从而不停地战胜自己,超越自己。创新,是要我们学会将理论很好地联络实际,并不停地去开动自己大脑,从为人类造福意愿出发,做自己力所能及,她人却没想到事。使之不停地战胜她人,超越前人。同时,更关键是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长历程,常有部分不如意,可能这就是在对我们提出了挑战,勇敢过,也战胜了,胜利钟声也就一定会为我们而敲响。这个设计过程中,我碰到过许数次失败考验,就比如,自己对实际生活中一些事情不了解给整个设计带来困扰,真想要就此罢休,然而,就在想要放弃那一刻,我明白了,原来结果并不那么关键,我们更应该重视是这一整个过程。
在我课程设计中,当初发觉问题就是中止调用时,对现场保护问题,因为寄存器是共用,中止时间不确定,所以必需中止时对现场进行保护,不能让中止中数据覆盖原来数据。另外,因为时间和技术缺乏,设计程序中没有加入定时程序——停车计时计价,这里面也存在这许很多多问题,比如停车是用中止判定还是扫描判定等。这些深入探究我将在以后不停学习中进行该善。
十、参考文件
1.《单片机原理和接口技术》.牛昱光.电子工业出版社
2.《单片机原理及其应用》.胡汉才.清华大学出版社
3.《单片机应用文集》.何立民.北京航空航天大学出版社
4.《单片机中级教程》,张迎新主编,北京航空航天大学出版社。
5.《单片机原理和应用》,丁元杰主编,机械工业出版社。
6.《MCS-51系列单片微型计算机及其应用》,孙育才主编,东南大学出版社
7. 51单片机试验指导书.太原理工大学信息工程学院试验中心
展开阅读全文