1、单片机基础项目教程(第2版)项目1 音乐彩灯制作 任务1 认识AT89S52单片机 任务2 实现单只LED闪烁 任务3 LED花式彩灯制作 任务4 定时器及中断学习 任务5 单片机控制扬声器发音 任务6 音乐彩灯控制实训下一页返回项目2 全自动洗衣机控制 任务1 数码管及动态显示实现 任务2 12864液晶屏显示实现 任务3 按键及按键矩阵输入控制 任务4 交、直流电动机驱动控制 任务5 模拟全自动洗衣机控制实训上一页 下一页返回项目3 LED点阵显示温度计制作 任务1 LED汉字点阵屏显示实现 任务2 数模及模数转换控制 任务3 LM35温度传感器信号采集实现 任务4 DS18B20单总线温
2、度传感器信号采集实现 任务5 LED点阵显示温度计控制实训上一页 下一页返回项目4 自动分拣投料机控制 任务1 步进电动机开环控制 任务2 接近开关及相关传感器学习 任务3 机械手动作调试及工位检测控制 任务4 自动分拣投料机控制实训上一页 下一页返回项目5 化工自动投料反应釜系统控制 任务1 51单片机的I/O口总线复用学习 任务2 51单片机的I/O口扩展及8255应用 任务3 机械手、数码管及12864液晶屏复用控制 任务4 化工自动投料反应釜控制系统实训上一页 下一页返回项目6 实训工位供电故障自诊断及故障点数据采集制作 任务1 51单片机串行口学习 任务2 单片机与单片机通讯实现 任
3、务3 实训工位供电故障自诊断及故障点数据采集实训上一页 下一页返回项目7 电力负荷无线实时监控系统控制 任务1 单片机与上位计算机通讯实现 任务2 KYL610无线传输模块应用 任务3 电力负荷无线实时监控系统构建实训上一页返回前 言 单片机控制技术是现代控制工程领域一门飞速发展的技术,其在教学及产业界的技术推广仍然是当今科学技术发展的热点。单片机也称作“微控制器冶或“嵌入式微处理器冶,它是把一个相当于组成整个计算机的系统集成到一片集成电路上,相当于一块芯片就构成了一台计算机。下一页返回 基于这个特征,单片机具备体积小、质量轻、价格便宜的优势,为我们学习、应用和开发提供了便利的条件。本课程是高
4、等职业技术学校机电类或电子电工类专业的主干课程,也是这类专业学生必修的专业课程,同时是学生专业能力的重要组成部分。上一页返回项目1 音乐彩灯制作 任务1 认识AT89S52单片机 任务2 实现单只LED闪烁 任务3 LED花式彩灯制作 任务4 定时器及中断学习 任务5 单片机控制扬声器发音 任务6 音乐彩灯控制实训返回任务1 认识AT89S52单片机一台能够工作的计算机由以下几个部分构成:CPU、存储器、I/O接口和定时与中断系统。在个人计算机上这些部分被分成若干块芯片,安装在一个称之为主板的印刷线路板上。而在单片机中,这些部分全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机。MCS
5、51是指由美国Intel公司生产的一系列单片机的总称,这一系列单片机包括了若干品种,如8031、8051、8751、8032、8052、8752等,其中8051是最早最典型的产品,该系列其他单片机都是在8051的基础上进行功能的增、减改变而来的,所以人们习惯于用“8051冶来称呼MCS51系列单片机。下一页返回任务1 认识AT89S52单片机AT89S52单片机(其芯片及底座参见图1-1-1)也是51系列产品之一,是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器;使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容;片上Flash
6、允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,两个数据指针,3个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。上一页 下一页返回任务1 认识AT89S52单片机AT89S52的内部结构1.CPUCPU(CentralProcessingUnit,中央处理器)是AT89S52内部的字长为8位的中央处理单元,它由运算器和控制器两部分组成
7、。实际上CPU是单片机的核心。2.存储器AT89S52系列单片机内的只读存储器(Read-OnlyMemory,ROM)是程序存储器,用于存放已编号的用户程序、数据表格等。片内的随机存取存储器(Random-AccessMemo-ry,RAM)又称读/写存储器,可用于存放输入数据、输出数据和中间计算结果等随时有可能变动的数据,同时还可作为数据堆栈区。上一页 下一页返回任务1 认识AT89S52单片机当存储器的容量不够时,可以进行外部扩展。3.I/O口(1)并行口。AT89S52单片机有4个8位并行I/O接口P0P3,均可并行输入/输出8位数据。(2)串行口。AT89S52单片机有2个串行I/O
8、接口,用于数据的串行输入/输出。4.定时/计数器定时/计数器可以产生定时脉冲,实现单片机的定时控制;或用计数方式,记录外部事件的脉冲个数。上一页 下一页返回任务1 认识AT89S52单片机AT89S52的引脚介绍(图1-1-2)1.工作电源电源是单片机工作的动力源泉。对应的接线方法为:VCC(40脚)电源端,工作时接+5V电源;GND(20脚)为接地端。2.时钟电路时钟电路为单片机产生时序脉冲。单片机所有运算与控制过程都是在统一的时序脉冲的驱动下进行的,如果单片机的时钟电路停止工作(晶振停振),那么单片机也就停止运行了。当采用内部时钟时,连接方法如图1-1-3所示,在晶振引脚XTAL1(19脚
9、)和XTAL2(18脚)引脚之间接入一个晶振,两个引脚对地分别再接入一个电容即可产生所需的时钟信号。电容的容量一般在几十皮法,如30pF。上一页 下一页返回任务1 认识AT89S52单片机3.复位在RESET(9脚)持续出现24个振荡器脉冲周期(即两个机器周期)的高电平信号时,将使单片机复位。只要该引脚保持高电平,芯片便循环复位。复位后,所有I/O引脚均置1,程序计数器和特殊功能寄存器全部清零。4.输入/输出引脚单片机工作时,输入/输出引脚可输入、输出数据。P0端口(P0.0P0.7,39脚32脚):无内置上拉电阻的8位双向I/O端口,置1时作高阻抗输入端。上一页 下一页返回任务1 认识AT8
10、9S52单片机P1端口(P1.0P1.7,1脚8脚):带有内置上拉电阻的8位双向I/O端口,可以输入输出电流。如果是给外部芯片赋值,可直接接入;如果要驱动外部电路,比如发光二极管,需要接限流电阻。与51系列不同的是,P1.0和P1.1可以作为定时/计数器的外部输入,作为定时/计数器使用(见表1-1-1)。P2端口(P2.0P2.7,21脚28脚):基本功能同P1端口。P3端口(P3.0P1.7,10脚17脚):基本功能同P1端口。此外,该端口还具有第二功能,详见表1-1-2。上一页 下一页返回任务1 认识AT89S52单片机5.其他引脚1)ALE/PROG(30脚)当访问外部程序存储器或数据存
11、储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。2)PSEN(29脚)程序储存允许(PSEN)输出的是外部程序存储器的读选通信号,AT89S52从外部程序存储器取指令(或数据)时,每个机器周期PSEN两次有效,即输出两个脉冲。上一页 下一页返回任务1 认识AT89S52单片机在此期间,当访问外部数据存储器时,将跳过两次PSEN信号。3)EA/VPP(31脚)该
12、引脚为片外程序存储器选择控制引脚,当EA为低电位时,单片机从外部程序存储器取指令,当EA接高电平时,单片机从内部程序存储器取指令。AT89S52单片机内部有8kB可反复擦写1000次以上的程序存储器,因此Flash存储器编程时,该引脚加上VPP编程允许电压,让单片机运行内部的程序,我们就可以通过反复烧写来验证我们的程序了。上一页返回任务2 实现单只LED闪烁所谓最小化应用系统就是单片机要正常工作所必须具备的、最简单的硬件支持,其中最主要的就是三个基本条件:淤电源正常;于时钟正常;盂复位正常。图1-2-1即为实现单只LED闪烁的最小化应用系统原理图。在AT89S52单片机的40个引脚中,使用了电
13、源引脚2个(40、20脚)、晶振引脚2个(18、19脚)、上电复位引脚1个(9脚)、读取内部程序引脚1个(31脚)、可编程输入/输出引脚1个(9脚),其余引脚悬空。图1-2-1中发光二极管负极与单片机引脚P1.7之间串接了一个560赘的限流电阻,防止发光二极管和单片机的引脚P1.7因为电流过大烧坏,使发光二极管和单片机都工作在安全状态。下一页返回任务2 实现单只LED闪烁完成本次任务需要用到两个软件:Keil和Proteus。KeilVision2是众多单片机开发软件中最优秀的软件之一。该软件内嵌多种符合当前工业标准的开发工具,可以完成工程建立和管理、编译、链接、目标代码的生成、软件仿真等开发
14、流程,支持众多不同公司的MCS51架构的芯片,界面友好,易学易用。ProteusISIS是英国Labcenter公司开发的电路设计、分析与实物仿真软件,功能极其强大。该软件的特点是:(1)集原理图设计、仿真分析(ISIS)和印刷电路板设计(ARES)于一身,可以完成从绘制原理图、仿真分析到生成印刷电路板图的整个硬件开发的过程。上一页 下一页返回任务2 实现单只LED闪烁(2)提供几千种电子元件(分立元件和集成电路、模拟和数字电路)的电路符号、仿真模型和外形封装。(3)支持大多数单片机系统以及各种外围芯片(RS232、I2C调试器、SPI调试器、键盘和LCD系统等)的仿真。(4)提供各种虚拟仪器
15、,如各种测量仪表、示波器、逻辑分析仪、信号发生器等。过去需要昂贵的电子仪器设备、繁多的电子元件才能完成的电子电路、单片机等实验,现在只要一台电脑,就可以在该软件环境下快速轻松地实现。上一页 下一页返回任务2 实现单只LED闪烁 任务实施1.运行KeilC软件进行编程、编译1)启动KeilVision2软件双击图标,运行几秒后即出现图1-2-2所示界面。2)建立项目点击Project菜单,如图1-2-3所示,弹出一个标准的Windows文件对话框,如图1-2-4所示。在文件名中输入C程序项目名称“task1冶,保存后的扩展名为“uv2冶,这是KeilVision2项目文件扩展名,以后我们可以直接
16、点击此文件打开先前做的项目。上一页 下一页返回任务2 实现单只LED闪烁3)选择所要的单片机型号这里我们选择Atmel公司的AT89S52,如图1-2-5所示。4)创建文件点击图1-2-6中“新建文件冶快捷按钮,也可以点击“File冶菜单下“New冶或快捷键“Ctrl+N冶来实现,此时出现如图1-2-6所示窗口,用户在“Text1冶窗口中进行程序编写工作。根据图1-2-1所示,只要以一定的时间间隔,不断重复给P1.7高、低电平,我们就可以看到LED闪烁。上一页 下一页返回任务2 实现单只LED闪烁5)保存文件在创建文件一开始即进行文件保存。单击“保存冶命令,出现图1-2-7对话框,文件名为“t
17、ask1.c冶,保存在项目所在的文件夹中。这时你会发现程序单词颜色发生了改变,说明Keil的C语法生效了。6)添加文件在图1-2-8中右击屏幕左边的SourceGroup1文件夹图标,弹出菜单,在这里可以对项目进行添加或删除文件操作。选“AddFilestoGroupSourceGroup1爷冶,弹出对话框,如图1-2-9所示,选择刚才保存过的文件,单击“Add冶按钮,关闭对话框,此时文件已被添加到项目中。上一页 下一页返回任务2 实现单只LED闪烁7)编译并生成可烧录的hex文件在编译调试程序之前,必须对程序进行设置,使之可同时生成hex文件。hex格式文件是Intel公司提出的按地址排列的
18、数据信息,数据宽度为字节,所有数据使用16进制表示,常用来保存单片机或其他处理器的目标程序代码,一般的存储器都支持这种格式。如图1-2-10所示,右击“Target1冶,单击“OptionsforTargetTarget1爷冶,弹出如图1-2-11所示对话框,勾选“CreateHexFile冶选项,这样在每次进行编译文件操作的同时都可生成hex文件。为了顺利完成仿真,还需要对晶振进行设置。如图1-2-12所示,在“Target冶选项卡中,将晶振频率改为12MHz。上一页 下一页返回任务2 实现单只LED闪烁接下来我们开始编译文件。在图1-2-13中,1、2、3都是编译按钮:1是编译单个文件;2
19、是编译当前项目,如果先前编译过后文件没有做过编辑改动,再点击是不会重新编译的;3是重新编译,不管程序是否有所改动,每点击一次均会再次编译链接一次;4是停止编译按钮。以上操作命令均可在“Project冶菜单中找到。按下编译按钮,软件对文件进行编译,编译结束之后,在图1-2-13的5窗口中将会显示编译过程中出现的错误信息和资源使用情况,并且告知用户hex文件已创建成功。如果程序出现错误,必须将错误全部修正才能通过编译,只有顺利通过编译才能成功创建hex文件。上一页 下一页返回任务2 实现单只LED闪烁2.运行Proteus软件进行仿真1)进入ProteusISIS双击图标启动ISIS6Profes
20、sional程序,出现如图1-2-14所示屏幕,表明进入Pro-teusISIS集成环境。2)进入工作界面ProteusISIS的工作界面是一种标准的Windows界面,包括:标题栏、主菜单、标准工具栏、绘图工具栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择窗口、图形编辑窗口,如图1-2-15所示。上一页 下一页返回任务2 实现单只LED闪烁3)绘制原理图(1)放置元器件。在图1-2-15中单击对象选择按钮“P冶,弹出图1-2-16所示对话框,在“Key-words冶处输入需放置元器件名称,找到该元器件并将其放置到图1-2-15图形编辑窗口中。(2)连线。完成所有
21、元器件的选择后(如图1-2-17所示),对照图1-2-1单片机最小化应用系统原理图开始进行连线。需要指出的是,由于程序编写时,将LED放置在P1.0,画图时应满足此条件,如图1-2-18所示。上一页 下一页返回任务2 实现单只LED闪烁(3)烧录文件。双击AT89S52芯片,弹出对话框,如图1-2-19所示。单击“ProgramFile冶选项中“打开文件冶按钮,找到hex文件,单击“打开冶或双击文件名,hex文件即被烧录到芯片中,如图1-2-20所示。(4)运行仿真。程序烧录成功后,单击“仿真进程控制按钮冶中第一个“Play冶按钮,开始仿真,此时可以看到发光二极管闪烁,按“Stop冶停止仿真,
22、如图1-2-21所示。上一页返回任务3 LED花式彩灯制作在此次任务中,我们需要用到8只LED,将其接在P1口,电路原理图如图1-3-1所示。1.运行Keil,编写、编译程序,生成hex文件。2.运行Proteus,绘制原理图、烧录文件、实现仿真,如图1-3-2所示。返回任务4 定时器及中断学习在日常生活中有许多定时、计数的例子,如闹钟报时、画“正冶字统计选票等。在单片机应用系统中定时和计数是同一个概念。比如,一个闹钟,将它设定在1小时后闹响,换一种说法就是秒针走了3600次之后闹响,这样时间的测量问题就转化为秒针走的次数问题,也就变成了计数的问题了。因此,单片机内部的定时器和计数器是同一结构
23、,计数器记录的是单片机外部发生的事件,由单片机的外部电路提供计数信号;定时器是由单片机内部提供一个非常稳定的计数信号,由单片机振荡信号经过12分频后获得一个脉冲信号,此信号作为定时器的计数信号。单片机的振荡信号则由外接的晶体振荡器产生。AT89S52单片机内有3个16位可编程定时/计数器:T0、T1和T2。下一页返回任务4 定时器及中断学习1.定时/计数器T0和T1图1-4-1是定时/计数器的结构框图。由图可知,定时/计数器由定时器0、定时器1、定时器方式寄存器TMOD和定时器控制寄存器TCON组成。定时器0、定时器1是16位加法计数器,分别由两个8位专用寄存器组成:定时器0由TH0和TL0组
24、成,定时器1由TH1和TL1组成,每个计数器的最大计数量是216=65536。T0和T1定时/计数器都可由软件设置为定时或计数工作方式。当T0或T1用作定时器时,由外接晶振产生的振荡信号进行12分频后,提供给计数器,作为计数的脉冲输入,计数器对输入的脉冲进行计数,直至产生溢出;当T0或T1用作对外部事件计数的计数器时,通过芯片引脚P3.4或P3.5对外部脉冲信号进行计数。上一页 下一页返回任务4 定时器及中断学习当加在P3.4或P3.5引脚上的外部脉冲信号出现一个由1到0的负跳变时,计数器加1,如此直至计数器产生溢出。无论定时/计数器工作于定时方式还是计数方式,它们在对内部时钟或外部事件进行计
25、数时,都不占用CPU时间,直到定时/计数器产生溢出。只有满足条件,CPU才会停下当前的操作,去处理“时间到冶或者“计数满冶这样的事件。因此,定时/计数器是和CPU“并行冶工作的,不会影响CPU的其他工作。2.特殊功能寄存器SFR(SpecialFunctionRegister)SFR是AT89S52内部具有特殊用途的寄存器(如专用寄存器、并行口锁存器、串行口、定时/计数器等)的集合。上一页 下一页返回任务4 定时器及中断学习AT89S52内部共有27个SFR,每个占用1个RAM单元,它们分布在80H0FFH的地址范围内。AT89S52特殊寄存器映像及复位值参见表1-4-1。T0和T1有两个8位
26、控制寄存器TMOD和TCON,它们分别被用来设置各个定时/计数器的工作方式:选择定时或计数功能、控制启动运行以及作为运行状态的标志等。当系统复位时,TMOD和TCON的所有位都清零。3.定时/计数器方式控制寄存器(TMOD)(见表1-4-2)在TMOD中,高4位用于对定时器T1的方式控制,低4位用于对定时器T0的方式控制,参见表1-4-3,其各位功能简述如下:上一页 下一页返回任务4 定时器及中断学习C/T:定时器/计数器工作方式选择位。C/T=0,为定时工作方式;C/T=1,为计数工作方式。GATE:门控位。GATE=0,只要用软件使TR0(或TR1)置1就能启动定时/计数器0(或定时/计数
27、器1);GATE=1,只有在INT0(或INT1)引脚为高电平的情况下,且由软件使TR0(或TR1)置1时,才能启动定时/计数器0(或定时/计数器1)工作。不管GATE处于什么状态,只要TR0(或TR1)=0,定时/计数器便停止工作。4.定时/计数器控制寄存器(TCON)如表1-4-4所示,TCON的高4位为定时/计数器的运行控制和溢出标志,低4位与外部中断有关,将在后面作介绍。上一页 下一页返回任务4 定时器及中断学习TF0和TF1:定时/计数器溢出标志位。当定时/计数器0(或定时/计数器1)溢出时,由硬件自动使TF0(或TF1)置1,并向CPU申请中断。CPU响应中断后,自动对TF1清零。
28、TF1也可以用软件清零。TR0和TR1:定时/计数器运行控制位。TR0(或TR1)=0,停止定时/计数器0(或定时器/计数器1)工作;TR0(或TR1)=1,启动定时/计数器0(或定时器/计数器1)工作。可由软件置1(或清零)来启动(或关闭)定时/计数器,使定时/计数器开始计数。上一页 下一页返回任务4 定时器及中断学习5.定时/计数器工作方式1)工作方式0定时/计数器工作在方式0时,16位计数器只用了13位,即TH0/TH1的高8位和TL0/TL1的低5位,组成一个13位定时/计数器,TL0/TL1的高3位不用。(1)工作在定时方式。此时C/T=0,定时器对机器周期计数。定时器在工作前,应先
29、对13位的计数器赋值,开始计数时,在初值的基础上进行减1计数。定时时间的计算公式为:定时时间=(213-计数初值)晶振周期12;或定时时间=(213-计数初值)机器周期。上一页 下一页返回任务4 定时器及中断学习若晶振频率为12MHz,则最短定时时间为213-(213-1)(1/12)10-612=1s。最长定时时间为(213-0)(1/12)10-612=8192s。(2)工作在计数方式。此时C/T=1,13位计数器对外部输入信号进行加1计数。当INT0或INT1由0变为1时,开始计数,当INT0或INT1由1变为0时,停止计数。计数值的范围是1213=8192个外部脉冲。2)工作方式1定时
30、/计数器工作方式1与工作方式0相似,差别在于其中的计数器的位数:工作方式1以16位计数器参与计数。(1)工作在定时方式。此时C/T=0,定时器对机器周期计数。上一页 下一页返回任务4 定时器及中断学习定时时间的计算公式为:定时时间=(216-计数初值)晶振周期12或定时时间=(213-计数初值)机器周期。若晶振频率为12MHz,则最短定时时间为216-(216-1)1/1210-612=1s,最长定时时间为(216-0)1/1210-612=65536s=65.5ms。(2)工作在计数方式。此时C/T=1,16位计数器对外部输入信号进行加1计数。计数值的范围是1216(=65536)个外部脉冲
31、。3)工作方式2定时/计数器在工作方式2时,16位的计数器分成了两个独立的8位计数器TH0/TH1和TL0/TL1。TL0/TL1用作8位计数器,TH0/TH1用来保存计数的初值。上一页 下一页返回任务4 定时器及中断学习每当TL0/TL1计满溢出时,自动将TH0/TH1的初值再次装入TL,此时定时/计数器构成了一个能重复置初值的8位计数器。(1)工作在定时方式。此时C/T=0,定时器对机器周期计数。定时时间的计算公式为:定时时间=(28-计数初值)晶振周期12;或定时时间=(28-计数初值)机器周期。若晶振频率为12MHz,则最短定时时间为28-(28-1)1/1210-612=1s,最长定
32、时时间为(28-0)1/1210-612=256s。(2)工作在计数方式。此时C/T=1,8位计数器对外部输入信号进行加1计数。计数值的范围是128(=256)个外部脉冲。上一页 下一页返回任务4 定时器及中断学习4)工作方式3工作方式3仅对定时/计数器0有效,此时,将16位的计数器分为两个独立的8位计数器TH0/TH1和TL0/TL1且仅对T0起作用。如果把T1设置为工作方式3,T1将处于关闭状态。在一般情况下,当T1用作串行口波特率发生器时,T0才设置为工作方式3。此时常把T1设置为方式2,用作波特率发生器。6.定时/计数器2定时/计数器2是一个16位定时/计数器,是定时器或外部事件计数器
33、。定时/计数器2有3种操作方式:捕捉方式、自动重装方式和波特速率发生器方式。工作方式由T2CON的控制位选择。上一页 下一页返回任务4 定时器及中断学习定时/计数器2控制寄存器T2CONT2CON可位寻址,地址为0C8H。其各位定义见表1-4-5。TF2:定时/计数器2溢出标志位。当定时/计数器2溢出时,TF2置1,TF2置位后只能用软件清除。当RCLK=1或TCLK=1时,TF2将不被置位。EXF2:在捕捉/重装模式下,T2的外部触发标志。当EXEN2=1时,引脚T2EX/P1.1的负跳变,使EXF2=1,并产生T2中断。EXF2置位后只能用软件清除。当DCEN=1时,T2处于向上/向下计数
34、模式,EXF2不引起中断。上一页 下一页返回任务4 定时器及中断学习RCLK:接收时钟允许。当RCLK=1时,T2的溢出脉冲可作为串行口方式1和方式3的接收时钟;当RCLK=0时,T1的溢出脉冲将作为串行接收时钟。TCLK:发送时钟允许。当TCLK=1时,T2的溢出脉冲可作为串行口方式1和方式3的发送时钟;当TCLK=0时,T1的溢出脉冲将作为串行发送时钟。EXEN2:T2外部允许。当EXEN2=1时,T2EX的负跳变引起T2捕捉或重装,此时T2不能用作串行口的串行时钟。当EXEN2=0时,T2EX的负跳变将不起作用。TR2:T2启动控制位。当TR2=1时,启动T2;TR2=0时,停止T2。上
35、一页 下一页返回任务4 定时器及中断学习C/T2:定时/计数器2工作方式选择位。C/T2=0,为定时工作方式;C/T2=1,为计数工作方式。CP/RL2:T2捕捉/重装功能选择位。当CP/RL2=1且EXEN2=1时,引脚T2EX/P1.1的负跳变引起捕捉操作。当CP/RL2=0且EXEN2=1时,引脚T2EX/P1.1的负跳变引起自动重装操作。当CP/RL2=0且EXEN2=1时,T2溢出将引起捕捉自动重装操作。2)定时/计数器2模式寄存器T2MODT2MON不可位寻址,地址为0C9H。其各位定义见表1-4-6。T2OE:定时器2输出允许位。当T2OE=1时,允许时钟输出至引脚T2/P1.0
36、;当T2OE=0时,禁止引脚T2/P1.0输出。上一页 下一页返回任务4 定时器及中断学习DCEN:计数器方向控制。当DCEN=0时,T2自动向上计数;当DCEN=1时,T2向上/向下计数方式,由引脚T2EX状态决定计数方向。3)定时/计数器2操作方式选择T2操作方式选择见表1-4-7。7.中断系统在日常生活中广泛存在着“中断冶的例子。例如一个人正在看书,这时电话铃响了,于是他将书放下去接电话。为了在接完电话后继续看书,他必须记下当时的页号,接完电话后,将书取回,从刚才被打断的位置继续往下阅读。由此可见,中断是一个过程。上一页 下一页返回任务4 定时器及中断学习计算机是这样处理中断的,当有随机
37、中断请求后,CPU暂停执行现行程序,转去执行中断处理程序,为相应的随机事件服务,处理完毕后CPU恢复执行被暂停的现行程序。在这个过程中,应注意以下几方面:(1)外部或内部的中断请求是随机的,若当前程序允许处理应立即响应;(2)在内存中必须有处理该中断的处理程序;(3)系统怎样能正确地由现行程序转去执行中断处理程序;(4)当中断处理程序执行完毕后怎样能正确地返回。中断有两个重要特征:程序切换(控制权的转移)和随机性。(如图1-4-2所示)上一页返回任务5 单片机控制扬声器发音1.音频脉冲的产生声音的频谱范围大约在几十到几千赫兹,若能利用程序来控制单片机某个口产生一定频率的方波,接上喇叭就能发出一
38、定频率的声音;若再利用延时程序控制高、低电平的持续时间,就能改变输出时间。图1-5-1所示为单片机音频信号输出放大电路,它由三极管、电阻R1、R2和扬声器SP组成。该放大器的输入端与单片机的输入/输出接口P2.0相连接,在通常情况下,P2.0应保持高电平,基本上与电源VCC保持同等电位,因此基极电流Ib为零,三极管截止。当P2.0为低电平时,在电阻R1、R2上形成了压降,产生基极电流Ib,Ib是由单片机产生的音频信号,利用三极管的放大原理推动扬声器发出声响。下一页返回任务5 单片机控制扬声器发音2.音乐节拍的生成设1/4拍为1个DELAY,1拍则对应于4个DELAY,以此类推,只要求得1/4拍
39、的DE-LAY时间,其余的节拍就是它的整数倍。1.“两只老虎冶乐谱:|1231|1231|345-|345-|565431|565431|151-|151-|2.运行Keil,编写、编译程序,生成hex文件。3.运行Proteus,绘制原理图、烧录文件、实现仿真,如图1-5-2所示。上一页返回任务6 音乐彩灯控制实训电路原理图如图1-6-1所示。1.运行Keil,编写、编译程序,生成hex文件。2.运行Proteus绘制原理图、烧录文件、打开音频设备实现仿真,如图1-6-2所示。返回图 1 1 1 返回图 1 1 2返回图 1 1 3 返回表 1 1 1 返回表 1 1 2 返回图 1 2 1
40、 返回图 1 2 2 返回图 1 2 3 返回图 1 2 4 返回图 1 2 5 返回图 1 2 6 返回图 1 2 7返回图 1 2 8 返回图 1 2 9 返回图 1 2 10 返回图 1 2 11 返回图 1 2 12 返回图 1 2 13 返回图 1 2 14 返回图 1 2 15 返回图 1 2 16 返回图 1 2 17 返回图 1 2 18 返回图 1 2 19 返回图 1 2 20 返回图 1 2 21 返回图 1 3 1 返回图 1 3 2 返回图 1 4 1 返回表 1 4 1 返回表 1 4 2 返回表 1 4 3 返回表 1 4 4 返回表 1 4 5 返回表 1 4
41、6 返回表 1 4 7 返回图 1 4 2 返回图 1 5 1 返回图 1 5 2 返回图 1 6 1 返回图 1 6 2 返回项目2 全自动洗衣机控制 任务1 数码管及动态显示实现 任务2 12864液晶屏显示实现 任务3 按键及按键矩阵输入控制 任务4 交、直流电动机驱动控制 任务5 模拟全自动洗衣机控制实训返回任务1 数码管及动态显示实现全自动洗衣机作为家用电器类的机电一体化产品,已走进了千家万户。全自动洗衣机在使用时是将洗衣的全过程,即浸泡、洗涤、漂洗、脱水预先设定好N个程序,洗衣时根据需求选择其中一个或多个程序,打开水龙头和启动洗衣机开关后,洗衣的全过程就会自动完成,洗衣完成时由蜂鸣
42、器发出响声。而全自动洗衣机的控制普遍都采用单片机,其外部控制设备主要有主令输入部分,即程序设置与选择按键;工作状态显示部分,即多位数码管或液晶显示屏与信号灯;执行机构部分,即进出水电磁阀、驱动电动机的继电器;状态检测部分,即水位与温度传感器等。本次任务是学习数码管显示部分。下一页返回任务1 数码管及动态显示实现1.数码管基本知识1)数码管的作用及物理结构数码管是一种半导体发光器件,其基本单元是发光二极管。这些发光二极管组合成一个“8冶字,当对应的发光段亮时,可以显示0到9数字及一些字母或符号(见图2-1-3)。如果带小数点就称为“8段数码管冶,不带小数点就称为“7段数码管冶。相信读者在许多场合
43、或各种设备上都见过数码管。1位LED数码管结构如图2-1-4所示。按发光二极管单元连接方式分为共阳型数码管(所有阳极接在一起形成公共端COM)和共阴型数码管(所有阴极接在一起形成公共端COM)。上一页 下一页返回任务1 数码管及动态显示实现共阳数码管在应用时应将公共端COM接到+5V(注意大尺寸的数码管驱动电压较高,如3.5寸或5寸的数码管是9V或12V),当某一字段发光二极管的阴极为低电平时,相应字段就点亮;当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管在应用时应将公共端COM接到电源地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮;当某一字段的阳极为低电平时,相应
44、字段就不亮。所以共阴或共阳的数码管在选用时要注意结构上的区别。上一页 下一页返回任务1 数码管及动态显示实现2)1位数码管的显示段码以共阳型为例,根据图2-1-4所示,如果要显示“0冶,则要让a、b、c、d、e、f段点亮,g和dp(小数点位)不亮,且COM端应该接高电平,相应的段应该是低电平点亮。可知“0冶的显示用二进制表达为11000000B,十六进制为C0H,在C51中表达为0 xc0。我们把数码管显示一个数字或字符的相应位的亮灭用对应的二进制(或16进制)表达的数称为该数字或字符的显示段码。共阳LED数码管段码表表2-1-1。3)多位一体封装数码管以4位共阴型数码管为例(见图2-1-5)
45、,4个独立的数码管的段码相对应并联在一起,每个单元的阴极接在一起,共引出4个公共位。上一页 下一页返回任务1 数码管及动态显示实现所以4位一体封装数码管(带小数点)共有12根引脚。更多位的数码管的结构依此类推。共阳型多位一体封装数码管即把图2-1-5中各个LED反过来即可。4)数码管动态扫描显示原理动态扫描显示是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8个同名端连在一起,笔划段adp通过限流电阻接至单片机的某组I/O口上,段码位接到P0口。每一个单独显示的公共极COM1至COM8是通过三极管各自独立地受I/O线控制,图2-1-1是把控制口接至P2口。CPU向字段输出口
46、送出字形码时,所有显示器接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以我们就可以自行决定何时显示哪一位了。上一页 下一页返回任务1 数码管及动态显示实现而所谓动态扫描就是指我们采用分时的方法,轮流控制各个单位显示器的COM端,使各个单位显示器轮流点亮。当然,每一个COM要接三极管以提高驱动能力。在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人眼的视觉暂留现象(100ms)及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,那人看到的就是一组稳定的显示数据。扫描显示在程序设计上虽然相对复杂一些,
47、但省下了单片机宝贵的I/O口资源!这一点对于复杂的工程系统的设计是尤为重要的。上一页 下一页返回任务1 数码管及动态显示实现2.74LS377的使用介绍该芯片是一个锁存器,见图2-1-6。当控制端口E为低电平时,则选中芯片,此时CP端如有一个上升沿,D0D7脚上的输入信号就锁存进入芯片中,并从Q0Q7输出。74LS377具体时序过程参见表2-1-2。在单片机控制的多位数码管显示电路中使用74LS377的目的就是可以让单片机的I/O口复用,便于控制与扩展,达到节省单片机I/O口资源的目的。上一页 下一页返回任务1 数码管及动态显示实现亚龙YL-236的显示模块的数码管部分,电路内部用了两片74L
48、S377,一片的数据输出端接数码管段码位、另一片的数据输出端接数码管扫描位,其中这两片芯片的CP端接一起并在模块外部做成插孔,两个E端也分别做成插孔。这样设计的目的在于:其一,数码管的段码位与扫描位可以合并,只占用单片机的一组I/O口(接到了P0),这样完全省去了一组I/O口;其二是单片机的P0口可以复用,接其他资源,完全起到了总线的作用。任务实施1.完成8位共阳数码管从左至右稳定显示“01234567冶数字。仔细阅读源程序A,将该程序导入KeilC,编译生成hex文件。上一页 下一页返回任务1 数码管及动态显示实现在Proteus上绘制能实现该功能的原理图(参考图2-1-7),将hex文件模
49、拟烧录至单片机芯片,仿真运行并观察现象,做好记录。2)Proteus绘制原理图(参考图2-1-7)3)仿真结果演示(参考图2-1-8)2.阅读理解程序B,在亚龙YL-236单片机实训考核装置上完成“0059冶秒的计时实验。1)模块选择选择亚龙YL236单片机实训考核装置的主机模块MCU01、电源模块MCU02、显示模块MCU04。采用在线下载程序形式,采用SL-USBISP-A在线下载器。上一页 下一页返回任务1 数码管及动态显示实现2)连线将电源模块的+5V电源接至显示模块的+5V电源口;将在线下载器的IDC10插头接到主机模块的在线下载口上,并将下载器连到个人电脑上;将主机模块上单片机的P
50、0.0P0.7插口用接插导线或排线插接到显示模块数码管区的D0D7插口上,P2.5接至CS1作段选位,P2.6接至CS2作位选位,P2.7接至WR作使能。注意:CS1、CS2在模块内部就是分别接数码管段码位的锁存芯片的E端与数码管扫描位的锁存芯片的E端,WR是两块74LS377的CP端并联后的引出口。上一页 下一页返回任务1 数码管及动态显示实现3)阅读理解程序B4)验证结果将上述程序2-1-2导入KeilC,编译生成hex文件。打开ISP在线编程软件,加载hex文件,烧录进AT89S52。打开实训装置电源,运行观察现象,做好记录。上一页返回任务2 12864液晶屏显示实现液晶显示屏也叫液晶显