基于STC89C52单片机的出租车自动计费器设计Word格式.doc

上传人:wj 文档编号:727345 上传时间:2023-04-29 格式:DOC 页数:29 大小:425KB
下载 相关 举报
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第1页
第1页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第2页
第2页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第3页
第3页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第4页
第4页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第5页
第5页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第6页
第6页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第7页
第7页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第8页
第8页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第9页
第9页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第10页
第10页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第11页
第11页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第12页
第12页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第13页
第13页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第14页
第14页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第15页
第15页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第16页
第16页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第17页
第17页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第18页
第18页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第19页
第19页 / 共29页
基于STC89C52单片机的出租车自动计费器设计Word格式.doc_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于STC89C52单片机的出租车自动计费器设计Word格式.doc

《基于STC89C52单片机的出租车自动计费器设计Word格式.doc》由会员分享,可在线阅读,更多相关《基于STC89C52单片机的出租车自动计费器设计Word格式.doc(29页珍藏版)》请在冰点文库上搜索。

基于STC89C52单片机的出租车自动计费器设计Word格式.doc

Keyword:

STC89C52;

1602LCD;

Taxidevices

1课程设计任务书

1.1课程设计任务

基于单片机出租车模拟计价器,采用at24c02存储芯片+LCD1602液晶显示等设计而成。

用24c02来存储单价,通过按键来模拟增加里程,模拟出租车向前开。

通过液晶显示器显示当前的行驶状态、行驶公里、行驶时间时间(时、分、秒)、费用、单价、等信息。

可以设置每公里单价,以及夜间单价和白天单价的不同模式,设置后掉电无需重新设置,设置有等待/继续计时模式。

计费分行走的里程*单价+等待的时间*价格。

1.2课程设计方案

方案一:

采用数字电子技术,利用555定时芯片构成多谐振荡器,或采用外围的晶振电路作为时钟脉冲信号,采用计数芯片对脉冲尽心脉冲的计数和分频,最后通过译码电路对数据进行译码,将译码所得的数据送给数码管显示,一下是该方案的流程框图,方案一如图1.1所示:

等待信号

公里脉冲

计费脉冲

计时

计费

译码

图1.1方案一

方案二:

采用EDA技术,根据层次化设计理论,该设计问题自顶向下可分为分频模块,控制模块计量模块、译码和动态扫描显示模块,其系统框图如图1.2所示:

时钟信号

计费/复位

分频器

控制器

计程

显示

图1.2方案二

方案三:

采用MCU技术,通过单片机作为主控器,利用1602字符液晶作为显示电路,采用外部晶振作为时钟脉冲,通过按键可以方便调节,一下是方案三的系统流程图,本方案主要是必须对于数字电路比较熟悉,成本又高。

方案图如图1.3所示:

STC89C52

1602液晶

LED灯

电源电路

按键电路

复位电路

图1.3方案三

方案总结:

通过各个方案的比较本次采用方案三,不但控制简单,而且成本低廉,设计电路简单。

2硬件电路设计

2.1振荡电路

单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。

通过这两个引脚在芯片外并接石英晶体振荡器和两只电容(电容和一般取20pF)。

这样就构成一个稳定的自激振荡器。

振荡电路脉冲经过二分频后作为系统的时钟信号,再在二分频的基础上三分频产生ALE信号,此时得到的信号时机器周期信号。

振荡电路如图2.1所示:

图2.1振荡电路

2.2复位电路设计

复位操作有两种基本形式:

一种是上电复位,另一种是按键复位。

按键复位具有上电复位功能外,若要复位,只要按图中的RESET键,电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。

上电复位电路要求接通电源后,通过外部电容充电来实现单片机自动复位操作。

上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。

RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。

按键复位电路图如图2.2所示。

图2.2复位电路

2.3键盘接口电路

(1)独立式键盘:

独立式键盘中,每个按键占用一根I/O口线,每个按键电路相对独立。

I/O口通过按键与地相连,I/O口有上拉电阻,无键按下时,引脚端为高电平,有键按下时,引脚电平被拉低。

I/O口内部有上拉电阻时,外部可不接上拉电阻。

键盘接口电路如图2.3所示:

图2.3键盘接口电路

2.4显示电路

2.4.11602LCD的基本参数及引脚功能

1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如图10所示。

图10LM016L结构图

LCD1602主要技术参数:

 

容量:

16×

2个字符

芯片工作电压:

4.5—5.5V

工作电流:

2.0mA(5.0V)

模块最佳工作电压:

5.0V

字符尺寸:

2.95×

4.35(W×

H)mm

引脚功能说明:

1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表1所示:

表1引脚接口说明表

编号

符号

引脚说明

1

VSS

电源地

9

D2

数据

2

VDD

电源正极

10

D3

3

VL

液晶显示偏压

11

D4

4

RS

数据/命令选择

12

D5

5

R/W

读/写选择

13

D6

6

E

使能信号

14

D7

7

D0

15

BLA

背光源正极

8

D1

16

BLK

背光源负极

第1脚:

VSS为地电源。

第2脚:

VDD接5V正电源。

第3脚:

VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:

RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:

