单片机原理及应用课程设计-客运计价器的设计.doc

上传人:哈尼dd 文档编号:5019032 上传时间:2020-01-29 格式:DOC 页数:23 大小:479KB
返回 下载 相关 举报
单片机原理及应用课程设计-客运计价器的设计.doc_第1页
第1页 / 共23页
单片机原理及应用课程设计-客运计价器的设计.doc_第2页
第2页 / 共23页
单片机原理及应用课程设计-客运计价器的设计.doc_第3页
第3页 / 共23页
单片机原理及应用课程设计-客运计价器的设计.doc_第4页
第4页 / 共23页
单片机原理及应用课程设计-客运计价器的设计.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《单片机原理及应用课程设计-客运计价器的设计.doc》由会员分享,可在线阅读,更多相关《单片机原理及应用课程设计-客运计价器的设计.doc(23页珍藏版)》请在三一文库上搜索。

1、湖南人文科技学院课程设计报告课程名称:单片机原理及应用课程设计设计题目: 客运计价器的设计 系 别: 通信与控制工程系 专 业: 自动化 班 级: 09级自动化三班 学生姓名: 学 号: 起止日期: 2011年12月19日 2011年12月31日指导教师: 教研室主任: 1指导教师评语: 指导教师签名: 年 月 日成绩评定项 目权重成绩张鹏胡彬1、设计过程中出勤、学习态度等方面0.22、课程设计质量与答辩0.53、设计报告书写及图纸规范程度0.3总 成 绩 教研室审核意见:教研室主任签字: 年 月 日教学系审核意见: 主任签字: 年 月 日摘 要随着生活水平的提高,人们已不再满足于衣食住的享受

2、,出行的舒适已受到越来越多人的关注。于是,出租车行业以低价高质的服务给人们带来了出行的享受。随着出租车行业的发展,出租车已经是城市交通的重要组成部分,但是总存在着买卖纠纷困扰着行业的发展,出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有应用价值的。 而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。而采用

3、单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能,用数码管显示费用。针对计费模式的切换,通过软件编程就可以轻易而举的实现。避免了机械开关带来的不稳定因素。本设计以89C52单片机为中心实现对出租车计价统计本设计采用6位8段数码管显示,可以清楚地显示出单价、所走时间、总金额数,而且还能根据白天、黑夜来调节单价,具有很强大实用性。再加上24C08的外部存储芯片,即使在掉电的情况下数据也不会丢失。关键词:单片机;C程序;按键扫描;定时中断;掉电保护目 录设计要求11 方案论证与对比11.1 方案一 采用数字

4、电路控制11.2 方案二 采用STC89C52单片机控制11.3 方案比较22 系统的组成及工作原理22.1 系统的硬件构成及功能22.2 STC89C52单片机及其引脚说明23 硬件模块设计53.1 控制键盘模块53.2 掉电保护模块设计63.3 显示单元电路设计64 软件模块设计74.1 系统主程序设计74.2 定时中断服务程序84.3 显示服务程序84.4 键盘服务程序95 系统调试96 心得体会及致谢107 参考文献11附录1 总体设计电路图12附录2 元件清单13附录3 源程序14客运计价器的设计设计要求本课题以单片机为核心,设计并制作出一台出客运计价器,具有以下功能:1、不同情况具

5、有不同的收费标准,具备白天和晚上不同的计价能力。2、能进行手动修改单价。3、具有数据的复位功能。4、能够在掉电的情况下存储单价等数据。此题可以以时间做计价方式。1 方案论证与对比1.1 方案一 采用数字电路控制 该系统采用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价,但是考虑到这种电路过于简单,性能不够稳定,而且不能调节单价,也不能根据天气调节计费标准,电路不够实用。其原理方框图如图1所示。图1数字电路控制方框图1.2 方案二 采用STC89C52单片机控制该系统是用STC89C52单片机,根据所走时间计价钱,即:白天/晚上总金额=3元/4元 (时间10s)此系统用单片机

