1、AT89S52单片机基础项目教程目目 录录0前言前言下一页返回目目 录录1243 35项目项目1 音乐彩灯制作音乐彩灯制作项目项目2 全自动洗衣机控制全自动洗衣机控制项目项目3 LED点阵显示温度计制竹点阵显示温度计制竹项目项目4 自动分拣投料机控制自动分拣投料机控制项目项目5 化工自动投料反应釜系统控制化工自动投料反应釜系统控制下一页返回上一页目目 录录67项目项目6 实训工位供电故障自诊断实训工位供电故障自诊断及故障点数据采集制作及故障点数据采集制作项目项目7 电力负荷无线实时监控系电力负荷无线实时监控系统控制统控制返回前言 单片机控制技术是现代控制工程领域一门飞速发展的技术,其在教学及产
2、业界的技术推广仍然是当今科学技术发展的热点。单片机也称作“微控制器”或“嵌入式微处理器”,它是把一个相当于组成整个计算机的系统集成到一片集成电路上,相当于一块芯片就构成了一台计算机。基于这个特征,单片机具备体积小、质量轻、价格便宜的优势,为我们学习、应用和开发提供了便利的条件。目前单片机技术已经完全应用到我们日常生活、工业、国防与航天等各个领域中。比如家用电器类:电视机、空调器、全自动洗衣机等;商用管理类:电子秤、条码管理系统等;汽车电子类:电子稳定系统、胎压检测、倒车雷达等;通信类:手机、电台等;农业类:温湿度控制器、自动灌溉等;计算机外围设备类:键盘、鼠标、打印机、显示器等;办公设备类:打
3、印机、传真机、扫描仪等;仪器仪表类:各种电量测量仪、开关电源等;安防类产品:监控、报警器等;计量类:智能电度表、燃气表。下一页返回前言过去在没有单片机的时代,制造这些产品只能使用非常复杂的电路,这样做出来的产品体积大、成本高、故障率高、精度有限。而现在,我们只需要利用单片机作为控制核心,接一些简单的外围电路,利用程序来实现复杂的控制。这样一来,产品的体积变小了,成本降低了,控制精度提高了,故障率下降了。据国家权威部门统计,我国的单片机年产量已达10亿片左右,且每年都在以一定速度增长。所以,单片机技术是电子技术应用的一次革命 本课程是高等学校机电类或电子电工类专业的主干课程,也是该类专业学生必修
4、的专业课程,同时是学生专业能力的重要组成部分。通过本教材的学习,希望让读者掌握51系列单片机控制系统设计的基本方法,熟悉C51语言的编程应用,掌握Keil C与Proteu5编译、仿真软件的使用,理解常用单片机系统的控制方式、特点,具备单片机系统设计、安装和调试的初步能力。下一页返回上一页前言本教材编写打破传统的单片机课程以知识为序列组织课程的方式,依据“以就业为导向,以能力为本位”的培养方针,采用以项目为载体、以任务为驱动,根据相关专业所对应职业岗位的需求,以构建不同控制要求的单片机系统为目标完成“项目”的方式进行知识与技能的重组。教材所选的项目都是在工程或日常生活中实用的机电一体化或电子产
5、品,所有项目涵盖了学习单片机控制系统所必须掌握的理论知识与实践技能。每个项目都分解为若干相对完整的任务,由浅入深、由易到难,采用顶层分解的方式并引入单片机控制系统开发的行业技术流程实施编写,让学生在做中学,适当降低理论重心,突出实际应用,强调“呈现项目结果”,注重培养学生的应用能力和解决问题的实际工作能力。下一页返回上一页前言 考虑到广大学生或相关专业技术人员的自主学习,本教材图文并茂,从“任务实施”中的技能需求向理论方向寻求界定相关知识的外延和内涵,避免出现“遗漏”或者“过多、过深、过难”。提供了大量在实践中成功地调试完成的例程与完整产品的程序,包含任务书、工作单、工艺表、质量评价表等项目开
6、发资料,实践中经常需要且扩展的实用技巧在小知识点上体现出来;同时,我们也充分考虑到各地区、各学校实训条件与实训设施的不同,在本教材任务实施的载体上除了亚龙YL-236单片机实训平台外,同样的任务也可以用在其他实训箱、实验板,甚至没有实训设施也可以在虚拟实训平台上完成仿真。下一页返回上一页谢谢观赏项目项目1 音乐彩灯制作音乐彩灯制作1243 3任务任务1 认识认识AT89S52单片机单片机任务任务2 实现单只实现单只LE D闪烁闪烁任务任务3 LED花式彩灯制作花式彩灯制作任务任务4 定时器及中断学习定时器及中断学习下一页项目项目1 音乐彩灯制作音乐彩灯制作12任务任务5 单片机控制扬声器发音单
7、片机控制扬声器发音任务任务6 音乐彩灯控制实训音乐彩灯控制实训返回任务1 认识AT89S52单片机 一台能够工作的计算机要由以下几个部分构成:CPU、存储器、I/0接口和定时与中断系统。在个人计算机上这些部分被分成若干块芯片,安装在一个称之为主板的印刷线路板上。而在单片机中,这些部分全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机。MCS51是指由美国Intel公司生产的一系列单片机的总称,这一系列单片机包括了若干品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其他单片机都是在8051的基础上进行功能的增、减改变而来的,所以
8、人们习惯于用8051”来称呼MCS51系列单片机下一页返回任务1 认识AT89S52单片机 AT89S52单片机(其芯片及底座参见图1一1一1)也是51系列产品之一,是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash存储器;使用Atmel公司高密度非易失性存储器技术制造,与工业80051产品指令和引脚完全兼容;片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8K字节Flash,256字节PRAM,3
9、2位I/)口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路AT89 S52的内部结构上一页 下一页返回任务1 认识AT89S52单片机 1.CPU CPU (Central Processing Unit,中央处理器)是AT89S52内部的字长为8位的中央处理单元,它由运算器和控制器两部分组成。实际上CPU是单片机的核心 (i)运算器 运算器以ALU (Arithmetic Logic Unit,算术逻辑单元)为核心,包括累加器A (Accu-tnulator),PSW (Program Status Word,程序状态字寄存
10、器)、B寄存器、两个8位暂存器TMP1和TMP2等部件。其中,ALU的运算功能很强,可以运行加、减、乘、除、加1、减1,BCD数十进制数调整、比较等算术运算,也可以进行与、或、非、异或等逻辑运算,同时还能完成循环移位、判断和程序转移等控制功能。上一页 下一页返回任务1 认识AT89S52单片机 (2)控制器 控制器包括PC (Program Counter,程序计数器)、指令寄存器、指令译码器、振荡器、定时电路及控制电路等部件,它能根据不同的指令产生相应的操作时序和控制信号,控制单片机各个部件的运行。2.存储器 AT89 S52系列单片机内的只读存储器(Read-Only Memory,ROM
11、)是程序存储器,用于存放已编号的用户程序、数据表格等。片内的随机存取存储器(Random-Access Memory,RAM)又称读/写存储器,可用于存放输入数据、输出数据和中间计算结果等随时有可能变动的数据,同时还可作为数据堆栈区。当存储器的容量不够时,可以进行外部扩展 3.I/O口上一页 下一页返回任务1 认识AT89S52单片机 (I)并行口。AT89 S52单片机有4个8位并行I/0接口PO一P3,均可并行输入/输出8位数据。(2)串行口。AT89 S52单片机有2个串行I/()接口,用于数据的串行输入/输出。4.定时/计数器 定时/计数器可以产生定时脉冲,实现单片机的定时控制;或用计
12、数方式,记录外部事件的脉冲个数。AT89 S52的引脚介绍(图1一1-2)1.工作电源 电源是单片机工作的动力源泉。对应的接线方法为:从:,:(40脚)电源 端,工作时接+SV电源;GND (20脚)为接地端上一页 下一页返回任务1 认识AT89S52单片机 2.时钟电路 时钟电路为单片机产生时序脉冲。单片机所有运算与控制过程都是在统一的时序脉冲的驱动下进行的,如果单片机的时钟电路停止工作(晶振停振),那么单片机也就停止运行了。当采用内部时钟时,连接方法如图1一1一3所示,在晶振引脚XTALl (19脚)和XTAL2 (18脚)引脚之间接入一个晶振,两个引脚对地分别再接入一个电容即可产生所需的
13、时钟信号。电容的容量一般在几十皮法,如30pF 3.复位 在PRESET(9脚)持续出现24个振荡器脉冲周期(即2个机器周期)的高电平信号时,将使单片机复位。只要该引脚保持高电平,芯片便循环复位。复位后,所有I/)引脚均置1,程序计数器和特殊功能寄存器全部清零 4.输入/输出引脚上一页 下一页返回任务1 认识AT89S52单片机 P1端口(P1.0一Pl.7,1脚一8脚):带有内置上拉电阻的8位双向I/)端口,可以输入输出电流。如果是给外部芯片赋值,可直接接入;如果要驱动外部电路,比如发光二极管,需要接限流电阻。与51系列不同的是,P1.0和P1.1可以作为定时/计数器的外部输入,作为定时/计
14、数器使用(见表1一1一1).P3端口基本功能同P1端口。此外,该端口还具有第二功能,详见表1一1一2上一页返回任务2 实现单只LED闪烁 所谓最小化应用系统就是单片机要正常工作所必须具备的、最简单的硬件支持,其中最主要的就是三个基本条件:电源正常;时钟正常;复位正常。图1一2一1即为实现单只LED闪烁的最小化应用系统原理图。在AT89S52单片机的40个引脚中,使用了电源引脚2个(40,20脚)、晶振引脚2个(18,19脚)、上电复位引脚1个(9脚)、读取内部程序引脚1个(31脚)、可编程输入/输出引脚1个(9脚),其余引脚悬空。图1-2一1中发光二极管负极与单片机引脚P1.7之间串接了一个5
15、60SL的限流电阻,防止发光二极管和单片机的引脚Pl.7因为电流过大烧坏,使发光二极管和单片机都工作在安全状态。Proteu5 ISIS是英国Labcente:公司开发的电路设计、分析与实物仿真软件,功能极其强大。该软件的特点是:下一页返回任务2 实现单只LED闪烁(1集原理图设计、仿真分析(ISIS和印刷电路板设计(ARCS)于一身,可以完成从绘制原理图、仿真分析到生成印刷电路板图的整个硬件开发的过程。(2)提供几千种电子元件(分立元件和集成电路、模拟和数字电路)的电路符号、仿真模型和外形封装。(3)支持大多数单片机系统以及各种外围芯片(RS232,IZ C调试器、SPI调试器、键盘和LC
16、D系统等)的仿真 (4)提供各种虚拟仪器,如各种测量仪表、示波器、逻辑分析仪、信号发生器等。过去需要昂贵的电子仪器设备、繁多的电子元件才能完成的电子电路、单片机等实验,现在只要一台电脑,就可以在该软件环境下快速轻松地实现。上一页 下一页返回任务2 实现单只LED闪烁 1.运行Keil C软件进行编程、编译(1)启动Keil N Vision2软件 双击图标 ,运行几秒后即出现图1-2-2所示界面 (2)建立项目 点击Project菜单,如图1-2-3所示,弹出一个标准的X%indo二文件对话框,如图1-2-4所示。在文件名中输入C程序项目名称“taskl,保存后的扩展名为 uv2,这是Keil
17、 N.,Vision2项目文件扩展名,以后我们可以直接点击此文件打开先前做的项目。(3)选择所要的单片机型号 这里我们选择Atmel公司的AT89S52,如图1-2-5所示。上一页 下一页返回任务2 实现单只LED闪烁(4)创建文件 点击图1-2-6中“新建文件”快捷按钮,也可以点击“File菜单下“New”或快捷键 Ctrl+N”来实现,此时出现如图1-2-6所示窗口,用户在“Textl”窗口中进行程序编写工作。根据图1-2一1所示,只要以一定的时间间隔,不断重复给Pl.7高、低电平,我们就可以看到LED闪烁 程序代码:上一页 下一页返回任务2 实现单只LED闪烁 (5)保存文件 在创建文件
18、一开始即进行文件保存。单击“保存”命令,出现图1-2-对话框,文件名为“taskl.c,保存在项目所在的文件夹中。这时你会发现程序单词颜色发生了改变,说明Keil的C语法生效了。上一页 下一页返回任务2 实现单只LED闪烁(6)添加文件 在图1-2-8中右击屏幕左边的Source Groupl文件夹图标,弹出菜单,在这里可以对项目进行添加或删除文件操作选“Add Files to Group图1一2一9所示,选择刚才保存过的文件,单击“Add按钮,关闭对话框,此时文件已被添加到项目中.G)编译并生成可烧录的hex文件 在编译调试程序之前,必须对程序进行设置,使之可同时生成hex文件。hex格式
19、文件是Intel公司提出的按地址排列的数据信息,数据宽度为字节,所有数据使用16进制表示,常用来保存单片机或他处理器的目标程序代码,一般的存储器都支持这种格式。上一页 下一页返回任务2 实现单只LED闪烁 如图1-2一10所示,右击“Targetl,单击“Options for Target Target 1 ,弹出如图1一2一11所示对话框,勾选“Create Ilex File”选项,这样在每次进行编译文件操作的同时都可生成hex文件。为了顺利完成仿真,还需要对晶振进行设置。如图1一2一12所示,在“Target”选项卡中,将晶振频率改为12MHz 接下来我们开始编译文件。在图1一2一13
20、中,1、2,3都是编译按钮:1是编译单个文件;2是编译当前项目,如果先前编译过后文件没有做过编辑改动,再点击是不会重新编译的;3是重新编译,不管程序是否有所改动,每点击一次均会再次编译链接一次;4是停止编译按钮。以上操作命令均可在“Project”菜单中找到。上一页 下一页返回任务2 实现单只LED闪烁 按下编译按钮,软件对文件进行编译,编译结束之后,在图1-2-13的5窗口中将会显示编译过程中出现的错误信息和资源使用情况,并且告知用户hex文件已创建成功。如果程序出现错误,必须将错误全部修正才能通过编译,只有顺利通过编译才能成功创建hex文件。2.运行Proteus软件进行仿真(1)进入Pr
21、oteus ISIS 双击图标褪启动ISIS 6 Professional程序,出现如图1-2一14所示屏幕,表明进入Pro-tens ISIS集成环境。(2)进入工作界面 上一页 下一页返回任务2 实现单只LED闪烁 Proteus ISIS的工作界面是一种标准的X%indo。界面,包括:标题栏、主菜单、标准工具栏、绘图工具栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择窗口、图形编辑窗口,如图1-2-15所示(3)绘制原理图 放置元器件 在图1-2一15中单击对象选择按钮“P,弹出图1-2一16所示对话框,在“Key-_words”处输入需放置元器件名称,找到该
22、元器件并将其放置到图1一2一15图形编辑窗口中 连线上一页 下一页返回任务2 实现单只LED闪烁 完成所有元器件的选择后(如图1-2一17所示),对照图1-2一1单片机最小化应用系统原理图开始进行连线。需要指出的是,由于程序编写时,将LED放置在P1.0,画图时应满足此条件,如图1-2一18所示 烧录文件 双击AT89 S52芯片,弹出对话框,如图1-2一19所示。单击“Program File”选项中“打开文件”按钮,找到hex文件,单击“打开”或双击文件名,hex文件即被烧录到芯片中,如图1一2一20所示 运行仿真 程序烧录成功后,单击“仿真进程控制按钮”中第一个“Plat/”按钮,开始仿
23、真,此时可以看到发光二极管闪烁,按“Stop”停止仿真,如图1-2-21所示上一页返回任务3 LED花式彩灯制作 在此次任务中,我们需要用到8只LED,将其接在P1口,电路原理图如图1一3一1所示 程序代码下一页返回任务3 LED花式彩灯制作上一页 下一页返回任务3 LED花式彩灯制作上一页 下一页返回运行运行Keil,编写、编译程序,生成,编写、编译程序,生成hex文件文件运行运行Proteus,绘制原理图、烧录文件、实现仿真,如图,绘制原理图、烧录文件、实现仿真,如图1一一3一一2所示所示个个任务3 LED花式彩灯制作 运行Keil,编写、编译程序,生成hex文件 运行Proteus,绘制
24、原理图、烧录文件、实现仿真,如图1一3一2所示上一页返回任务4 定时器及中断学习 在日常生活中有许多定时、计数的例子,如闹钟报时、画“正”字统计选票等。在单片机应用系统中定时和计数是同一个概念。比如,一个闹钟,将它设定在1小时后闹响,换一种说法就是秒针走了3600次之后闹响,这样时间的测量问题就转化为秒针走的次数问题,也就变成了计数的问题了。因此,单片机内部的定时器和计数器是同一结构,计数器记录的是单片机外部发生的事件,由单片机的外部电路提供计数信号;定时器是由单片机内部提供一个非常稳定的计数信号,由单片机振荡信号经过12分频后获得一个脉冲信号,此信号作为定时器的计数信号。单片机的振荡信号则由
25、外接的晶体振荡器产生。AT89 S52单片机内有三个16位可编程定时/计数器:TO,T1和T2下一页返回任务4 定时器及中断学习 1.定时/计数器TO和T1 图1-4一1是定时/计数器的结构框图。由图可知,定时/计数器由定时器0、定时器定时器方式寄存器TMOD和定时器控制寄存器TCON组成。TO和T1定时/计数器都可由软件设置为定时或计数工作方式。当TO或T1用作定时器时,由外接晶振产生的振荡信号进行12分频后,提供给计数器,作为计数的脉冲输入,计数器对输入的脉冲进行计数,直至产生溢出;当TO或T1用作对外部事件计数的计数器时,通过芯片引脚P3.4或P3.5对外部脉冲信号进行计数。当加在P3.
26、4或P3.5引脚上的外部脉冲信号出现一个由1到0的负跳变时,计数器加1,如此直至计数器产生溢出。上一页 下一页返回任务4 定时器及中断学习 2特殊功能寄存器SFR (Special Function Register)SFP是AT89S52内部具有特殊用途的寄存器(如专用寄存器、串行口、并行口锁存器、定时/计数器等)的集合。AT89 S52内部共有27个SFP,每个占用1个PRAM单元,它们分布在80H OFFH的地址范围内。AT89 S52特殊寄存器映像及复位值参见表1-4一1 TO和T1有两个8位控制寄存器TMOD和TCON,它们分别被用来设置各个定时/计数器的工作方式:选择定时或计数功能
27、、控制启动运行以及作为运行状态的标志等。当系统复位时,TMOD和TCON的所有位都清。在TMOD中,高4位用于对定时器T1的方式控制,低4位用于对定时器TO的方式控制,参见表1一4一3,其各位功能简述如下:上一页 下一页返回任务4 定时器及中断学习 4.定时/计数器控制寄存器(TCON)如表1一4一4所示,TCON的高4位为定时/计数器的运行控制和溢出标志,低4位与外部中断有关,将在后面作介绍。5.定时/计数器工作方式 (1)工作方式0 定时/计数器工作在方式。时,16位计数器只用了13位,即THO/TH1的高8位和TLO/TL1的低5位,组成一个13位定时/计数器,TLO/TL1的高3位不用
28、 (2)工作方式1 定时/计数器工作方式1与工作方式n相似,差别在于其中的计数器的位数:工作方式1以16位计数器参与计数上一页 下一页返回任务4 定时器及中断学习 (3)工作方式2 定时/计数器在工作方式2时,16位的计数器分成了两个独立的8位计数器THO/TH1和TLO/TL1,TLO/TL1用作8位计数器,THO/TH1用来保存计数的初值。每当TLO/TL1计满溢出时,自动将THO/TH1的初值再次装入TL,此时定时/计数器构成了一个能重复置初值的8位计数器 (4)工作方式3 工作方式3仅对定时/计数器0有效,此时,将16位的计数器分为两个独立的8位计数器THO/TH1和TLO/TL1且仅
29、对TO起作用。如果把T1设置为工作方式3,T1将处于关闭状态 6.定时/计数器2上一页 下一页返回任务4 定时器及中断学习 时/计数器2是一个16位定时/计数器,是定时器或外部事件计数器。定时/计数器2有三种操作方式:捕捉方式、自动重装方式和波特速率发生器方式。工作方式由T2CON的控制位选择。(1)定时/计数器2控制寄存器T2CON T2CON可位寻址,地址为OCBH。其各位定义见表1一4一5.(2)定时/计数器2模式寄存器T2MOD T2MON不可位寻址,地址为OC9H。其各位定义见表1一4一6(3)定时/计数器2操作方式选择 T2操作方式选择见表1一4一7上一页 下一页返回任务4 定时器
30、及中断学习 7.中断系统 在日常生活中广泛存在着“中断”的例子。例如一个人正在看书,这时电话铃响了,于是他将书放下去接电话。为了在接完电话后继续看书,他必须记下当时的页号,接完电话后,将书取回,从刚才被打断的位置继续往下阅读。由此可见,中断是一个过程。计算机是这样处理中断的,当有随机中断请求后,CPU暂停执行现行程序,转去执行中断处理程序,为相应的随机事件服务,处理完毕后CPU恢复执行被暂停的现行程序。中断有两个重要特征:程序切换(控制权的转移)和随机性。(如图1一4一2所示)(1)AT89S52中断源与中断向量地址上一页 下一页返回任务4 定时器及中断学习 中断源就是向CPU发出中断请求的来
31、源。AT89 S52共有六个中断源:2个外部中断(INPO和INTl),3个定时器中断(定时器TO,T1和T2)和1个串行中断外部中断包括外部中断。和外部中断1。它们的中断请求信号分别由单片机引脚INTO/P3.2和INTl/P3.3输入 (2)内部定时和外部计数中断 单片机芯片内部有三个定时/计数器,对脉冲信号进行计数。若脉冲信号为内部振荡器输出的脉冲(机器周期信号),则计数脉冲的个数反映了时间的长短,称为定时方式。若脉冲信号为来自TO/P3.4,T1/P3.5,T2/P1.0的外部脉冲信号,则计数脉冲的个数仅仅反映外部脉冲输入的多少,称为计数方式。上一页 下一页返回任务4 定时器及中断学习
32、 (3)串行中断 串行中断是为串行通信的需要而设置的。当串行口发送完或接收完一帧信息时,单片机内部硬件便自动串行发送或接收数据使中断标志位置1。当CPU查询到这些标志位为1时,便激活串行中断。串行中断是由单片机内部自动发生的,不需要在芯片外设置引入脚(4)中断矢量地址 中断源发出请求,CPU响应中断后便转向中断服务程序。中断源引起的中断服务程序入口地址即为中断矢量地址。中断矢量地址是固定的,用户不可改变。中断矢量地址如表1一4一8所示(5)中断标志与控制上一页 下一页返回任务4 定时器及中断学习 要实现中断,首先中断源要提出中断申请,而中断请求的过程是单片机内部特殊功能寄存器TCON和SOON
33、相关状态位中断请求标志位置1的过程,当CPU响应中断时,中断 请求标志位才由硬件或软件清。定时/计数器控制寄存器TCON TCON用于寄存外部中断请求标志位、定时器溢出标志位和外部中断触发方式的选择。其格式如表1-4-9所示 串行口控制寄存器SCON;SOON的字节地址是98H,可以位寻址;位地址是98H9FH。其格式如表1一4一10所示 中断允许控制寄存器IE CPU对中断源的开放和屏蔽以及每个中断源是否被允许中断,都受中断允许寄存器IE控制。中断允许控制寄存器IE对中断的开放和关闭实行两级控制,即有一个总中断位EA,同时5个中断源还有各自的控制位进行控制。IE寄存器格式如表1一4一11所示
34、.上一页 下一页返回任务4 定时器及中断学习 中断优先级控制寄存器IP AT89S52单片机具有高、低2个中断优先级。高优先级用1”表示,低优先级用“0”表示各中断源的优先级由中断优先级寄存器IP进行设定,其格式如表1一4一12所示 (6)优先级结构 中断优先级只有高、低两级,所以在工作过程中必然会有两个或两个以上中断源处于同一中断优先级。若出现这种情况,内部中断系统对各中断源的处理遵循以下两条基本原则:低优先级中断可以被高优先级中断所中断,反之不能;一种中断(不管是什么优先级)一旦得到响应,与它同级的中断不能再中断它上一页 下一页返回任务4 定时器及中断学习 电路原理图如图1一4一3所示 程
35、序代码上一页 下一页返回任务4 定时器及中断学习 运行Keil,编写、编译程序,生成hex文件 运行Proteus,绘制原理图、烧录文件、实现仿真上一页返回任务5 单片机控制扬声器发音 声音的频谱范围大约在几十到几千赫兹,若能利用程序来控制单片机某个口产生一定频率的方波,接上喇叭就能发出一定频率的声音;若再利用延时程序控制高、低电平的持续时间,就能改变输出时间。图1-5一1所示为单片机音频信号输出放大电路,它由三极管、电阻R1 R2和扬声器SP组成。该放大器的输入端与单片机的输入/输出接口P2.0相连接,在通常情况下,P2.0应保持高电平,基本上与电源Vcc:保持同等电位,因此基极电流I,为零
36、,三极管截止。当P2.0为低电平时,在电阻R1 R2上形成了压降,产生基极电流石,石是由单片机产生的音频信号,利用三极管的放大原理推动扬声器发出声响。表1一5为音符频率与计数初值的对应表,比如中音1的频率为523Hz,周期T=1/523Hz=1 912s,因此只要在P2.7引脚产生半周期为956,s的方波,即可听到持续的中音。下一页返回任务5 单片机控制扬声器发音 2.音乐节拍的生成 设1/4拍为1个DELAY,1拍则对应于4个DELAY,以此类推,只要求得1/4拍的DE-LAY时间,其余的节拍就是它的整数倍 1.“两只老虎”乐谱:2.运行Keil,编写、编译程序,生成hex文件。程序代码:上
37、一页 下一页返回任务5 单片机控制扬声器发音上一页 下一页返回任务5 单片机控制扬声器发音上一页 下一页返回任务5 单片机控制扬声器发音 3.运行Proteus,绘制原理图、烧录文件、实现仿真,如图1-5-2所示。上一页 下一页返回任务6 音乐彩灯控制实训 电路原理图如图1一6一1所示。上一页 下一页返回任务6 音乐彩灯控制实训上一页 下一页返回任务6 音乐彩灯控制实训 运行Keil,编写、编译程序,生成hex文件 运行Proteus绘制原理图、烧录文件、打开音频设备实现仿真,如图1一6一2所示上一页返回图1一1一1 AT89S52芯片及底座返回图1一1一2 AT89S52引月却图返回图1一1
38、一3 时钟电路返回(a)内部方式内部方式;(b)外部方式外部方式表1一1一1 Pl.0和Pl.1第二功能表返回表1-1-2 P3端口引脚第二功能表返回图1一2一1 AT89S52单片机的最小化应用系统原理图返回图1-2-2 启动Keil ii,Vision2软件后的界面返回图1-2-3 新建文件对话窗口返回图1-2-4 新文件命名对话窗口返回图1-2-5 选择单片机型号对话窗口返回图1-2-6 创建文件对话窗口返回图1-2-7 保存文件对话窗口返回图1-2-8 添加文件对话窗口返回图1-2-9 选择文件对话窗口返回图1-2-10 生成hex文件对话窗口1返回图1-2-11 生成hex文件对话窗
39、口返回图1-2-12 晶振设置对话窗口返回图1-2-13 文件编译对话窗口返回图1-2-14 启动Proteus程序后出现的界面返回图1一2一15 Proteus工作界面返回图1-2-16 放置元器件对话窗口返回图1-2一17 放置元器件对话窗口2返回图1一2一18 单片机最小化系统仿真连接图返回图1-2-19 烧录文件对话窗口返回图1-2-20 选择烧录文件对话窗口返任务2 实现单只LED闪烁回图1一2一21 仿真效果图返回图1一3一1 电路原理图返回图1一3一2 仿真效果图返回图1一4一1 定时/计数器结构框图返回表1一4一1 AT89S52特殊寄存器映像及复位值返回表1一4一1 AT89
40、S52特殊寄存器映像及复位值返回表1-4-2 定时/计数器方式控制寄存器(TMOD)的格式返回表1一4一3 定时/计数器工作方式选择返回表1一4一4 定时/计数器控制寄存器(TCON)的格式返回表1-4-5 定时/计数器2控制寄存器T2CON的格式返回表1一4一6 定时/计数器2模式寄存器T2MOD的格式返回表1一4一7 定时/计数器2操作模式返回图1一4一2 中断示意图返回表1-4-8 中断源及其对应的矢量地址返回表1-4-9 定时/计数器控制寄存器TCON的格式返回表1-4-10 串行口控制寄存器SCON的格式返回表1-4-11 中断允许控制寄存器IE的格式返回表1-4-12 中断优先级控
41、制寄存器IP的格式返回图1一4一3 电路原理图返回图1一5一1 电路原理图返回表1-5-1 部分音符频率、计数初值的对应关系返回图1一5一2 仿真效果图返回图1一6一1 电路原理图返回图1一6一2 仿真效果图返回谢谢观赏项目项目2 全自动洗衣机控制全自动洗衣机控制1243 3任务任务1 数码管及动态显示实现数码管及动态显示实现任务任务2 12864液晶屏显示实现液晶屏显示实现任务任务3 按键及按键矩阵输入控制按键及按键矩阵输入控制任务任务4 交、直流电机驱动控制交、直流电机驱动控制返回任务1 数码管及动态显示实现 要顺利完成本次任务,首先在掌握数码管物理结构及显示原理的基础上,需根据设计目标的
42、要求选择合适的数码管产品,重点包括极性(共阴结构、共阳结构)、显示的位数、采用单只数码管拼合还是多位一体封装形式(具体根据单片机口资源情况选用);其次是做好数码管与单片机接口的设计工作,包括选用单片机4组口的哪一组或几组、扫描位的选择与驱动部件的选择(三极管、TTL非门等);最后是根据已设计好的硬件接口电路设计程序并仿真调试。在设计程序时要注意:如果选用的数码管是多位一体封装的,要采用循环扫描的程序设计方法。如选用74 LS377等总线形式接口,要注意段码与扫描码分时操作,分时设定74 LS377的门控位。具体的硬件接口设计见图2一1一1下一页返回任务1 数码管及动态显示实现 如图2一1一1,
43、本次任务的Proteus仿真部分即从左至右稳定显示“01234567”数字,采用三极管作扫描驱动,三极管选用小功率NPN型的9013,高电平导通。当然也可以选PNP型的9012,扫描为低电平导通。数码管选用8位共阳型一体化封装的形式 如果有条件,本次任务可以在亚龙YL-236单片机实训考核装置上完成部分即.00 59”秒计时的仿真调试。由于该装置的显示模块的数码管部分,在模块内部已采用74LS377接口,有关74 LS377控制原理请阅读本任务的知识准备部分。该部分原理图见图2一1-2上一页 下一页返回任务1 数码管及动态显示实现 1.数码管基本知识(1)数码管的作用及物理结构 数码管是一种半
44、导体发光器件,其基本单元是发光二极管。这些发光二极管组合成一个”8”字,当对应的发光段亮时,可以显示0到9数字及一些字母或符号(见图2一1一3)。如果带小数点就称为“8段数码管”,不带小数点就称为“7段数码管”。相信读者在许多场合或各种设备上都见过数码管。上一页 下一页返回任务1 数码管及动态显示实现 1位LE D数码管结构如图2一1一4所示。按发光二极管单元连接方式分为共阳型数码管(所有阳极接在一起形成公共端COM)和共阴型数码管(所有阴极接在一起形成公共端COM)。共阳数码管在应用时应将公共端COM接到+SV(注意大尺寸的数码管驱动电压较高,如3.5时或5时的数码管是9V或12V),当某一
45、字段发光二极管的阴极为低电平时,相应字段就点亮;当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管在应用时应将公共端COM接到电源地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮;当某一字段的阳极为低电平时,相应字段就不亮。所以共阴或共阳的数码管在选用时要注意结构上的区别。上一页 下一页返回任务1 数码管及动态显示实现 (2)1位数码管的显示段码 以共阳型为例,根据图2一1一4所示,如果要显示“0,则要让a,h,。、d、e,.f段点亮,g和办(小数点位)不亮,且COM端应该接高电平,相应的段应该是低电平点亮可知“0”的显示用二进制表达为11000000B,十六进制为COH
46、,在C51中表达为OxcO。我们把数码管显示一个数字或字符的相应位的亮灭用对应的二进制(或16进制)表达的数称为该数字或字符的显示段码。共阳LE D数码管段码表表2一1一1.(3多位一体封装数码管。以4位共阴型数码管为例(见图2一1一5),4个独立的数码管的段码相对应并联在一起,每个单元的阴极接在一起,共引出4个公共位。所以4位一体封装数码管(带小数点)共有12根引脚。更多位的数码管的结构依此类推。共阳型多位一体封装数码管即把图2一1一5中各个LE D反过来即可。上一页 下一页返回任务1 数码管及动态显示实现 (4)数码管动态扫描显示原理 动态扫描显示是单片机中应用最为广泛的一种显示方式之一。
47、其接口电路是把所有显示器的8个同名端连在一起,笔划段a一咖通过限流电阻接至单片机的某组I/0口上,图2一1一1是8位的数码管,段码位接到PO口。每一个单独显示的公共极COM1至COM8是通过三极管各自独立地受I/0线控制,图2-1-1是把控制口接至P2口。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM端,而这一端是由I/()控制的,所以我们就可以自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的方法,轮流控制各个单位显示器的COM端,使各个单位显示器轮流点亮。当然,每一个COM要接三极管以提高驱动能力。上一页 下一页返回任务1 数码
48、管及动态显示实现 2.74LS377的使用介绍 该芯片是一个锁存器,见图2一1一6。当控制端口E为低电平时,则选中芯片,此时CP端如有一个上升沿,DO一D7脚上的输入信号就锁存进入芯片中,并从G0一G7输出。74 LS377具体时序过程参见表2一1一2.1.完成8位共阳数码管从左至右稳定显示“01234567”数字。仔细阅读源程序A,将该程序导入Keil C,编译生成hex文件。在Proteus上绘制能实现该功能的原理图(参考图2一1一7),将hex文件模拟烧录至单片机芯片,仿真运行并观察现象,做好记录(1)阅读理解程序A上一页 下一页返回任务1 数码管及动态显示实现上一页 下一页返回任务1
49、数码管及动态显示实现上一页 下一页返回任务1 数码管及动态显示实现 2)Proteue绘制原理图(可以参考图2一1-7)3)仿真结果演示(参考图2一1一8)2.阅读理解程序B,在亚龙YL-236单片机实训考核装置上完成“00一59”秒的计时实验。(1)模块选择 选择亚龙YL236单片机实训考核装置的主机模块MCU01、电源模块显示模块MCU02MCU04。采用在线下载程序形式,采用SL一USBISP一A在线下载器(2)连线上一页 下一页返回任务1 数码管及动态显示实现 将电源模块的+SV电源接至显示模块的+SV电源口;将在线下载器的IDC10插头接到主机模块的在线下载口上,并将下载器连到个人电
50、脑上;将主机模块上单片机的P0.0P0.7插口用接插导线或排线插接到显示模块数码管区的DO一D7插口上,P2.5接至CS1作段选位,P2.6接至C S2作位选位,P2.7接至WR作使能。注意:CS1,CS2在模块内部就是分别接数码管段码位的锁存芯片的E端与数码管扫描位的锁存芯片的E端,WR是两块74 LS377的CP端并联后的引出口。(3)阅读理解程序B上一页 下一页返回任务1 数码管及动态显示实现上一页 下一页返回任务1 数码管及动态显示实现上一页 下一页返回任务1 数码管及动态显示实现上一页 下一页返回任务1 数码管及动态显示实现上一页返回(4)验证结果。将上述程序验证结果。将上述程序2一