R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15脚:

背光源正极。

第16脚:

背光源负极。

2.4.2显示模块采用1602液晶显示接口电路

图2.4显示电路

2.5单片机各引脚功能说明

下面对STC89C52各引脚的功能进行较为详细的介绍:

1)电源引脚Vcc和Vss

Vcc(40脚):

电源端为+5VVss(20脚):

接地端。

2)时钟电路引脚XTAL1和XTAL2

XTAL2(18脚):

接外部晶体和微调电容的一端。

在单片机内部它是振荡电路反向放大器的输出端,振荡电路的频率就是晶体固有频率。

若需采用外部时针电路时,该引脚输入外时钟脉冲。

要检查89C52的振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。

XTAL1(19脚):

接外部晶体和微调电容的另一端。

在片内,它是振荡电路反向放大器的输入端。

在采用外部时钟时,该引脚必须接地。

3)控制信号脚RSTALEPSEN和EA。

RST(9脚):

RST是复位信号输入端,高电平有效。

在此输入端保持两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。

ALE/PROG(30引脚):

地址锁存允许信号端。

当STC89C52上电正常工作后,ALE引脚不断向外输出正脉冲信号。

此频率为振荡器频率fosc的1/6,当CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控制信号。

在CPU访问片外数据存储时,每取值一次(一个机器周期)会丢失一个脉冲。

平时不访问片外存储时,ALE端也以1/6的振荡频率固定输出正脉冲,因而ALE信号可以用作对外输出时钟或定时信号。

如果你想看一下STC89C52芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出,如有脉冲信号输出,则STC89C52基本上是好的。

ALE的负载驱动能力为8个LS型TTL(低功耗高速TTL)。

PSEN(29脚);

程序存储允许输出信号引脚,在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。

此引脚接ERROM的OE端。

PSEN端有效,即允许读出ERROM/ROM中的指令码。

CPU在从外部ERROM/ROM取指令期间,每个周期PSEN两次有效。

不过,在访问片外RAM时,要少产生两次PSEN负脉冲信号。

要检查一个STC89C52小系统上电后CPU能否正常到ERROM/ROM中读取指令码,也可用于示波器看PSEN端有无脉冲输出。

如有,说明基本上工作正常。

EA/VPP(31脚):

外部程序存储器地址允许输入端/固化编程电压输入端。

当EA引脚接高电平时,CPU只访问片内ERROM/ROM并执行内部程序存储器中的指令。

但在PC(程序计数器)的值超过OFFFH(对8751/8051为4k)时,将自动转向执行片外存储器的程序。

当出入信号EA引脚接低电平(接地)时,CPU只访问外部ERROM/ROM并执行外部程序存储器中的指令,而不管是否有片内程序存储器。

对于无芯片内的ROM的8031或8032,须外扩ERROM,此时必须将EA引脚接地。

如果使用有片内ROM的STC89C52,外扩ERROM也是可以的,但也要使EA接地。

4)I/O(输入/输出端口,P0,P1,P2,P3)

P0口:

P0口是一个漏极开路的8位准双向I/O端口。

P1口:

8位准双向I/O端口。

P2口:

即可以做地址总线输出地址高8位,也可以做普通I/O用,(此时为准双向口)。

P3口:

双功能口,即可以做普通I/O口用(此时为准向口,也可以按每位定义实现第二功能操作)。

见表1。

表1P3口的第二功能表

引脚

第二功能

P3.0

RXD(串行输入口)

P3.1

TXD(串行输出口)

P3.2

INT0(外部中断0)

P3.3

INT1(外部中断1)

P3.4

T0(定时器0外部中断)

P3.5

T1(定时器1外部中断)

P3.6

WR(外部存储器写选通)

P3.7

RD(外部存储器读写通)

3软件设计

3.1单片机资源使用

在本次设计中像电路键盘用到了P2口,其中P2.0到P2.5口作为键盘的输

入,显示电路用到了P1和P3口,P1口为液晶的数据口。

3.2单片机软件模块设计

3.2.1中断子函数

对于中断程序,只要定时器计数满就会产生中断50ms中断一次,共计20次,秒钟加1,秒钟计满再分钟加,当分钟加到99时全部清零。

以下是中断子函数的流程图如图3.1所示:

图3.1中断子程序流程图

3.2.2判键子函数

对于独立式键盘判键,首先看有键按下不,如果有键按下则延时一会儿,在判断是否真的有键按下,如果确实有键按下,在判键释放,最后执行键功能程序。

判键子函数的流程框图如图3.2所示:

图3.2判键子程序流程图

3.2.3显示子程序

1602液晶是字符型液晶,它的内部自带字符库,它可以写两行的字符,同时每行可以写40个字符,在写显示程序的时候,我们先写命令,再设定字符显示,最后写数据,在每写一次命令或数据都需要判断液晶是否忙。

液晶显示程序流程图如图3.3所示:

3.3显示子程序流程图

3.3总程序流程框图

整体程序的流程框图如图3.4所示:

图3.4整体程序的流程框图

总结

出租车计费器系统的设计已经全部完成,能按预期的效果进行模拟汽车启动,停止,暂停等功能,并能够通过LCD显示车费数目。

