您的当前位置:首页正文

基于单片机控制的智能小车寻迹系统

2023-04-03 来源:步旅网


青岛理工大学

毕 业 设 计

题目: 基于单片机的智能小车设计

学生姓名: 学生学号: 201385043 院系名称: 机电工程系 专业班级: 指导教师:

2016年6月15日

毕业设计(论文)任务书

专业 班级 132班 姓名 下发日期 2016年1月3日 题目 专题 基于单片机的智能小车设计 STC89C52单片机 主要内容: 本系统以设计题目的要求为目的,采用单片机为控制核心,利用光电等传感器检测道路上的障碍,控制电动小车的自动避障,快慢速行驶,以及自动停车,并可以自动里程和速度,自动寻迹功能。 基本要求: 1.查阅有关资料(单片机、传感器技术、电机驱动与控制等)。 2.熟练掌握单片机开发系统。 3.编写和调试各模块源程序。 4.根据课题要求,进行软、硬件设计并完成课题的设计功能。 主 要 内 容 及 要 求 主 要 技 术 参 数 主要技术指标: 1.设计路程扫描电路,通过A/D转换器把信号输入到单片机中。 2.设计电机驱动电路,实现正转、反转及停车。 3.设计直流电源电路,通过稳压电路把输入电压稳定在5V。 4.单片机外围电路的连接,避免出现虚焊。 进 度 及 完 成 日 期 3月28日———4月11日 查阅相关资料,了解课题研究方向及研究现状。 4月12日———4月19日 完成开题报告。 4月20日———4月27日 完成摘要和目录的撰写。 4月28日———5月06日 画出设计电路图,对设计图纸进行论证研究。 5月07日———5月14日 硬件电路设计。 5月15日———5月22日 编写软件程序。 5月23日———6月06日 对软硬件进行仿真调试。 6月07日———6月15日 完成论文,准备毕业答辩。 日期 教研室主任签字 日期 指导教师签字 日期 系主任签字 2016.1.8 2016.1.7 2016.1.6

指 导 教 师 评 语 指导教师: 2016 年 6 月 15 日

青岛理工大学毕业设计(论文)评阅意见表

设计(论文)题目 评价项目 文献资料利用能力 评价标准(A级) 能独立地利用多种方式查阅中外文献;能正确翻译外文资料;能正确有效地利用各种规范、设计手册等。 基于单片机的智能小车设计 满分 评 分 A 10 10 ≤12 B 9 C 8 D 7 E ≤6 研究方案设计合理;设计方法科学;技术线路先进可行;理论分析和计综合运算正确;动手能力强;能独立完成用能力 设计(论文);能综合运用所学知识发现和解决实际问题;研究结果客观真实。 设计(论文)质量 创新能力 设计(论文)结构严谨;逻辑性强;语言文字表准确流畅;格式、图、表规范;有一定的学术水平或实际价值 有较强的创新意识;所做工作有较大突破;设计(论文)有独到见解 19-20 17-18 15-16 13-14 20 37-40 40 15 15 15 15 32-36 13-14 13-14 28-31 11-12 11-12 25-27 10 10 ≤24 ≤9 ≤9 工作量饱满;圆满完成了任务书所工作量 规定的各项任务。 总分 是否同意将该设计(论文)提交答辩:是( ) 否( ) 具体评阅及修改意见: 评阅人: 2016 年 6 月 16 日 注:1.请按照A级标准,评出设计(论文)各项目的具体得分,并填写在相应项目的评分栏中;

2.计算出总分。若总分<60分,“设计(论文)质量”<24分,建议不能提交论文评阅乃至答辩。

该设计(论文)须限期修改合格后重新申请答辩。 3.评阅意见栏不够可另附页。

答 辩 委 员 会 评 语 该同学按毕业设计任务书独立完成了全部工作量,对毕业设计相关领域的研究情况有比较深入的了解。能独立查阅相关中英文文献,具备有一定的阅读外文资料的能力,并能从中获取各种信息及相关新知识; 论文设计合理、可行的方案。论据正确,计算准确;论文概念清楚,文理通顺,图表规范,结构严谨,结论正确。分析研究方法基本正确,能综合运用专业基础理论、基础知识分析和解决问题。 该生能在规定时间内比较流利、清晰地阐述设计的主要内容,能恰当回答与设计有关的问题。 从完成设计情况来看,文章具有一定的新意,表明作者确已较好地掌握了本门学科的基础理论、专门知识和基本技能。达到了机电一体化专业培养目标要求,答辩小组一致同意通过答辩。 评 定 成 绩 周 记 说明书 (或论文) 图 纸 答 辩 总 评 (5%)

(65%) (30%) 百分制 等级制 答辩委员会主席签字 日 期 2016.6.17 2016.6.17

青岛理工大学毕业设计

摘 要

智能车辆是目前世界车辆研究领域的热点和汽车工业新的增长点。未来的车辆也一定是智能化的车辆。所以,智能化的车辆是未来人们生活重要的载体。因此有必要对智能车辆进行研究。研制一种智能,高效的智能小车控制系统具有重要的实际意义和科学理论价值。本文设计了一个能自动循迹的智能小车控制系统。以STC89C52单片机为控制核心,利用反射式光电传感器检测黑线实现小车循迹,利用超声波传感器检测道路上的障碍并提示,利用LCD1602显示小车的速度和路程。能实现小车自动根据地面黑线前进倒退、转向行驶,超声波测距提示障碍物,LCD1602实时显示小车的速度和行驶的路程,具有高度的智能化,达到设计目标。

关键词:智能小车;STC89C52单片机;超声波传感器;LCD1602

I

青岛理工大学毕业设计

ABSTRACT

Intelligent vehicle is the research hotspot in the field of vehicle and auto industry a new growth point. Vehicle also must be intelligent vehicle in the future. So, the intelligent vehicle is an important carrier of the future life. So it is necessary to study of intelligent vehicle. Developing a smart, efficient intelligent car control system has important practical significance and scientific theory value. This paper designed a smart car control system can automatically tracking. STC89C52 single-chip microcomputer as control core, the use of reflection type photoelectric sensor detecting the black car tracking, using the ultrasonic sensor to detect obstacles on the road and prompt, using the LCD1602 display the car's speed and distance. Can realize the car automatically according to the black line on the ground backward, steering, ultrasonic ranging prompt obstacles, LCD1602 real-time display the speed of the car and drive away, highly intelligent, meet the design goals.

Key Words: Smart car;STC89C52 MCU; ultrasonic sensor;LCD1602

II

青岛理工大学毕业设计

目 录

摘 要............................................................... I ABSTRACT........................................................... II 第1章 方案设计与论证............................................... 2

1.1 主控系统 .................................................... 2

1.1.1 电源模块 ............................................... 2 1.2 电机驱动模块 ................................................ 2

1.2.1 电机模块选择与论证 ..................................... 2 1.2.2电机驱动模块选择与论证.................................. 3 1.3 循迹模块 .................................................... 4 1.4 测速模块 .................................................... 4 1.5 显示模块 .................................................... 5 1.6避障模块..................................................... 6 第2章 硬件设计..................................................... 7

2.1 总体设计 .................................................... 7 2.2 驱动电路 .................................................... 7 2.3 信号检测电路 ............................................... 10 2.4 测速电路 ................................................... 11 2.5 显示电路 ................................................... 11 2.6 主控电路 ................................................... 12 第3章 软件设计.................................................... 15

3.1 主程序模块的设计 ........................................... 15

3.1.1 主程序的流程图 ........................................ 15 3.1.2 主程序的设计 .......................................... 15 3.2 电机驱动程序的设计 ......................................... 16

3.2.1 电机驱动程序流程图 .................................... 16 3.2.2 电机驱动程序的设计 .................................... 17 3.3 循迹模块程序的设计 ......................................... 18

3.3.1 循迹模块流程图 ........................................ 18 3.3.2 循迹模块子程序设计 .................................... 19 3.4 测距避障模块程序的设计 ..................................... 19

3.4.1 测距模块流程图 ........................................ 19 3.4.2 测距模块程序设计 ...................................... 20

III

青岛理工大学毕业设计

3.5 显示模块程序的设计 ......................................... 21

3.5.1 显示模块流程图 ........................................ 21 3.5.2 显示程序设计 .......................................... 22

第4章 制作安装与调试.............................................. 24

4.1 软件程序的调试 ............................................. 24 4.2 硬件电路的焊接与调试 ....................................... 24 致 谢.............................................................. 26 参考文献........................................................... 27 附录1原理图....................................................... 28 附录2源程序....................................................... 29 附录3 ............................................................. 36

IV