6、的定时器0。通过启动定时器0来实现时间计费,进而求出总金额。然后将单价,时间,总金额送到数码管显示。按键部分可以进行白天晚上模式的选择与单价的调整。此方案的外部存储模块,可以在系统掉电的情况下保存单价、时间、总金额等数据。其原理方框图如图2所示。STC89C52图 2 客运计价器系统方框图1.3 方案比较本设计要求是实现基本的计价和不同时间段的加价方式。方案一种用到里程传感器,移位寄存器这些装置的实现,要比较复杂的数字电路,应用不灵活。方案二中采用单片机来实现,比较方便,简单不需要太大的要求就可以实现计价要求。上述两种方案中:方案一比方案二的硬件设计难度大,稳定性差,难操作。综合比较,再根据本

7、设计的要求,所以采用方案二来实现功能。2 系统的组成及工作原理2.1 系统的硬件构成及功能 本系统的硬件设计主要包括单片机STC89C52、数据显示部件、模拟行驶时间单元、及计价单元的设计。在硬件设计过程中,充分利用各部件的功能,实现多功能的客运计价器设计。 利用单片机丰富的IO端口,及其控制的灵活性,实现基本的时间计价功能和价格选择、总价显示控制等功能。不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级。具体电路参见附录中“总体设计电路图”。2.2 STC89C52单片机及其引脚说明STC89C52是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,

8、片内含8KB的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用 8位微处理器于单片芯片中,具有高性价比。STC89C52是一个有40个引脚的芯片,引脚配置如图3STC89C52引脚配置所示。 图3 STC89C52引脚配置STC89C52芯片的40个引脚功能为:VCC:电源电压。GND:接地。RST:复位输入。当RST变为高电平并保持2个机器周期时,将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位可打开或关闭该

9、功能。DISKRTO位缺省为RESET输出高电平打开状态。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡放大器的输出。P0口: 一组8位漏极开路型双向I/O口。也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4

10、个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,P1接收低8位地址。P1口部分端口引脚及功能如表2-1 P1口特殊功能所示。表1 P1口特殊功能P1口引脚特殊功能P1.5MOSI(用于ISP编程)P1.6MOSI(用于ISP编程)P1.7SCK(用于ISP编程)P2口:一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输

11、入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个访问期间不改变。Flash编程和程序校验期间,P2亦接收低8位地址。P3口:一个带内部上拉电阻的8位双向I/O口。P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写“1”时,它们被内部的上拉电阻把拉到高电并可作输入端口。作输入端口使用时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表2-2

12、 P3口特殊功能所示。P3口还接收一些用于Flash闪速存储器编程和程序校验期间的控制信号。表2-2 P3口特殊功能P3口引脚特殊功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6 (外部数据存储器写选通)P3.7 (外部数据存储器读选通) PSEN/:程序储存允许输出是外部程序存储器的读先通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN/有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN/信号。 EA/VPP:外部访

13、问允许。欲使CPU仅访问外部程序存储器,EA端必须保持低电平,需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。Flash存储器编程时,该引脚加上+12V的编程电压VPP。3 硬件模块设计3.1 控制键盘模块键盘采用4*4矩阵按键,接在8255A的PC口,当有键按下时,相对应的接口被置0。矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。如图4所示,行线接PC.0PC.3,列线接PC.4PC.7。外中断按键,通过与单片机的P3.2口和P3.3口,实现计价器的中途停止和继续行驶,其电路图如图5所示。图4

14、 矩阵键盘电路图5 外中断电路按键S3:复位按键。按下该键。所有数据初始化。按键S4:白天和黑夜计价方式的切换键。按键S8:单价从1元每秒到2元每秒的切换键。按键S12:开始计价按键。外中断0按键:表示汽车中途停止。外中断1按键:表示汽车继续行驶。 3.2 掉电保护模块设计 掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。掉电保护的芯片较多,如AT24C08 是ATMEL 公司的2KB 字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8 脚的DIP

15、 封装,使用方便。掉电保护电路图如下图6所示。图6 掉电保护电路3.3 显示单元电路设计由于设计要求有时间、金额、单价,所以采用6位LED数码管的分屏显示。显示电路由6位LED数码管组成。电路如图7所示,8255A用于连接51单片机和LED数码管,51单片机的P0.0P0.7分别顺序对应8255A的D0D7,8255A的PA口为数码管的位选,PA为0xdf时,选择右一数码管。以次类推。PB口为数码管段选,PB为0xa0时,数码管显示为零。各个数码管显示内容示意图见图7。图7 LED数码管显示电路4 软件模块设计本系统的软件设计主要可分为主程序模块、定时计数中断程序、外中断服务程序、显示子程序服