本款出租车计价器包括单价输出、单价调整、显示当前的系统时间等功能。

另外,多功能出租车计价器还具有性能可靠、电路简单、成本低、实用性强等特点,加上经过优化的程序,使其有很高的智能化水平。

几个月来,经过自己努力,基本上完成了设计要求的内容,在系统可行性分析、原理图设计等方面都作了许多实际工作,取得了一些成绩,同时也遇到了一些问题,存在一些不足。

经过这几个月的学习和工作,我觉得自己不论是在理论知识方面还是在动手能力方面都有了不小的进步,自己从中受益匪浅。

这次设计很好的把以前学到的理论知识应用于实践,使我认识到理论知识与实践之间有一定的差距,只有通过不断的努力学习和实践才能很好的把理论知识应用到实践当中,也只有通过不断的实践才能对理论知识的理解。

通过这次设计不仅学会了如何去查找相关资料,更重要的是通过查找资料和翻阅书籍学到了不少知识,扩大了知识面,提高了知识水平。

经过单元设计和系统设计巩固了以前所学的专业知识,自己真正认识到理论联系实际的重要性,为以后的学习和工作提供了很多有价值的经验。

通过这次设计不仅增强了自己的动脑能力和动手能力,也提高了我思考问题、分析问题、解决问题的能力,更重要的是学会用工程化的思想来解决问题。

这在以前的学习过程中是不曾学到的。

在短短的三个月时间内完成设计内容,在很大程度上得益于老师的帮助。

这次设计是我认真认识到完整、严谨、科学分析问题、解决问题的思想是多么的重要,只有拥有了科学的态度才能设计出有用的产品。

另外通过本次设计,是我认识到自己理论知识的应用能力有很大的欠缺,需要在以后的学习中进一步提高。

参考文献

[1]李广弟,朱月秀,冷祖祁.单片机基础[M].第3版.北京航空航天大学出版社,2007年1月

[2]李华.MCS-51系列单片机实用接口技术[M].北京航空航天大学出版社,1996

[3]马忠梅,张凯,马岩,单片机的C语言应用程序设计,[M],北京:

北京航空航天大学出版社,2003.11;

[4]胡辉,单片机原理及应用设计—21世纪高等院校规划教材[M],水利水电出版社,2005.7;

[5]刘守义,单片机应用技术[M],西安:

西安电子科技大学出版社,1996.8;

致谢

本论文是在何淑珍老师的悉心指导下完成的,何老师的渊博学识和丰富经验给我留下了深刻的印象。

从何老师那里我学到的不仅是专业知识与实际问题科学解决的方法,更为重要的是勤奋和严谨治学的精神以及对学生的认真负责,老师的谆谆教诲使我受益匪浅,在此向何老师表示衷心的感谢并致以崇高的敬意!

感谢家人给予我学业上和生活上的支持与照顾。

同时感谢给予我帮助的各位老师、同学以及朋友们!

附录1元件件清单

表5.1元器件清单

名称

规格

数量

备注

电阻

200

1个

1K

10K

5个

100

2个

电容

20pF

10μF

极性电容

发光二极管

3个

按键

7个

直流电机

晶振

12MHz

芯片

1块

内带字符库

附录2原理图

附录3程序清单

#include<

reg52.h>

//调用单片机头文件

#defineucharunsignedchar//无符号字符型宏定义 变量范围0~255

#defineuintunsignedint //无符号整型宏定义 变量范围0~65535

ucharmiao,fen=0,shi;

ucharflag_bai_hei;

//白天的晚上的标志位

ucharvalue;

uintbai_3l_price=60;

//白天3千米内的单价6元

uintbai_3w_price=18;

//白天3千米外的单价/千米 1.8元

uintbai_wait_price=5;

//白天等待时的单价/分钟 0.5元

uintwan_3l_price=70;

//晚上3千米内的单价/千米 7元

uintwan_3w_price=22;

//晚上3千米外的单价/千米 2.2元

uintwan_wait_price=10;

//晚上等待时的单价/分钟 1元

uintdistance=0;

//行使的距离

uintzong_jia;

//总的价

bitflag_300ms=0;

bitflag_1s;

bitflag_time_en=0;

#include"

lcd1602.h"

/***********************1ms延时函数*****************************/

voiddelay_1ms(uintq)

{

uinti,j;

for(i=0;

i<

q;

i++)

for(j=0;

j<

120;

j++);

}

iic.h"

voidwrite_iic_data()

write_24c02(0,flag_bai_hei);

write_24c02(1,bai_3l_price%256);

//保存数据

write_24c02(2,bai_3l_price/256);

write_24c02(3,bai_3w_price%256);

//保存数据

write_24c02(4,bai_3w_price/256);

//保存数据

write_24c02(5,bai_wait_price%256);

//保存数据

write_24c02(6,bai_wait_price/256);

//保存数据

write_24c02(7,wan_3l_price%256);

write_24c02(8,wan_3l_price/256);

write_24c02(9,wan_3w_price%256);

write_24c02(10,wan_3w_price/256);

write_24c02(11,wan_wait_price%

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2