收藏 分享(赏)

单片机出租车计价器课程设计.doc

上传人:weiwoduzun 文档编号:2816328 上传时间:2018-09-28 格式:DOC 页数:17 大小:495.50KB
下载 相关 举报
单片机出租车计价器课程设计.doc_第1页
第1页 / 共17页
单片机出租车计价器课程设计.doc_第2页
第2页 / 共17页
单片机出租车计价器课程设计.doc_第3页
第3页 / 共17页
单片机出租车计价器课程设计.doc_第4页
第4页 / 共17页
单片机出租车计价器课程设计.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、单片机原理及系统课程设计专 业: 自动化 班 级: 动 1102 姓 名: 学 号: 201108645 指导教师: 林海香 兰州交通大学自动化与电气工程学院2014 年 1 月 17 日评语:考勤 10 分 守纪 10 分 过程 30 分 设计报告 30 分 答辩 20 分 总成绩(100 分)单片机原理及系统课程设计报告0基于单片机的出租车计价系统设计1 设计目的,要求和设计方法1.1 设计目的(1)学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调适能力,进一步提高综合运用所学知识和设计能力的的目的。(2)掌握 C 语言程序设计方法。(3)培养实践

2、技能,提高分析和解决实际问题的能力,并具备一定程度的设计能力。1.2 基本设计要求本出租车自动计费,上电后显示最初的起步价,里程计费单价,等待时间计费单价,通过按键可以调节起步价,里程计费单价,等待时间计费单价。同时具有运行,等待,暂停等状态,可以显示暂停的时间。出租车停止后能够显示行驶的总费用。1.3 性能指标1、费用的计算是按行驶里程收费。设起步价为 7.00 元。2、当里程3km 时,每公里按 1.7 元计费。4、等待累计时间2min 时,按 1.5 元/min 计费。1.4 显示功能1、显示行驶里程:用两位数字显示,显示方式为“XX”,单位为 km。计程范围 0-99km,精确到 1k

3、m。2、显示等候时间:用两位数字显示,显示方式为“XX”,单位为 min。计时范围 0-59min,精确到 1min。3、显示总费用:用四位数字显示,显示方式为“XXX.X”,单位为元。计价范围 0-999.9 元,精确到 0.1 元。1.3 设计方法本设计采用 AT89C51单片机为主控器,并用开关或者频率信号发生器模拟车速,利用 AT89C51的定时器工作在方式1下定时实现对出租车的计时及计价设计,输出采用单片机原理及系统课程设计报告1LCD 液晶显示屏显示。2 设计方案及原理2.1 设计方案本设计,利用单片机丰富的端口和控制的灵活性,采用 AT89C51 单片机为主控器,并用开关或频率信

4、号发生器模拟车速,通过石英振荡器,LCD 液晶显示和发光二级管以及单片机内部程序构成完整的出租车计价系统,基本可以实现了按运行状态计价的功能,价格调整功能。2.2 设计原理出租车计价是根据车所行驶的路程以及乘客乘车的里程综合决定的。出租车行驶总路程可以通过车轮的周长乘车轮旋转圈数得到。即可计算得到车轮旋转几周出租车能行驶一公里的路程。通过计数接收到的脉冲个数,计算出当前所行驶的路程。同时,通过LCD 液晶显示器显示当前的行驶里程、等待时间和需支付的车费。出租车计价器用于记录里程、起步公里数与价格的关系。模拟出租车计价器能根据总里程数、起步公里数的情况作出相应报价等。3 出租车计价器系统的硬件设

5、计3.1 出租车硬件框图AT89C52电源电路按键电路时钟电路传感器( 按键代替 )液晶显示L E D 灯指示图 2-1 系统的硬件框图3.2 出租车计价器硬件连接图AT89C51 的最小系统:时钟电路是单片机内部有一个高增益反相放大器,其输入端为芯片引脚 XTAL1,其输出端为引脚 XTAL2。通过这两个引脚在芯片外并接石英晶体振荡器和两只电容(电容和一般取 30pF) 。这样就构成一个稳定的自激振荡器。复位操作是单片机原理及系统课程设计报告2按键复位,按键复位具有上电复位功能外,若要复位,只要按图中的 RESET 键,电源 VCC经电阻 R1、R2 分压,在 RESET 端产生一个复位高电

6、平。AT89C51 的最小系统硬件图如图 3.2(a)所示。 C11nFC21nFX1CRYSTALXTAL218XTAL119ALE3031PSN29RST9P0./AD0390.1/138P0.2/AD2370.3/336P0.4/AD4350.5/534P0.6/AD630.7/732P1.011.2P1.231.34P1.451.56P1.671.78P3.0/RXD103.1/T1P3.2/INT0123./IT113P3.4/T014P3.7/RD173.6/W163.5/T115P2.7/A1528P2.0/A8212.1/92P2./A10232.3/124P2.4/A1225

