ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:336.27KB ,
资源ID:9626655      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9626655.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机出租车计价器课题设计c语言.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机出租车计价器课题设计c语言.docx

1、基于单片机出租车计价器课题设计c语言基于单片机出租车计价器课题设计一、设计任务和性能指标1.1设计任务出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。出租车计价器的主要功能是计价显示、时钟显示、根据白天、黑夜、途中等待来调节营运参数、计量数据查询等。要求用Protel 画出系统的电路原理图(要求以最少组件,实现系统设计所要求的功能),印刷电路板(要求布局合理,线路清晰),绘出程序流程图,并给出程序清单(要求思路清晰,尽量简洁,主程序和子程序分开,使程序有

2、较强的可读性)。1.2性能指标1. 不同情况具有不同收费标准:白天、晚上、途中等待(10min开始收费);2. 数据输出:单价输出、路程输出、总金额输出;3. 按键:启动计时开关、数据显示切换、白天/晚上切换、复位;能手动进行修改单价,但单价设定需密码进入。二、设计方案2.1任务分析出租车计价器基本功能部分是根据里程数来完成总金额的输出。实现方法有两种。方案一:采用数字电路控制。其原理方框图如图2.1所示。采用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价,但是考虑到这种电路过于简单,性能不够稳定,而且不能调节单价,也不能根据天气调节计费标准,电路不够实用。图2.1 数字电

3、路实现框图方案二:采用单片机控制。利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程计价功能和价格调节、时钟显示功能。本方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。2.2系统设计图2.1电路系统构成框图主控芯片使用51系列AT89C52单片机,采用高性能的静态80C51设计,由先进工艺制造,并带有非易失性Flash程序存储器。它是一种高性能、低功耗的8位COMS微处理芯片,市场应用最多。时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片DS1302。采用DS1302作为主

4、要计时芯片、可以做到计时准确。更重要的是,DS1302可以在很小的电流的后备电源(2.55.5V电源,在2.5V时耗电小于300nA)下继续计时,并可编程选择多种充电电流对后备电源进行慢速充电,可以保证后备电源基本不耗电。采用串行数据传输,与单片机硬件连接简单,如果使用时钟芯片DS12887,将采用并行数据传输,占用更多的硬件资源。因此为节省单片机端口,时钟芯片采用DS1302。它们可以检测磁场及其变化,可在各种与磁场有关的场合中使用。霍尔器件以霍尔效应为其工作基础。霍尔器件具有许多优点,它们的结构牢固,体积小,重量轻,寿命长,安装方便,功耗小,频率高(可达1MHZ),耐振动,不怕灰尘、油污、

5、水汽及盐雾等的污染或腐蚀。活儿现行器件的精度高、线性度好;霍尔开关器件无触点、无磨损、输出波形清晰、无抖动、无回跳、无知重复精度高(可达Im级)。采用了各种步长和保护措施的霍尔器件的工作温度范围宽,可达-55摄氏度150摄氏度。数据显示模块采用的是LED数码管显示,LCD虽然也能实现显示功能,但在距屏幕1米之外就无法看清数据,不能满足要求,而且在白天其对比度也不能满足要求,因此建议采用LED数码管显示。数码管总共用了12个,其中第一行显示小时和分钟,第二行第一个显示单价,后面3个显示里程数,最后一行显示总价。 按键控制模块使用了3个脉冲开关,其中一个开关负责换位,另一个负责改数,第三个按键负责

6、切换至等待时间。三 系统硬件设计3.1电源电路因为出租车上的电压时12V,而芯片所需供电电压是5V,所以选择LM7805的经典电路电源电路完成12V转5V的目的。电源电路图如下图3.1所示:图3.1电源电路图3.2单片机的最小系统单片机最小系统采用的是STC89C54芯片,STC89C54是一种低功耗、高新能CMOS 8为微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51铲平指令和引脚完全兼容。偏上FLASH允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有平桥的8为CPU何在系统可编程Flash,使得STC89C54为

