基于单片机的出租车计费器的毕业论文.docx

上传人:b****6 文档编号:13517406 上传时间:2023-06-14 格式:DOCX 页数:11 大小:17.92KB
下载 相关 举报
基于单片机的出租车计费器的毕业论文.docx_第1页
第1页 / 共11页
基于单片机的出租车计费器的毕业论文.docx_第2页
第2页 / 共11页
基于单片机的出租车计费器的毕业论文.docx_第3页
第3页 / 共11页
基于单片机的出租车计费器的毕业论文.docx_第4页
第4页 / 共11页
基于单片机的出租车计费器的毕业论文.docx_第5页
第5页 / 共11页
基于单片机的出租车计费器的毕业论文.docx_第6页
第6页 / 共11页
基于单片机的出租车计费器的毕业论文.docx_第7页
第7页 / 共11页
基于单片机的出租车计费器的毕业论文.docx_第8页
第8页 / 共11页
基于单片机的出租车计费器的毕业论文.docx_第9页
第9页 / 共11页
基于单片机的出租车计费器的毕业论文.docx_第10页
第10页 / 共11页
基于单片机的出租车计费器的毕业论文.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的出租车计费器的毕业论文.docx

《基于单片机的出租车计费器的毕业论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的出租车计费器的毕业论文.docx(11页珍藏版)》请在冰点文库上搜索。

基于单片机的出租车计费器的毕业论文.docx

基于单片机的出租车计费器的毕业论文

(此文档为word格式,下载后您可任意编辑修改!

 

基于单片机出租车计费器的设计

 

目录

摘要2

ABSTRACT3

1课程设计任务书4

1.1课程设计任务4

1.2课程设计方案4

2硬件电路设计6

2.1振荡电路6

2.2复位电路设计6

2.3键盘接口电路7

2.4显示电路7

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

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

2.5单片机各引脚功能说明9

3软件设计11

3.1单片机资源使用11

3.2单片机软件模块设计12

3.2.1中断子函数12

3.2.2判键子函数12

3.2.3显示子程序13

3.3总程序流程框图14

总结15

参考文献16

致谢17

附录1元件件清单18

附录2原理图19

附录3程序清单20

 

摘要

本设计的是一个基于单片机STC89C52的出租车自动计费设计,附有复位电路,时钟电路,键盘电路等。

复位电路是单片机的初始化操作,除了正常的初始化外,为摆脱困境,通过复位电路可以重新开始。

时钟电路采用12MHz的晶振,作为系统的时钟源,具有较高的准确性。

在上电时字符型液晶1602显示最初的起步价,里程收费,等待时间收费三种收费,通过按键可以调整起步价,里程收费,等待时间收费。

通过按键模拟出租车的运行,暂停,停止。

在1602液晶上可以显示运行的时间,运行时暂停的时间,通过计算可以得出总共的费用和总的路程。

在这里主要是以STC89C52单片机为核心控制器,P1口接1602液晶显示模块。

关键字STC89C52;1602液晶;出租车计费器

 

ABSTRACT

 

ThedesignisbasedonamonolithicintegratedcircuitSTC89C52taxibillingdesign,withresetcircuit,clockingcircuit,keyboardcircuit.Resetcircuitisinitialized,besidesthenormaloperationoftheinitialdilemma,asaforeigner,throughtheresetcircuitcanstartagain.12MHzadoptstheclockcircuit,asasystemofcrystaloscillator,thecrystalthattheinitial1602,charges,feesmileagewaitingtime,threebuttonscanbeadjustedbychargingfees,justwaitingtime,mileage.Throughthesimulationofthetaxi,buttons,stop.SuspensionIntheliquidcrystaldisplaycanrun1602,operationtime,whensuspensioncanbeobtainedbythecomputationofthetotalcost.=0,shi;

ucharflag_bai__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._3l_price%256);保存数据

write_24c02(8,wan_3l_price256);保存数据

write_24c02(9,wan_3w_price%256);保存数据

write_24c02(10,wan_3w_price256);保存数据

write_24c02(11,wan_wait_price%256);保存数据

write_24c02(12,wan_wait_price256);保存数据

}

****************自动初始化保存的数据*******************

voidzidong_chushifa_iic()

{

value=read_24c02(200);

value=read_24c02(200);

if(value!

=0x91)新的单片机初始单片机内问EEPOM

{

value=0x91;

write_iic_data();

write_24c02(200,value);保存数据

}

delay_1ms(300);

}