7、2.5/13262.6/1427U1AT89C51C31nFR110k234567891RP1RESPACK-8D1LE-RED D2LE-RED D3LE-RED运 行 等 待 暂 停初 始 选 择初 始 调 节开 始 运 行模 式 选 择终 止 路 程D714613D51241D31029D1807E6RW5S4VS1D2VE3LCD1LM017L图 3.2(a) AT89C51 的最小系统硬件图液晶显示和 LED 灯指示电路:显示电路对于现实电路我们采用液晶显示,液晶又分字符型和点阵型,我们使用的液晶是字符型液晶,并且带字符库的,不需要查找代码,英文字符就可以。运行状态指示电路采用发光二

8、级管对运行方式进行指示,可清楚看到计价器的运行状态。液晶显示和 LED 灯指示电路如图 3.2(b)所示。图 3.2(b) 液晶显示和 LED 灯指示电路按键电路:按键电路是通过按键去调节初始选择、调节,模式选择,开始运行,终止等功能。霍尔传感器里程计算是通过安装在车轮旁的霍尔传感器检测到的信号,送到单片机,经处理计算,送给显示单元的。而由于本次实验室的局限不能利用霍尔传感器,所以我们利用按键来代替霍尔传感器,通过按一次键代表汽车行驶了 1 公里,当在行驶过程中通过按键来选择运行状态。按键电路如图 3.2(c)所示。单片机原理及系统课程设计报告3图 3.2(c) 按键电路4 出租车计价器系统的

9、软件设计4.1 系统流程图出租车计价器系统流程图如附录 1 所示。4.2 源程序代码根据设计的要求,在本系统中主要有主程序和延时程序,主程序中包括中断服务程序和键盘显示子程序、计算子程序等。现在应用更广泛的是单片机 C 语言,因其简单明了,故此次课程设计采用单片机 C 语言编程。程序源代码如附录 2 所示。4.3 程序调试域运行结果在 Keil C51 uvision4 中对系统建立项目,选定合适的单片机 AT89C51,创建一个计价器的新文件,并将上述的源程序进行编辑和选项操作进行编译,以生成计价器的 HEX文件。5 系统仿真及实际调试5.1 运行图示仿真开始后,首先按动初始选择按钮, 则可

10、以在运行单价,等待单价,起步价之间切换,每按一次切换一个量,选定后可以按动初始调节按钮进行调节,调节完成后,按下开始运行按钮则开始运行,选择运行模式后开始计费,不同的运行模式会有不同的指示灯亮起,在运行过程中液晶屏会随时显示走过的路程和等待的时间,以及总的费用。仿真图如附录 3 所示。5.2 仿真问题分析问题需要改进,例如本设计经过多次的调试与改正,最终达到了设计方案中的结果。在仿真试验中各种设计要求都能够得到验证。但由于设计的原因,本系统仍然总在一些自动化程度不够,运行模式还需要手动选择。6 总结出租车计费器系统的设计已经全部完成,能利用 AT89C51 单片机对出租车启动,停单片机原理及系

11、统课程设计报告4止,暂停等运行状态进行选择和显示,能将单价和费用适时通过 LCD 显示出来。本款出租车计价器包括单价输出、单价调整、显示当前的总费用等功能。虽然达到了基本的设计目的,但仍然存在一些问题,策划的不够全面,对单片机不够熟悉,系统编写不够简洁完善,使得计价器计费不够细致,不够人性化。经过这次课程设计让我学会了很多的东西。经过自己努力,基本上完成了设计要求的内容,在系统可行性分析、原理图设计等方面都作了一些实际工作,同时也遇到了一些问题,存在一些不足。学会了怎么去查找些资料,把所找到的东西与自己的问题所结合起来并给予解决。这次设计使我学会把以前学到的理论知识应用于实践,使我认识到理论知

12、识与实践之间有一定的差距,只有通过不断的努力学习和实践才能很好的把理论知识应用到实践当中,也只有通过不断的实践才能加深对理论知识的理解。参考文献1 王思明,张金敏,张鑫等.单片机原理及应用系统设计 .北京:科学出版社,20122 张金敏,董海棠,高博等.单片机原理与应用系统设计 .成都:西南交通大学出版社, 20103 李华,王思明,张金敏.单片机原理及应用.兰州:兰州大学出版社, 2001单片机原理及系统课程设计报告5附录 1开始定时器初始化液晶初始化V = ?调节每公里价格数据处理显示函数是开启动 ?液晶清屏V 1 = ?等待数据处理显示函数是否终止 ?液晶清屏清零函数结束调节起步价格调节