7、众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C54具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16为定时器/计数器,一个6向量2级终端结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0HZ静态逻辑操作,支持2中软件可选择节点模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、终端继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。单片机最小系统电路图如下图3.2所示:图3.2单片机最小系统电路图3.3 DS1302时钟电路若采

8、用单片机计时,一方面需要采用计数器,占用阴间资源,另一方面需要设置终端、查询等,同样耗费单片机的资源,并且使用单片机的时钟误差比较大,当长时间使用后会,会出现很大错误,而在系统中采用DS1302则能很好的解决这个问题。DS1302时钟电路图如图3.3所示: 图3.3 DS1302时钟电路图3.4显示电路的设计在显示模块需要对时间、单价、总价、路程、等待时间进行显示,采用的是数码管,数码管总共用了12个,其中第一行显示小时和分钟,第二行第一个显示单价,后面3个显示里程数,最后一行显示总价。显示电路图(一个数码管)如下图3.4所示:图3.4 显示电路图3.5按键控制的设计 按键的设置是为了能够手动

9、更改时间和单价,还有就是手动切换到等待时间的地方,按键采用的是脉冲按键。按键设置电路图如图3.5所示:图3.5按键控制电路图3.6掉电保护掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。掉电保护的芯片较多,如AT24C02 是ATMEL 公司的2KB 字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8 脚的DIP 封装,使用方便。掉电保护电路图如下图3.6所示:图3.6 掉电保护电路图3.7复位电路复位功能采用的是MAX813L芯片。MAX813L

10、是具有监控电路的微处理芯片,它具有4个功能:1具有独立的看门狗计时器,如果看门狗输入在1.6秒内无变化,就会产生看门狗输出;2掉电或电源电压低于1.25V时,产生掉电输出;3上电时能自动产生200ms宽的复位脉冲;4具有人工复位功能,当人工复位端输入低电平时,产生复位信号输出。复位电路如图3.7所示:图3.7复位电路图四、系统软件设计4.1主程序设计程序的难度主要就是在数码管的显示和外部脉冲的采集部分,分别采用74LS273芯片对数码管进行段选,使数码管显示对应的数,另外使用74LS154对数码管进行位选,选择哪个数码管亮,采用的是动态显示。还有外部脉冲的收集,需要对里程数进行显示,所以必须要

