微机原理单片机课程设计例子

上传人:无*** 文档编号:85652452 上传时间:2022-05-06 格式:DOC 页数:21 大小:108KB
收藏 版权申诉 举报 下载
微机原理单片机课程设计例子_第1页
第1页 / 共21页
微机原理单片机课程设计例子_第2页
第2页 / 共21页
微机原理单片机课程设计例子_第3页
第3页 / 共21页
资源描述:

《微机原理单片机课程设计例子》由会员分享,可在线阅读,更多相关《微机原理单片机课程设计例子(21页珍藏版)》请在装配图网上搜索。

1、-?单片机应用与仿真训练?设计报告出租车计价器. z.-摘要随着出租车行业的开展,出租车行业已经是城市交通的重要组成局部,从加强行业管理以及减少与乘客的纠纷出发,以单片机为核心的智能出租车计价系统的开发就显得尤其重要。本设计采用89C51单片机为主控器,以霍尔传感器测距,实现对出租车的多功能的计价设计。并且还添加有其他的附加设计,使司机师傅操作起来更加方便,例如,按暂停键,计价器可暂停计价,按查询键,可显示总等待时间等。关键词:89C51,霍尔传感器. z.-目录一、概论31、前言32、设计的意义33、设计任务34、设计的目的和要求4二、系统总体方案及硬件设计51、系统总体方案52、霍尔传感器

2、检测单元53、键盘调整单元6三、软件设计81、系统主程序82、中断程序92.1、里程计数中断程序92.2、中途等待中断程序92.3、计算程序92.4、显示程序92.5、键盘程序10四、Proteus软件仿真11五、实物图12六、程设计心得体会13参考文献13附1:源程序代码14附2:系统原理图22一概述1、前言计价器是出租汽车的经营者和乘坐出租汽车的消费者之间用于公平贸易结算的工具,因而计价器计价准确与否,直接关系到经营者和消费者的经济利益。依据国家有关法律、法规,出租汽车计价器是列入国家首批强制检定的工作计量器具之一,也是近年来国家质量技术监视部门强化管理的六类重点计量器具之一。在出租车是城

3、市交通的重要组成局部,行业安康和开展也获得越来越多的关注。汽车计价器是乘客与司机双方的交易准则,它是出租车行业开展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广阔出租车司机朋友还是乘客来说都是很必要的。出租车已经成为我国城市公共交通的重要组成局部和现代化城市必备的根底设施,成为人们工作、生活中补课缺少的交通工具。而出租车计价器在出租汽车效劳行业中占着极为重要的地位,因为出租车必须安装出租车计价器才能投入正常的运营。出租车计价器是一种能根据乘客乘坐汽车行驶距离和等候时间的多少进展计价,并直接显示车费值得计量器具。计价器是出租汽车经营者和乘坐出租汽车的消

4、费者之间用于公平贸易结算的工具,因而计价器准确与否,直接关系到经营者和消费者的经济利益。依据国家有关法律、法规,出租车计价器是列入国家首批强制检定的工作计量器具之一,也是近年来国家质量技术监视部门强化管理的的六类重点计量器具之一。2、设计的意义在出租车时城市交通的重要组成局部的大环境下,行业的安康和开展也获得越来越多的关注。汽车计价器是乘客与司机双方的交易准则,它是出租车行业开展的重要标志,是出租车种最重要的工具。她关系着交易双方的利益。具有良好性能的计价器无论是对广阔出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有应用价值的,尤其是对于出租车行业有着极其重要的意义。3

5、、设计任务本设计是采用AT89C51单片机为主控器,以霍尔传感器测距,实现对出租车的多功能的计价设计,输出采用8段数码显示管。本电路设计的计价器不但能实现根本的计价,而且还能根据单程,返程和起步来调节单价,并实现了暂停和等待时间查询的功能。4、设计的目的和要求目的:通过单片机课程设计,熟练掌握c语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。通过出租车计价器系统的设计,掌握单片机个资源的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。根本要求:(1)能显示里程,单位为公里,最后一位为小数位。(2)能显示金额数,单位为元,最后一位为小数位。(3)可设定单程价格和往返价格