13、等待时间价格否是V = 1V = 2V = 3否是暂停运行否是否是V 1 = 1 V 1 = 2V 1 = 3判断按键函数 1判断按键函数单片机原理及系统课程设计报告6附录 2 #include#define uchar unsigned char#define uint unsigned int /*定义 1602 读写使能端口*/sbit rw=P21;sbit rs=P20;sbit en=P22;sbit b=P07;sbit gl=P10;void lcd_init(); /lcd 设置函数void wr_com(uchar command); /命令函数void wr_data(u

14、char data0); /数据函数void lcd_clear(); /清屏函数void lcd_set(); /屏幕设置函数void busy(); /测忙函数void display(); /启动前显示函数void printstring(uchar *s);void display1(); /启动后显示函数void key1(); /启动前按键sbit K=P30;sbit K1=P31;sbit K2=P35; /开始计价sbit K3=P33; /模式选择(行程/等待)sbit K4=P34; /复位sbit g=P27; sbit aa=P23; /运行sbit bb=P24;

15、/等待sbit cc=P25; /暂停/sbit led_run=P30;/sbit led_await=P31;/sbit led_stop=P32;bit f_start;bit jump_in;bit jump_out;void key(); /启动后按键/*定义液晶显示地址数组*/uchar code table=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x70;uchar dispbuf=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;uchar dispbuf1=0,0,0,0,0,0,0,0,0,0,0,0,

16、0,0,0;uchar v,v1; uchar i,m=0;void init();void chuli();void chuli1();单片机原理及系统课程设计报告7void delay(uchar t); /延时函数void clear(); /终止函数void set(uchar x);void set1(uchar y); uchar command;uchar count,count1;uchar second,minite,second1,minite1;unsigned int tt,tt1;unsigned char value1=70,value2=17,value3=15;

17、 /value1=起步价,value2=超出每公里价格,value3=等待价格unsigned int money; void main()/ Init_Timer1(); /定时器中断函数EX0=1;/开外部中断 0IT0=1;/采用跳变沿触发方式init();lcd_init();while(1) key1();chuli();display();if(jump_in=1)jump_in=0;lcd_init(); while(1)key();chuli1();display1();if(jump_out=1) lcd_init();jump_out=0;clear();break;voi

18、d clear()TR0=0;TR1=0;单片机原理及系统课程设计报告8money=0;second=0;second1=0;minite=0;minite1=0;value1=70;value2=17;value3=15;/ led_run=1;/led_await=1;/ led_stop=1;v=0;v1=0;for(i=0;i3)money=value1+value2*(m-3)+value3*tt1; else if(f_start=0)money=0;dispbuf18=money/100%10;dispbuf19=money/10%10;dispbuf110=money%10;v

19、oid display1() /运行后显示函数set(0);printstring(“run: “);/ wr_data(tablem);单片机原理及系统课程设计报告12wr_data(tabledispbuf10);wr_data(tabledispbuf11);/ printstring(“:“);/ wr_data(tabledispbuf12);/ wr_data(tabledispbuf13);set(14);printstring(“await:“);wr_data(tabledispbuf14);wr_data(tabledispbuf15);printstring(“:“);w

20、r_data(tabledispbuf16);wr_data(tabledispbuf17);set1(0);printstring(“sum is: “);wr_data(tabledispbuf18);wr_data(tabledispbuf19);printstring(“.“);wr_data(tabledispbuf110);void printstring(uchar *s) /输出显示函数while(*s)wr_data(*s+); void key() /启动按键 if(K3=0) delay(50); /延时消抖动if(K3=0)while(K3=0);v1+;if(v1=4

21、) v1=1;switch(v1)case 1:f_start=1;TR0=1;TR1=0;/*led_run=0;led_await=1;led_stop=1*/;aa=0;bb=1;cc=1;break; /运行case 2:TR0=0;TR1=1;/*led_run=1;led_await=0;led_stop=1*/;aa=1;bb=0;cc=1;break;/等待case 3:TR0=0;TR1=0;/*led_run=1;led_await=1;led_stop=0*/;aa=1;bb=1;cc=0;break;/暂停单片机原理及系统课程设计报告13if(K4=0) /跳出运行de

22、lay(50);if(K4=0)while(K4=0);jump_out=1;void delay(uchar t)while(-t);void set(uchar x)command=0x80+x;wr_com(command);void set1(uchar y)command=0xc0+y;wr_com(command);void key1() /初始调节按键if(K=0) delay(100);if(K=0)while(K=0);v+;if(v=4) v=0;switch(v)case 0:break;case 1:if(K1=0)while(K1=0);value1=value1+10;break; case 2:if(K1=0)while(K1=0);value2=value2+5;break;case 3:if(K1=0)while(K1=0);value3=value3+5;break; if(K2=0)delay(50);if(K2=0)单片机原理及系统课程设计报告14while(K2=0);jump_in=1;void mode( ) interrupt 0 /外部中断 0 控制选位m+;单片机原理及系统课程设计报告15附录 3

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

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报