青岛理工大学毕业设计

前 言

智能的出现,为我们的生活和生产带来了很大的便利,同时也是以后的发展方向,智能就是可以在一个特定的环境中按照我们前面设定好的模式去自动的运作,它并不需要我们去人为的管理,就可以达到我们前面设定的目标,它的应用领域很广,如可以应用于工业控制、科学勘探、智能家居等领域。而智能小车就是智能的一个简单的应用,智能小车就是智能化玩具中的一种,由于这类智能玩具具有较好的交互性,可控性,能够按照人们设定的模式去自动运作也深受人们的喜欢。另外,智能小车还可以应用于危险搜索、机器人等许多方面,尤其在机器人方面具有很好的发展前景。因此,智能化小车的研究不仅具有很大的现实意义,还具有极为广阔的应用前景和市场价值。

智能小车的研究、开发和应用涉及传感技术、电气技术、电气控制技术、智能控制等学科,智能控制技术是一门跨科学的综合性技术,当代研究十分活跃,应用日益广泛的领域。众所周知机器人技术的发展是一个国家高科技水平和工业自动化程度的重要标志和体现。因此目前世界各国都在开展对机器人技术的研究。机器人由于有很高的灵活性、可以帮助人们提高生产率、改进产品质量等优点,在世界各地的生产生活领域得到了广泛的应用。智能小车正是模仿机器人的一种尝试。它是一种以汽车电子为背景,涵盖多学科的科技创新性设计,一般主要由路径识别、速度采集、角度控制以及车速控制等模块组成。这种智能小车能够自动搜寻前进路线,还能爬坡,感知前方的障碍物,并自动寻找前进方向,避开障碍物。另外如果加入相关声光讯号后,更能体现出智能化和人性化的一面。

1

青岛理工大学毕业设计

第1章 方案设计与论证

1.1 主控系统

由于单片机具有价格低廉,资源丰富、有较为强大的控制功能,故本次设计采用STC89C52单片机作为整个系统的核心,用其控制行进中的小车以实现其既定的性能指标。STC89C52是一个超低功耗的增强型51单片机,和标准51系列单片机相比较它的运算速度更快,有超强的抗干扰能力,同时还支持ISP在线编程,片上集成了512字节的随机存取数据存储器(RAM),并且片内含8k字节空间的可以反复擦写1000次的Flash只读存储器, 32个I/O口,以及3个16位可编程定时计数器。其指令系统和传统的8051系列单片机指令系统完全兼容,降低了系统软件设计的难度,电路设计简单、价格低廉,在后来的实验中我们发现,STC89C52精确度和运算速度也都完全符合我们系统的要求。

1.1.1 电源模块

由于本系统需要给整个智能小车系统供电,考虑了以下几种方案: 方案一:采用4节1.2V可充电电池组。在电充满时4节电池电压可以达到5V且可充电电池组具有较强的电流驱动能力及稳定的电压输出性能,但是直流电机工作时会对LCD1602显示造成干扰,使其显示不稳定。故放弃此方案。

方案二:使用双电源供电,将9V可充电方块电池电压降压、稳压到5V后给单片机系统和LCD1602及其它芯片供电。另外采用4节1.2V可充电电池组为直流电机供电,经测试在用此种供电方式下,单片机和传感器工作稳定,直流电机工作良好,LCD显示也很稳定,小车也能长时间工作。

综上考虑,我们选择了方案二来完成智能小车整个系统的供电。

1.2 电机驱动模块

1.2.1 电机模块选择与论证

方案一:使用步进电机作为智能小车系统的驱动电机,因为步进电机的转动

2

青岛理工大学毕业设计

角度可以精确的定位,这样就可以比较精确的定位小车的前进距离和位置。但是由于步进电机的输出力矩偏低,并且会随着电机转速的升高而下降,在达到较高的转速时其输出的力矩会急剧下降,因此不适于小车等对速度有着一定要求的系统。经过综合分析比较决定放弃此方案。

方案二:使用直流减速电机作为智能小车系统的驱动电机。直流减速电机的转动力矩比较大,而且体积较小,重量也很轻,使用方便。另外小车电机内部还装有减速齿轮组,所以并不需要去考虑调速的功能,可以很方便的通过单片机来控制直流减速电机的正传、反转、停止操作。

综合以上考虑选择方案二的直流减速电机作为整个智能小车的驱动电机。 1.2.2电机驱动模块选择与论证

方案一:采用继电器对电动机进行控制,通过切换电动机的开关来调整小车的速度。这个方案的优点是电路相对比较简单,但是它的缺点也比较多,如:继电器的响应时间偏慢, 寿命较短,容易损坏,可靠性也不是很高。故决定放弃此方案。

方案二:采用专用的电机驱动芯片L298N来控制直流减速电机, L298N芯片(如图1.1)是一个具有高电压大电流的全桥驱动芯片,一片L298N芯片可以分别的控制两个直流减速电机,在6~46V的电压下,可以提供2A的额定电流,并且具有过热自动关断和电流反馈检测功能,安全可靠。该芯片是利用TTL电平进行控制的。通过单片机的IO口输出高低电平来改变芯片控制端的输入电平,即可以实现对电机进行正转、反转和停止操作。另外为了保证L298N的正常工作,我还安装了8个续流二极管1N4007。用该芯片作为电机驱动,驱动能力大、操作方便、稳定性好、性能优良。

综合以上分析与论证我们选择方案二的驱动芯片L298N作为整个智能小车系统的电机驱动电路。

图1.1 L298N

3

青岛理工大学毕业设计

1.3 循迹模块

方案一:用光敏电阻来探测。光敏电阻的阻值会随着周围环境光线的变化而变化。因此当光敏电阻在黑色轨迹的上方和白色轨迹的上方时,阻值会发生较为明显的变化。将阻值的变化值输入到电压比较器就可以输出高低电平。单片机就可以根据反馈来的不同的电平信号,发出相应的控制操作命令来控制小车的左转,右转,前进或者停止。但实际效果并不理想,误测几率偏大、容易受外界的光线环境的影响,不能够稳定的工作。因此考虑其它更加稳定的方案。

方案二:采用红外反射式光电管完成系统循迹。TCRT5000(如图1.2)是一种一体化反射型光电探测器,传感器采用高发射功率红外光电二极管和高灵敏度光电晶体管组成,其发射器是一个砷化镓红外发光二极管,而接收器是一个高灵敏度,硅平面光电三极管。它是利用了光的反射原理,当光线照射在白纸上,反射量会比较大,反之,当光照射在黑色物体上,反射回去的量比较少,因为黑色会吸收光,这样就可以判断黑胶带带轨道的走向。采用红外线发射,外面可见光对接收信号的影响较小,利用红外对管对黑线边界进行检测,再用LM393对检测信号进行比较,取反,送单片机进行处理。此光电对管电路简单,工作性能稳定。

经测试方案二不论是在黑暗或者是强光照射下,智能小车系统均可以很稳定的工作,对外界环境的适应能力比较强。因此我们选择方案二。

图1.2 TCRT5000

1.4 测速模块

方案一:采用霍尔传感器检测轮子上的小磁铁从而给单片机中断脉冲,通过

4

青岛理工大学毕业设计

单位时间内对脉冲的计数通过公式就可以算出实时的车速,达到测量速度的作用。霍尔元件具有体积小,动态特性好,频率响应宽度大,对外围电路要求简单,使用寿命长,安装方便,价格低廉等特点。但是需要和磁钢配对使用比较麻烦。

方案二:采用光电码盘,即透射式光电传感器(凹槽型如图1.3 )进行测速。槽型光耦是由红外发光管和光敏三极管构成的,工作时红外发光管发出红外光线透过光耦的槽投射到光敏三极管上,光敏三极管导通,集电极输出低电平。当红外光线被检测物遮断时,光敏三极管截止,集电极输出高电平。遮挡一次槽型光耦输出一个脉冲,因此脉冲的个数就是被检测物的数量。车轮转动时带动码盘转动,单片机内部计时可测出给定的时间内通过的脉冲数,从而测出小车的实时速度。使用方便,抗干扰性较强。

通过比较方案一和方案二的优缺点,综合多方面因素决定选用方案二。

图1.3 槽型光电传感器

1.5 显示模块

方案一:采用LED数码管显示。数码管使用简单,价格低廉,但一个数码管只能显示一个数字,要显示多位数据时要使用多个数码管,这就增加了硬件电路的复杂度和额外功耗,而且LED数码管也无法显示字符。由于我们计划要显示小车运行的速度和路程,LED数码管没办法显示这么多的内容,因此考虑其它的方案。