11、先进行脉冲的采集。程序流程图如图4.1所示:图4.1程序流程图4.2 子程序设计4.2.1 DS1302子程序4.2.1 DS1302子程序流程图显示单价、总价、路程、时间等数据,循环扫描进行显示。(如果在一分钟内没有脉冲,开启终端,显示秒分子程序。DS1302子程序流程图如4.2.1所示:图4.2.1 DS1302子程序流程图4.2.2 显示子程序void sett() /显示等待时间及单价、总价、路程子程序TAB0=Read1302(0x83)/10;TAB1=Read1302(0x83)%10;TAB7=Read1302(0x81)/10;TAB6=Read1302(0x81)%10;T

12、AB8=3;TAB2=Coo/100;TAB3=Coo/10%10;TAB4=Coo%10;if(TAB4=3&TAB2=0&TAB3=0)TAB11=8;elseTAB11=(8+(Coo-3)*TAB8)%10;TAB5=TAB2*TAB8/10;TAB9=Coo/100*TAB8+Coo%100*TAB8/100;TAB10=(Coo/10*TAB8+Coo%10*TAB8/10)%10;void mmm() /显示时间子程序 TAB0=Read1302(0x85)/10; TAB1=Read1302(0x85)%10; TAB7=Read1302(0x83)/10; TAB6=Read

13、1302(0x83)%10;TAB8=3;TAB11=(8+(Coo-3)*TAB8)%10;TAB5=TAB2*TAB8/10;TAB9=Coo/100*TAB8+Coo%100*TAB8/100;TAB10=(Coo/10*TAB8+Coo%10*TAB8/10)%10;void mm() /非计价时的显示时间TAB0=Read1302(0x85)/10;TAB1=Read1302(0x85)%10;TAB7=Read1302(0x83)/10;TAB6=Read1302(0x83)%10;TAB8=3;TAB2=Coo/100;TAB3=Coo/10%10;TAB4=Coo%10;if(

14、TAB40;Delay-) for(I=0;I0; i- ) /循环8次移位 temp = addr; DIO = (bit)(temp&0x01); /每次传输低字节 addr = 1; SCLK = 0; /右移一位 SCLK = 1; /发送数据 for ( i=8; i0; i- ) temp = dat; DIO = (bit)(temp&0x01); dat = 1; SCLK = 0; SCLK = 1; CE = 0; unsigned char Read1302 ( unsigned char addr ) /数据读取子程序 unsigned char i,temp,dat1

15、,dat2; CE=0; SCLK=0; CE = 1; /发送地址 for ( i=8; i0; i- ) /循环8次移位 temp = addr; DIO = (bit)(temp&0x01); /每次传输低字节 addr = 1; SCLK = 0; SCLK = 1; /右移一位 /读取数据 for ( i=8; i0; i- ) ACC7=DIO; ACC=1; SCLK = 1; SCLK = 0; CE=0; dat1=ACC; dat2=dat1/16; /数据进制转换 dat1=dat1%16; /十六进制转十进制 dat1=dat1+dat2*10; return (ACC

16、);void Initial() /初始化DS1302 Write1302 (0x8E,0x00); /禁止写保护 Write1302 (0x80,0x00); /秒位初始化 Write1302 (0x82,0x20); /分钟初始化 Write1302 (0x84,0x10); Write1302 (0x86,0x23); Write1302 (0x88,0x05); Write1302 (0x8c,0x10); /小时初始化 Write1302 (0x8E,0x80); /允许写保护void set() /修改时间 Write1302 (0x8E,0x00); /禁止写保护 Write13

17、02 (0x82,TAB7*16+TAB6); /分钟初始化 Write1302 (0x84,TAB0*16+TAB1); Write1302 (0x8E,0x80);void ss()/显示子程序int i;uchar *p;p=TAB;for(i=0;i1;i+)det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=0;P15=0;P16=0;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=1;P15=0;P16=0;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P

18、20=0;P20=1;P14=0;P15=1;P16=0;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=1;P15=1;P16=0;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=0;P15=0;P16=1;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=1;P15=0;P16=1;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=0;P15=1;P16=1

19、;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=1;P15=1;P16=1;P17=0;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=0;P15=0;P16=0;P17=1;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=1;P15=0;P16=0;P17=1;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=0;P15=1;P16=0;P17=1;p+;det=*p;tmp=DispTab

20、det;P0=tmp;P20=0;P20=1;P14=1;P15=1;P16=0;P17=1;p+;det=*p;tmp=DispTabdet;P0=tmp;P20=0;P20=1;P14=0;P15=0;P16=1;P17=1;p+;void sett() /显示等待时间及单价、总价、路程子程序TAB0=Read1302(0x83)/10;TAB1=Read1302(0x83)%10;TAB7=Read1302(0x81)/10;TAB6=Read1302(0x81)%10;TAB8=3;TAB2=Coo/100;TAB3=Coo/10%10;TAB4=Coo%10;if(TAB4=3&TAB2=0&TAB3=0)TAB11=8;elseTAB11=(8+(Coo-3)*TAB8)%10;TAB5=TAB2*TAB8/10;TAB9=Coo/100*TAB8+Coo%100*TAB8/100;TAB10=(Coo/10*TAB8+Coo%10*TAB8/10)%10;void mmm() /显示时间子程序 TAB0=Read1302(0x85)/10; TAB1=Read1302(0x85)%10; TAB7=Read1302(0x83)/10; TAB6=Read1302(0x83)%10;TAB8=3;void qi

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1