16、务程序、键盘服务程序五大模块。下面对各部分模块作介绍。4.1 系统主程序设计图8 主程序流程图 在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化、中断向量的设计以及开中断、循环等待等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、时间寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计时和计价等不同的操作。主程序流程图如图8所示。当按下S12时,就启动计价,将根据时间寄存器中的内容计算,并将结果存于价格寄存器中,然后将时间和当前累计价格送显示电路显示出来。到下次启动计时,系统自动对显示清零,并重新进行初始化过程。4

17、.2 定时中断服务程序在定时中断服务程序中,每1/20s 产生一次中断,当产生20次中断的时候,也就到了一秒,送数据到相应的显示缓冲单元,并调用显示子程序实时显示。其程序流程如图9所示。 图9 定时中断服务程序4.3 显示服务程序数码管在一般情况下显示时间,总价格,单价三项数据。程序流程图如图10。 图10 显示服务程序4.4 键盘服务程序键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。三个按键分别对应三个简单的子程序。如果按键S3被按下,单片机复位键:实时数据自动初始化。如果按键S4被按下,白天黑夜计价方式切换

18、,按一次进入白天计价方式,两次进入黑夜计价方式,循环按键。如果按键S8被按下,单价从1元到2元切换,循环按键。5 系统调试 根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。测试包括时间计价测试、掉电存储测试。 根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试。在软件编程时,应充分利用原理图,不然会在编程时导致硬件与软件不能对应起来,使程序无法实现功能,还有在编程时子程序的名称应与其功能对应,否则会使别人在读程序的时候不能及时理解程序含义,而且在软件调试时逻辑一定要清晰

19、,不然在找错时会浪费很多时间。6 心得体会及致谢 经过这些天有关于出租车计价器的课程设计,使我对单片机的应用有了更深的了解。在课程设计的过程中,还是碰到了许多的问题。比如,对于数码管动态扫描显示和键盘的延时防抖的综合编程不能较好地解决;对于代码的前后顺序及调用掌握得还不够好;对于一些相关的应用软件没能熟练掌握。通过这几天晚上的苦想和反复调试,以及参考网上的程序,最终还是把问题解决了。通过这次课程设计,我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,也充分体会到了自己设计东西的乐趣、学会查阅资料和对别人的东西融会变通的重要性,也明白了很多知识光靠趴在书本上学是学不到其中的精髓

20、的,必须亲自去试着实践,亲自去经历才能对它们真正的掌握,凡事都要自己去动下手,去实践一下,遇到困难,永远不要沮丧气馁。在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高其他方面的知识。通过本次课程设计,又使我学到了许多书本上无法学到的知识,也使也深该体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。在本次课程设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:AT89C52单片机及其引脚说明,为本次课程设计提供了一定的

21、资料。也为以后的进一步学习打下了坚实的基础。最后要感谢学校给了我们这次课程设计的机会,让我们将理论能运用于实践提供了条件,感谢指导老师成运,方智文,岳舟老师对我们的建议和指导,感谢同学们对我们组的支持。祝愿老师们工作顺利,同学们学业有成!7 参考文献1张友德、赵志英、涂时亮. 单片微型机原理、应用与实验 上海:复旦大学出版社2005.12 .2 徐光翔.单片机原理接口及应用南京大学出版社.3 张淑清等. 单片微型计算机接口技术及其应用 北京:国防工业出版社. 4 王晓君等. MCS-51及兼容单片机原理与选型 北京:电子工业出版社.5张鑫、华臻、陈书谦单片机原理及应用M电子工业出版社,2005