6、,单程价格为2元/公里,往返价格为1.5元/公里。(4)车速5公里/小时的时间累积为总等待时间,每5分钟等待时间相当于里程数增加1公里。(5)起步公里数为3公里,价格为5元,假设实际距离大于3公里,按规则3计算价格。(6)按暂停键,计价器可暂停计价,按查询键,可显示总等待时间。二 系统总体方案及硬件设计1、系统总体方案模拟计数器系统主要由四大模块组成:霍尔传感器、AT89C51单片机、独立键盘。霍尔传感器安装在车轮的旁侧,主要检测汽车行进的公里数,并产生一系列相应的脉冲输出,脉冲送到单片机进展处理,单片机根据程序设定通过计算脉冲数换算出行驶公里数,再根据价格等相关数据进展金额的计算,计算好的金

7、额、里程都实时地显示在数码管上。独立键盘可以调节价格等相关数据,按下相应的按钮,产生信号交由单片机处理并实时显示出来。总体方案构造图如下:独立键盘调整切换AT89C51单片机数码管 显示电路脉冲输入 霍尔传感器计算输出图2.1 系统总体构造框图2、霍尔传感器检测单元属于开关型的霍尔器件,其工作电压围比拟宽4.518V,其输出的信号符合TTL电平标准,可以直接接到单片机的IO 端口上,而且其最高检测频率可到达1MHZ。集成霍耳开关由稳压器A、霍耳电势发生器(即硅霍耳片)B、差分放大器C、施密特触发器D和OC门输出E五个根本局部组成。在输入端输入电压Vcc,经稳压器稳压后加在霍尔电势发生器的两端,

8、根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。当施加的磁场到达工作点即Bop时,触发器输出高电压相对于地电位,使三极管导通,此时OC门输出端输出低电压,三极管截止,使OC门输出高电压,这种状态为关。这样两次电压变换,使霍尔开关完成了一次开关动作。 霍尔传感器原理如图5所示。P3.2霍尔传感器小磁铁AT89C51单片机图2.2 传感器测距示意图里程计算是通过安装在车轮上的霍尔传感器检测到的脉冲信号,送到单片机产生中断,单片机再根据程序设定,计算出里

9、程。其原理如图2.4所示。本系统选择了将霍尔传感器的脉冲输出口接到P3.3口外部中断1作为信号的输入端这样可以减少程序设计的麻烦,车轮每转一圈设车轮的周长是5米,霍尔开关就检测并输出信号,引起单片机的中断,对脉冲计数,当计数到达200次时,即1公里,单片机就控制将金额自动增加,如图2.5霍尔传感器。图2.3 霍尔传感器 3、键盘调整单元当单价等信息需要进展修改时,就要用到键盘进展修改。由于调节信息不多,故采用4个独立键盘即可,分别实现清零、切换、增大、减小和功能等作用。电路原理如以下图。图2.4 键盘调整模块S1:接P1.1口,实现路程和单价的切换。S2:接P1.2口,实现单程和往返程的切换。

10、S3:接P1.3口,实现清零功能在按下查询总价键之后实现。S4:接P1.4口,暂停功能。S5:接P1.5口,对等待时间进展查询。S6:接P1.6口,查询总价。三 软件设计1、系统主程序在主程序模块中,需要完成对各参量和接口的初始化、出租车起步价和单价的初始化以及中断、计算、循环等工作。另外,在主程序模块中还需要设置启动/去除标志存放器、里程存放器和价格存放器,并对它们进展初始化。然后,主程序将根据各标志存放器的容,分别完成启动、去除、计程和计价等不同的操作。3.1主程序流程图当汽车运行起来时,就启动计价,根据里程存放器中的容计算和判断行驶里程是否已超过起步价公里数。假设已超过,则根据里程值、每