****************读出来保存的数据**********************

voidread_iic_data()

{

flag_bai__3l_price=read_24c02(8);

wan_3l_price=wan_3l_price*256+read_24c02(7);

wan_3w_price=read_24c02(10);

wan_3w_price=wan_3w_price*256+read_24c02(9);

wan_wait_price=read_24c02(12);

wan_wait_price=wan_wait_price*256+read_24c02(11);

}

****************独立按键处理函数************************

#definekey_ioP2

ucharkey_can;

voidkey()

{

staticucharkey_new=0,key_old=0,key_value=0;

key_io|=0x3f;

if(key_new==0)按键松开

{

if((key_io&0x3f)==0x3f)

key_value++;

else

key_value=0;

if(key_value>=5)按键松开松手检测

{

key_value=0;

key_new=1;按键松开后进入等待按键状态

}

}

else

{

if((key_io&0x3f)!

=0x3f)按键按下

key_value++;

else

key_value=0;

if(key_value>=5)按键按下消抖

{

key_value=0;

key_new=0;按键松开后进入等待松开按键状态

}

}

key_can=20;

if((key_new==0)&&(key_old==1))

{

switch(key_io&0x3f)

{

case0x3e:

key_can=1;break;得到按键值

case0x3d:

key_can=2;break;得到按键值

case0x3b:

key_can=3;break;得到按键值

case0x37:

key_can=4;break;得到按键值

case0x1f:

key_can=5;break;得到按键值

case0x2f:

key_can=6;break;得到按键值

}

write_sfm2(2,0,key_can);按键按下显示按键值

}

key_old=key_new;

}

#include"menu.==6)

{

distance++;

write_sfm4(1,0,distance);

}

if(key_can==5)清零从新计价

{

flag_time_en=0;

shi=0;

fen=0;

miao=0;

zong_jia=0;

distance=0;

}

if(key_can==2)

{

flag_time_en=~flag_time_en;

}

if(flag_300ms==1)

{

flag_300ms=0;

if(distance<=30)3公里内的价格

{

if(flag_bai_<=3)

zong_jia=bai_3l_price;

else

zong_jia=bai_3l_price+(shi*60+fen-3)*bai_wait_price;

}

else

{

if(fen<=3)

zong_jia=wan_3l_price;

else

zong_jia=wan_3l_price+(shi*60+fen-3)*bai_wait_price;

}

}else3公里外的价格

{

if(flag_bai_<=3)

zong_jia=bai_3l_price+bai_3w_price*(distance-30)10;

else

zong_jia=bai_3l_price+bai_3w_price*(distance-30)10+(shi*60+fen-3)*bai_wait_price;

}

else

{

if(fen<=3)

zong_jia=wan_3l_price+wan_3w_price*(distance-30)10;

else

zong_jia=wan_3l_price+wan_3w_price*(distance-30)10+(shi*60+fen-3)*wan_wait_price;

}

}

if(flag_bai_(2,9,bai_3w_price);

else

write_sfm2_dian(2,9,wan_3w_price);

write_sfm2(2,0,shi);

write_sfm2(2,3,fen);

write_sfm2(2,6,miao);

write_sfm4(1,10,zong_jia);

write_sfm4(1,0,distance);

write_zifu(1,15,0x5c);¥

write_zifu(2,12,0x5c);¥

}

}

}

*********************显示函数******************

voidjishu_chashu()

{

if((flag_1s==1)&&(flag_time_en==1))

{

flag_1s=0;

miao++;

if(miao>=60)

{

miao=0;

fen++;

if(fen>=60)

{

fen=0;

shi++;

if(shi>=24)

{

shi=0;

}

}

}

}

}

 

*************定时器0初始化程序***************

voidtime_init()

{

EA=1;开总中断

TMOD=0X01;定时器0、工作方式1

ET0=1;开定时器0中断

TR0=1;允许定时器0定时

}

 

voidmain()

{

init_1602();

init_1602_dis_csf();

zidong_chushifa_iic();

read_iic_data();

time_init();

init_menu();

while

(1)

{

key();

if(key_can<20)

key_with();

menu_dis();

jishu_chashu();

}

}

*************定时器0中断服务程序***************

voidtime0_int()interrupt1

{

staticucharvalue;

TH0=0x3c;

TL0=0xb0;50ms

value++;

if(value%6==0)

flag_300ms=1;

if(value>=20)

{

flag_1s=1;

value=0;

}

}

 

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

当前位置:首页 > PPT模板

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

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