方案二:采用LCD1602液晶(如图1.4 )显示。LCD1602液晶具有功耗低,显示内容丰富清晰,显示信息量大,显示速度较快,界面友好,使用简单等特点而得到了广泛的应用。并且外围电路也比较简单,因此我们选择此方案。

通过以上方案论述我们选择方案二,显示小车运行速度和路程的任务。

5

青岛理工大学毕业设计

图1.4 LCD1602液晶显示器

1.6避障模块

方案一:用漫反射式光电开关进行避障。光电开关的工作原理是根据光线发射头发出的光束,被物体反射,其接收电路据此做出判断反应,物体对红外光由同步回路选通而检测物体的有无。当有光线反射回来时,输出低电平。当没有光线反射回来时,输出高电平。操作简单但是测量的距离不远。

方案二:用超声波传感器进行测距避障。超声波传感器的原理是:超声波由压电陶瓷超声波传感器发出后,遇到障碍物便反射回来,然后再被超声波传感器接收。超声波传感器在避障的设计中被广泛应用。为了使用方便,便于操作和调试,采用集成超声波测距模块HC-SR04(如图1.5 )。

综合考虑本系统只需要检测障碍物,没有十分复杂的环境。为了使用的方便,便于操作和调试,最终选择了方案二。

图1.5 HC-SR04超声波测距模块

6

青岛理工大学毕业设计

第2章 硬件设计

2.1 总体设计

智能小车采用前轮驱动,前轮左右两边各用一个电机驱动,通过电机驱动芯片L298N来控制前面两个轮子的转动与停止从而达到控制转向的目的,后轮是万向轮,起支撑转向作用。将4个红外光电传感器装在车体底盘的前端,小车根据传感器检测的情况来循迹前进。

小车速度的检测通过槽型光电传感器,将码盘装在电机的轴上,码盘跟随电机一起转动,将检测到的数据传回单片机进行处理。

小车的避障用超声波避障模块HC-SR04,将其置于车头,检测到障碍物时,小车做出相应的反应。

总体设计框图如图2.1。

图2.1 总体设计框图

2.2 驱动电路

电机驱动芯片采用L298N,是一款承受高压大电流的全桥型直流/步进电压驱动器,如下图2.2。

7

青岛理工大学毕业设计

图2.2电机控制芯片L298N的引脚排列

其中L298N各引脚的编号与功能和内部逻辑如下表2-1和图2.3。

表2-1 L298N引脚编号与功能

引脚编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 名称 电流传感器A 输出引脚1 输出引脚2 电机电源端 输入引脚1 使能端A 输入引脚2 逻辑地 逻辑电源端 输入引脚3 使能端B 输入引脚4 输出引脚3 输出引脚4 电流传感器B 功能 在该引脚和地之间接小阻值电阻可用来检测电流 内置驱动器A的输出端1,接至电机A 内置驱动器A的输出端2,接至电机A 电机供电输入端,电压可达46V 内置驱动器A的逻辑控制输入端1 内置驱动器A的使能端 内置驱动器A的逻辑控制输入端2 逻辑地 逻辑控制电路的电源输入端为5V 内置驱动器B的逻辑控制输入端1 内置驱动器B的使能端 内置驱动器B的逻辑控制输入端2 内置驱动器B的输出端1,接至电机B 内置驱动器B的输出端2,接至电机B 在该引脚和地之间接小阻值电阻可用来检测电流 8

青岛理工大学毕业设计

图2.3 L298N内部原理图

电机驱动A/B的控制逻辑如下表所示。

表2-2 电机驱动A/B的控制逻辑

输入信号 使能端A/B 1 1 1 1 0 输入引脚1/3 1 0 1 0 X 输入引脚2/4 0 1 1 0 X 前进 后退 紧急停车 紧急停车 自由转动 电机运动方式 L298N可直接对电机进行控制,不需要隔离电路。通过单片机的I/O输入改芯片控制端的电平,即可以对电机进行正反转,停止的操作,操作非常方便,亦能满足直流减速电机的大电流要求。调试时依照上表,用程序输入对应的码值,即可以实现对应的操作。其驱动电路原理图如下图2.4所示。

9

青岛理工大学毕业设计

图2.4 L298N驱动原理图

2.3 信号检测电路

小车循迹的原理是在铺有约四厘米宽黑胶带的白纸 “路面”上行驶,由于黑纸和白色路面对光线的反射系数不同,可以根据接收的反射光的强弱来判断道路——黑纸轨迹。本设计采用简单易用,应用也较为普遍的红外探测法。

红外探测法,即用红外线在不同颜色的物表面具有不同的反射性质的特点。在小车行驶过程中传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,光敏三极管一直处于关断状态,此时模块的输出端为低电平,当红外线遇到白色地面时发生漫反射,红外线被反射回来反射光被装在小车上的接收管接收且强度足够大,光敏三极管饱和,此时模块的输出端为高电平;如果遇到黑纸则红外光被吸收,小车上的接收管接收不到信号,再通过LM393作比较器来采集高低电平,从而实现信号的检测。避障亦是此原理。

通过设计了如图2.5所示的电路来检测,图中R18为限流电阻,当有光反射

10

青岛理工大学毕业设计

回来时,光电传感器的三极管导通,在LM393的2脚出产生低电平电压,通过LM393处理后在P1.0出产生高电平,返回给单片机,从而达到检测的目的。并通过变阻器RV1可调节传感器的灵敏度。

图2.5 循迹原理图

2.4 测速电路

采用透射式光电传感器(凹槽型)进行测速。槽型光耦是由红外发光管和光敏三极管构成的,将码盘安装在电机轴上,当电机转动时,码盘也随之转动。工作时红外发光管发出红外光线透过光耦的槽投射到光敏三极管上,光敏三极管导通,集电极输出低电平。当红外光线被检测物遮断时,光敏三极管截止,集电极输出高电平。遮挡一次槽型光耦输出一个脉冲,因此脉冲的个数就是被检测物的数量。车轮转动时带动码盘转动,单片机内部计时可测出给定的时间内通过的脉冲数,从而测出小车的实时速度。其电路原理图与循迹原理图类似。如图2.6所示。

图2.6 测速电路原理图

2.5 显示电路

用LCD1602来显示数据,LCD液晶具有功耗低、显示内容丰富、清晰,显

11

青岛理工大学毕业设计

示信息量大,显示速度较快等特点。其中用滑动变阻器RV0来调节显示器的背光亮度。电路原理图如下图2.7。

图2.7 显示电路原理图

2.6 主控电路

单片机是控制单元的核心。起着控制小车所有运行状态的作用。单片机控制模块使用的是宏晶公司生产的STC89C52,使用该芯片很容易实现对其它模块的控制。通过对单片机STC89C52写入程序,可以方便的用软件来控制,整个过程的控制部分如图2.8所示。

图2.8 单片机最小系统

12

青岛理工大学毕业设计

STC89C52单片机最小系统包括了晶振电路,电源电路以及复位电路,其中复位电路的复位按键用于小车的复位。P1.3~P1.7分别控制电机驱动。其它P口用外接控制小车的各种控制开关,P0口外接上拉电阻,可用于外接LCD1602。

STC89C52 单片机介绍:

STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:

1、增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。

2、工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz。

3、工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机) 4、片上集成512字节RAM,用户应用程序空间为8K字节。

5、ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片。

6、通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

7、具有看门狗功能,具有EEPROM功能。

8、共3个16位定时器/计数器。即定时器T0、T1、T2。

9、外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒。

10、通用异步串行口(UART),还可用定时器软件实现多个UART。 11、工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)PDIP封装。 STC89C52单片机的引脚图如下图2.9。

13

青岛理工大学毕业设计

图2.9 STC89C52RC引脚图

另外STC单片机有两种时钟模式,一种是单倍速,也就是12时钟模式,在该模式下,STC单片机与其他公司51系列单片机具有相同的机器周期,即12个振荡周期为一个机器周期;另一种是双倍速,又称6时钟模式,在该模式下,STC单片机比其他公司的51单片机运行速度快一倍。

14

青岛理工大学毕业设计

第3章 软件设计

3.1 主程序模块的设计

3.1.1 主程序的流程图

图3.1 主程序流程图

在图3.1主程序流程图中,开始时先是单片机的初始化,包括定时器初始化,外部中断的初始化,液晶的初始化。然后调用循迹子程序,小车循迹前进,如果定时时间到了则调用超声波模块子程序,判断前方50cm处是否有障碍物,如果有的话led闪烁,如果检测到停止线则小车停止。

3.1.2 主程序的设计

void main()