11、公里的单价数和起步价数来计算出当前的总金额,并将结果存于总金额存放器中;中途等待时,脉冲输入小于设定值时,当时间超过等待设定值时,开场进展计时,并把等待价格加到总金额里,然后将总金额、里程送数码管显示出来。程序流程如以下图。2、中断程序2.1、里程计数中断程序每当霍尔传感器输出一个低电平信号就使单片机中断一次,当里程计数器对里程脉冲计满1500次时,进入里程计数中断效劳程序中,里程变量加一。主函数中总金额也相应地变化。在中途等待中断程序中,每1ms产生一次中断,将由当前里程计算出速度值送入*个缓存变量。把当前速度值与预先设定的速度值相比拟,当小于设定的车速时,进入等待计时。等待时间5分钟相当于

12、里程增加一公里。流程如图3.4所示:图3.2中断流程2.2、中途等待中断程序在中途等待中断程序中,每1ms产生一次中断,将当前里程值送入*个缓存变量,每5分钟将缓存变量中的值和当前里程值比拟,当汽车车速小于5公里/小时,将存储器里面的值与实时测量的值比拟,当行进的里程小于5公里每分钟时,则进入等待计时,每5分钟记一次价格。2.3、计算程序计算程序根据里程数分别进入不同的计算公式。如果里程大于3公里,则执行公式:总金额=起步价+里程-3*单价+等待时间*等待单价;否则,执行公式:总金额=起步价+等待时间*等待单价。程序流程图如以下图。3.3 计算程序流程图2.4、显示程序程序利用定时器每1ms产

13、生一次中断,相应变量置位,点亮一个数码管,显示一位数据,利用主函数的循环,实现动态扫描显示,同时根据数码管余辉和人眼暂留现象,即可实现显示。0*3f,0*06,0*05b,0*04f,0*66,0*6d,0*7d,0*07,0*7f,0*6f;/段码表示0-9图3.4显示子程序流程2.5、键盘程序键盘实质上是一组按键开关的集合,均利用机械触点的合、断作用。按键在闭合及断开的瞬间均伴随有一连串的抖动,抖动反响在电压上就是呈现出高电平或低电平,为了确保CPU对一次按键动作只确认一次,必须消除抖动的影响。去抖通常有硬件去抖和软件去抖两种方法,本程序使用软件延时去抖。图3.5按键抖动信号波形对于独立式

14、键盘判键,首先看有键按下不,如果有键按下则延时一会儿,在判断是否真的有键按下,如果确实有键按下,再判键释放,最后执行键功能程序。判键子函数的流程框图如图3.5所示:图3.6判键子程序流程图四 Proteus软件仿真Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,它组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被?电子世界?在其对PCB设计系统的比拟文章中评为最好产品“The Route to PCB CAD。Proteus 产品系列也包含了我们革命性的VSM技术,用户可

15、以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进展交互仿真。 其功能模块:个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真;ARES PCB设计。PROSPICE 仿真器的一个扩展PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LEDs甚至LCD显示CPU模型。支持许多通用的微控制器,如PIC,AVR,HC11以及89C51。最新支持ARM。交互的装置模型包括:LED和LCD显示,RS232

16、终端,通用键盘,I2C,SPI器件。强大的调试工具,包括存放器和存储器,断点和单步模式。IAR C-SPY 和Keil uVision2等开发工具的源层调试。应用特殊模型的DLL界面-提供有关元件库的全部文件。五 实物图实物展示图六 程设计心得体会通过这次课程设计,我掌握了数码管的识别和测试;熟悉了霍尔传感器的工作原理,了解了独立按键的分配方法;以及如何提高计时精度的性能等等,掌握了proteus应用的方法和技术,通过查询资料,也了解了出租车计价器的工作原理。课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的

