还剩73页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
毕业设计论文用单片机STC89C52设计的出租车计价器的论文设计摘要随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展有很好的前景尽管小城市尚未普及,但计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的出租车计价器是单片机的一种典型应用基于单片机的计价器是由单片机和外部电路组成包括检测模块,控制模块,人机模块里程检测模块由A44E构成,控制模块包括STC89C52单片机和AT24C02,人机模块包括独立键盘和LED动态显示系统性能指标
1.设定价格;
2.显示当前单价、行驶里程和总金额;
3.里程精确到
0.1公里通过多次调试系统性能达到设计要求关键词STC89C52,霍尔传感器A44E,I2C总线,动态显示DesignofTaximeterBasedonSTC89C52ABSTRACTWiththerapiddevelopmentofcityconstrictionthetaxiindustrywhichsymbolizesthecityscapealsohasanacceleratedprogress.Nowadaystheautomatictaximeterhasbeenwidelyusedintaxiindustryinmanycites.Thereforethedevelopmentofautomatictaximeterisdoomed.Althoughautomatictaximeterisnotspreadinsometownsthereisnodoubtthatitwouldbepopularized.Thusinfuturethebusinessofautomatictaximeterisstillpotential.Onetypicalapplicationofsinglechipcomputerisautomatictaximeter.ThehardwareofthisdesigniscomposedofsinglechipcomputerandperipheralcircuitswhichconsistofDetectionUnitProcessingUnitandHumanComputerInteractionUnit.TheDetectionUnitisbasedonHall-effectsensor.TheProcessingUnitcontainsSTC89C52andAT24C
02.HumanComputerInteractionUnitiscomposedofkeyboardandLED.Thefunctionofthissystemincludesasfollows:
1.Settheunitprice;
2.Displaytheunitpricetotalamountandmileage.
3.Accuracy:
0.1km.Afterrepeatedlydebuggingtheperformanceofthissystemisreachedthedesignrequirements.KEYWORDS:STC89C52Hall-effectsensorA44EI2CBusDynamicdisplay目 录TOC\o1-3\h\z\u前 言1第1章系统工作原理
31.1功能要求
31.2基本原理3第2章硬件设计
52.1单片机最小系统单元
52.2霍尔传感器单元
62.3掉电存储单元
82.4键盘调整单元
92.5显示单元10第3章软件设计
143.1系统主程序
143.2里程计数中断程序
153.3中途等待中断程序
153.4计算程序
173.5显示程序
183.6键盘程序18第4章调试改进过程及运行结果分析
214.1动态扫描的调试和分析
214.2AT24C02的编程与调试
214.3按键查询功能的实现
214.4计算程序的分析与设计
224.5结果分析与性能改进
234.6计价器系统的仿真23结 论26谢辞27参考文献28附录A系统原理图30附录B仿真图PCB板31附录C系统源程序33外文资料翻译55前 言单片机是一种可通过编程控制的微处理器,虽其自身不能单独用在某项工程或产品上,但当其与外围数字器件和模拟器件结合时便可发挥强大的功能,现在单片机已广泛应用于众多领域举例如下
1.工业自动化如数据采集、测控技术
2.智能仪器仪表如数字示波器、数字信号源、感应电流表等
3.消费类电子产品如空调机、微波炉、IC卡、汽车电子设备等
4.通信方面如调制解调器、程控交换技术等
5.武器装备如飞机、军舰、导弹、鱼雷制导、智能武器等作为与自动化技术和电子密切相关的理工科学生,掌握单片机是最简单也最基础的要求为了进一步丰富和巩固单片机知识,也为了能更好的联系实际应用,本次毕业设计选择了基于单片机STC89C52控制的出租车计价器,并力求能做出实物鉴于电子技术、计算机技术以及各种更先进的仿真软件的出现,使用高级语言如C代替汇编语言进行编程和控制已成为现实,也成为一种发展趋势单片机C语言编程相对于MC51汇编语言编程有如下优点
1.对单片机的指令系统不需要有很深的理解就可以编程操作单片机
2.寄存器分配、不同存储器的寻址及数据类型等细节完全由编辑器自动处理
3.程序有规范的结构,可分为不同的函数,可使程序结构化
4.库中包括许多标准子程序,具有较强的处理能力,使用方便
5.具有方便的模块化编程技术,使已编好的程序便于移植,可极大缩短开发时间,增加程序的可读性和可维护性事实上,当今许多硬件的开发都已开始用C语言编程,如各种单片机、DSP、ARM等,用C语言进行工业控制也已成为一种趋势,为了更好的适应当今社会形势,为了更好的面对挑战、把握机遇,此次毕业设计决定尝试用C语言编程完成也希望能在进一步熟悉单片机控制的同时,对数字电子技术、模拟电子技术、计算控制技术以及常用外围芯片有更深层次的了解,提高自己的综合能力综上基于单片机STC89C52设计的出租车计价器不仅可方便的用软件代替硬件,降低成本,具备一般计价器的计算里程和显示总金额的功能,还具备了掉电保持,白天、夜晚单价切换,并且还可很方便的扩展为速度测试仪,具有很好市场前景功能要求
1.设计一个出租车计价器,并利用霍尔传感器和单片机内集成的计数器测试出出租车运行里程
2.要求单价可调,里程精确到
0.1公里,并要求对等待时间进行计时
3.利用I2C总线通过EEPROM对存储空间进行扩展,使其具备掉电存储功能
4.有完整的软件仿真结果和硬件电路,并用Protel设计系统原理图第1章系统工作原理
1.1功能要求出租车计价器是根据乘客乘坐汽车行驶距离和等候时间的多少进行计价的并在行驶中同步显示本次消费、运行里程、运行单价以及等待时间等信息从起步开始,当汽车行驶里程未满3公里时,均按起步价计算超过3公里后实现每1公里单价收费,中间遇到暂停时,计程数不再增加,开始计时收费,计程收费和计时收费的和便构成了一位乘客的车费同时,白天和夜晚价格不同,可以进行切换白天单价、夜晚单价、等待单价和起步价格都可通过独立键盘进行调节(默认起步价为5元/3公里,里程单价白天为
2.5元/公里,夜晚为
3.5元/公里,等待计时单价为1元/1分钟)为提高计时、计价精度,确保乘客对自己消费的知情权,出租车计价器应做到里程数精确到
0.1公里,同时为减少司机朋友来回调整单价以及停车后需重设单价的麻烦,计价器应具有掉电保持功能,即当重新启动后维持原有数值(包括总金额、等待时间、行驶里程、单价)不变,直至强制按下清零键,计价器显示起步价(刚起步时对应总金额)、运行单价,为下一次计价做准备
1.2基本原理计价器系统主要由五部分组成分别为基于霍尔传感器A44E的里程检测单元、STC89C52单片机、外扩串行EEPROM-AT24C
02、独立键盘和LED显示霍尔传感器主要用于检测汽车行使的里程数,出租车车轮每旋转一周,霍尔传感器A44E便产生一相应的脉冲输出,并把该脉冲交由单片机进行处理,单片机则根据程序设定,通过计算脉冲个数换算出已行驶里程(里程=脉冲个数*出租车车轮周长),然后再根据从EEPROM-AT24C02中读取的单价等相关数据进行总的消费金额的计算当里程小于3公里时,总金额=起步价+等待时间*等待单价;当里程大于3公里时,总金额=起步价+(里程-3)*运行单价+等待时间*等待单价;计算好的金额、等待时间、里程和单价等数据信息都可实时地显示在数码管上其中,等待时间可根据霍尔传感器A44E是否有脉冲输出加以判断,如可设定等待时基为5s即假如A44E在5s后仍无脉冲输出便认为进入等待时间,并由单片机STC89C52内部计时器对其进行计时独立键盘可以调整单价等相关数据,当按下某按键,会给单片机相应端口一低电平信号,单片机会通过循环扫描检测到此信号,并根据预先设置好的程序做出相应的处理;调整好的数据存储到EEPROM中,掉电后可以使该数据不丢失,下次得电后直接从EEPROM-AT24C02中读到单片机,并通过数码管实时显示系统结构图如图1-1所示�图1-1系统结构图第2章硬件设计
2.1单片机最小系统单元主控机系统采用STC公司生产的STC89C52单片机,它含有512字节数据存储器RAM,内置8K的电可擦除FLASHROM,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器芯片外围电路最高可接入40MHZ的晶振(AT单片机数值一般为24MHZ)复位电路和晶振电路,以及P0口接入的10K的上拉电阻便构成了STC89C52单片机工作所需的最简外围电路单片机最小系统电路图如图2-1所示图2-1单片机最小系统STC89C52单片机的复位端接74LS14,它是一个史密特触发输入的芯片,高电平有效,具有稳定波形的作用RST端若由低电平上升到高电平并持续2个周期,系统将实现一次复位操作;在该复位电路中,按一下复位开关,利用电容冲放电的所产生的延时,就会在RST端产生一段时间的高电平,进而进行复位操作外接12M的晶振和两个30pF电容组成系统的内部时钟电路,其中电容主要起到滤波、微调以及利用其充放电过程帮助单片机晶振启振的作用
[1]对于单片机的P0口,可以作为地址/数据总线使用,也可以作为一般的I/O口使用但当其作为I/O使用时,由于输出属于开漏电路,无上拉电阻故也无法进行高低电平的操作,此时必须接上拉电阻,一般阻值选为10K但P0口不能同时作为地址/数据总线和I/O使用本设计利用P0口的I/O功能
[2]
2.2霍尔传感器单元A44E属于开关型的霍尔器件,其工作电压范围比较宽
4.5~18V,其输出的信号符合TTL电平标准,可以直接接到单片机的I/O端口上,而且其最高检测频率可达到1MHZ
[3]A44E集成霍耳开关由稳压器A、霍耳电势发生器即硅霍耳片B、差分放大器C、施密特触发器D和OC门输出E五个基本部分组成在输入端输入电压Vcc,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出当施加的磁场达到工作点时,触发器输出高电平,三极管导通,OC门输出端输出低电压,这种状态为开;当触发器输出低电平时,三极管截止,OC门输出高电压,这种状态为关
[4]这样两次电压变换,使霍尔开关完成了一次开关动作A44E霍尔传感器原理如图2-2所示�A�D�B�VccoutCGND0481251015OFFON工作点图2-2 A44E霍尔传感器原理里程计算主要通过霍尔传感器A44E检测完成,出租车车轮每旋转一周,霍尔传感器A44E便产生一相应的脉冲输出,并把该脉冲交由单片机进行处理,单片机则根据程序设定,通过计算脉冲个数换算出已行驶里程里程=脉冲个数*出租车车轮周长其原理如图2-3所示�A44EP
3.2口小磁铁STC89C52霍尔传感器图2-3传感器测距示意图本系统选择将A44E的脉冲输出端接到P
3.2口,即做为定时器/计数器1的输入端,车轮每转一圈(设车轮的周长是2米),霍尔开关便输出一低电平信号,然后利用单片机定时器1对该脉冲计数,当计数达到500次时,则达到1公里,单片机将自动刷新里程、总金额等信息
2.3掉电存储单元AT24C02的作用是在电源断开的时候,存储当前设定的总金额,等待时间,运行里程以及单价等信息AT24C02是Ateml公司的2KB的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到
2.5V,额定电流为1mA,静态电流10uA
5.5V,芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便AT24C02芯片引脚配置如图2-4所示图2-4AT24C02引脚配置图图中R
4、R5是上拉电阻,其作用是减少AT24C02的静态功耗由于AT24C02的数据线和地址线是复用的,采用串口的方式传送数据,只用两根线SCL(时钟脉冲)和SDA(数据/地址)与单片机P
3.6和P
3.7口连接,进行传送数据时遵守I2C总线协议每当设定一次单价,系统就调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用事实上AT24C02为典型的支持I2C总线的器件,对其进行编程时需遵守I2C总线的时序要求,以及I2C委员会对各种I2C芯片的地址分配规则现把I2C总线与AT24C02的通讯时序、通讯规则简要介绍如下
1.I2C总线节点的寻址字节主机产生起始条件后,发送的第一个字节为寻址字节该字节的头七位为从机地址,对于AT24C02来说高四位为1010,它是I2C总线器件的固有地址,紧接着是A
1、A
2、A3通过接地或者高电平决定外围器件的地址数据,第八位是读写控制为,当为0是表示主节点向从节点发送数据,当为1时表示要接收数据
2.I2C总线数据传输的格式1主控器的写数据格式首先由主机发送起始信号—当SCL为高电平时,SDA由高到低有跳变;然后发一个寻址字节,当收到应答信号后发送数据,其中应答信号为当SCL为高时SDA传送0,并持续
4.7us以上;当主机产生停止信号时,数据传送结束,停止信号是当SCL为高电平时SDA有一个由低到高的跳变2主控器的读数据格式与写数据的不同之处在于数据发送结束和停止位之间加一个非应答位,表示数据发送结束,格式为当SCL为高时SDA传送1,并持续
4.7us以上
3.要特别注意的是SDA和SCL都是双向传输线,平时均处于高电平备用状态,只有当需要关闭时才使其钳制在低电平,且仅在SCL为高电平时数据才能传送,而当SCL为低电平时才允许数据发生变化
2.4键盘调整单元当单价等信息需要进行修改时,就要用到键盘由于调节信息不多,故采用5个独立键盘即可,分别实现清零、切换、增大、减小和功能等作用电路原理如图2-5所示图2-5键盘调整单元接线图图中,键盘从上至下依次为S0接P
1.0口,对上一次的计费进行清零,为下次载客做准备;S1接P
1.1口,通过对功能键S3按下次数的计数,实现单价数据的增大;S2接P
1.2口,通过对功能键S3按下次数的计数,实现单价数据的减小;S3接P
1.3口,按1次,进入调整白天单价;按2次,进入调整夜晚单价;按3次,进入调整等待单价;按4次,进入调整起步价;按5次,返回S4:实现白天单价和夜晚单价的切换需要注意的时,当按键按下和释放的瞬间都有抖动现象,一般来说,抖动的时间长短与键盘的机械特性有关,大约为5-10ms
[5]所以在实际编程时一定要注意键盘的去抖动键盘去抖动有专用的延时电路,也有专门的延时芯片,也可以用软件去抖,考虑到电路的难易程度,从简化硬件的角度,本次设计采用软件去抖动,用一个短延时程序,进行键盘去抖操作
2.5显示单元显示单元由两个4位8段共阳数码管组成,电路连接时,公共端接高电平,因此我们需要点亮哪个发光二极管只需给哪个二极管阴极送低电平,并采用动态扫描进行显示
[6]前三个数码管分别接P
2.
0、P
2.1和P
2.2,用于显示总金额;第四个接P
2.3,显示等待时间;第五个和第六个数码管分别接P
2.4和P
2.5,用于显示里程由于需精确到小数位,故最多只能显示
9.9公里,但经过添加溢出指示,可计到20公里,在现实中已基本够用;后面两个数码管分别接P
2.6和P
2.7,用于显示单价由于溢出指示是采用发光二极管是否点亮表示,故必须选好参数以确保发光二极管正常工作根据元件手册(也可用万用表测量)查得,发光二极管点亮时压降为
1.7V,点亮电流为3-20mA,取导通电流为5mA,所以限流电阻可选择为5-
1.7/5=660,故可选择限流电阻值510Ω由于数码管内部二极管点亮时需要5mA以上的电流,而单片机的输出电流还不到1mA,所以数码管与单片机连接时需加驱动电路,可以使用上拉电阻的方法,也可以使用专门的驱动芯片,考虑到复用单片机I/O接口,节省单片机I/O资源,此次设计采用74HC573锁存器,其输出电流较大,电路接口简单且可直接驱动数码管显示74HC573的引脚分布图2-6如下图2-674HC573的引脚分布:为三态允许输入端低电平有效,也可称作输出允许端;1D-8D为数据输入端;1Q-8Q为数据输出端;LE为锁存允许端74HC573所对应真值表2-1如表表2-174HC573真值表INPUTOUTPUTLEDQLHLLLXHXXHQ0Z其中H—高电平;L—低电平;X—任意电平;Z—高阻态,既不是高电平也不是低电平,其电平状态由与它相连接的其它电气状态决定;Q0—上次的电平状态由真值表可以看出,当为高电平时,无论LE与D端为何电平状态,其输出均为高阻态,此时芯片处于不可控状态做设计时必须使其处于可控状态,即应该接低电平当为低电平时,若LE为H,则D与Q同时为H或者L,数据实现直通传送;而当LE为L时,无论D为何状态Q都保持上一次的数据状态,数据被锁存住,利用此特性即可实现对数码管的控制本次设计中段选信号LE接P
1.5,对应图中标号P
1.5;位选信号LE接P
1.6,对应图中标号P
1.6控制显示时先给P
1.5高电平,使通道打开,接着送字码,然后把P
1.5电平拉低,使字码保持住;之后打开P
1.6(送高电平),紧接着送位码,控制要显示的位,然后把P
1.6拉低,数据被保持最后延时5ms;依次循环扫描;利用数码管点亮后的余晖和人眼视觉暂留效应即可实现动态显示数码管动态显示电路如图2-7所示图2-7数码管动态显示电路第3章软件设计
3.1系统主程序在主程序模块中,需要完成对各参量和接口的初始化、出租车起步价和单价的初始化以及中断、计算、循环等工作另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作当出租车运行后,就启动计价器,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数若已超过,则根据里程值、每公里的单价值和起步价来计算出当前的总金额,并将结果存于总金额寄存器中;中途等待时,无脉冲输入,不产生中断,当时间超过等待设定值时,开始进行计时,并把等待金额加到总金额里,然后将总金额、里程、等待时间和单价送数码管显示出来程序流程如图3-1所示���开始清零�初始化�切换�夜晚单价�金额计算�按键扫描显示NYNY图3-1主程序流程图
3.2里程计数中断程序每当霍尔传感器输出一个低电平信号,单片机定时器0(工作在计数模式)就对其计数一次,相应的变量设为inter就自加1,当里程计数器inter对里程脉冲计满500次时,对其自身进行清零操作,为下一次计数做准备,同时进入里程计数中断服务程序中,里程变量加1,总金额根据此时所设单价做出相应的变化里程中断子程序如图3-2所示���INT0增加1公里计数达到500?调用价格子程序�达到最大里程?返回�开始YNNY#0;图3-2里程中断服务子程序
3.3中途等待中断程序在中途等待中断程序中,定时器1每50ms计一次数,每计够100次5sec,便将当前里程值送入某个缓存变量,与前一个5秒的值进行比较,如果两者相同,则表明霍尔传感器没有输出信号,认为出租车停了下来,进入等待计时,计时中间变量dd自加1,计够12次为一分钟,dd自清零,同时根据所设的等待单价刷新总金额计数初值可有以下公式获得X=65536-t*
11.0592*10^6/12;TH=X/256;TL=X%256;其中X表示计数初值,TH、TL分别为16位计数器高8位和低8位应装入的初值用定时器作为基准,可使测试的等待时间更为精确(可以精确到uS级);且每隔5秒比较一次,能有效减小误判率,避免把汽车低速行驶误认为静止等待处理中途等待子程序流程图如图3-3所示���T1计时开始CC=100?�变量cc++开始�二者相等吗?�50ms了吗?�与前一个5s比较变量dd++DD=12?�返回等待时间++YYYYNNNN图3-3中途等待中断子程序流程图
3.4计算程序计算程序根据里程数分别进入不同的计算公式如果里程大于3公里,则执行公式总金额=起步价+(里程-3)*单价+等待时间*等待单价;否则,执行公式总金额=起步价+等待时间*等待单价程序流程图如图3-4所示���里程3总金额=起步价�总金额+=(里程-3)*起步价�总金额+=等待时间*等待单价�总金额=起步价�总金额+=等待时间*等待单价�返回NY开始图3-4计算程序流程图
3.5显示程序由于8位数码管所有段选皆有8位的P0口进行控制,因此,在每一瞬间,8位LED会显示同一个数字要想每位显示不同的字符,就必须采用动态扫描的方法轮流点亮各位LED,即在每一时刻只使某一位显示字符在此瞬间,段选控制I/O口输出相应字符段选码(字符码),而位选则控制I/O口在该显示的位送入选通电平,以保证该位显示显示相应字符如此循环操作,使每位分时显示该位应该显示的字符
[7]在本次设计中显示程序利用延时程序,每隔5ms刷新一次,相应的数码管点亮,显示一位数据,利用主函数内的循环,实现动态扫描显示,同时根据数码管余辉和人眼暂留现象,给人看上去每个数码管总是在亮,以实现动态显示
3.6键盘程序键盘采用查询的方式,放在主程序中,当有按键按下的时候,在相应I/O口产生一次低电平,当单片机查询出该低电平后便转入进行处理,处理结束返回键盘程序流程图如图3-5���Key3=0白天单价+1返回�Key3num为真Key3num=1Keynum=2?Key1=0NNYYNkey3num=0Key2=0?YYN白天单价-1Y显示key3num++开始N储存白天单价Key1=0夜晚单价+1YKey2=0?夜晚单价-1Y等待单价-1NKey3num=3?N储存夜晚单价Key1=0等待单价+1YKey2=0?Key3num=4?储存等待单价Key1=0起步单价+1Key2=0?起步单价-1Key3num=5?储存起步单价Key3num=0YYYNNNNYNYNNYNNKey4=0白天、夜晚单价切换YKey0=0仅显示总金额与起步价NYNY图3-5键盘程序按键检测流程图3-6所示图3-6按键检测子程序流程图第4章调试改进过程及运行结果分析
4.1动态扫描的调试和分析动态扫描是单片机编程中最基本的知识,虽对其原理有比较清晰的掌握,也曾用汇编语言写过程序,但此次用C语言编写还是出现了错误第一就是把段码和位码顺序送反,结果是只有在延时时间较长时才能显示正常,当然这样的代价是没有静态的效果;第二就是用动态扫描时给八个数码管送了10个数,显然这样做结果必定混乱;最后就是开始时用switch、case语句实现动态扫描,当程序较小时可以正常工作,但当后期程序较大时,出现了时序混乱的问题最后解决的方法是用了锁存器,显示结果正常为固定的预设的八个数字
4.2AT24C02的编程与调试对AT24C02编程对我来说是一个比较新知识点,遇到了不少问题,这里仅把经验教训简要介绍一下首先是一定要对I2C总线时序有较深刻了解后再尝试编程,第二就是要注意向AT24C02写一个字和读一个字的区别,当从AT24C02读数据时一定要注意,当读完时从机AT24C02一定要发送一个非应答信号表示数据读完调试的方法是在指定地址写一个数字再看能是否读出,当显示程序编写好后,可以在Ptoteus中用数码管显示看是否与分析一致,也可以把读出的数据赋给某个变量,再通过在keil中执行view/watchcallstackwindow调出相应变量观察
4.3按键查询功能的实现按键查询比较容易实现,只要注意
1.按键结束后注意退出按键处理;
2.不要陷入死循环,即避免显示一个数据后退不出来;
3.在做实际键盘时要注意按下去抖和释放去抖按键去抖可通过以下语句实现ifkey==0{delay5;ifkey==0{while!key;delay5;while!key;{按键处理程序}}}
4.4计算程序的分析与设计由于里程和单价都精确的小数点后一位,而显示时仍按整数显示,只不过人为的加入0x7f(共阳极时加入0x7f,共阴极时加入||0x控制是否显示小数点儿,故实际计算时要做适当改动改动如下
1.当里程值大于30(实际对应大于3公里)且无进位时,溢出指示灯不亮,总金额=起步价+(里程十位数字-2)*运行单价+等待单价*等待时间;
2.当里程值小于30(实际对应小于3公里),肯定无进位,溢出指示灯不亮,总金额=起步价+等待单价*等待时间;
3.有进位,溢出指示灯点亮,表示里程一定大于三公里,只需执行总金额=起步价+7*运行单价+(里程十位数字+1)*运行单价+等待单价*等待时间即总金额=起步价+(里程十位数字+8)*运行单价+等待单价*等待时间;
4.5结果分析与性能改进经过反复调试验证,基于STC89C52单片机控制设计的出租车计价器满足了所有预设性能指标,具有较好的抗干扰性,价格也较为合理,具有很好的工业开发和市场前景可以改进的地方可能有很多;就我现在所思考的可从以下两个方面加以考虑
1.尝试着把两个锁存器74HC573去掉,当然不能影响整个计价器的功能,这样会使硬件电路更简洁,成本也会更低,符合实际中的最大利润空间定理
2.设计PCB板时把键盘和显示器放在芯片和其它电路的反面,这样封装成实际产品时可把人机接口留在外面,更人性化,也符合人们的习惯
4.6计价器系统的仿真当各个子模块都实现后,联调则主要是看当把他们融合在一起时是否会有时序上的冲突,以及可能存在的分析不周全的地方本次设计联调时出现的问题主要有第一是显示时存在时序上的冲突,详见
4.1第三点;第二就是中断设置时出现混乱,即同时用定时器0,定时器1,和外部中断1时,后两者都不再工作(通过编一个方波程序,发现定时器1即P
3.5无跳变),解决方法时让定时器1工作在计数方式代替工作在定时方式,如此不但可以完成相应功能,解决了问题,更重要的是省去一个中断,简化了程序设计调试完成后在Proteus
7.5上仿真结果如图4-1,4-2,4-3,4-4所示图4-1里程无溢出时仿真结果(小于三公里)图4-2里程无溢出时仿真结果(大于三公里)图4-3里程溢出时仿真结果(大于十公里)图4-4单价调整(起步价)结 论经过近几个月的设计,在多位老师和同学的帮助下,全面实现了预先设定的计价器应具有的功能,且满足了所有设计指标
1.能准确计算出出租车运行里程;
2.实现了单价可调,里程精确到
0.1公里,并可以对等待时间进行计时;
3.利用I2C总线通过EEPROM-AT24C02对存储空间进行了扩展,使其具备掉电存储功能
4.有完整的软件仿真结果和硬件电路,并用Protel设计出了系统原理图,制作了PCB板通过对基于Proteus
7.5的仿真和实际电路的测试结果分析,表明用此方法设计的计价器实现了单价可调,掉电保持,计程精度达到
0.1公里,此外还增加了等待计时功能,白天夜晚单价自动切换,并且能实时显示总金额,等待时间,运行里程,运行单价等详细信息;且能很方便的在不改变硬件电路的情况下通过改变软件实现计价精度的提高,进行功能上的扩展,如可把现有的计价器转变为计速器,完善的功能使得基于STC89C52单片机的出租车计价器的通用性和实用性有着无可比拟的优势,具有很高的现实意义和很好的市场前景当然设计存在不少缺陷,做如下改进
1.应尝试着在不影响整个计价器的功能的前提下把两个锁存器74HC573去掉,这样会使硬件电路更简洁,成本也会更低
2.PCB板中如果把键盘和显示器放在芯片和其它电路的反面,这样封装成实际产品时可把人机接口留在外面,更人性化,也符合人们的习惯谢辞在此次设计中,陈文清老师作为我的指导老师,至始至终都给予我了不少帮助,从下任务书开始,就帮我制定规划,提醒我应注意的问题;借给我资料,帮我联系硬件;和我一起调程序,并提出了很多的修改意见以及完善方案;此外还认真批阅了我的论文,指出其中很多瑕疵和不清晰的地方;更重要的是在我遇到困难时对我的鼓励,让我不懈怠、不退缩、也让我更有信心;可以说我的每一点进展都与陈老师的付出是分不开的当然还在此,我向身边关心我的老师、同学致以诚挚的谢意!最后感谢母校对我这几年的辛勤培养有其他老师和同学,都帮了我不少忙,在此不再赘述谨祝老师们工作顺利,万事如意,桃李满天下;同学们学业有成,前程似锦!参考文献
[1]李朝青.单片机原理及接口技术第三版.北京:北京航空航天大学出版社2008
[2]郭天祥.51单片机C语言教程.北京:电子工业出版社2008
[3]单成祥牛彦文.传感器设计基础.北京:国防工业出版社2007
[4]窦振中.单片机外围部件实用手册输出通道器件分册.北京:北京航空航天大学出版社.
2003.
[5]杨素行.模拟电子技术基础简明教程.第三版.北京:高等教育出版社2005
[6]阎石.数字电子技术.第五版.北京高等教育出版社2006
[7]张一斌余建坤.单片机原理课程设计.长沙:中南大学出版社2008
[8]万隆巴奉丽.单片机原理及应用技术.北京:清华大学出版社2008
[9]马淑华王凤文张美金.单片机原理与接口技术第二版.北京:北京邮电大学出版社2007
[10]陈威.基于单片机的电子密码锁的设计[毕业论文].浙江:浙江科技学院2009
[11]高炎萃武一.基于单片机的电机保护装置设计.四川理工学院学报2009,第23卷第1期
[12]谭浩强.C程序设计第三版.北京:清华大学出版社2005
[13]刘宏余勤科.Protel电路设计使用指南.西安:西安电子科技大学出版社2000
[14]赵伟军.Protel99E教程.北京:人民邮电出版社2004
[15]龙脉工作室.Protel99S入门与典型实例.北京:人民邮电出版社2008
[16]谭浩强著.C程序设计[M].北京:清华大学出版社2005
[17]张友德赵志英涂时亮著.单片微型机原理应用与实验[M].上海:复旦大学出版社
2006.10
[18]吴戈李玉峰编著.案例学单片机C语言开发[M].北京:人民邮电出版社
2008.10
[19]孙余凯.传感器应用电路300例[M].北京:电子工业出版社
2008.
[20]田立.51单片机C语言程序设计快速入门[M].北京:人民邮电出版社2007
[21]ChirsJ.Georgopoulos.InterfaceFundamentalsInMicroprocessor-ControlledSystem[M].D.ReidelPublishingCompany1985附录A系统原理图附录B仿真图PCB板附录C系统源程序#includereg
52.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintucharcodetable[]={0xC00xF90xA40xB00x990x920x820xF80x800x90};//ucharcodetable2[]={0x010x020x040x080x100x200x400x80};//sbitexter=P3^3;//sbitfangbo=P3^5;sbitkey0=P1^0;//清零sbitkey1=P1^1;//+sbitkey2=P1^2;//-sbitkey3=P1^3;//功能键sbitkey4=P1^4;//切换sbitled=P1^7;//里程溢出指示//sbitdula=P3^0;//sbitwela=P3^1;sbitdula=P1^5;sbitwela=P1^6;sbitSda=P3^7;//I2C引脚sbitScl=P3^6;//sbitWP=P3^5;//硬件写保护uintzongjinedengdai;licheng;uintkey3numqiehuantemp;//uchardanjia1=11danjia2=22danjia3=33qibu=44danjiazc;uchardanjia1danjia2danjia3qibudanjia;//分别为白天单价、夜晚单价、//等待单价、白天夜晚单价切换暂存、起步价uintaabbtemptemp1interexter;//中断调用uintccddqufan;voiddelayuintx{intij;fori=x;i0;i--forj=110;j0;j--;}voiddelayNOP//保证I2C的时序要求=
4.7us{_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;_nop_;}voidI2C_init{Sda=1;Scl=1;delayNOP;}voidstart{Scl=1;delayNOP;Sda=1;delayNOP;Sda=0;delayNOP;Scl=0;delayNOP;}voidstop{Sda=0;delayNOP;Scl=1;delayNOP;Sda=1;delayNOP;}voidAck{Sda=0;delayNOP;Scl=1;delayNOP;Scl=0;delayNOP;}voidNoAck{Sda=1;delayNOP;Scl=1;delayNOP;Scl=0;delayNOP;}voidSenducharData{ucharBitCounter=8;uchartemp;do{temp=Data;Scl=0;delayNOP;iftemp0x80==0x80Sda=1;elseSda=0;Scl=1;temp=Data1;Data=temp;BitCounter--;}whileBitCounter;Scl=0;}ucharRead//读一个字节的数据并返回该字节值{uchartemp=0;uchartemp1=0;ucharBitCounter=8;Sda=1;//置Sda为输入方式do{Scl=0;delayNOP;Scl=1;delayNOP;ifSda//如果Sda=1;temp=temp|0x01;//temp的最低位置1elsetemp=temp0xfe;//否则temp的最低位清0ifBitCounter-1{temp1=temp1;temp=temp1;}BitCounter--;}whileBitCounter;Scl=0;returntemp;}voidWrToROMucharAddresssucharData{start;Send0xa0;Ack;SendAddresss;Ack;SendData;Ack;stop;delay20;}ucharRdFromROMucharAddresss{ucharData;start;Send0xa0;Ack;SendAddresss;Ack;start;Send0xa1;Ack;Data=Read;NoAck;stop;returnData;}/*voidmain{ucharrd;I2C_init;P3=0x00;while1{WrToROM0x01table
[3];delay10;P3=0x10;rd=RdFromROM0x01;P2=rd;delay10;}}*/voiddisplayuintzongjine0uintdengdai0uintlicheng0uintdanjia0//数码管//显示{uintjshijgejjiaodengdlshilgedgedjiao;//uintnumwei=0;//whileaaifaa{jshi=zongjine0/100;jge=zongjine0%100/10;jjiao=zongjine0%100%10;dengd=dengdai0;lshi=licheng0/10;lge=licheng0%10;dge=danjia0/10;djiao=danjia0%10;wela=1;P2=0x01;wela=0;dula=1;P0=table[jshi];dula=0;delay4;wela=1;P2=0x02;wela=0;dula=1;P0=table[jge]0x7f;dula=0;delay4;wela=1;P2=0x04;wela=0;dula=1;P0=table[jjiao];dula=0;delay4;wela=1;P2=0x08;wela=0;dula=1;P0=table[dengd];dula=0;delay4;wela=1;P2=0x10;wela=0;dula=1;P0=table[lshi]0x7f;dula=0;delay4;wela=1;P2=0x20;wela=0;dula=1;P0=table[lge];dula=0;delay4;wela=1;P2=0x40;wela=0;dula=1;P0=table[dge]0x7f;dula=0;delay4;wela=1;P2=0x80;wela=0;dula=1;P0=table[djiao];dula=0;delay4;}}voidkeyscan//键盘扫描{ifkey3==0//功能键调节{delay5;ifkey3==0{//aa=0;key3num=1;while!key3;delay5;while!key3;whilekey3num{ifkey3num==1//调白天单价danjia1{//display010danjia1;ifkey1==0{delay5;ifkey1==0{danjia1++;ifdanjia1==100danjia1=0;while!key1;delay5;while!key1;}}ifkey2==0{delay5;ifkey2==0{danjia1--;ifdanjia1==-1danjia1=99;while!key2;delay5;while!key2;}}display010danjia1;}ifkey3num==2//调夜晚单价danjia2//whilekey3num==2{WrToROM0x01danjia1;//display020danjia2;ifkey1==0{delay5;ifkey1==0{danjia2++;ifdanjia2==100danjia2=0;while!key1;delay5;while!key1;}}ifkey2==0{delay5;ifkey2==0{danjia2--;ifdanjia2==-1danjia2=99;while!key2;delay5;while!key2;}}display020danjia2;}ifkey3num==3//调等待单价danjia3{//display030danjia3;WrToROM0x02danjia2;//WrToROM0x0222;ifkey1==0{delay5;ifkey1==0{danjia3++;ifdanjia3==100danjia3=0;while!key1;delay5;while!key1;}}ifkey2==0{delay5;ifkey2==0{danjia3--;ifdanjia3==-1danjia3=99;while!key2;delay5;while!key2;}}display030danjia3;}ifkey3num==4//调起步价{//display040qibu;WrToROM0x03danjia3;//WrToROM0x0333;ifkey1==0{delay5;ifkey1==0{qibu++;ifqibu==100qibu=0;while!key1;delay5;while!key1;}}ifkey2==0{delay5;ifkey2==0{qibu--;ifqibu==-1qibu=99;while!key2;delay5;while!key2;}}display040qibu;}ifkey3num==5//退出功能键{key3num=0;WrToROM0x04qibu;//WrToROM0x0444;//aa=1;}ifkey3==0{delay5;ifkey3==0{key3num++;while!key3;delay5;while!key3;}}}}}}voidinit{//Sda=1;//Scl=1;I2C_init;zongjine=0;licheng=0;dengdai=0;danjia1=RdFromROM0x01;danjia2=RdFromROM0x02;danjia3=RdFromROM0x03;qibu=RdFromROM0x04;aa=1;//数码管动态扫描的定时器时基个数bb=0;cc=0;dd=0;inter=0;EA=1;//开总中断//EX1=1;//开外部中断1//IT1=1;//触发方式下降沿TMOD=0x11;TH0=65536-46080/256;TL0=65536-46080%256;//TH0=65536-50000/256;//TL0=65536-50000%256;//定时50ms//EA=1;ET0=1;//开定时器T0中断TR0=1;//开定时器T0TH1=65536-2765/256;TL1=65536-2765%256;//TH1=65536-3000/256;//TL1=65536-3000%256;ET1=1;TR1=1;//TR1=0;wela=1;P2=0xff;wela=0;dula=1;P0=table
[0];dula=0;delay1000;}voidjisuan{ifled==1iflicheng30//等价于ifled=1licheng30zongjine=qibu+licheng/10-2*danjia+dengdai*danjia3;//金额计算else//等价于ifled=1licheng30zongjine=qibu+dengdai*danjia3;//起步公里内金额计算else//iflicheng30zongjine=qibu+licheng/10+8*danjia+dengdai*danjia3;//zongjine=qibu+7*danjia+dengdai*danjia3+licheng/10+1*danjia;//else//zongjine=qibu+7*danjia+dengdai*danjia3;}voidqiehuan{ifkey4==0//白天夜晚切换{delay5;//键盘防抖ifkey4==0//aa=0;qiehuantemp=!qiehuantemp;while!key4;delay5;while!key4;//init;}//aa=1;ifqiehuantemp==0danjia=danjia2;ifqiehuantemp==1danjia=danjia1;//display000danjia;}voidmain{init;qiehuantemp=1;key3num=0;while1{//fangbo=qufan;//exter=qufan;qiehuan;keyscan;jisuan;//切换白天夜晚单价displayzongjinedengdailichengdanjia;//display12345678;/*WrToROM0x0555;danjia=RdFromROM0x05;display123456danjia;*/ifkey0==0//清零键{delay5;//键盘防抖ifkey0==0//init;{while!key0;delay5;while!key0;init;}}}}voidtimer0interrupt1//等待时间判断及计时{//inter=0;TH0=65536-46080/256;TL0=65536-46080%256;//TH0=65536-50000/256;//TL0=65536-50000%256;//定时50msbb++;temp1=temp;ifbb==100//每5sec比较一次判断是否等待//ifbb==50{bb=0;//iftemp=temptemp1//每秒比较一次temp=inter;iftemp1==tempdd++;ifdd==12//1min{dengdai++;dd=0;}}//temp=inter;}/*voidinter1interrupt2//A44E外部脉冲中断,计算里程{ifexter==0;delay5;ifexter==0//负跳变有效{IT1=1;inter++;ifinter==500//设车轮周长为2米,则500个脉冲为1Km{inter=0;licheng++;}}while!exter;delay5;while!exter;}*/voidtimer1interrupt3//产生方波,模拟A44E{TH1=65536-2765/256;TL1=65536-2765%256;//TH1=65536-3000/256;//TL1=65536-3000%256;cc++;ifcc==1//T=6ms的方波,则每500个中断为3s,对应
0.1Km{cc=0;qufan=!qufan;}exter=qufan;ifexter==0//负跳变有效{//IT1=1;inter++;ifinter==500//设车轮周长为2米,则500个脉冲为1Km{inter=0;licheng++;}iflicheng==100{licheng=0;led=0;}}}外文资料翻译Single-chipSCMisalsoknownasmicro-controllerMicrocontrollerUnitcommonlyusedlettersoftheacronymMCUthatitwasfirstusedinindustrialcontrol.OnlyasinglechipbytheCPUchipdevelopedfromadedicatedprocessor.ThefirstdesignisbyalargenumberofperipheralsandCPUonachipinthecomputersystemsmallermoreeasilyintegratedintoacomplexanddemandingonthevolumecontroldevicewhich.INTELsZ80isthefirstdesignedinaccordancewiththisideaprocessorthenonthedevelopmentofmicrocontrolleranddedicatedprocessorshavepartedways.Are8-bitmicrocontrollerearlyor4bits.OneofthemostsuccessfulistheINTEL8031forasimplereliableandgoodperformancewasalotofpraise.Thendevelopedin8031outofMCS51MCUSystems.SCMsystemsbasedonthissystemuntilnowisstillwidelyused.Withtheincreasedrequirementsofindustrialcontrolfieldbegana16-bitmicrocontrollerbecausethecostisnotsatisfactorybuthavenotbeenverywidelyused.After90yearswiththegreatdevelopmentofconsumerelectronicsmicrocontrollertechnologyhasbeenahugeincrease.WithINTELi960seriesespeciallythelaterseriesofwidelyusedARM32-bitmicrocontrollerquicklyreplacehigh-end16-bitMCUstatusandenterthemainstreammarket.Thetraditional8-bitmicrocontrollerperformancehavebeentherapidincreasecapacityincreasecomparedto80thenumberoftimes.Currentlyhigh-end32-bitmicrocontrollerclockedover300MHztheperformancecatchingthemid-90sdedicatedprocessorwhiletheaveragemodelpricesfalltooneU.S.dollarsthemosthigh-end
[1]modelonly10dollars.ModernSCMsystemsarenolongeronlyinthedevelopmentanduseofbaremetalenvironmentalargenumberofproprietaryembeddedoperatingsystemiswidelyusedinthefullrangeofSCM.Thehandheldcomputersandcellphonesasthecoreprocessingofhigh-endmicrocontrollercanevenuseadedicatedWindowsandLinuxoperatingsystems.SCMismoresuitablethanthespecificprocessorusedinembeddedsystemssoitwasuptotheapplication.InfactthenumberofSCMistheworldslargestcomputer.Modernhumanlifeusedinalmosteverypieceofelectronicandmechanicalproductswillbeintegratedsinglechip.Phonetelephonecalculatorhomeapplianceselectronictoyshandheldcomputersandcomputeraccessoriessuchasamousewitha1-2inboththeDepartmentofSCM.PersonalcomputerwillhavealargenumberofSCMinthework.Generalcarwithmorethan40SCMcomplexindustrialcontrolsystemsmayevenhavehundredsofSCMinthesametimework!SCMisnotonlyfarexceedsthenumberofPCandothercomputingthesumorevenmorethanthenumberofhumanbeingsSinglechipalsoknownassingle-chipmicrocontrolleritisnotcompleteacertainlogicchipsbuttoacomputersystemintegratedintoachip.Equivalenttoamicro-computerandcomputerthanjustthelackofamicrocontrollerI/Odevices.Generaltalk:achipbecomesacomputer.Itssmallsizelightweightcheapforthestudyapplicationanddevelopmentoffacilitiesprovided.AtthesametimelearningtousetheMCUistounderstandtheprincipleandstructureofthecomputerthebestchoice.SCMandthecomputerfunctionsinternallywithsimilarmodulessuchasCPUmemoryparallelbusthesameeffectaswellandharddiskmemorydevicesanddifferentisitsperformanceofthesecomponentswererelativelyweakmanyofourhomecomputerbutthepriceislowusuallynotmorethan10yuanyoucandowithit......somecontrolforaclassisnotverycomplicatedelectricalworkisenoughof.WeareusingautomaticdrumwashingmachinesmokehoodVCDandsoonapplianceswhichcouldseeitsshadow!......ItisprimarilyasacontrolsectionofthecorecomponentsItisanonlinereal-timecontrolcomputercontrol-lineisthatthesceneisneededisastrongeranti-jammingabilitylowcostandthisisandoff-linecomputersuchashomePCthemaindifference.SinglechipMCUisthroughrunningandcanbemodified.Throughdifferentprocedurestoachievedifferentfunctionsinparticularspecialuniquefeaturesthisisanotherdevicemucheffortneedstobedonesomegreateffortsareverydifficulttodo.Anotverycomplexfunctionsifthe50swiththeUnitedStatesdeveloped74seriesorthe60sCD4000seriesofthesepurehardwarebuttonedthenthecircuitmustbealargePCBboard!ButiftheUnitedStatesifthe70swithaseriesofsuccessfulSCMmarkettheresultwillbeadrasticchange!Justbecauseyouarepreparedbymicrocomputerprogramscanachievehighintelligencehighefficiencyandhighreliability!Asthemicrocontrolleronthecost-sensitivesonowthedominantsoftwareorthelowestlevelassemblylanguagewhichisthelowestlevelinadditiontomorethanbinarymachinecodelanguageandassolowwhyistheuseManyhigh-levellanguagehasreachedthelevelofvisualprogrammingWhyisnotitThereasonissimplythatthereisnohomecomputerasasinglechipCPUnotashardasamassstoragedevice.Avisualizationofsmallhigh-levellanguageprogramwhichevenifonlyonebuttonwillreachtensofKofsize!ForthehomePCsharddriveintermsofnothingbutintermsoftheMCUisnotacceptable.SCMintheutilizationofhardwareresourcestobeveryhighforthejobsoalthoughtheoriginalisstillinthecompilationofalotofuse.ThesametokenifthegiantcomputeroperatingsystemandapplicationsrunuptogethomePChomePCalsocannotaffordto.Canbesaidthatthetwentiethcenturyacrossthethreepowererathatistheageofelectricitytheelectronicageandhasenteredintothecomputerage.HoweverthiscomputerusuallyreferstothepersonalcomputerreferredtoasPC.Itconsistsofthehostkeyboardmonitorandothercomponents.Anothertypeofcomputermostpeopledonotknowhow.Thiscomputeristogiveallkindsofintelligentmachinessinglechipalsoknownasmicro-controller.Asthenamesuggeststhiscomputersystemtookonlyaminimalintegratedcircuitcanbeasimpleoperationandcontrol.Becauseitissmallusuallyhiddeninthechargedmechanicalstomachin.Itisinthedevicelikethehumanbrainplaysaroleitgoeswrongthewholeplantwasparalyzed.Nowthismicrocontrollerhasaverybroadfieldofusesuchassmartmetersreal-timeindustrialcontrolcommunicationsequipmentnavigationsystemsandhouseholdappliances.OnceallkindsofproductswereusingSCMcanservetoupgradetheeffectivenessofproductsoftenintheproductnameprecededbytheadjective-intelligentsuchasintelligentwashingmachines.Nowsometechnicalpersonneloffactoriesorotheramateurelectronicsdeveloperstoengageinoutofcertainproductsnotthecircuitistoocomplicatedthatfunctionistoosimpleandcaneasilybecopied.Thereasonmaybestuckintheproductdidnotuseamicrocontrollerorotherprogrammablelogicdevice.SCMhistorySCMwasborninthelate20thcentury70experiencedSCMMCUSOCthreestages.Firstmodel
1.SCMthesinglechipmicrocomputerSingleChipMicrocomputerstagemainlyseekingthebestofthebestsingleformofembeddedsystemsarchitecture.InnovationmodelsuccesslayingtheSCMandgeneralcomputercompletelydifferentpathofdevelopment.IntheopenroadofindependentdevelopmentofembeddedsystemsIntelCorporationcontributed.
2.MCUthemicro-controllerMicroControllerUnitstagethemaindirectionoftechnologydevelopment:expandingtomeettheembeddedapplicationsthetargetsystemrequirementsforthevariousperipheralcircuitsandinterfacecircuitshighlighttheobjectofintelligentcontrol.ItinvolvestheareasassociatedwiththeobjectsystemthereforethedevelopmentofMCUsresponsibilityinevitablyfallsonelectricalelectronicsmanufacturers.FromthispointofviewIntelfadedMCUdevelopmenthasitsobjectivefactors.InthedevelopmentofMCUthemostfamousmanufacturersasthenumberofPhilipsCorporation.PhilipscompanyinembeddedapplicationsitsgreatadvantagetheMCS-51single-chipmicro-computerfromtherapiddevelopmentofthemicro-controller.ThereforewhenwelookbackatthepathofdevelopmentofembeddedsystemsdonotforgetIntelandPhilipsinHistory.EmbeddedSystemsEmbeddedsystemmicrocontrollerisanindependentdevelopmentpaththeMCUimportantfactorinthedevelopmentstageisseekingapplicationstomaximizethesolutiononthechip;ThereforethedevelopmentofdedicatedsinglechipSOCtrendofthenaturalform.AsthemicroelectronicsICdesignEDAtoolsdevelopmentapplicationsystembasedonMCUSOCdesignhavegreaterdevelopment.Thereforetheunderstandingofthemicrocontrollerchipmicrocomputercanbeextendedtothesingle-chipmicro-controllerapplications.MCUapplicationsSCMnowpermeateallareasofourliveswhichisalmostdifficulttofindtracesofthefieldwithoutSCM.Missilenavigationequipmentaircraftalltypesofinstrumentcontrolcomputernetworkcommunicationsanddatatransmissionindustrialautomationreal-timeprocesscontrolanddataprocessingextensiveuseofvarioussmartICcardcivilianluxurycarsecuritysystemvideorecordercamerafullyautomaticwashingmachinecontrolandprogram-controlledtoyselectronicpetetc.whichareinseparablefromthemicrocontroller.Nottomentiontheareaofrobotcontrolintelligentinstrumentsmedicalequipmentwas.ThereforetheMCUlearningdevelopmentandapplicationofthelargenumberofcomputerapplicationsandintelligentcontrolofthescientistsengineers.SCMiswidelyusedininstrumentsandmetershouseholdappliancesmedicalequipmentaerospacespecializedequipmentintelligentmanagementandprocesscontrolfieldsroughlydividedintothefollowingseveralareas:
1.IntheapplicationofIntelligentInstrumentsSCMhasasmallsizelowpowerconsumptioncontrollingfunctionexpansionflexibilitytheadvantagesofminiaturizationandeaseofusewidelyusedinstrumentcombiningdifferenttypesofsensorscanberealizedZhuruvoltagepowerfrequencyhumiditytemperatureflowspeedthicknessanglelengthhardnesselementalphysicalpressuremeasurement.SCMmakesuseofdigitalinstrumentsintelligenceminiaturizationandfunctionalitythanelectronicordigitalcircuitsmorepowerful.Suchasprecisionmeasuringequipmentpowermeteroscilloscopevariousanalyticalinstrument.
2.IntheindustrialcontrolapplicationWiththeMCUcanconstituteavarietyofcontrolsystemsdataacquisitionsystem.Suchasfactoryassemblylineofintelligentcontrol
3.InHouseholdAppliancescanbesaidthattheappliancesarebasicallyusingSCMpraisefromtheelectricricewashingmachinesrefrigeratorsairconditionerscolorTVandotheraudiovideoequipmenttotheelectronicweighingequipmentvariedandomnipresent.
4.InthefieldofcomputernetworksandcommunicationsapplicationsMCUgeneralwithmoderncommunicationinterfacecanbeeasywiththecomputerdatacommunicationnetworkingandcommunicationsincomputerapplicationsbetweendeviceshadexcellentmaterialconditionsarebasicallyallcommunicationequipmenttoachieveacontrolledbyMCUfrommobilephonetelephonemini-program-controlledswitchboardsbuildingautomatedcommunicationscallsystemtrainradiocommunicationtothedailyworkcanbeseeneverywhereinthemobilephonestrunkedmobileradiowalkie-talkiesetc..
5.MicrocomputerinthefieldofmedicaldeviceapplicationsSCMintheuseofmedicaldevicesisalsoquiteextensivesuchasmedicalrespiratorthevariousanalyzersmonitorsultrasounddiagnosticequipmentandhospitalbedsetc.callsystem.
6.InavarietyofmajorappliancesinthemodularapplicationsDesignedtoachievesomespecialsinglespecificfunctiontobemodularinavarietyofcircuitapplicationswithoutrequiringtheuseofpersonneltounderstanditsinternalstructure.Ifmusicintegratedsinglechipseeminglysimplefunctionminiatureelectronicchipinthenettheprincipleisdifferentfromthetapemachineyouneedacomputersimilartotheprincipleofthecomplex.Suchas:musicsignaltodigitalformstoredinmemorylikeROMreadbythemicrocontrolleranalogmusicintoelectricalsignalssimilartothesoundcard.Inlargecircuitsmodularapplicationsthatgreatlyreducethevolumesimplifiesthecircuitandreducethedamageerrorratebutalsoeasytoreplace.
7.MicrocontrollerintheapplicationfieldofautomotiveequipmentSCMinautomotiveelectronicsiswidelyusedsuchasavehicleenginecontrollerCANbus-basedIntelligentElectronicControlEngineGPSnavigationsystemabsanti-lockbrakingsystembrakesystemetc..InadditiontheMCUinbusinessfinanceresearcheducationnationaldefenseaerospaceandotherfieldshasaverywiderangeofapplications.ApplicationofsiximportantpartoflearningMCUlearninganimportantpartofthesixapplications1Bus:WeknowthatacircuitisalwaysmadebythedevicesconnectedbywiresinanalogcircuitstheconnectiondoesnotbecomeaproblembecausethedeviceisaserialrelationshipbetweenthegeneralthedeviceisnotmuchconnectionbetweenthebutthecomputerisnotthesamecircuititisamicroprocessorcorethedevicemustbeconnectedwiththemicroprocessorthedevicemustbecoordinationbetweensotheyneedtoconnectonalotasifstillanalogcircuitlikethemicroprocessoranddevicesintheconnectionbetweentheindividualthenumberoflineswillbealittlemoresurprisingthereforetheintroductionofthemicroprocessorbusZhongEachdeviceGongtongaccessconnectionsalldevices8Shujulineallreceivedeightpubliconlinethatistheequivalentofalldevicestogetherinparallelbutonlythisdoesnotworkiftherearetwodevicessenddataatthesametimea0a1thenwhetherthereceiverreceivedwhatisitThissituationisnotallowedsotobecontrolledbycontrollingthelinetime-sharingthedevicetoworkatanytimeonlyonedevicetosenddatawhichcanhavemultipledevicestoreceiveboth.Devicesdataconnectionisknownasthedatabusthedeviceiscalledlineofcontrolallthecontrolbus.InternalorexternalmemoryinthemicrocontrollerandotherdeviceshavememorycellsthememorycelltobeassignedaddressesyoucanusedistributionofcoursetoaddressgivenintheformofelectricalsignalsandasmorememorycellssofortheaddressallocationThelineisalsomoreoftheselinesiscalledtheaddressbus.SeconddataaddresscommandThereasonwhythesethreetogetherbecauseofthenatureofthesethreearethesame-thenumberorareastringof0and1formthesequence.Inotherwordsaddressesinstructionsarealsodata.Instruction:fromsinglechipdesignerprovidesanumberofcommonlyusedinstructionswithmnemonicwehaveastrictcorrespondencebetweenthedevelopercannotbechangedbytheMCU.Address:thesearchforMCUinternalexternalstorageunitsinputandoutputportbasedontheaddressoftheinternalunitvalueprovidedbythechipdesignerisgoodcannotbechangedtheexternalunitcanbesinglechipdeveloperstodecidebutthereareanumberofaddressunitsisamustseeproceduresfortheimplementationoftheprocess.ThirdP0portP2andP3ofthesecondfunctionIuse:BeginnersoftenontheP0portP2andP3portIusethesecondfunctionpuzzledthatthesecondfunctionandhaveaswitchbetweentheoriginalfunctionoftheprocessorhaveadirectiveinfacttheportThesecondfeatureisautomaticdonotneedinstructionstoconvert.SuchasP
3.6P
3.7respectivelyWRRDsignalwhenthemicrochipprocessingmachinesexternalRAMorexternalI/Oporttheyareusedasasecondfunctionnotasageneral-purposeI/OportusedsolongasaAmicroprocessorimplementationoftheMOVXinstructiontherewillbeacorrespondingsignalsentfromtheP
3.6orP
3.7noprioruseofcommands.Infactnotasageneral-purposeI/Oportuseisalsonotanobutusernotasageneral-purposeI/Oporttouse.YoucanarrangetheorderofaSETBP
3.7sinstructionsandwhentheMCUexecutiontotheinstructionthealsomakeP
3.7intoahighbutuserswillnotdosobecausethisisusuallywillcausethesystemtocollapse.Fourththeprogramsimplementation:Reductioninpowerafterthe8051microcontrollerwithintheprogramcounterPCinthevalueof0000theprocessisalwaysfromthe0000unitsstartedthatis:thesystemmustexistinROM0000thisunitandin0000unitmustbestoredinasingleinstruction.5thestack:StackisaregionisusedtostoredatathereisnospecialabouttheregionitselfisapartofinternalRAMspecialaccesstoitsdatastorageandthewaythattheso-calledadvancedpostoutbackwardfirstoutandthestackhasaspecialdatatransmissioninstructionsthatPUSHandPOPhasaspecialexpertiseinitsservicesunitthatisthestackpointerSPwheneveraPUSHinstructionexecutionSPonintheBasedontheoriginalvalueautomaticallyadd1whenevertheimplementationofaPOPinstructionSPwillonthebasisoftheoriginalvalueautomaticallyby
1.AstheSPvaluescanbechangedwiththeinstructionssolongasthebeginningoftheprocesstochangethevalueoftheSPyoucansetthestackmemoryunitrequiredsuchastheprogrambeginswithanMOVSP#5FHinstructionsWhensetonthestackstartingfromthememoryunit60Hunit.ThereisalwaysthebeginningofthegeneralprocedurewithsuchadirectivetosetthestackpointerbecausebootSPinitialvalueof07H08HThisunitfromthebeginningtostacknextand08Hto1FH8031isthesecondintheregionthreeorfourworkingregisterareaoftenusedthiswillleadtoconfusionofdata.Differentauthorswhenwritingprogramsinitializethestackisnotexactlythesamedirectivewhichistheauthorshabit.Whensetupthestackzonedoesnotmeanthattheregionbecomeaspecialmemoryitcanstillusethesamememoryregionasnormalbutgenerallytheprogrammerdoesnotregarditasanordinarymemoryused.单片机单片机也被称为微控制器MicrocontrollerUnit,常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域单片机由芯片内仅有CPU的专用处理器发展而来最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳早期的单片机都是8位或4位的其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评此后在8031上发展出了MCS51系列单片机系统基于这一系统的单片机系统直到现在还在广泛使用随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用90年代后随着消费电子产品大发展,单片机技术得到了巨大提高随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用事实上单片机是世界上数量最多的计算机现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机而个人电脑中也会有为数不少的单片机在工作汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多单片机又称单片微控制器它不是完成某一个逻辑功能的芯片而是把一个计算机系统集成到一个芯片上相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备概括的讲一块芯片就成了一台计算机它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件同时,学习使用单片机是了解计算机原理与结构的最佳选择单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!......它主要是作为控制部分的核心部件它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别单片机芯片单片机是靠程序运行的,并且可以修改通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC的也是承受不了的可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代不过,这种电脑,通常是指个人计算机,简称PC机它由主机、键盘、显示器等组成还有一类计算机,大多数人却不怎么熟悉这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制因为它体积小,通常都藏在被控机械的“肚子”里它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上单片机历史单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段起初模型
1.SCM即单片微型计算机SingleChipMicrocomputer阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路在开创嵌入式系统独立发展道路上,Intel公司功不可没
2.MCU即微控制器MicroControllerUnit阶段,主要的技术发展方向是不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素在发展MCU方面,最著名的厂家当数Philips公司Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩嵌入式系统单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SOC化趋势随着微电子技术、IC设计、EDA工具的发展,基于SOC的单片机应用系统设计会有较大的发展因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统单片机的应用领域目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机更不用说自动控制领域的机器人、智能仪表、医疗器械了因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴
1.在智能仪器仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大例如精密的测量设备(功率计,示波器,各种分析仪)
2.在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统例如工厂流水线的智能化管
3.在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在
4.在计算机网络和通信领域中的应用现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等
5.单片机在医用设备领域中的应用单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等
6.在各种大型电器中的模块化应用某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理如音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换
7.单片机在汽车设备领域中的应用单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能电子控制器,GPS导航系统,abs防抱死系统,制动系统等等此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途学习应用六大重要部分单片机学习应用的六大重要部分
一、总线我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线
二、数据、地址、指令之所以将这三者放在一起,是因为这三者的本质都是一样的——数字,或者说都是一串‘0’和‘1’组成的序列换言之,地址、指令也都是数据指令由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改地址是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)
三、P0口、P2口和P3的第二功能用法初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上,各端口的第二功能完全是自动的,不需要用指令来转换如P
3.
6、P
3.7分别是WR、RD信号,当微片理机外接RAM或有外部I/O口时,它们被用作第二功能,不能作为通用I/O口使用,只要一微处理机一执行到MOVX指令,就会有相应的信号从P
3.6或P
3.7送出,不需要事先用指令说明事实上‘不能作为通用I/O口使用’也并不是‘不能’而是(使用者)‘不会’将其作为通用I/O口使用你完全可以在指令中按排一条SETBP
3.7的指令,并且当单片机执行到这条指令时,也会使P
3.7变为高电平,但使用者不会这么去做,因为这通常会导致系统的崩溃
四、程序的执行过程单片机在通电复位后8051内的程序计数器PC中的值为‘0000’,所以程序总是从‘0000’单元开始执行,也就是说在系统的ROM中一定要存在‘0000’这个单元,并且在‘0000’单元中存放的一定是一条指令
五、堆栈堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元,即堆栈指针SP,每当执一次PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值的基础上)自动减1由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOVSP,#5FH指令,就时把堆栈设置在从内存单元60H开始的单元中一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第
二、
三、四工作寄存器区,经常要被使用,这会造成数据的混乱不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。