22、P1101366丁元杰、吴大伟单片微机实题集与实验指导书M机械工业出版社.2004P12412519附录1 总体设计电路图附录2 元件清单名称型号 数量 电阻1K 10若干 电容104 33若干 单片机芯片AT89C521 扩展芯片8255A1 三极管90156 数码管 2 开关1 按键 19 USB串口线1 USB串口电源线1 掉电保护芯片AT24C021 发光二极管1 数字万用表DT92031 单片机仿真器STC_ISP1 双踪稳压稳流电源DH1718E-51 数字示波器TDS10021 电烙铁1附录3 源程序#include#include#define uchar unsigned c

23、har#define uint unsigned int#define PA XBYTE0xd9ff#define PB XBYTE0xdbff#define PC XBYTE0xddff#define CON XBYTE0xdfffuchar temp,temps,tempg,time,times,timeg,price=1,prices,priceg;/定义变量void delay(uint z)/毫秒延时函数uint x,y;for(x=z;x0;x-)for(y=120;y0;y-); uchar code display110= /数码管显示不带点的数 0xA0, /*0共阳极*/

24、0xBB, /*1*/ 0x62, /*2*/ 0x2A, /*3 */ 0x39, /*4*/ 0x2C, /*5 */ 0x24, /*6*/ 0xBA, /*7*/ 0x20, /*8*/ 0x28, /*9 */ ;uchar code display210= /数码管显示带点的数 0x80, /*0共阳极*/ 0x9B, /*1*/ 0x42, /*2*/ 0x0A, /*3 */ 0x19, /*4*/ 0x0C, /*5 */ 0x04, /*6*/ 0x9A, /*7*/ 0x00, /*8*/ 0x08, /*9 */ ; uchar table13= /数码管中不带点的位0

25、xfe,0xfb,0xef;uchar table23=/数码管中带点的位0xfd,0xf7,0xdf;void comdisplayer(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)/数码管显示函数,分别为单价显示,费用显示,时间显示PB=display1a;PA=table10;delay(1);PA=0xff;PB=display2b;PA=table20;delay(1);PA=0xff;PB=display1c;PA=table11;delay(1);PA=0xff;PB=display2d;PA=table21;delay(1);

26、PA=0xff;PB=display1e;PA=table12;delay(1);PA=0xff;PB=display2f;PA=table22;delay(1);PA=0xff;uchar keyscan()/键盘扫描函数uchar tem;PC=0x10;tem=PC;tem=tem&0x0f;if(tem=0x08)tem=PC;tem=tem&0x0f;delay(5);if(tem=0x08)while(PC=0x18);return 1;if(tem=0x04)return 2;if(tem=0x02)return 3;else return 0;void main()/ 主函数u

27、char ch,key,b=1,d=1;CON=0x81;/设置8255控制字EA=1;EX0=1;EX1=1;TMOD=0x11;IT1=1;IT0=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;ET1=1;ET0=1;temp=3;while(1)comdisplayer(0,1,0,3,0,0);/计费初始化delay(30);key=keyscan();if(key=1)/转化昼夜计费模式while(b)if(ch=0)temp=4;temps=temp

28、/10;tempg=temp%10;prices=price/10;priceg=price%10;comdisplayer(prices,priceg,temps,tempg,times,times);key=keyscan();if(key=1)ch+;if(key=2|key=3)b=0;if(ch=1) temp=3;temps=temp/10;tempg=temp%10;prices=price/10;priceg=price%10;comdisplayer(prices,priceg,temps,tempg,times,times);key=keyscan();if(key=1)c

29、h+;if(ch=2)ch=0;if(key=2|key=3)b=0;/*if(key=2)/调整单价price+;prices=price/10;priceg=price%10;comdisplayer(prices,priceg,temps,tempg,times,times); */if(key=3)/开始计费TR0=1;while(1)comdisplayer(prices,priceg,temps,tempg,times,timeg); void inter0() interrupt 0 /外中断1 表示中途停车 TR0=0;P1=0x00;void inter1() interrupt 2 /外中断0 表示继续行驶 TR0=1;P1=0xff;void time0() interrupt 1/计费模式uchar c,s;TH0=(65536-50000)/256;TL0=(65536-50000)%256;c+;if(c=20)s+;c=0;time+;times=time/10;timeg=time%10;prices=price/10;priceg=price%10;if(s10)temp=temp+price;temps=temp/10;tempg=temp%10;

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

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1