17、空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。在这次课程设计中,我一开场是在上网找资料,根据找到的霍尔传感器电路资料。我们直接按照资料焊了元件,由于我们考虑到了原件的限制,所以对电路做了一些改动。我们根据实际需要对我们的电路进展改动,而且可以很自信的进展焊接。但是我们对仿真软件不熟悉,焊电路时没有仿真的支持,出了几次错误。我把所有可能出错的地方查了一边,结果是电位器出了问题,看来不仿真就不能百分之百的成功,还需要实践来检验。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会效劳,

18、从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的缺乏之处,对以前所学过的知识理解得不够深刻,掌握得不够结实。动手能力有待提高,对计算机有关软件的使用也应该熟练。通过本次课程设计,又使我学到了许多书本上无法学到的知识,也使也深该体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的稳固,同时也对单片机这一门课程产生了更大的兴趣。在本次课程设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:AT89S51单片机及其引脚说明、AT24C02引脚图及其引脚功

19、能等,为本次课程设计提供了一定的资料。由于平时很少进展课程设计,所以对于课程设计报告的格式也是近期才接触到,经过这两次的设计,为我们以后毕业设计的制作也奠定了一定的根底。参考文献【1】?模拟电子技术根底?艾永乐 付子义编. :中国电力,2021【2】王晓明.单片机接口技术.航空航天大学,2007【3】?电子技术实践? 阎有运 编. :中国矿业大学。【4】?实用电子电路200例? 庆双 等编 :机械工业,2003。【5】王晓敏.传感器检测技术及应用.大学,2021. z.-附1:源程序代码*include*include *define uchar unsigned char*define ui

20、nt unsigned intuchar code table=0*3f,0*06,0*5b,0*4f,0*66,0*6d,0*7d,0*07,0*7f,0*6f;sbit deng1=P11; /暂停sbit deng2=P12; /白天黑夜sbit deng3=P13; /单双程sbit key0=P14; /功能键切换sbit key1=P15; /白天黑夜sbit key2=P16; /单双程sbit key4=P17; /确认 sbit p11=P21; /数码管各位位选,里程数,总金额 ,单价sbit p12=P22;sbit p13=P23;sbit p21=P25;sbit p

21、22=P26; sbit p23=P27;sbit p31=P20;sbit p32=P24;uint zongjine,licheng,licheng_1,zanting,licheng_2;uint lunquan,aa,bb,dengdai;uint temp_1,temp_2,shezhi_1;uchar danjia1,danjia2,danjia,qiehuan;uchar miao,fen;void display(void); /* 延时时基为1ms */void delay_ms(uint *) int i,j; for(i=*;i0;i-) for(j=110;j0;j-)

22、;/* 按键消抖*/uchar read_key(uchar *uanze) uchar shezhi=0,key_wei=0; key_wei=*uanze; P1|=0*f0; if(key_wei=1) /读取白天,黑夜键值 while(1) if(!key1) delay_ms(5); if(!key1) while(!key1) ; shezhi+; if(shezhi=2) shezhi=0; if(!key4) delay_ms(80); if(!key4) while(!key4) ; break; if(shezhi=1) deng2=0; else if(shezhi=0)

23、 deng2=1; else if(key_wei=2) /读取单程,双程键值 while(1) if(key2=0) delay_ms(5); if(key2=0) while(!key2) ; shezhi+; if(shezhi=2) shezhi=0; if(key4=0) delay_ms(80); if(key4=0) while(!key4) ; break; if(shezhi=1) deng3=0; else if(shezhi=0) deng3=1; else if(key_wei=3) /读取显示数据键值 if(key0=0) display(); display();

24、if(key0=0) while(!key0) display(); shezhi_1+; if(shezhi_1=2) shezhi_1=0; shezhi=shezhi_1; return shezhi; /* 函数初始化 */void init() P1=0*ff; P2=0*00; P0=table0; zongjine=0; licheng=0; dengdai=0; qiehuan=0; danjia1=read_key(1); /读取白天,黑夜 danjia2=read_key(2); /读取单程,双程 danjia=20-(5*danjia2); EA=1; /开总中断 E*0

