单片机课设 出租车计价器的设计.docx
- 文档编号:3415063
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:19
- 大小:91.32KB
单片机课设 出租车计价器的设计.docx
《单片机课设 出租车计价器的设计.docx》由会员分享,可在线阅读,更多相关《单片机课设 出租车计价器的设计.docx(19页珍藏版)》请在冰豆网上搜索。
单片机课设出租车计价器的设计
院(系):
电子与信息工程学院教研室:
通信工程教研室
学号
学生姓名
专业班级
课程设计(论文)题目
出租车计价器的设计
课程设计(论文)任务
任务和要求:
1、采用单片机设计出租车计价器,实现按里程计费,完成出租车计价器的硬件和软件设计;
2、具有里程测量功能;
3、具有里程、单价和车费显示功能。
设计内容:
1、分析设计要求,明确性能指标;查阅资料、设计方案分析对比。
2、论证并确定合理的总体设计方案,绘制总体结构框图,分析工作原理。
3、完成各单元具体电路的设计:
单片机最小系统、里程测量、显示等电路。
包括元器件选择、工作原理分析。
4、写出程序流程图及汇编源程序。
5、完成课程设计说明书。
指导教师评语及成绩
平时成绩(20%):
论文成绩(60%):
答辩成绩(20%):
总成绩:
指导教师签字:
学生签字:
年月日
摘要
本设计的是一个基于单片机AT89S52的出租车自动计费设计,附有复位电路,时钟电路,键盘电路等。
复位电路是单片机的初始化操作,除了正常的初始化外,为摆脱困境,通过复位电路可以重新开始。
时钟电路采用12MHz的晶振,作为系统的时钟源,具有较高的准确性。
在上电时四位共阴极5461AS数码管显示最初的起步价,里程收费,等待时间收费三种收费,通过按键可以调整起步价,里程收费,等待时间收费。
通过按键模拟出租车的运行,暂停,停止。
在5461AS液晶上可以显示运行的时间,运行时暂停的时间,通过计算可以得出总共的费用和总的路程。
在这里主要是以AT89S52单片机为核心控制器,P0口接5461AS液晶显示模块,P1口接按键的,通过按键输入。
关键词:
单片机AT89S52;5461AS液晶;出租车计费器
目录
第1章设计方案论证1
1.1出租车计价器设计要求1
1.2课题设计要求、系统方案介绍1
第2章硬件电路设计3
2.1振荡电路3
2.2复位电路设计3
2.3键盘接口电路4
2.4显示电路4
2.5路程测量部分5
2.6单片机各引脚功能说明5
第3章程序设计8
3.1总流程图8
第4章设计总结5
参考文献12
附录1:
整体电路原理图13
附录2:
器件清单14
第1章设计方案论证
1.1出租车计价器设计要求
设计一个出租车自动计费器,计费包括起步价、行车里程计费、二部分,用5461AS液晶显示总金额,运行时间,暂停时间,最大值为99.9元,起步价为5.0元,3Km之内起步价计费,超过3Km,增加2.0元(即1KM增加2.0元),用液晶显示总里程,同时用液晶显示等待时间和运行花费时间。
①、计费功能
费用的计算是按行驶里程收费。
设起步价为5.00元。
1、当里程<3km时,按起价计算费用
2、当里程>3km时,每公里按2.0元计费
②、显示功能
1、显示行驶里程:
用四位数字显示,显示方式为“XXXX”,单位为km。
计程范围0-99km,精确到1km。
2、显示等候时间:
用两位数字显示,显示方式为“XX”,单位为min。
计时范围0-59min,精确到1min。
3、显示总费用:
用四位数字显示,显示方式为“XXX.X”,单位为元。
计价范围0-999.9元,精确到0.1元。
1.2课题设计要求、系统方案介绍
方案一:
采用数字电子技术,利用555定时芯片构成多谐振荡器,或采用外围的晶振电路作为时钟脉冲信号,采用计数芯片对脉冲尽心脉冲的计数和分频,最后通过译码电路对数据进行译码,将译码所得的数据送给数码管显示,一下是该方案的流程框图,方案一如图1-1所示:
图1-1方案一框图
方案二:
采用MCU技术,通过单片机作为主控器,利用1602字符液晶作为显示电路,采用外部晶振作为时钟脉冲,通过按键可以方便调节,以下是方案三的系统流程图,本方案主要是必须对于数字电路比较熟悉,成本又不高。
方案图如图1-3所示:
图1-2方案二框图
方案总结:
通过各个方案的比较,本次采用方案二,不但控制简单,而且成本低廉,设计电路简单。
第2章硬件电路设计
2.1振荡电路
单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。
通过这两个引脚在芯片外并接石英晶体振荡器和两只电容(电容和一般取33pF)。
这样就构成一个稳定的自激振荡器。
振荡电路脉冲经过二分频后作为系统的时钟信号,再在二分频的基础上三分频产生ALE信号,此时得到的信号时机器周期信号。
振荡电路如图2-1所示:
图2-1振荡电路
2.2复位电路设计
复位操作有两种基本形式:
一种是上电复位,另一种是按键复位。
按键复位具有上电复位功能外,若要复位,只要按图中的RESET键,电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。
上电复位电路要求接通电源后,通过外部电容充电来实现单片机自动复位操作。
上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。
RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。
按键复位电路图如图2-2所示。
图2-2AT89C52引脚配置
2.3键盘接口电路
独立式键盘:
独立式键盘中,每个按键占用一根I/O口线,每个按键电路相对独立。
I/O口通过按键与地相连,I/O口有上拉电阻,无键按下时,引脚端为高电平,有键按下时,引脚电平被拉低。
I/O口内部有上拉电阻时,外部可不接上拉电阻。
键盘接口电路如图2-3所示:
图2-3键盘接口电路
2.4显示电路
对于现实电路我们可以采用数码管,也可以采用液晶显示,液晶又分字符型和点阵型,我们使用的液晶是字符型液晶,并且带字符库的,不需要查找代码。
英文字符就可。
液晶电路使用时,如果发现液晶不亮可以调节连接液晶的点位器,改变液晶的亮度。
显示电路如图2-4所示:
图2-4数码管封装图及数据线与数码管管脚关系
2.5路程测量部分
出租车中需要一个能准确获得车轮转动即路量信号的装置,以得到标准的脉冲信号送入单片机的定时/计数器T1即P3.5引脚,利用单片机的T1的计数功能完成100次的计数后产生一中断来完成路程的测量。
(设车轮周长为1m,则霍尔传感器每产生100个脉冲便表示车已行程0.1km,根据际情况在程序中进行设置)。
汽车联轴器按圆周间隔嵌入磁钢,用霍传感器集成芯片A44E测并输出脉冲,其工作原理如图4所示,霍尔传感器集成芯片A44E有信号转换、电压放大、等功能,为增加其抗干扰的能力,经过74LS14对信号整形后再通过光偶送入P3.5引脚。
图2-5路程测量电路
2.6单片机各引脚功能说明
AT89S52电路图如图2-6所示:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入
口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
图2-6AT89S52
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89S52的一些特殊功能口,P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
第3章程序设计
3.1总流程图
图3-1整体程序流程图
程序代码:
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharqianwei,baiwei,shiwei,gewei;
//显示数据各个位置数字的临时变量
charled_seg_code[10]={0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//段码表示0-9
uinttt,aa,pulse,distance,cost,danjia,wait,way;
//定义路程、价钱、等待时间及一些全局的变量等;
uchardengdai,second,minute;
//按键的定义,所有按键按下去为低电平
sbitkey0=P1^0;//清零
sbitkey1=P1^1;//切换路程与等待时间
sbitkey2=P1^2;//单程还是往返设置
sbitkey3=P1^3;//暂停按钮
sbitled1=P1^4;//指示
sbitled2=P1^5;
sbitled3=P1^6;
sbitled4=P1^7;
bit
key1_flag;
//由于按键会自动复位,这个为标志位
bit
key2_flag;
bit
key3_flag;
bit
flag//初始化函数
voidinitial_data(void)
{distance=0;
cost=0;
second=0;
minute=0;
way=0;
key1_flag=1;//
key2_flag=0;//单程or往返,接指示灯;
key3_flag=1;//暂停,接指示灯;
flag=0;
pulse=0;
dengdai=0;
led1=1;
//双程指示
led2=1;
//暂停指示
led3=1;
//堵车指示
led4=1;
//等待时间切换标志
}
//暂停程序
Void
zanting(void)
{
if(key3_flag)
{EX0=0;
//关闭中断定时器
TR0=0;
}
Else
{
EX0=1;
TR0=1;
}
key3_flag=!
key3_flag;
}
//计算数据处理
voidjisuan()
{
if(pulse<=180)
{
distance=pulse/6+way/3000;
cost=50;
//60角
}
danjia=20;//单程价格
if(key2_flag)danjia=15;
//往返价格
if(pulse>180)
{distance=pulse/6+way/3000;
cost=danjia*(distance-30)/10+50;
}
wait=minute*100+second;
}
//显示的辅助程序,分离一个数的各个数字
voidfenli(uinttemp)
//数据的分离处理
{if(temp>9999)temp=9999;
qianwei=temp/1000;
baiwei=temp/100%10;
shiwei=temp%100/10;
gewei=temp%10;
}
//延时约1ms,数码管显示时使用
voiddiplay_delay(void){
uchari;
for(i=0;i<240;i++);
}
//显示程序;
voidled_show()
{//-----显示路程或者等待时间----
if(key1_flag)fenli(distance);
else
fenli(wait);
P2=0xfe;
P0=led_seg_code[gewei];
diplay_delay();
P2=0xfd;
if(key1_flag)P0=led_seg_code[shiwei]|0x80;
//如果是路程,点亮小数点儿
else
P0=led_seg_code[shiwei];
//如果是时间,不需要点亮小数点儿
diplay_delay();
P2=0xfb;
if(key1_flag)P0=led_seg_code[baiwei];
elseP0=led_seg_code[baiwei]|0x80;
diplay_delay();
P2=0xfb7;
P0=led_seg_code[qianwei];
diplay_delay();
//-----显示价格----
fenli(cost);
P2=0xef;
P0=led_seg_code[gewei];
diplay_delay();
P2=0xdf;
P0=led_seg_code[shiwei]|0x80;
diplay_delay();
P2=0xbf;
P0=led_seg_code[baiwei];
diplay_delay();
P2=0x7f;
P0=led_seg_code[qianwei];
diplay_delay();
}
//延时时基为1ms
voiddelay(uintx)
{
inti,j;
for(i=x;i>0;i--)
for(j=340;j>0;j--);
}
//键盘的扫描
voidkeyscan()
{if(key1==0)//按键消抖并判断按下去的次数为基数还是偶数
{delay(5);
if(key1==0)
key1_flag=!
key1_flag;
}
if(key0==0)//清零
{delay(5);
if(key0==0)
initial_data();
}
if(key3==0)//暂停
{delay(5);
if(key3==0)
zanting();
}
if(key2==0)//单程还是往返
{delay(5);
if(key2==0)
key2_flag=!
key2_flag;
}
//指示等扫描
led1=!
key2_flag;
//指示,单程还是往返,灯低电平点亮;
led2=key3_flag;//指示,暂停时亮;led3=flag;//指示是否等待;
led4=key1_flag;//切换指示,显示路程还是等待时间;
diplay_delay();
}
//定时器初始化
voidinitial_time()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
IE=0x83;
IT0=1;
//外部边沿触发方式
TR0=1;
}
//中断记录脉冲数
Voidzd()interrupt0
//中断0
{
aa++;
if(flag)pulse++;
//进入中途等待计价
}
//*********定时器********
voidtime0()interrupt1
//定时0
{
TH0=(65536-10000)/256;//10ms
TL0=(65536-10000)%256;
tt++;
if(tt>=100)
//1s采样
{
tt=0;
aa=aa/5;//速度(n*圈/s)
if(aa<=5)flag=0;
elseflag=1;
aa=0;
}
if(!
flag)
{
way++;
dengdai++;
if(dengdai==100)
{
dengdai=0;
second++;
if(second==60)
{
minute++;
second=0;
}
}
}
}
//主程序
voidmain(void)
{
initial_data();//初始化数据
initial_time();
//初始化定时器
while
(1)
{
keyscan();
jisuan();
led_show();
}
}
第4章设计总结
出租车计费器系统的设计已经全部完成,能按预期的效果进行模拟汽车启动,停止,暂停等功能并能够通过LCD显示车费数目。
本款出租车计价器包括单价输出、单价调整、显示当前的系统时间等功能。
另外,多功能出租车计价器还具有性能可靠、电路简单、成本低、实用性强等特点,加上经过优化的程序,使其有很高的智能化水平。
通过这次设计不仅学会了如何去查找相关资料,更重要的是通过查找资料和翻阅书籍学到了不少知识,扩大了知识面,提高了知识水平。
经过单元设计和系统设计巩固了以前所学的专业知识,自己真正认识到理论联系实际的重要性,为以后的学习和工作提供了很多有价值的经验。
通过这次设计不仅增强了自己的动脑能力和动手能力,也提高了我思考问题、分析问题、解决问题的能力,更重要的是学会用工程化的思想来解决问题。
这在以前的学习过程中是不曾学到的。
这次设计是我认真认识到完整、严谨、科学分析问题、解决问题的思想是多么的重要,只有拥有了科学的态度才能设计出有用的产品。
另外通过本次设计,是我认识到自己理论知识的应用能力有很大的欠缺,需要在以后的学习中进一步提高。
由于能力和水平有限,实验经验尚浅,错误之处在所难免,恳请老师加以纠正,以后不断学习改进!
参考文献
[1]张毅刚.彭喜元单片机原理与应用设计北京.电子工业出版社,2012.
[2]何立民.单片机应用技术选篇(5)[M].北京:
北京航空航天大学出版社,1997.
[3]杨光友.单片机微型计算机原理及接口技术[M].北京:
中国水利水电出版社,2002.
[4]肖洪兵.跟我学用单片机.北京:
北京航空航天大学出版社,2002.8
[5]夏继强.单片机实验与实践教程.北京:
北京航空航天大学出版社,2001
[6]赵晓安.MCS-51单片机原理及应用.天津:
天津大学出版社,2001.3
[7]李广第.单片机基础.第1版.北京:
北京航空航天大学出版社,1999
[8]徐惠民、安德宁.单片微型计算机原理接口与应用.第1版.北京:
北京邮电大学出版社,1996
[9]何立民.从Cygnal80C51F看8位单片机发展之路.单片机与嵌入式系统应用,2002年,第5期:
P5~8
附录1:
整体电路原理图
附录2:
器件清单
序号
名称
数量
1
AT89C51单片机
1
2
LED显示灯
4
3
晶振
1
4
电阻
2
5
按键
4
6
Respack
1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课设 出租车计价器的设计 单片机 出租车 计价器 设计