课程设计报告
课程名称: 微机原理课程设计 题 目: 基于单片机的出租车计费系统设计
学 院: 环境与化学工程 系:过程装备与测控工程 专 业: 班 级: 学 号: 学生姓名: 起讫日期:
指导教师:
摘 要
出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应用价值的。 而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。针对计费模式的切换,通过软件编程就可以轻易而举的实现。避免了机械开关带来的不稳定因素。另外在本方案中那个使用了点阵的液晶,可以实现更加友好的使用界面。数据信息一目了然,并且即使是成品也可以方便的修改使用界面,更可根据不同的公司客户使用不同的局面。
关键词:计费器、软件编程、prodeus
目 录
前言................................................................................................................................ 1 第一章 出租车计费的设计任务、要求...................................................................... 2
1.1 出租车计费系统的设计任务.......................................................................... 2 1.2 设计要求及发挥部分...................................................................................... 2 第二章 方案总体设计与论证...................................................................................... 3
2.1 方案一.............................................................................................................. 3 2.2 方案二.............................................................................................................. 3 2.3 方案三.............................................................................................................. 3 2.4 方案总结.......................................................................................................... 4 第三章 出租车计费系统的软件设计.......................................................................... 5
3.1单片机资源使用............................................................................................... 5 3.2初始化子函数................................................................................................... 5 3.3延时子函数....................................................................................................... 5 3.4中断子函数....................................................................................................... 6 3.5按键扫描子函数............................................................................................... 7 3.6档位子函数....................................................................................................... 7 3.7 总程序流程框图.............................................................................................. 8 第四章 系统仿真与调试............................................................................................ 10
4.1 Proteus软件简介............................................................................................ 10 4.2 调试与仿真过程图........................................................................................ 10 4.3 实物图............................................................................................................ 11 第五章 设计小结与体会............................................................................................ 13
5.1 设计小结........................................................................................................ 13 5.2 课程设计的心得体会.................................................................................... 13 参考文献...................................................................................................................... 15 附录.............................................................................................................................. 16
一、源程序........................................................................................................... 16 二、设计总图....................................................................................................... 26 三、清单............................................................................................................... 26
前言
出租车计费器是出租车营运收费的专用智能化仪器。随着电子技术的发展,出租车计费器技术也再不断进步和提高中。国内出租车计费器已经经历了4个阶段的发展。从传统的全部有机械元器件组成的机械式,到半电子式即用电子线路代替部分机械元器件;再从集成电路式到目前的单片机系统设计的出租车计费器。出租车计费器是否准确、出租车司机是否作弊才是乘客最关心的问题。而出租车营运数据的管理是否方便才是出租车司机最关注的。因此怎样设计出一种既能有效防止司机作弊又能方便司机的计费器尤为重要。因此,本文以单片机AT89C52为核心设计了一款出租车计费器。
1
第一章 出租车计费的设计任务、要求
1.1 出租车计费系统的设计任务
该课程设计报告的设计任务是:基于单片机的出租车计费系统设计
1.2 设计要求及发挥部分
1、设计要求主要有:
A. 用一个独立按键控制汽车前进档位变化,根据按下次数不同,分别是1档→2档→3档→4档→1档…..,档位不同体现在直流电机的转速变化,档位值显示数显管;
B. 根据档位值,以及运行时期,实时将里程数显示在数显管上; C. 有暂定功能;当暂停按钮按下,直流电机停转,里程数静止不变; D. 具有里程清零功能;清零时,里程表显示为0;
档位里程数数显管11324 图1-1 设计视图
2、发挥部分
本次课程设计中我们在暂停按键的基础上增加了按键暂停,同时再按此键便恢复里程数计数。
2
第二章 方案总体设计与论证
2.1 方案一
方案一:采用数字电路技术,利用555定时芯片构成多谐振荡器,或采用外围的晶振电路作为始终脉冲信号,采用计数芯片对脉冲进行计数和分频,最后通过译码电路对数据进行译码,将译码所得的数据送给数码管显示。
2.2 方案二
方案二:采用EAD技术,根据层次化设计理念,该设计问题自顶向下可分为分频模块、控制模块、计数模块、译码和动态扫描显示模块。
2.3 方案三
方案三:采用MCU技术,通过单片机作为主控器,利用数码管作为显示电路,采用外部晶振作为始终脉冲,通过按键可以方便调节,一下为该方案的系统流程图,本方案主要是必须对于数字电路比较熟
3
悉,成本又不是很高。方案图如图所示
电源电路 按键电路 电机电路 AT89C52 数码管显示 电机马达转动
图2-3 方案三原理图
2.4 方案总结
方案总结:通过各个方案的比较,本次采用方案三,不但控制简单,而且成本低廉,设计电路简单。
4
第三章 出租车计费系统的软件设计
本系统的软件设计主要可分为主程序模块、延时子函数、定时计数中断模块、里程计数模块、显示子程序、按键扫描子程序、初始化函数以及档位显示里程数函数等八个模块。下面对个部分模块做介绍。
3.1单片机资源使用
在本次设计中,键盘电路用到了P3口,其中P3.4到P3.6作为键盘的输入端,P3.7为三个按键的公共输出端,在程序编写中,把P3.7置低电平。直流电机电路用到P3.3口.P0脚与P2脚分别为两个锁存器的输入端接口,其中P0口也连接了上拉电阻,以满足显示要求。
3.2初始化子函数
对于初始化子函数,主要是完成:1、按键初始置高电平,然后满足按下显示变化;2、定时器的初始化操作。
3.3延时子函数
void delay(uint z) { uint x,y;
for(x=z;x>0;x--)
5
for(y=110;y>0;y--);}
3.4中断子函数
对于中断程序,只要定时器计数满就会产生中断50ms中断以此,共计20次,秒钟加1,秒钟计数再分钟加,当分钟加到99时全部清零。以下是中断子函数的流程图如图3-1所示:
开始 N 中断? 计数++ N 计数=20? Second+ Count=0+ N Second=60? Minite++ Second=0 N Minite=99? Minite=0 结束
6
图3-1 中断子程序流程图
3.5按键扫描子函数
对于独立式键盘判键,首先看是否有键按下,如果有键按下则延时一段时间,在判断是否真的有键按下,如果确实有键按下,在判键释放,最后执行键功能程序。判断键盘子函数的流程图如图3-2所示:
开始 S1按下 N Y 档位+1 S2按下 N S3按下 N Y 里程数静止显示,电机停转 Y 里程数清零,后继续计数 结束
图3-2 按键函数流程图
3.6档位子函数
档位显示电路子函数流图图如下图所示:
7
开始 Flag0=n 定时器0标志位flag0清零 数码管显示速率变化 结束
图3-3 档位函数流程图
3.7 总程序流程框图
总流程图的流程图主要是以调用其子函数为主,主要调用流程为下图3-4所示:
8
开始 键盘扫描 档位判断显示里程数 档位判断控制电机转速 数码管显示 结束
图3-4 主程序流程图
9
第四章 系统仿真与调试
4.1 Proteus软件简介
Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、AVR、ARM、 PIC10/12/16/18/24/30/DsPIC33、8086和MSP430等。 PROTEUS 是单片机课堂教学的先进助手。PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
4.2 调试与仿真过程图
调试的的仿真电路图如图4-1所示:
10
图4-1 仿真电路图
4.3 实物图
该课程设计的具体实物图如图4-2,4-3所示:
11
图4-2 设计具体实物正面图
图4-3 设计具体实物反面图
12
第五章 设计小结与体会
5.1 设计小结
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。 回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一个星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。同时使我懂得了理论与实际相结合是很重要的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务。
5.2 课程设计的心得体会
做了整整一周的课程设计,有很多的心得体会,有关于单片机方面的,也有关于人与人之间合作方面的。
我们组两个人,我们合作的很好,开始我做软件部分的内容,编写好以后,虽然在单片机开发板上已经调试成功。但会有很多的突发情况。例如:由于在编程中的定时计数时间上没有细心考虑,会出现某个时间会跑飞得现象;还有占空比的调整问题……所幸的是,我和
13
我的搭档合作的很好,我们会一起考虑,一起解决,这些问题都被我们一一克服了。然后通过PROTEUS软件仿真也以完成各个工作。
接下来就是做硬件方面的焊接工作了。没想到这项看起来不需要多少技术的工作却是非常的劳心劳力。因为听说其他人很少有焊接成功的,而且过后又没有办法再修改。所以我们决定分块来做,以完成焊接任务。但还是未能成功完成任务。
14
参考文献
1、 李朝青.单片机原理及接口技术(简明修订版).北京:北京航空
航天大学出版社,1999
2、 李群芳,等.单片微型计算机与接口技术.北京:电子工业出版社,
2001
3、 钱逸秋.单片机原理与应用.北京:电子工业出版社,2002 4、 朱定华,等.单片微型计算机原理与应用.北京:清华大学出版社,
2003
5、 何立民.单片机高级教程.北京:北京航空航天大学出版社,2004
15
附录
一、源程序
#include #define uchar unsigned char //宏定义无符号字符型 #define uint unsigned int //宏定义无符号整形 sbit dula=P3^6; sbit wela=P3^7; sbit s1 = P3^0;//按键加速 sbit s2 = P3^1;//按键暂停 sbit s3 = P3^2;//按键清零 sbit rd = P3^4;//定义变量 uint shu,n; uchar temp,xiao ,da,t0,t1,qian,bai,shi,ge; uchar code table[]=//位码 { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00 }; void delay(uint z)//延时函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); 16 } void timer0() interrupt 1 //定时器0 { TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; t0 ++; if(n==4)//4档脉冲 { P1=0; t0=0; } if(n==3)//3档脉冲 { if(t0==10)//四分之一占空比 P1=0; if(t0>=40) { P1=0XFF; t0=0; } } if(n==2)//2档脉冲 { if(t0>=20)//二分之一的占空比 { 17 temp=P1; temp=~temp; P1=temp; t0=0; } } if(n==1)//一档脉冲 { if(t0==10) P1=0xff; if(t0==40) { P1=0; t0=0; } } } void timer1() interrupt 3 //定时器1 { TH1 = (65536-50000)/256; TL1 = (65536-50000)%256; t1 ++; }//显示函数 18 void display(uchar aa,uchar bb,uchar cc,uchar dd,uchar qian,uchar bai,uchar shi,uchar ge) { wela=1; P2 = 0xfe; dula = 1; P0 = table[aa]; dula = 0; wela=0; delay(1); wela=1; P2 = 0xfd; dula = 1; P0 = table[bb]; dula = 0; wela=0; delay(1); wela=1; P2 = 0xfb; dula = 1; P0 = table[cc]; dula = 0; wela=0; 19 delay(1); wela=1; P2 = 0xf7; dula = 1; P0 = table[dd]; dula = 0; wela=0; delay(1); wela=1; P2 = 0xef; dula = 1; P0 = table[qian]; dula = 0; wela=0; delay(1); wela=1; P2 = 0xdf; dula = 1; P0 = table[bai]; dula = 0; wela=0; delay(1); 20 wela = 1; P2 = 0xbf; dula = 1; P0 = table[shi]; dula = 0; wela = 0; delay(1); wela = 1; P2 = 0x7f; dula = 1; P0 = table[ge]; dula = 0; wela = 0; delay(1); } void keyscan()//按键扫描函数 { rd =0; if(s1==0) //加档按钮 { delay(5);//延时去抖动 if(s1==0) { n++ ; 21 if(n==5)//如果是4档 置1档 n = 1; while(s1==0)//进入此循环防止按键太久无限次加1 { TR1 = 0;//关中断 display(n,10,0,0,qian,bai,shi,ge); } TR1 = 1;//开中断 TR0= 1; t1 = t1%n; } } if(s2==0) //暂停按钮 { delay(5); if(s2==0)//确认按下 { xiao++; if(xiao==1) { while(s2==0)//进入此循环防止按键太久无限次加1 { TR1 = 0;//关中断 TR0 = 0; display(n,10,0,0,qian,bai,shi,ge); 22 } TR1 = 0;//关中断 里程数保持静止 TR0 = 0; } if(xiao==2) { while(s2==0)//进入此循环防止按键太久无限次加1 { TR1 = 0;//关中断 TR0 = 0; display(n,10,0,0,qian,bai,shi,ge); } TR1 = 1;//关中断 里程数保持静止 TR0 = 1; xiao=0; } } } if(s3==0) //清零判断按钮 { delay(5); if(s3==0) { P1= 0xff; TR1 = 0; //关中断 23 TR0 = 0; shu = 0; //里程数清零 qian = 0; bai = 0; shi = 0; ge = 0; } } } void init ()//初始化函数 { n = 1; s1 = 1; s2 = 1; s3 = 1; shu = 0; temp = 0xff; P1 = temp; TMOD = 0X11;//定时器1工作模式1 TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; TH1 = (65536-50000)/256; TL1 = (65536-50000)%256; EA = 1; 24 ET0 = 1; TR0 = 1; ET1 = 1; TR1 = 1; } void judge()//判断档数显示里程数函数 { if (t1 == (10/n) ) { t1 = 0; shu++; if(shu>=10000)//大于一万里程数自动清零 shu = 0; qian = shu/1000; bai = shu%1000/100; shi = shu%100/10; ge = shu%10; } } void main () //主函数 { init (); while (1) { keyscan(); 25 judge(); display(n,10,0,0,qian,bai,shi,ge); } } 二、设计总图 三、清单(由proteus自动生成) QTY PART-REFS VALUE CODE --- --------- ----- ---- Resistors 26 --------- 1 R1 100 1 R2 1k Capacitors ---------- 2 C1,C2 22pF 1 C3 10uF Miscellaneous ------------- 1 AT1 AT89C52 4 BUTTON1-BUTTON4, 3 LEDMPX1, LEDMPX2,MOTOR1 1 CRYSTAL1 CRYSTAL 2 CUOCUN,SUOCUN 74HC573 1 L1 L298 1 RP1 RESPACK-8 27 因篇幅问题不能全部显示,请点此查看更多更全内容