25、=1; /开外部中断0 E*1=1; /开外部中断1 IT0=1; /触发方式下降沿 IT1=1; /触发方式下降沿 P*1=1; /外部中断1,暂停设为高优先级 TMOD=0*11; TH0=(65536-1000)/256; TL0=(65536-1000)%256; /填入1ms初值 ET0=1; /开定时器T0中断 TR0=1; /开定时器T0 /* 总金额计算 */ void jisuan() uint a; if(licheng=3) a=licheng_2-60; zongjine=(danjia*a)/20+50; /金额计算 else zongjine=50; /起步公里金额

26、计算 /* 数码管显示 总金额、里程数 */void display_1(uint zongjine_0,uint licheng_0) uchar ai,jshi,jge,lshi,lge,l*iao; ai=zongjine_0/100; /数码管位置分配 jshi=(zongjine_0%100)/10; jge=zongjine_0%10; lshi=licheng_0/100; lge=(licheng_0%100)/10; l*iao=licheng_0%10; P0=0*ff; /数码管动态显示 P2=0*ff; p11=0; P0=tableai; delay_ms(1); p

27、11=1; p12=0; P0=tablejshi|0*80; delay_ms(1); p12=1; p13=0; P0=tablejge; delay_ms(1); p13=1; p21=0; P0=tablelshi; delay_ms(1); p21=1; p22=0; P0=tablelge|0*80; delay_ms(1); p22=1; p23=0; P0=tablel*iao; delay_ms(1); p23=1; /* 数码管显示时间、单价 */void display_2(uchar fen_0,uchar miao_0,uchar danjia_0) uchar sf

28、en,gfen,smiao,gmiao; uchar dshi,dge; dshi=danjia_0/10; dge=danjia_0%10; sfen=fen_0/10; gfen=fen_0%10; smiao=miao_0/10; gmiao=miao_0%10; P0=0*ff; P2=0*ff; p31=0; P0=tablesfen; delay_ms(1); p31=1; p11=0; P0=tablegfen|0*80; delay_ms(1); p11=1; p12=0; P0=tablesmiao; delay_ms(1); p12=1; p13=0; P0=tablegm

29、iao; delay_ms(1); p13=1; p22=0; P0=tabledshi|0*80; delay_ms(1); p22=1; p23=0; P0=tabledge; delay_ms(1); p23=1; /* 显示容选择 */void display() if(qiehuan=0) display_1(zongjine,licheng_1); else if(qiehuan=1) display_2(fen,miao,danjia); /* 主函数*/void main() init(); qiehuan=0; while(1) licheng_1=licheng_2/2;

30、jisuan(); /计算总金额 qiehuan=read_key(3); display(); void int0(void) interrupt 0 using 0 /外中断0的中断编号为0 lunquan+; licheng_2+; licheng_1=licheng_2/2; if(lunquan=20) lunquan=0; licheng+; void int1(void) interrupt 2 using 2 /外中断1的中断编号为2 暂停 EA=0; zanting+; display(); if(zanting=2) zanting=0; if(zanting=1) den

31、g1=0; EA=1; ET0=0; TR0=0; E*0=0; else deng1=1; EA=1; E*0=1; TH0=(65536-1000)/256; TL0=(65536-1000)%256; ET0=1; TR0=1; void timer0() interrupt 1 /定时器中断0 TH0=(65536-1000)/256; TL0=(65536-1000)%256; if(temp_2=0) aa=licheng_2; temp_2+; if(temp_2=1000) /1s无反响进入等待计费 bb=licheng_2; temp_2=0; if(aa=bb) miao+; if(miao=60) miao=0; fen+; if(dengdai=10) dengdai=0; licheng+; licheng_2+=20; licheng_1+=10; 附2:系统原理图. z.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!