智能仪表综合训练课程设计-基于单片机的汽车计价器设计.doc_第1页
智能仪表综合训练课程设计-基于单片机的汽车计价器设计.doc_第2页
智能仪表综合训练课程设计-基于单片机的汽车计价器设计.doc_第3页
智能仪表综合训练课程设计-基于单片机的汽车计价器设计.doc_第4页
智能仪表综合训练课程设计-基于单片机的汽车计价器设计.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内蒙古科技大学智能仪表综合训练设计说明书题 目:基于单片机的汽车计价器设计学生姓名: 学 号:专 业:测控技术与仪器班 级:指导教师: 内蒙古科技大学课程设计论文汽车计价器设计与实现摘要本设计的是一个基于单片机at89c52的出租车自动计费设计,可实现的主要功能有:数据的复位、白天/晚上转换、数据输出、计时计价、单价输出及调整、路程输出、实现在系统掉电的时候保存单价和系统时间等信息等功能。输出采用lcd显示。该设计附有复位电路,时钟电路,键盘电路,lcd1602显示电路等。(1)复位电路是单片机的初始化操作,除了正常的初始化外,为摆脱困境,通过复位电路可以重新开始。(2)时钟电路采用12mhz的晶振,作为系统的时钟源,具有较高的准确性。(3)键盘电路采用了四个按键,s1、s2、s3、s4,其功能分别是:s1 分屏显示切换按键,s2功能设定按键,s3 ./白天晚上切换按键,s4 ./中途等待开关。(4)在上电时字符型液晶1602显示最初的起步价,里程收费,等待时间收费三种收费。在1602液晶上可以显示运行的时间,运行时暂停的时间,通过计算可以得出总共的费用和总的路程。在这里主要是以at89s52单片机为核心控制器,p0口接1602液晶显示模块,p1口接按键的,通过按键输入。本系统假设速度恒定60km/h(1km/min),白天起步价为6元/2公里,夜间起步价为6.5/2公里 ,超过两公里加1.3元/公里,等待超过2分钟,1.5/分钟。关键词:出租车计费器;霍尔传感器;stc89c52rc;ds1302;lcd1602auto meter design and implementationabstractthis design is based on a single chip at89c52 taxis design, can achieve the main functions are: data reduction, day / night conversion, data output, timing, price adjustment, and valuation of output. output, implemented in the system power off when preservation of monovalent and system time information and other functions. output using lcd display.the design with the reset circuit, clock circuit, keyboard circuit, lcd1602 display circuit.( 1) reset circuit is a single chip initialization operation, in addition to the normal initial acquisition, to cast off predicament, the reset circuit can start again.( 2) the clock circuit using a 12mhz crystal, as the system clock source, with higher accuracy.( 3) the keyboard circuit uses four keys, s1, s2, s3, s4, its functions are: s1 split screen display toggle button, s2 function set key, s3. +. / day and night switching button, s4. -. / midway for switch.( 4) in the upper electricity character liquid crystal display 1602 original starting price, mileage charges, waiting time charges three charges. in 1602 the lcd can display the running time, operation suspension can be obtained by the computation time, the total cost and the total distance. here is mainly to the at89s52 mcu as the core controller, p0 mouth is connected with the 1602 liquid crystal display module, p1 port access keys, through the key input.the system assumes that the constant speed 60km / h ( 1km / min ), the starting price is 6 yuan / 2 km, night starting price is 6.5 yuan / 2 km, more than two kilometers and 1.3 yuan/1km, wait for more than 5 minutes at 1 km to calculate.keywords: taxi meter;holzer sensor ;stc89c52rc;ds1302;lcd1602目录摘要iabstractii第一章 前言11.1问题的提出11.2国内外研究现状11.3设计思路2第二章 硬件组成32.1stc89c52rc单片机32.1.1引脚说明:32.2lcd1602液晶显示器52.2.1lcd1602引脚说明62.2.2lcd1602的基本指令62.3霍尔传感器82.4时钟芯片ds130292.4.1时钟芯片ds1302引脚说明102.5掉电存储单元at24c0812第三章 硬件设计133.1硬件电路的概述133.2 stc89c52单片机主控模块电路133.2.1 stc89c52单片机的晶振电路133.2.2 stc89c52单片机的复位电路133.2.3 stc89c52单片机的最小系统电路143.3lcd1602液晶显示电路143.4串口通信电路153.5外部电源供电153.6霍尔传感器a444e电路图16第四章 软件设计174.1主程序流程图174.2里程中断服务子程序174.3中途等待中断子程序184.4计算程序194.5 lcd显示程序204.6按键检测子程序20第五章 总结22参考文献23附录a本设计原理图24附录b本设计源程序25v第一章 前言1.1问题的提出步入21世纪,出租车已经广泛地出现在我们周围。随着人们生活水平的不断提高,出租车的使用频率也越来越高,出租车行业也以高质量的服务给人们带来了出行的享受。但是由于行业的特殊性,出租车行业总存在着买纠纷,困扰着行业的发展。而在出租车行业中解决这一矛盾的最好方法就是改良计价器,用更加精良的计价器来为乘客提供更加方便快捷的服务。 30年前,我国出现了出租车,但是由于当时的经济水平,出租车并没有普遍在我们生活中出现。随着改革开放的深入,出租车行业的发展势头已十分突出。如今出租车在我国的交通运输中承担着重要的角色,出租车计价器是出租车上必不可少的重要仪器,它是负责出租车营运收费的专用智能化仪表。随着城市旅游业的发展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。1.2国内外研究现状随著超大规模集成电路技术的发展,单片机也随之有了很大发展,各种新颖的单片机层出不穷,并已广泛地应用到人类生活的各个领域,包括工业控制、数据采集、智能仪表、机电一体化、家用电器等各方面,成为当今科学技术现代化不可缺少的重要工具。与此同时,现代交通工具迅猛发展,出租车在人们的日常生活中所扮演的角色越来越重要,但如何准确计费,以达到既使乘客满意又不让出租车司机亏本的目的,就迫在眉睫。对于计价器的设计采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。针对计费模式的切换,通过软件编程就可以轻易而举的实现。避免了机械开关带来的不稳定因素。并且利用单片机技术来实现一台多功能出租车计价器,具有性能可靠、电路简单、成本低等特点。计价器显示的营运金额是营运里程与价格的函数。出租车计价器通过传感器与行驶车辆连接。出租汽车的实际里程通过传感器的脉冲信号在计价器里折算成一定的计价营运里程。目前市场上出租车计价器功能主要有具有数据的复位功能、白天/晚上转换功能、数据输出功能、计时计价功能等等,但能够进行语音播报数据信息的出租车计价器还是比较少见的,针对这一点我们来设计一款多功能出租车计价器,在原有功能的基础上增加单价输出、单价调整、路程输出、显示当前的系统时间等功能。1.3设计思路图1.1设计总体电路图采用单片机控制利用单片机丰富的io端口,及其控制的灵活性,实现基本的里程计价功能和价格调节、时钟显示功能。其原理如图1.1所示。本电路以stc89c52rc单片机为中心、附加a44e 霍尔传感器测距,实现对出租车计价统计,采用at24c08 实现在系统掉电的时候保存单价和系统时间等信息,输出采用lcd1602显示。本电路设计的计价器不但能实现基本的计价,而且还能根据白天、黑夜、中途等待来调节单价,同时在不计价的时候还能作为时钟为司机同志提供方便。第二章 硬件组成2.1stc89c52rc单片机stc系列单片机是由stmicroelectronics 公司生产,并有宏晶公司做大陆代理的。stmicroelectronics即意法半导体公司是1987年6月在意大利的sgs微电子公司和法国的汤姆逊微电子公司合并后产生的。1998年5月,公司由原来的sgs汤姆逊(sgsthomson)微电子公司改名为意法半导体公司(stmicroelectronics),简称st公司3。stc89c52是一种带8k字节闪烁可编程可檫除只读存储器(fperom-flash programable and erasable read only memory )的低电压,高性能comos8的微处理器,俗称单片机。单片机总控制电路如下图2.1:图2.1单片机总控制电路2.1.1引脚说明:stc89c52rc可以代替at89c51,功能更强,速度更快,寿命更长,价格更低。stc89c52rc的内核和at51系列单片机一样,故引脚相同,外形及引脚排列也相同。管脚说明:vcc供电电压;gnd接地。p0口8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。p1口带内部上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口带内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。p3口带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。在编程/校验时,p3口可接收某些控制信号。具体的p3口功能,如表2.1所示。表2.1 p3口的特殊功能引脚 替代功能 说明p3.0 rxd 串行数据接收p3.1 txd 串行数据发送p3.2 int0 外部中断0申请p3.3 int1 外部中断1申请 p3.4 t0 定时器0外部事件计数输入 p3.5 t1 定时器1外部事件计数输入 p3.6 wr 外部ram写选通 p3.7 rd 外部ram读选通rst复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。ale/prog当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。psen外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。ea/vpp当/ea保持低电平时,则在此期间外部程序存储器(0000hffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。xtal1反向振荡放大器的输入及内部时钟工作电路的输入。xtal2来自反向振荡器的输出。2.2lcd1602液晶显示器液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。本系统使用是是lcd1602液晶显示器,它可以显示两行,每行16个字符,采用单+5v电源电,外围电路配置简单,价格便宜,具有很高的性价比。2.2.1lcd1602引脚说明 第1脚:vss为电源地 第2脚:vdd接5v电源正极 第3脚:v0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。 第4脚:rs为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:rw为读写信号线,高电平1时进行读操作,低电平0时进行写操作。 第6脚:e(或en)端为使能(enable)端。 第714脚:d0d7为8位双向数据端。 第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。2.2.2lcd1602的基本指令lcd1602液晶模块内部的控制器共有11条控制指令,具体的命令见表2.2所示。表2.2 lcd1602控制指令 指 令rsr/wd7d6d5d4d3d2d1d01清屏00000000012光标复位000000001*3光标和显示模式设置00000001i/ds4显示开关控制0000001dcb5光标或字符移位000001s/cr/l*6置功能00001dlnf*7置字符发生存贮器地址0001字符发生存贮器地址(agg)8置数据存贮器地址001显示数据存贮器地址(add)9读忙标志或地址01bf计数器地址(ac)10写入cgram/ddram10要写的数11读cgram/ ddram数11读出的数据1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。1.清屏指令 功能:(1) 清除液晶显示器,即将ddram的内容全部填入“空白”的ascii码20h;(2) 光标归位,即将光标撤回液晶显示屏的左上方;(3) 将地址计数器(ac)的值设为0。2.光标复位指令 功能:(1) 把光标撤回到显示器的左上方;(2) 把地址计数器(ac)的值设置为0;(3) 保持ddram的内容不变。3.光标和显示模式设置指令 功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。4.显示开关控制指令 功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。5.设定显示屏或光标移动方向指令 功能:使光标移位或使整个显示屏幕移位。6.功能设定指令 功能:设定数据总线位数、显示的行数及字型。7.设定cgram地址指令 功能:设定下一个要存入数据的cgram的地址。8.设定ddram地址指令 功能:设定下一个要存入数据的ddram的地址。9.读取忙信号或ac地址指令 功能:(1) 读取忙碌信号bf的内容,bf=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;当bf=0时,液晶显示器可以接收单片机送来的数据或指令;(2) 读取地址计数器(ac)的内容。10.数据写入ddram或cgram指令一览 功能:(1) 将字符码写入ddram,以使液晶显示屏显示出相对应的字符;(2) 将使用者自己设计的图形存入cgram。11. 从cgram或ddram读出数据的指令一览 功能:读取ddram或cgram中的内容。2.3霍尔传感器霍尔器件是一种磁传感器。用它们可以检测磁场及其变化,可在各种与磁场有关的场合中使用。霍尔器件以霍尔效应为其工作基础。取用了各种补偿和保护措施的霍尔器件的工作温度范围宽,可达55150摄氏度。霍尔元件按照功能分,可分为霍尔线性器件和霍尔开关器件。前者输出模拟量,后者输出数字量。本设计用的是开关型霍尔元件。霍尔器件具有以下优点:结构牢固,体积小,重量轻,寿命长,安装方便,功耗小,频率高(可达1mhz),耐振动,不怕灰尘、油污、水汽及盐雾等的污染或腐蚀。霍尔线性器件的精度高,线性度好。霍尔开关器件无触点、无磨损、输出波形清晰、无抖动、无回跳、位置重复精度高。该霍尔传感器的测距示意图如图2.2所示图2.2传感器测距示意图由于a44e 属于开关型的霍尔器件如图2.3,其工作电压范围比较宽(4.518v),其输出的信号符合ttl 电平标准,可以直接接到单片机的io 端口上,而且其最高检测频率可达到1m。图2.3集成开关型霍耳传感器原理图a44e 集成霍耳开关由稳压器a、霍耳电势发生器(即硅霍耳片)b、差分放大器c、施密特触发器d 和oc 门输出e 五个基本部分组成。在输入端输入电压vcc,经稳压器稳压后加在霍耳电势发生器的两端,根据霍耳效应原理,当霍耳片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍耳电势差vh 输出,该 信号经放大器放大后送至施密特触发器整形,使其成为方波输送到oc 门输出。当施加的磁场达到bop时,触发器输出高电压(相对于地电位),使三极管导通,此时oc 门输出端输出低电压,通常称这种状态为“开”。当施加的磁场达到“释放点”(即brp )时,触发器输出低电压,三极管截止,使oc 门输出高电压,这种状态为“关”。这样两次电压变换,使霍耳开关完成了一次开关动作。其集成霍耳开关外形及接线如图2.4所示。(a) (b)图2.4集成霍耳开关外型及接线我们选择了p3.2 口作为信号的输入端,内部采用外部中断0(这样可以减少程序设计的麻烦),车轮每转一圈(我们设车轮的周长是1 米),霍尔开关就检测并输出信号,引起单片机的中断,对脉计数,当计数达到1000 次时,也就是1 公里,单片机就控制将金额自动的加增加,其计算公式:当前价*公里数=金额。2.4时钟芯片ds1302ds1302是美国dallas公司推出的一种高性能、低功耗的实时时钟日历芯片,附加31字节静态ram,采用spi三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和ram数据。工作电压宽达2.55.5v。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。有主电源和备份电源双引脚,而且备份电源可由大容量电容(1f)来替代,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。需要强调的是,ds1302需要使用32.768khz的晶振。2.4.1时钟芯片ds1302引脚说明ds1302引脚图参照图2.5。图2.5 ds1302芯片引脚图 vcc1为后备电源,vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。ds1302由vcc1或vcc2两者中的较大者供电。当vcc2大于vcc10.2v时,vcc2给ds1302供电。当vcc2小于vcc1时,ds1302由vcc1供电。其它的引脚功能参照表2.3。表2.3 ds1302管脚的功能描述 管脚名功能说明x1,x232.768khz 晶振管脚gnd地rst复位脚i/o数据输入/输出引脚sclk串行时钟vcc1,vcc2电源供电管脚在编程过程中要注意ds1302的读写时序。ds1302是spi总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。要想与ds1302通信,首要先了解ds1302的控制字。ds1302的控制字如表2.4。表2.4 ds1302控制字(即地址及命令字节) bit7bit6bit5bit4bit3bit2bit1bit01rama4a3a2a1a0rd控制字的作用是设定ds1302的工作方式、传送字节数等。每次数据的传输都是由控制字开始。控制字各位的含义和作用如下:控制字节的最高有效位必须是逻辑1,如果它为0,则不能把数据写入ds1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取ram数据;位5至位1指示操作单元的地址;最低有效位如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 控制字总是从最低位开始输出。在控制字指令输入后的下一个sclk时钟的上升沿时,数据被写入ds1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个sclk脉冲的下降沿,读出ds1302的数据,读出的数据也是从最低位到最高位。ds1302的数据读写方式有两种,一种是单字节操作方式,一种是多字节操作方式。每次仅写入或读出一个字节数据称为单字节操作,每次对时钟/日历的8字节或31字节ram进行全体写入或读出的操作,称其为多字节操作方式。当以多字节方式写时钟寄存器时,必须按数据传送的次序依次写入8个寄存器。但是,当以多字节方式写ram时,不必写所有31字节。不管是否写了全部31字节,所写的每一个字节都将传送至ram。为了启动数据的传输,rst引脚信号应由低变高,当把rst驱动至逻辑1的状态时,sclk必须为逻辑0,数据在sclk的上升沿串行输入。无论是读周期还是写周期,也无论送方式是单字节传送还是多字节传送,都要通过控制字指定40字节中的哪个将被访问。在开始8个时钟周期把命令字(具有地址和控制信息的8位数据)装入移位寄存器之后,另外的时钟在读操作时输出数据,在写操作时输入数据,所有的数据在时钟的下降沿变化。所有写入或读出操作都是先向芯片发送一个命令字节。对于单字节操作,包括命令字节在内,每次为2个字节,需要16个时钟;对于时钟/日历多字节模式操作,每次为7个字节,需要72个时钟;而对于ram多字节模式操作,每次则为32字节,需要多达256个时钟。时钟晶振电路图如图2.6所示。图2.6 时钟晶振电路图2.5掉电存储单元at24c08该at24c0x系列设备具有以下特点:两线串行接口;施密特出发输入,过滤噪声的抑制;双向数据传输协议;100hz和400hz兼容性;写保护引脚硬件数据保护;自定时写周期(5ms最大);具有高可靠性,数据可保留100年。at24c08只使用2输入硬件寻址和共28设备可以解决的一个单总线系统。这些0和1的引脚没有连接。该型号串行ee prom,内部组织:64页的16个字节,该型需要10位数据字地址随机字寻址。时钟和数据转换:党针通常是拉高与外部装置。数据的可变化仅在低时间段中。数据变化中高段表明启动或停止条件如下定义。启动条件:高到低的过渡党与中高一开始条件它必须先于其他任何命令。停止条件:一个低到高的过渡中国家与高是一个停止条件。阅读序列后,停止命令将ee prom在备用电源模式。承认:所有的地址和数据的串行传送和从ee prom在8位字。ee prom发送一零承认它收到的每一个字。这发生在第九个时钟周期。其电路如图2.7所示。图2.7 掉电存储电路原理图第三章 硬件设计3.1硬件电路的概述本设计的硬件部分按功能可分为以下几个部分:(1)stc89c52单片机主控模块电路(2)1602液晶显示电路(3)串口通信电路(4)外部电源供电本设计原理图见附录a3.2 stc89c52单片机主控模块电路3.2.1 stc89c52单片机的晶振电路3.2.2 stc89c52单片机的复位电路3.2.3 stc89c52单片机的最小系统电路3.3lcd1602液晶显示电路3.4串口通信电路3.5外部电源供电3.6霍尔传感器a444e电路图第四章 软件设计4.1主程序流程图在主程序模块中,需要完成对各参量和接口的初始化、出租车起步价和单价的初始化以及中断、计算、循环等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。当出租车运行后,就启动计价器,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。若已超过,则根据里程值、每公里的单价值和起步价来计算出当前的总金额,并将结果存于总金额寄存器中;中途等待时,无脉冲输入,不产生中断,当时间超过等待设定值时,开始进行计时,并把等待金额加到总金额里,然后将总金额、里程、等待时间和单价送lcd1602中显示出来。程序流程如图4.1所示。图4.1系统总程序4.2里程中断服务子程序每当霍尔传感器输出一个低电平信号,单片机定时器0(工作在计数模式)就对其计数一次,相应的变量设为inter就自加1,当里程计数器inter对里程脉冲计满1000次时,对其自身进行清零操作,为下一次计数做准备,同时进入里程计数中断服务程序中,里程变量加1,总金额根据此时所设单价做出相应的变化。里程中断子程序如图4.2所示。图4.2里程中断服务子程序4.3中途等待中断子程序在中途等待中断程序中,定时器1每50ms计一次数,每计够100次(5sec),便将当前里程值送入某个缓存变量,与前一个5秒的值进行比较,如果两者相同,则表明霍尔传感器没有输出信号,认为出租车停了下来,进入等待计时,计时中间变量dd自加1,计够12次为一分钟,dd自清零,同时根据所设的等待单价刷新总金额。计数初值可有以下公式获得:x=(65536-t)*11.0592*106/12;th=x/256; tl=x%256;其中:x表示计数初值,th、tl分别为16位计数器高8位和低8位应装入的初值。用定时器作为基准,可使测试的等待时间更为精确(可以精确到us级);且每隔5秒比较一次,能有效减小误判率,避免把汽车低速行驶误认为静止等待处理。中途等待子程序流程图如图4.3所示。图4.3中途等待中断子程序4.4计算程序计算程序根据里程数分别进入不同的计算公式。如果里程大于2公里,则执行公式:总金额=起步价+(里程-2)*单价+等待时间*等待单价;否则,执行公式:总金额=起步价+等待时间*等待单价。程序流程图如图4-4所示。图4.4计算程序4.5 lcd显示程序液晶显示时,busy=1表示正在处理计算机发来的指令或数据,此时电路被封锁,不能接受除读状态字以外的任何操作。busy=0表示已“准备好”,等待计算机的访问。具体流程图见图4.5。图4.5lcd显示程序4.6按键检测子程序键盘采用查询的方式,放在主程序中,当有按键按下的时候,在相应i/o口产生一次低电平,当单片机查询出该低电平后便转入进行处理,处理结束返回。键盘检验子程序如图4.6所示。图4.6键盘检验子程序第五章 总结本次课程设计是对单片机知识的一次综合运用,也是由理论结合实践的第一步,为我以后的学习奠定了良好的基础。通过这五周对智能仪器的课程设计,增加了我们对单片机的认识,了解了其理论方面的知识;掌握了单片机内部模块的应用,如定时计数器中断、片内外存储器、i/o口、串口通信等;了解和掌握了单片机应用系统软硬件设计的过程和实现方法,为今后的学习和工作打下坚实基础。通过这次设计还使我们接触到了一些以前没有用过的软件,比如说,protel、keil uvision、vision等,这些软件的操作对今后的设计和学习都有很大的帮助。另外,我们学会了在专业网站上查找有关设计的硬件资料,其中包括:at89c52单片机的功能和引脚说明、at24c08掉电处理设备的引脚图和引脚功能表等多个资料,为我们设计的进行打下基础。参考文献1 李朝青单片机的c语言应用程序设计m,北京:北京航空航天大学出版社,20062 陈海宴51单片机原理及应用m,北京:北京航空航天大学出版社,20103 张志,高大志,杨为名等微控制器原理及接口技术实验教程m,沈阳:东北大学出版社,20044 高大志单片机实验指导书m,沈阳:信息学院实验中心,20035 周立功,夏宇闻.单片机与cpld综合应用技术m,北京:北京航空航天大学出版社6 丁元杰.单片微机原理及应用m,北京:机械工业出版社7 靳达编.单片机应用系统开发实例导航m,北京:人民邮电出版社8 李光飞.单片机课程设计实例指导m,北京:北京航空航天大学出版社9 胡宴如.高频电子线路m,北京:高等教育出版社10 白驹珩,雷晓平.单片计算机及其应用m,成都:电子科技大学出版社11 李广弟.单片机基础m,北京:北京航空航天大学出版社12 沈美明,温冬婵.ibm汇编语言程序设计m,北京:清华大学出版社13 彭传正,林春景.凌阳单片机原理与实践m,北京:北京航空航天大学出版社14 李荣正,陈学军.pic单片机实践教程m,北京:北京航空航天大学出版社15 阎石.数字电子技术基础,北京:高等教育出版社16 张鑫、华臻、陈书谦单片机原理及应用m电子工业出版社,2005p11013617 丁元杰、吴大伟单片微机实题集与实验指导书m机械工业出版社, 2004p12412518 at89c52概述eb/ol:/view/2251929.html附录a本设计原理图附录b本设计源程序#include#define uchar unsigned char#define uint unsigned int sbit rw=p11;/读或写sbit rs=p10;/sbit en=p12;/读写时能控制端sbit b=p07;/液晶判断忙标志位void lcd_init();/void wr_com(uchar command);/液晶写命令void wr_data(uchar data0);/写数据void lcd_clear();/液晶清屏void lcd_set();/设置液晶的起始位置void busy();/液晶判忙函数void display();/显示void printstring(uchar *s);/直接写字符void display1();void key1();sbit k=p14;sbit k1=p15;sbit k2=p16;sbit k3=p17;bit f_start;/开始标志位bit jump_in;/跳入开始标志位bit jump_out;/跳出标志位void key();uchar code table=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x70;/字符1,2,3,0uchar dispbuf=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;uchar dispbuf1=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;uchar v,v1;/按键次数累加变量uchar i;void init();/void chuli();/void chuli1();/void delay(uchar t);/void clear();/void set(uchar x);/ void set1(uchar y);/uchar command;/uchar count,count1;/uchar second,minite,second1,minite1;/unsigned int tt,tt1;/unsigned char value1=60,value2=30,value3=15;/起始价,运行价,等待价unsigned int money;/金额变量/*void main() init(); lcd_init(); while(1) key1();chuli(); display(); if(jump_in=1) jump_in=0; lcd_init(); while(1) key(); chuli1(); display1(); if(jump_out=1) lcd_init(); jump_out=0; clear(); break; /*void clear()/跳出下一次 tr0=0; tr1=0; money=0; second=0; second1=0; minite=0; minite1=0; value1=50; value2=25; value3=15; v=0; v1=0; for(i=0;i15;i+) dispbufi=0; dispbuf1i=0; /*void init()/定时器初始化 tmod=0x11; th0=(65536-50000)/256; tl0=(65536-50000)%256; th1=(65536-50000)/256; tl1=(65536-50000)%256; et0=1; et1=1; ea=1; tr0=0; tr1=0;/*void t0_(void) interrupt 1 using 0/定时器0中断 count+; if(count=20) count=0; second+; if(second=60) second=0;minite+;if(minite=99) minite=0; th0=(65536-50000)/256; tl0=(65536-50000)%256; dispbuf10=minite/10; dispbuf11=minite%10; dispbuf12=second/10; dispbuf13=second%10;/*void t1_(void) interrupt 3 using 3/定时器1中断 count1+; if(count1=20) count1=0; second1+; if(second1=60) second1=0;minite1+;if(minite1=99) minite1=0; th1=(65536-50000)/256; tl1=(65536-50000)%256; dis

温馨提示

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

评论

0/150

提交评论