{ Timer_Init(); //定时器初始化 INT0_Init(); //外部中断初始化 LCD_Init(); //LCD1602初始化 TR1=1; //启动定时器 lcd_write_cmd(0x80); LED1 = 1; LED2 = 1; while(1) { PWM(); //pwm调速

15

青岛理工大学毕业设计

track(); //调用循迹子程序 lcd_write_cmd(0x80+0x09); lcd_write_dat(qian);

lcd_write_cmd(0x80+0x0a); lcd_write_dat(bai2);

lcd_write_cmd(0x80+0x0b); lcd_write_dat(shi2);

lcd_write_cmd(0x80+0x0c); lcd_write_dat(ge2);

lcd_write_cmd(0x80+0x47); lcd_write_dat(bai1);

lcd_write_cmd(0x80+0x48); lcd_write_dat(shi1);

lcd_write_cmd(0x80+0x49); lcd_write_dat(ge1); if(flag1==1&&flag2==1) { csb(); //调用超声波子程序 flag1=0; } }}

3.2 电机驱动程序的设计

3.2.1 电机驱动程序流程图

图3.2 电机驱动程序流程图

16

青岛理工大学毕业设计

电机驱动程序流程图如上图3.2,开始先检测小车的状态如果相对黑线是直的,则调用直走子程序,即左右两个电机都正转;如果小车偏向黑线的左边则调用向右走子程序,即左电机正转右电机反转;如果小车偏向黑线的右边则调用向左走子程序,即左电机反转右电机正转;如果小车完全偏离黑线则调用向后退子程序,即两个电机都反转;如果小车到终点了则调用停止子程序,即两个电机都不转。

3.2.2 电机驱动程序的设计

void goahead() //小车直走 { IN1 = 1; IN2 = 0; IN3 = 1; IN4 = 0; }

void goback() //小车后退 { IN1 = 0; IN2 = 1; IN3 = 0; IN4 = 1; }

void turnright() //小车向右转 { IN1 = 1; IN2 = 0; IN3 = 0; IN4 = 1; }

void turnleft() //小车向左转 { IN1 = 0; IN2 = 1; IN3 = 1; IN4 = 0; }

void zw_turnright() //用于转弯时的左转 { IN1 = 1; IN2 = 0; IN3 = 0; IN4 = 0; }

void zw_turnleft() //用于转弯时的右转 { IN1 = 0; IN2 = 0; IN3 = 1;

17

青岛理工大学毕业设计

IN4 = 0; } void stop() //小车停止 { IN1 = 0; IN2 = 0; IN3 = 0; IN4 = 0; }

void PWM(void) //小车调速 { PWM_ENA = 1; PWM_ENB = 1; delayXms(H); PWM_ENA = 0; PWM_ENB = 1; delayXms(L); PWM_ENA = 0; PWM_ENB = 0; delayXms(N); }

3.3 循迹模块程序的设计

3.3.1 循迹模块流程图

图3.3 循迹模块流程图

在图3.3循迹模块流程图中,通过检测P1口第四位的电平并把它赋给变量

18

青岛理工大学毕业设计

temp然后用switch-case语句来根据P1口低四位的电平,给出相应的电平送到电机驱动芯片L298N去,从而控制小车的直走,左转,右转,后退,停止等动作。

3.3.2 循迹模块子程序设计

void track( void )

{ uchar temp = 0;

temp = P1 & 0x0f; //取P1口低四位赋给变量temp switch( temp )

{ case 0x09:

goahead(); //直走 case 0x0c: case 0x0e: turnleft();//左转 break; case 0x03: case 0x07:

turnright();//右转 break; case 0x0f:

goback();// 后退 break; case 0x00: stop(); //停止 break; case 0x08:

zw_turnleft();//用于直角转弯时的左转 delayXms(20); break; case 0x01: zw_turnright(); //用于直角转弯时的右转 delayXms(20); break; default: break; } }

3.4 测距避障模块程序的设计

3.4.1 测距模块流程图

19

break; 青岛理工大学毕业设计

图3.4 测距模块流程图

测距模块流程图如图3.4,开始时单片机先给超声波测距模块Trig端发送一个高电平且这个高电平要持续20us,然后再给Trig端发送一个低电平,即启动了超声波测距模块,超声波测距模块会自动发送8个40KHZ的方波,等待是否有信号返回,如果有信号返回会通过IO口超声波测距模块的Echo端输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间,测试距离=(高电平时间*340)/ 2,单位为m。如果距离小于50cm,车前的两个LED灯闪烁提示,如果距离小于7cm,小车自动停下。

3.4.2 测距模块程序设计

void csb() { TH0=0; TL0=0; TX=1; //Trig发送端发出一个高电平 delay_20us(); //延时20us TX=0; //Trig发送端发出一个低电平 while(RX==0); //等待接收端为高电平 TR0=1; //启动定时器

20

青岛理工大学毕业设计

while(RX); //等待接收端为低电平 TR0=0; //关闭定时器 time=TH0*256+TL0; juli=time*0.017; // (1/(12*1000000))*340*12*100/2得到的是距离单位为cm ; if(juli<=7) { stop(); LED1 = !LED1; LED2 = !LED2; delayXms(100); flag3=1; } else if((juli>5)&&(juli<=50)) { LED1 = !LED1; LED2 = !LED2; delayXms(100); flag3=0; } else if(juli>50) { LED1=1; LED2=1; flag3=0; }}

3.5 显示模块程序的设计

3.5.1 显示模块流程图

图3.5 显示模块流程图

21

青岛理工大学毕业设计

图3.5 为显示模块流程图,先是初始化LCD1602然后在液晶的第一行显示\"Journey: cm\"液晶第二列显示\"Speed: mm/s \"然后在主程序不断的调用显示程序刷新cm或者mm前面的数字。

3.5.2 显示程序设计

bit lcd_busy() //判忙函数 { bit result; RS=0; RW=1; E=1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0&0x80); E=0; return result;

}void lcd_write_cmd(uchar cmd) { while(lcd_busy()); RS=0; RW=0; E=0; _nop_(); _nop_(); P0=cmd; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; }

void lcd_write_dat(uchar dat) { while(lcd_busy()); RS=1; RW=0; E=0; P0=dat; _nop_(); _nop_();

//液晶写指令 //液晶写数据指令 22

青岛理工大学毕业设计

_nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; } void LCD_Init() ///液晶初始化指令 { delayXms(12); lcd_write_cmd(0x38); delayXms(4); lcd_write_cmd(0x0c); delayXms(4); lcd_write_cmd(0x06); delayXms(4); lcd_write_cmd(0x01); delayXms(4); lcd_write_cmd(0x80); for(i=0;i<16;i++) //液晶第一列显示\"Journey: lcd_write_dat(display1[i]); lcd_write_cmd(0x80+0x40);//液晶第二列显示\"Speed: for(i=0;i<16;i++) lcd_write_dat(display2[i]); }

23

mm\" mm/s \" 青岛理工大学毕业设计

第4章 制作安装与调试

4.1 软件程序的调试

软件调试的任务是利用ISIS开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现仿真结果故障。程序的调试是一个模块一个模块地进行的,从最简单的程序开始,先画好单片机最小系统烧录一个最简单的点亮led的程序看单片机最小系统仿真电路是否连接正确了,是否后慢慢的调试和扩充。我们首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来总调。

仿真图如图4.1所示:

图4.1 智能小车仿真图

4.2 硬件电路的焊接与调试

在硬件电路焊接中,由于需要焊接的模块较多,为了提高调试的效率,将整个系统分成多个部分进行焊接和调试。开始一个模块设计之前和完成一个模块设计之后都要进行测试。在动手之前务必查清楚所用元件资料,对于稍微复杂一点

24

青岛理工大学毕业设计

的电路 ,之前可以先搭建其中的一部分电路,测试一下是否正常,然后再进行总的电路设计。这样循序渐进设计可以节省时间并且保证电路的正确性。另外电路设计之后的测试也同样重要,特别是和程序有关的外围检测、驱动等模块,如果不排除硬件故障在调试的时候很难分清到底是硬件还是软件的问题,因此硬件设计完成之后首先需要测试硬件能够正常工作,这样在遇到问题时才能够排除硬件的干扰找出问题的所在。

对小车的整体的调试按照模块来进行,分为以下几个步骤: ①首先测试电源的工作情况,各个模块能否得到良好供电。 ②然后检查单片机能否正常的烧写程序和工作。

③光电管安装完成后根据测试数据调节电位器选择合适的参考电压。 ④测试两前轮电机的工作情况,并试验电机的驱动能力。 ⑤让小车在黑色轨道上初步循迹运行。

⑥反复测试各参数变化对小车的影响,找出最有效的配置。

⑦对小车运行过程中各种可能出现的情况测试,发现问题,找出解决方法。 ⑧整理数据,优化程序设计。

经过多次调试,本系统能够基本满足设计要求,能够较快较平稳的沿黑色路

面行驶。

25

青岛理工大学毕业设计

致 谢

毕业论文暂告收尾,这也意味着我在大学学习生活既将结束。回首既往,自己一生最宝贵的时光能于这样的校园之中,能在众多学富五车、才华横溢的老师们的熏陶下度过,实是荣幸之极。在这三年的时间里,我在学习上和思想上都受益非浅。这除了自身努力外,与各位老师、同学和朋友的关心、支持和鼓励是分不开的。

在毕业论文设计过程中,我遇到了许许多多的困难。在此我首先要感谢我的指导老师张强老师给我悉心的帮助和对我耐心而细致的指导,并提出了很多宝贵的修改意见。除了敬佩张老师的专业水平以外,他的踏踏实实和一丝不苟的作风是我学习和工作的榜样,并将积极影响我今后的学习和工作。并且他循循善诱的指导和独特新颖的创意,给了我莫大的帮助。这次做毕业设计的经历也会使我终身受益,我感受到做毕业设计是要真真正正用心去做的一件事情,是真正的自己学习和设计的过程。

在此,我还要感谢大学三年传授我们专业知识的所有老师。同时感谢我院、系领导对我们的教导和关注,并提供了良好的学习环境,使我们能够在此专心学习,陶冶情操。

大学三年的生活已经接近尾声,回首已经走过的岁月,心中感慨万千。在论文即将完成之际,我的心情久久不能平静。从开始到现在都有老师同学和父母给了我无限的关心和指导,祝各位老师工作顺利,身体健康。最后感谢我的母校—青岛理工大学三年来对我的大力栽培!

感谢评阅老师百忙之中抽出时间对本论文进行了评阅!

26

青岛理工大学毕业设计

参考文献

[1] 李瀚霖等. 智能小车研究与设计[J]. 科技致富向导, 2011(26):29-30. [2] 王志良. 竞赛机器人制作技术[M]. 北京: 机械工业出版社, 2007:35-40.

[3] 韩毅, 杨天. 基于HCS12单片机的智能寻迹模型车的设计与实现[J]. 学术期刊, 2008(18):1535-1955.

[4] 王晓明. 电动机的单片机控制[J]. 学术期刊, 2002(15):1322-1755.

[5] 温子祺等. 51单片机C语言创新教程[M]. 北京: 北京航航天大学出版社, 2011:34-36. [6] 何晔. 基于AT89S52单片机自动避障自动追光小车新设计[J]. 科技致富向导, 2011(13):13-15.

[7] 张毅刚,彭喜元,彭宇. 单片机原理及应用[M]. 北京: 高等教育出版社,2010:38-41. [8] 赵海兰. 基于单片机的红外遥控智能小车的设计[J]. 无线互联科技, 2011(3):111-115. [9] 姚培等. 基于单片机控制的智能循迹避障小车[J]. 机电信息,2010(12):1222-1225. [10] 于连国,李伟,王妍玮. 基于单片机的智能小车设计[J]. 林业机械与木工设备, 2011(4):22-24.

[11] 赵振德. 多功能遥控智能小车的制作[J]. 电子制作, 2011(4):11-13. [12] 胡汉才. 单片机原理与接口技术[M]. 北京:清华大学出版社,1999:58-61.

[13] Victor P. Nelson ,Digital Logical Circuits Analysis & Design ,Prentice Hall,2003年6月出版, 40-94

[14] M.Morris Mano 《Digital Design》(Third Edition)Higher EducationPress 2002 [15] StevenF.Barrett,Daniel J.Pack.Embedded System[M].北京:电子工业出版社,2006

27

青岛理工大学毕业设计

附录1原理图

28

青岛理工大学毕业设计

附录2源程序

#include //包含头文件,头文件包含特殊功能寄存器的定义 #include //Keil外部函数库包含文件,_nop_函数在此库中 #define uint unsigned int #define uchar unsigned char #define ulong unsigned long

#define diameter 60 //码盘直径

#define disc 20 //码盘栅格数20个即20个脉冲是一圈 #define H 100 #define L 10 #define N 20 uint i,n,m,time=0;

uchar bai1,shi1,ge1,qian,bai2,shi2,ge2,flag1=0,flag2=1; ulong speed,count1,count2,journey,juli; //以下是定义端口

sbit PWM_ENA = P3^0; sbit PWM_ENB = P3^1; sbit IN1 = P1^4; sbit IN2 = P1^5; sbit IN3 = P1^6; sbit IN4 = P1^7; sbit RS=P2^5; sbit RW=P2^6; sbit E =P2^7; sbit LED1 = P2^0; sbit LED2 = P2^1; sbit TX=P3^6; //超声波模块Trig触发信号控制端 sbit RX=P3^7; //接收回波控制端 uchar display1[]={\"Journey: mm\uchar display2[]={\"Speed: mm/s \void delay_20us() //延时20us { int a; a=2; while(a>0) a--; }

void delay1ms(void) //延时1ms { uint j;

for(j=0;j<=120;j++) { _nop_(); } }

void delayXms(uint ms)延时n毫秒

29

青岛理工大学毕业设计

{ uint k; for(k=0;kbit lcd_busy() //判忙函数 { bit result; RS=0; RW=1; E=1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0&0x80); E=0; return result; }

void lcd_write_cmd(uchar cmd) { while(lcd_busy()); RS=0; RW=0; E=0; _nop_(); _nop_(); P0=cmd; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; }

void lcd_write_dat(uchar dat) { while(lcd_busy()); RS=1; RW=0; E=0; P0=dat; _nop_(); _nop_();

//液晶写指令 //液晶写数据指令30

青岛理工大学毕业设计

_nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; }

void LCD_Init() ///液晶初始化指令 { delayXms(12); lcd_write_cmd(0x38); delayXms(4); lcd_write_cmd(0x0c); delayXms(4); lcd_write_cmd(0x06); delayXms(4); lcd_write_cmd(0x01); delayXms(4); lcd_write_cmd(0x80);

for(i=0;i<16;i++) //液晶第一列显示\"Journey: mm\" lcd_write_dat(display1[i]); lcd_write_cmd(0x80+0x40);//液晶第二列显示\"Speed: mm/s \" for(i=0;i<16;i++) lcd_write_dat(display2[i]); }

void Timer_Init() //定时器0和定时器1初始化函数 { TMOD=0x11; ET0=1; TR0=0; ET1=1; EA=1; TH1 = (65535-50000)/256; //初使加载50毫秒 TL1 = (65535-50000)%256; }

void INT0_Init() //外部中断0初始化 { IT0 = 1; EX0 = 1; EA = 1; }

void EXT_INT0(void) interrupt 0 //外部中断0中断处理函数 { count1++; count2++; }

31

青岛理工大学毕业设计

void T0_time() interrupt 1 //定时器0中断处理函数 { TH0=0; TL0=0; }

void T1_time() interrupt 3 //定时器1中断处理函数 { TR1=0; TH1 = (65535-50000)/256; TL1 = (65535-50000)%256; n++; m++; if(m==2) { m=0; flag1=1; } if(n==20) //定时2秒(40个50ms为1秒) { n=0;

journey = count2 * 3.14* diameter/disc/10 ; //路程等于总脉冲输除以栅格数乘以周长单位cm qian = (journey/1000)+48; bai2 = (journey%1000/100)+48; shi2 = (journey%1000%100/10)+48; ge2 = (journey%1000%100%10)+48; speed=count1*3.14* diameter/disc/2 ;//单位是mm/s因为定时两秒所以除以2 bai1 = (speed/100)+48; shi1 = (speed%100/10)+48; ge1 = (speed%100%10)+48; count1=0; } TR1=1; }

void goahead() //小车直走 { IN1 = 1; IN2 = 0; IN3 = 1; IN4 = 0; }

void goback() //小车后退 { IN1 = 0; IN2 = 1; IN3 = 0; IN4 = 1; }

void turnright() //小车向右转 { IN1 = 1; IN2 = 0; IN3 = 0;

32

青岛理工大学毕业设计

IN4 = 1; }

void turnleft() //小车向左转 { IN1 = 0; IN2 = 1; IN3 = 1; IN4 = 0; }

void zw_turnright() //用于转弯时的左转 { IN1 = 1; IN2 = 0; IN3 = 0; IN4 = 0; }

void zw_turnleft() //用于转弯时的右转 { IN1 = 0; IN2 = 0; IN3 = 1; IN4 = 0; } void stop() //小车停止 { IN1 = 0; IN2 = 0; IN3 = 0; IN4 = 0; }

void PWM(void) //小车调速 { PWM_ENA = 1; PWM_ENB = 1; delayXms(H); PWM_ENA = 0; PWM_ENB = 1; delayXms(L); PWM_ENA = 0; PWM_ENB = 0; delayXms(N); }

void track( void )

{ uchar temp = 0;

temp = P1 & 0x0f; //取P1口低四位赋给变量temp switch( temp )

{ case 0x09:

goahead(); //直走 break; case 0x0c: case 0x0e:

33

青岛理工大学毕业设计

turnleft();//左转 break; case 0x03: case 0x07:

turnright();//右转 break; case 0x0f:

goback();// 后退 break; case 0x00: stop(); //停止 break; case 0x08: zw_turnleft();//用于直角转弯时的左转 delayXms(20); break; case 0x01: zw_turnright(); //用于直角转弯时的右转 delayXms(20); break; default: break; }}

void csb() //超声波模块检测子函数 { TH0=0; //重新装初值 TL0=0; TX=1; //触发一次 delay_20us(); //延时,for(i=0;i<100;i++)_nop_(); TX=0; while(RX==0); //没接收到回波时等待 TR0=1; //接收到回波打开定时器 while(RX); //回波没结束等待 TR0=0; //接收到回波后关闭定时器 time=TH0*256+TL0; juli=time*0.017; //(1/(12*1000000))*340*12*100/2得到的是距离单位为cm if(juli<=7) { stop(); LED1 = !LED1; LED2 = !LED2; delayXms(100); flag3=1; } else if((juli>5)&&(juli<=50)) { LED1 = !LED1; LED2 = !LED2;

34

青岛理工大学毕业设计

delayXms(100); flag3=0; } else if(juli>50) { LED1=1; LED2=1; flag3=0; }} void main() { Timer_Init(); //定时器初始化 INT0_Init(); //外部中断初始化 LCD_Init(); //LCD1602初始化 TR1=1; //启动定时器 lcd_write_cmd(0x80); LED1 = 1; LED2 = 1; while(1) { PWM(); track(); //调用循迹子程序 lcd_write_cmd(0x80+0x09); lcd_write_dat(qian); lcd_write_cmd(0x80+0x0a); lcd_write_dat(bai2); lcd_write_cmd(0x80+0x0b); lcd_write_dat(shi2); lcd_write_cmd(0x80+0x0c); lcd_write_dat(ge2); lcd_write_cmd(0x80+0x47); lcd_write_dat(bai1); lcd_write_cmd(0x80+0x48); lcd_write_dat(shi1); lcd_write_cmd(0x80+0x49); lcd_write_dat(ge1); if(flag1==1&&flag2==1) { csb(); //调用超声波子程序 flag1=0; }} }

35

//pwm调速

青岛理工大学毕业设计

附录3

MCU Description

SCM is also known as micro-controller (Microcontroller Unit), commonly used letters of the acronym MCU MCU that it was first used in industrial control. Only a single chip by the CPU chip developed from a dedicated processor. The first design is by a large number of peripherals and CPU on a chip in the computer system, smaller, more easily integrated into a complex and demanding on the volume control device which. INTEL's Z80 is the first designed in accordance with this idea processor, then on the development of microcontroller and dedicated processors have parted ways. Are 8-bit microcontroller early or 4 bits. One of the most successful is the INTEL 8031, for a simple, reliable and good performance was a lot of praise. Then developed in 8031 out of MCS51 MCU Systems. SCM systems based on this system until now is still widely used. With the increased requirements of industrial control field, began a 16-bit microcontroller, because the cost is not satisfactory but have not been very widely used. After 90 years with the great development of consumer electronics, microcontroller technology has been a huge increase. With INTEL i960 series, especially the later series of widely used ARM, 32-bit microcontroller quickly replace high-end 16-bit MCU status and enter the mainstream market. The traditional 8-bit microcontroller performance have been the rapid increase capacity increase compared to 80 the number of times. Currently, high-end 32-bit microcontroller clocked over 300MHz, the performance catching the mid-90's dedicated processor, while the average model prices fall to one U.S. dollars, the most high-end [1] model only 10 dollars. Modern SCM systems are no longer only in the development and use of bare metal environment, a large number of proprietary embedded operating system is widely used in the full range of SCM. The handheld computers and cell phones as the core processing of high-end

microcontroller can even use a dedicated Windows and Linux operating systems. SCM is more suitable than the specific processor used in embedded

36

青岛理工大学毕业设计

systems, so it was up to the application. In fact the number of SCM is the world's largest computer. Modern human life used in almost every piece of electronic and mechanical products will be integrated single chip. Phone, telephone, calculator, home appliances, electronic toys, handheld computers and computer accessories such as a mouse with a 1-2 in both the Department of SCM. Personal computer will have a large number of SCM in the work. General car with more than 40 SCM, complex industrial control systems may even have hundreds of SCM in the same time work! SCM is not only far exceeds the number of PC and other computing the sum, or even more than the number of human beings Single chip, also known as single-chip microcontroller, it is not complete a certain logic chips, but to a computer system integrated into a chip. Equivalent to a micro-computer, and computer than just the lack of a microcontroller I / O devices. General talk: a chip becomes a computer. Its small size, light weight, cheap, for the study, application and development of facilities provided. At the same time, learning to use the MCU is to understand the principle and structure of the computer the best choice. SCM and the computer functions internally with similar modules, such as CPU, memory, parallel bus, the same effect as well, and hard disk memory devices, and different is its performance of these components were relatively weak many of our home computer, but the price is low , usually not more than 10 yuan you can do with it …… some control for a class is not very complicated electrical work is enough of. We are using automatic drum washing machine, smoke hood, VCD and so on appliances which could see its shadow! …… It is primarily as a control section of the core components It is an online real-time control computer, control-line is that the scene is needed is a stronger anti-jamming ability, low cost, and this

is, and off-line computer (such as home PC), the main difference. Single chip MCU is through running, and can be modified. Through different procedures to achieve different functions, in particular special unique features, this is another device much effort needs to be done, some great efforts are very difficult to do. A not very complex functions if the 50's with the United States developed 74 series, or the 60's CD4000 series of these pure hardware buttoned, then the circuit must be a large PCB

37

青岛理工大学毕业设计

board! But if the United States if the 70's with a series of successful SCM market, the result will be a drastic change! Just because you are prepared by microcomputer programs can achieve high intelligence, high efficiency and high reliability! As the microcontroller on the cost-sensitive, so now the dominant software or the lowest level assembly language, which is the lowest level in addition to more than binary machine code language, and as so low why is the use? Many high-level language has reached the level of visual programming Why is not it? The reason is simply that there is no home computer as a single chip CPU, not as hard as a mass storage device. A visualization of small high-level language program which even if only one button, will reach tens of K of size! For the home PC's hard drive in terms of nothing, but in terms of the MCU is not acceptable. SCM in the utilization of hardware resources to be very high for the job so although the original is still in the compilation of a lot of use. The same token, if the giant computer operating system and applications run up to get home PC, home PC, also can not afford to. Can be said that the twentieth century across the three \"power\" era, that is, the age of electricity, the electronic age and has entered into the computer age. However, this computer, usually refers to the personal computer, referred to as PC. It consists of the host, keyboard, monitor and other components. Another type of computer, most people do not know how. This computer is to give all kinds of intelligent machines single

chip (also known as micro-controller). As the name suggests, this computer system took only a minimal integrated circuit, can be a simple operation and control. Because it is small, usually hidden in the charged mechanical \"stomach\" in. It is in the device, like the human brain plays a role, it goes wrong, the whole plant was paralyzed. Now, this microcontroller has a very broad field of use, such as smart meters, real-time industrial control, communications equipment, navigation systems, and household appliances. Once all kinds of products were using SCM, can serve to upgrade the effectiveness of products, often in the product name preceded by the adjective - \"intelligent,\" such as intelligent washing machines. Now some technical personnel of factories or other amateur electronics developers to engage in out of certain products, not the circuit is too complicated, that function is too simple and can

38

青岛理工大学毕业设计

easily be copied. The reason may be stuck in the product did not use a microcontroller or other programmable logic device. SCM history SCM was born in the late 20th century, 70, experienced SCM, MCU, SoC three stages. First model 1.SCM the single chip microcomputer (Single Chip Microcomputer) stage, mainly seeking the best of the best single form of embedded systems architecture. \"Innovation model\" success, laying the SCM and general computer completely different path of development. In the open road of independent contributed. 2.MCU the micro-controller (Micro Controller Unit) stage, the main direction of technology development: expanding to meet the embedded applications, the target system requirements for the various peripheral circuits and interface circuits, highlight the object of intelligent control. It involves the areas associated with the object system, therefore, the development of MCU's responsibility inevitably falls on development of embedded systems, Intel Corporation

electrical, electronics manufacturers. From this point of view, Intel faded MCU development has its objective factors. In the development of MCU, the most famous manufacturers as the number of Philips Corporation. Philips company in embedded applications, its great advantage, the MCS-51 single-chip micro-computer from the rapid development of the

micro-controller. Therefore, when we look back at the path of development of embedded systems, do not forget Intel and Philips in History. Embedded Systems Embedded system microcontroller is an independent development path, the MCU important factor in the development stage, is seeking applications to maximize the solution on the chip; Therefore, the development of dedicated single chip SoC trend of the natural form. As the

microelectronics, IC design, EDA tools development, application system based on MCU SoC design have greater development. Therefore, the understanding of the microcontroller chip microcomputer can be, extended to the single-chip micro-controller applications. MCU applications SCM now permeate all areas of our lives, which is almost difficult to find traces of the field without SCM. Missile navigation equipment, aircraft, all types of instrument control, computer network

39

青岛理工大学毕业设计

communications and data transmission, industrial automation, real-time process control and data processing, extensive use of various smart IC card, civilian luxury car security system, video recorder, camera, fully automatic washing machine control, and program-controlled toys, electronic pet, etc., which are inseparable from the microcontroller. Not to mention the area of robot control, intelligent instruments, medical equipment was. Therefore, the MCU learning, development and application of the large number of computer applications and intelligent control of the scientists,engineers. SCM is widely used in instruments and meters, household appliances, medical equipment, aerospace, specialized equipment, intelligent management and process control fields, roughly divided into the following several areas: 1. In the application of Intelligent Instruments SCM has a small size, low power consumption, controlling function, expansion flexibility, the advantages of miniaturization and ease of use, widely used instrument, combining different types of sensors can be realized Zhuru voltage, power, frequency, humidity, temperature, flow, speed, thickness, angle, length, hardness, elemental, physical pressure measurement. SCM makes use of digital instruments, intelligence, miniaturization, and functionality than electronic or digital circuits more powerful. Such as precision measuring equipment (power meter, oscilloscope, various analytical instrument).

2. In the industrial control application With the MCU can constitute a variety of control systems, data acquisition system. Such as factory assembly line of intelligent control 3. In Household Appliances Can be said that the appliances are basically using SCM, praise from the electric rice, washing machines, refrigerators, air conditioners, color TV, and other audio video equipment, to the electronic weighing equipment, varied, and omnipresent. 4. In the field of computer networks and communications applications MCU general with modern communication interface, can be easy with the computer data communication, networking and communications in computer applications between devices had excellent material conditions, are basically all communication equipment to achieve a controlled by MCU from mobile phone, telephone,

mini-program-controlled switchboards,

40

building automated

青岛理工大学毕业设计

communications call system, train radio communication, to the daily work can be seen everywhere in the mobile phones, trunked mobile radio, walkie-talkies, etc.. 5. Microcomputer in the field of medical device applications SCM in the use of medical devices is also quite extensive, such as medical

respirator, the various analyzers, monitors, ultrasound diagnostic equipment and hospital beds, etc. call system. 6. In a variety of major appliances in the modular applications Designed to achieve some special single specific function to be modular in a variety of circuit applications, without requiring the use of personnel to understand its internal structure. If music integrated single chip, seemingly simple function, miniature electronic chip in the net (the principle is different from the tape machine), you need a computer similar to the principle of the complex. Such as: music signal to digital form stored in memory (like ROM), read by the microcontroller, analog music into electrical signals (similar to the sound card). In large circuits, modular applications that greatly reduce the volume, simplifies the circuit and reduce the damage, error rate, but also easy to replace. 7. Microcontroller in the application field of automotive equipment SCM in automotive electronics is widely used, such as a vehicle engine controller, CAN bus-based Intelligent Electronic Control Engine, GPS navigation system, abs anti-lock braking system, brake system, etc.. In addition, the MCU in business, finance, research, education, national defense, aerospace and other fields has a very wide range of applications. Application of six important part of learning MCU learning an important part of the six applications 1, Bus: We know that a circuit is always made by the devices connected by wires, in analog circuits, the connection does not become a problem because the device is a serial relationship between the general, the device is not much connection between the , but the computer is not the same circuit, it is a microprocessor core, the device must be connected with the microprocessor, the device must be coordination between, so they need to connect on a lot, as if still analog circuit like the microprocessor and devices in the connection between the individual, the number of lines will

be a little more surprising, therefore the introduction of the microprocessor bus

41

青岛理工大学毕业设计

概念 Zhong Each device Gongtong access connections, all devices 8 Shuju line all received eight public online, that is the equivalent of all devices together in parallel, but only this does not work, if there are two devices send data at the same time, a 0, a 1, then, whether the receiver received what is it? This situation is not allowed, so to be controlled by controlling the line, time-sharing the device to work at any time only one device to send data (which can have multiple devices to receive both). Device's data connection is known as the data bus, the device is called line of control all the control bus. Internal or external memory in the microcontroller and other devices have memory cells, the memory cell to be assigned addresses, you can use, distribution, of course, to address given in the form of electrical signals, and as more memory cells, so, for the address allocation The line is also more of these lines is called the address bus. Second, data, address, command: The reason why these three together because of the nature of these three are the same - the number, or are a string of '0 'and '1' form the sequence. In other words, addresses, instructions are also data. Instruction: from single chip designer provides a number of commonly used instructions with mnemonic we have a strict correspondence between the developer can not be changed by the MCU. Address: the search for MCU internal, external storage units, input and output port based on the address of the internal unit value provided by the chip designer is good, can not be changed, the external unit can be single chip developers to decide, but there are a number of address units is a must (see procedures for the implementation of the process). Third, P0 port, P2 and P3 of the second function I use: Beginners often on the P0 port, P2 and P3 port I use the second function puzzled that the second function and have a switch between the original function of the process, or have a directive, in fact, the port

The second feature is automatic, do not need instructions to convert. Such as P3.6, P3.7 respectively WR, RD signal, when the microchip processing machines external RAM or external I / O port, they are used as a second function, not as a general-purpose I / O port used, so long as a A microprocessor implementation of the MOVX instruction, there will be a corresponding signal sent from the P3.6 or P3.7, no prior use of commands. In fact 'not as a general-purpose I / O port use' is also not a

42

青岛理工大学毕业设计

'no' but (user) 'not' as a general-purpose I / O port to use. You can arrange the order of a SETB P3.7's instructions, and when the MCU execution to the instruction, the also make P3.7 into a high, but users will not do so because this is usually will cause the system to collapse. Fourth, the program's implementation: Reduction in power after the 8051 microcontroller within the program counter (PC) in the value of 0000 ', the process is always from the 0000' units started, that is: the system must exist in ROM 0000 'this unit , and in 0000 'unit must be stored in a single instruction. 5, the stack: Stack is a region, is used to store data, there is no special about the region itself is a part of internal RAM, special access to its data storage and the way that the so-called 'advanced post out backward first out ', and the stack has a special data transmission instructions that' PUSH 'and' POP ', has a special expertise in its services unit, that is, the stack pointer SP, whenever a PUSH instruction execution, SP on (in the Based on the original value) automatically add 1, whenever the implementation of a POP instruction, SP will (on the basis of the original value) automatically by 1. As the SP values can be changed with the instructions, so long as the beginning of the process to change the value of the SP, you can set the stack memory unit required, such as the program begins, with an MOV SP, # 5FH instructions When set on the stack starting from the memory unit 60H unit. There is always the beginning of the general procedure with such a directive to set the stack pointer, because boot,

SP initial value of 07H, 08H This unit from the beginning to stack next, and 08H to 1FH 8031 is the second in the region, three or four working register area, often used, this will lead to confusion of data. Different authors when writing programs, initialize the stack is not exactly the same directive, which is the author's habit. When set up the stack zone, does not mean that the region become a special memory, it can still use the same memory region as normal, but generally the programmer does not regard it as an ordinary memory used.

单片机介绍

单片机也被称为微控制器(Microcontroller Unit),常用英文字母 的缩写

43

青岛理工大学毕业设计

MCU 表示单片机,它最早是被用在工业控制领域。单片机由芯片内 仅有 CPU 的专用处理器发展而来。最早的设计理念是通过将大量外围设备 和 CPU 集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对 体积要求严格的控制设备当中。 INTEL 的Z80 是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。 早期的单片机都是 8 位或 4 位的。其中最成功的是 INTEL 的 8031,因 为简单可靠而性能不错获得了很大的好评。此后在 8031 上发展出了 MCS51 系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随 着工业控制领域要求的提高,开始出现了 16 位单片机,但因为性价比不理 想并未得到很广泛的应用。90 年代后随着消费电子产品大发展,单片机技 术得到了巨大提高。随着 INTEL i960 系列特别是后来的 ARM 系列的广泛应 用,32 位单片机迅速取代 16 位单片机的高端地位,并且进入主流市场。而 传统的 8 位单片机的性能也得到了飞速提高,处理能力比起 80 年代提高了 数百倍。目前,高端的 32 位单片机主频已经超过 300MHz,性能直追 90 年 代中期的专用处理器,而普通的型号出厂价格跌落至 1 美元,最高端的型 号也只有 10 美元。当代单片机系统已经不再只在裸机环境下开发和使用, 大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌 上电脑和手机核心处理的高端单片机甚至可以直接使用专用的 Windows 和 Linux 操作系统。 单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的 应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的 几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家 用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有 1-2 部单片机。

而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备 40 多部单 片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片 机的数量不仅远超过 PC 机和其他计算的总和,甚至比人类的数量还要多。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把 一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了 I/O 设备。概括的讲:一块芯片就成了一台计算机。 它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。 同时,学习使用单片机是了解计算机原理与结构的最佳选择。 单片机内部也用和电脑功能类似的模块,比如 CPU,

44

青岛理工大学毕业设计

内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们 的家用电脑弱很多,不过价钱也是低的,一般不超过 10 元即可用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚 筒洗衣机、排烟罩、VCD 等等的家电里面都可以看到它的身影!它主要是作为控制部分的核心部件。它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用 PC) 的主要区别。

单片机芯片单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才 能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是 用美国 50 年代开发的 74 系列,或者 60 年代的 CD4000 系列这些纯硬件来 搞定的话,电路一定是一块大 PCB 板!但是如果要是用美国 70 年代成功投 放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级 汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为 什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的 CPU,也没有像硬盘那 样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个 按钮,也会达到几十 K 的尺寸!对于家用 PC 的硬盘来讲没什么,可是对于 单 片机来讲是能接受的。 单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算 机上的操作系统和应用软件拿到家用 PC 上来运行,家用 PC 的也是承受不了的。可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代 和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称 PC 机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。 顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运 算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时

45

青岛理工大学毕业设计

工控、通讯设 备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能 型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某 些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可 能就卡在产品未使用单片机或其它可编程逻辑器件上。单片机历史 单片机诞生于 20 世纪 70 年代末,经历了 SCM、MCU、SoC 三大阶段。起初模型 1.SCM 即单片微型计算机(Single Chip Microcomputer)阶段,主要 是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了 SCM 与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel 公司功不可没。 2.MCU 即微控制器(Micro Controller Unit)阶段,主要的技术发展 方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相 关,因此,发展 MCU 的重任不可避免地落在电气、电子技术厂家。从这一 角度来看,Intel 逐渐淡出 MCU 的发展也有其客观因素。在发展 MCU 方面,最著名的厂家当数 Philips 公司。 Philips 公司以其在嵌入式应用方面的巨大优势,将 MCS-51 从单片微 型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时, 不要忘记 Intel 和 Philips 的历史功绩。

嵌入式系统 单片机是嵌入式系统的独立发展之路,向 MCU 阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然 形成了 SoC 化趋势。随着微电子技术、IC 设计、EDA 工具的发展,基于 SoC 的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单 片微型计算机、单片微控制器延伸到单片应用系统。单片机的应用领域 目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有 单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络 通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各 种智能 IC 卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不 用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学 习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 单片机广泛应用于仪器仪表、家用电器、医用设备、

46

青岛理工大学毕业设计

航空航天、专用 设备的智能化管理及过程控制等领域,大致可分如下几个范畴: 1.在 智能仪器仪表上的应用,在智能仪器仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬 度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的 测量设备(功率计,示波器,各种分析仪)。 2.在工业控制中的应用 2. 在工业控制中的应用 用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流 水线的智能化管 3.在家用电器中的应用 3.在家用电器中的应用 可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、 洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备, 五花八门,无所不在。 4.在计算机网络和通信领域中的应用 4. 在计算机网络和通信领域中的应用 现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通 信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的 通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交 换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见 的移动电话,集群移动通信,无线电对讲机等。 5.单片机在医用设备领域中的应用 5. 单片机在医用设备领域中的应用 单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析 仪,监护仪,超声诊断设备及病床呼叫系统等等。 6.在各种大型电器中的模块化应用 6.在各种大型电器中的模块化应用 某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块 化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简 单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的 类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于 ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。 在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降 低了损坏、错误率,也方便于更换。 7.单片机在汽车设备领域中的应用 7. 单片机在汽车设备领域中的应用

单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器, 基于 CAN 总线的汽车发动机智能电子控制器,GPS 导航系统,abs 防抱死系 统,制

47

青岛理工大学毕业设计

动系统等等。此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着 十分广泛的用途。学习应用六大重要部分 单片机学习应用的六大重要部分 一 、 总线:总线 :我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路 中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间 的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器 件都要与微处理器相连,各器件之间的工作必须相互协调,所以需要的连 线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连 线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个 器件共同享用连线,所有器件的 8 根数据线全部接到 8 根公用的线上,即 相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数 据,一个为 0,一个为 1,那么,接收方接收到的究竟是什么呢?这种情况 是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只 能有一个器件发送数据(可以有多个器件同时接收)。器件的数据线也就 被称为数据总线,器件所有的控制线被称为控制总线。在单片机内部或者 外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能 使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线。 数据、 地址、指令:二 、数据、地址、指令:之所以将这三者放在一起,是因为这三者的本质都是一样的——数字,或者说都是一串‘0’和‘1’组成的序列。换言之,地址、指令也都是数 据。指令:由单片机芯片的设计者规定的一种数字,它与我们常用的指令 助记符有着严格的一一对应关系,不可以由单片机的开发者更改。地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地

址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者 自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)。 的第二功能用法: 三 、 P0 口 、 P2 口和 P3 的第二功能用法 : 初学时往往对 P0 口、P2 口和 P3 口的第二功能用法迷惑不解,认为第 二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上, 各端口的第二功能完全是自动的,不需要用指令来转换。如 P3.6、P3.7 分 别是 WR、RD 信号,当微片理机外接 RAM 或有外部 I/O 口时,它们被用作第 二功能,不能作为通用 I/O 口使用,只要

48

青岛理工大学毕业设计

一微处理机一执行到 MOVX 指令, 就会有相应的信号从 P3.6 或 P3.7 送出,不需要事先用指令说明。事实上 ‘不能作为通用 I/O 口使用’也并不是‘不能’而是(使用者)‘不会’ 将其作为通用 I/O 口使用。你完全可以在指令中按排一条 SETB P3.7 的指 令,并且当单片机执行到这条指令时,也会使 P3.7 变为高电平,但使用者 不会这么去做,因为这通常会导致系统的崩溃。

四 、 程序的执行过程 : 单片机在通电复位后 8051 内的程序计数器(PC)中的值为‘0000’, 所以程序总是从‘0000’单元开始执行,也就是说:在系统的 ROM 中一定 要存在‘0000’这个单元,并且在‘0000’单元中存放的一定是一条指令。 五 、 堆栈: 堆栈 : 堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之 处,就是内部 RAM 的一部份,特殊的是它存放和取用数据的方式,即所谓 的‘先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即‘PUSH’ 和‘POP’,有一个特殊的专为其服务的单元,即堆栈指针 SP,每当执一次 PUSH 指令时,SP 就(在原来值的基础上)自动加 1,每当执行一次 POP 指 令,SP 就(在原来值的基础上)自动减 1。由于 SP 中的值可以用指令加以 改变,所以只要在程序开始阶段更改了 SP 的值,就可以把堆栈设置在规定 的内存单元中,如在程序开始时,用一条 MOV SP,#5FH 指令,就时把堆栈

设置在从内存单元 60H 开始的单元中。一般程序的开头总有这么一条设置 堆栈指针的指令,因为开机时,SP 的初始值为 07H,这样就使堆栈从 08H 单元开始往后,而 08H 到 1FH 这个区域正是 8031 的第二、三、四工作寄存 器区,经常要被使用,这会造成数据的混乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。

49

因篇幅问题不能全部显示,请点此查看更多更全内容