1、 出版社 理工分社单片机应用技术项目教程版项目2 闪烁灯 出版社 理工分社单片机应用技术项目教程版教学目标教学目标知识目标:知识目标:1掌握51单片机并行输入/输出(I/O)端口的结构和功能;2掌握P0、P1、P2、P3口的操作方法;3理解单片机的时钟和时序;4掌握C语言源程序结构;5掌握C语言基本语句;6重点掌握循环语句while、dowhile、for的语法特点;7掌握延时程序设计和调试方法。技能训练目标:技能训练目标:1熟练使用C51对并行I/O端口操作的编程方法;2熟悉延时程序、子函数、循环语句的概念及熟练其设计方法;3熟练使用单片机仿真软件及开发系统的能力;4熟悉单片机应用系统的一般
2、开发流程。出版社 理工分社单片机应用技术项目教程版工作任务工作任务技术要求技术要求:设计一个基于单片机控制的LED闪烁灯光控制系统,即在单片机的P2端口上接8个发光二极管,使8个发光二极管不断亮灭以产生闪烁效果。制作一个基于单片机的制作一个基于单片机的LEDLED闪烁灯光控制系统闪烁灯光控制系统 出版社 理工分社单片机应用技术项目教程版项目分析项目分析 本系统功能由硬件和软件两大部份协调完成,硬件部分主要完成LED灯的输出显示;软件主要完成信号的处理及控制功能等。本系统的硬件采用模块化设计,以AT89C52单片机为核心,与LED接口电路组成控制系统。该系统硬件主要包括以下几个模块:AT89C5
3、2单片机最小系统、LED接口电路模块等。其中AT89C52主要完成外围硬件的控制以及一些运算功能,LED接口电路完成灯光的闪烁功能。系统组成方框图如图2-1所示。该系统软件主要由主程序、延时功能函数模块等组成,系统软件结构框图如图2-2所示。LED电路复位电路时钟电路电源电路 图2-1 LED灯闪烁控制系统组成方框图单片机延时子程序主程序图2-2 单片机灯闪烁系统软件结构框图 出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台 51系列单片机有4个I/O端口,每个端口都是8位准双向口,共占32根引脚。每个端口都包括一个锁存器(即专用寄存器P0P3)、一个输出驱动器和输入缓冲器。通
4、常把4个端口笼统地表示为P0P3。在无片外扩展存储器的系统中,这4个端口的每一位都可以作为准双向通用I/O端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口分时作为低8位地址线和双向数据总线。并行输入输出(I/O)端口 出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台P0口用作通用I/O口作为输出口作为输出口 当P0口用作输出口时,因输出级处于开漏状态,必须外接上必须外接上拉电阻拉电阻作为输入口作为输入口 当P0口用作输入口时,必须先向该端口锁存器写入“1”,地址/数据总线输出 P0P0口用于低口用于低8 8位地址总线和数据总线(分时传送);位地址总线和数据
5、总线(分时传送);出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台P1P1口:口:用作通用I/O口,用作输入时,均须先写入“1”;P2P2口:口:用作通用I/O口,用作输入时,均须先写入“1”;P2口用于高8位地址总线;出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台P3口用作通用I/O口,用作输入时,均须先写入“1”;P3P3口第二功能口第二功能引脚引脚第二功能第二功能引脚引脚第二功能第二功能P3.0P3.0RXD RXD 串行输入口串行输入口P3.4P3.4T0 T0 定时计数器定时计数器0 0P3.1P3.1TXD TXD 串行输出口串行输出口P3.5P3
6、.5T1 T1 定时计数器定时计数器1 1P3.2P3.2INT0 INT0 外部中断外部中断0 0(低(低电平有效)电平有效)P3.6P3.6WR WR 外部数据存储器写选通外部数据存储器写选通(低电平有效)(低电平有效)P3.3P3.3INT1 INT1 外部中断外部中断1 1(低(低电平有效)电平有效)P3.7P3.7RDRD外部数据存储器读选通外部数据存储器读选通(低电平有效)(低电平有效)出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台小结P0P3口都能用作I/O口,用作输入时,均须先写入“1”;用作输出时,P0口应外接上拉电阻。在并行扩展外存储器或I/O口情况下,P
7、0口用于低8位地址总线和数据总线(分时传送);P2口用于高8位地址总线;P3口常用于第二功能,用户能使用的I/O口只有P1口和未用作第二功能的部分P3口端线。出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台CPU时序CPU总是按照一定的时钟节拍与时序工作。CPU的时序是指CPU在执行指令过程中,CPU的控制器所发出的一系列特定的控制信号在时间上的相互关系。时序是用定时单位来说明的。常用的时序定时单位有时钟周期、状态周期、机器周期和指令周期。时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单
8、片机外接晶振的倒数,例如钟周期就是单片机外接晶振的倒数,例如12M12M的晶振,它的时间周期就是的晶振,它的时间周期就是1/12 us1/12 us),是计算机中最基本的、最小的时间单位),是计算机中最基本的、最小的时间单位.机器周期是指完成一个基本操作所需要的时间。一般情况下,机器周期是指完成一个基本操作所需要的时间。一般情况下,MCS-51MCS-51单片单片机采用定时控制方式,因此它有固定的机器周期。机采用定时控制方式,因此它有固定的机器周期。MCS-51MCS-51单片机的机器周期由单片机的机器周期由6 6个状态周期组成,也就是说一个机器周期个状态周期组成,也就是说一个机器周期=6=6
9、个状态周期个状态周期=12=12个时钟周期。个时钟周期。指令周期指执行一条指令所需要的时间。它一般由指令周期指执行一条指令所需要的时间。它一般由1 14 4个机器周期组成。个机器周期组成。图2-4时钟周期、机器周期、指令周期之间的关系图 出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台【例2-1】MCS-51的时钟周期、机器周期、指令周期是如何分配的?当晶振频率分别为6MHz和12MHz时,一个机器周期为多少s?解:MCS-51单片机每个状态周期包含2个时钟周期,1个机器周期有6个状态周期,每条指令的执行时间(即指令周期)为14个机器周期。当f=6MHz时,时钟周期=1/f=1
10、/6s,机器周期=(1/6)12s=2s 当f=12MHz时,时钟周期=1/f=1/12s,机器周期(1/12)12s=1s时钟周期、机器周期、指令周期的计算 出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台C C基本语句基本语句 C C语言的语句可分为以下五种:语言的语句可分为以下五种:表达式语句表达式语句 空语句空语句 复合语句复合语句 选择语句选择语句 循环语句循环语句 出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台1.表达式语句就是一个表达式加上一个分号。其一般形式如下:其一般形式如下:表达式;执行表达式语句就是计算表达式的值执行表达式语句就是计算表达
11、式的值 如:a+;x=1;2.空语句用一个分号表示,其一般形式为:用一个分号表示,其一般形式为:;程序执行空语句时需要占用一条指令的执行时间,但是什么也不做。程序执行空语句时需要占用一条指令的执行时间,但是什么也不做。在在C51C51程序中常常把空语句作为循环体,用于消耗程序中常常把空语句作为循环体,用于消耗CPUCPU时间等待事件发生的场合。时间等待事件发生的场合。表达式语句和空语句表达式语句和空语句 出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台用一对花括号用一对花括号 将多条语句组合在一起,在语法上相当于一条将多条语句组合在一起,在语法上相当于一条语句。组合在一起形成具
12、有一定功能的模块。语句。组合在一起形成具有一定功能的模块。1 1、一般形式、一般形式:内部数据说明;语句1;语句n;注意:(1)(1)在复合语句中说明的变量,是局部变量在复合语句中说明的变量,是局部变量,仅在复合语句中有仅在复合语句中有效。效。(2)(2)复合语句的复合语句的 之后,不能有分号。之后,不能有分号。(3)(3)复合语句之间用复合语句之间用“”分隔,内部各语句以;结束。分隔,内部各语句以;结束。(4)(4)复合语句允许嵌套。即复合语句允许嵌套。即中或嵌套中或嵌套。复合语句复合语句 出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台/*P1口8个LED灯依次点亮*/ma
13、in()P1=0 xff;P1=0 xfe;P1=0 xfd;P1=0 x7f;复合语句复合语句(程序块程序块)示例示例 出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台选择分支语句选择分支语句分支语句功能:通过给定条件的真假来决定下一步执行哪条语句。表达式语句真(非0)假(0)其它语句表表达达式式 语语句句1 语语句句2YN 出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台C C语言有语言有for for、whilewhile、do whiledo while三种语句构成循环结构。三种语句构成循环结构。lforfor循环语句循环语句forfor循环语句的一般格
14、式为:循环语句的一般格式为:for(表达式1;表达式2;表达式3)循环体语句lwhilewhile语句语句whilewhile循环语句的格式为:循环语句的格式为:while(表达式)循环体语句ldo whiledo while语句语句do whiIedo whiIe循环语句的格式为:循环语句的格式为:dodo循环体语句循环体语句while(while(表达式表达式););出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台循环控制语句:循环控制语句:for(for(变量赋初值表达式变量赋初值表达式;循环继续循环继续条件表达式条件表达式;循环变量增值表达式循环变量增值表达式)循环体语
15、句组循环体语句组;(1)求解“变量赋初值”表达式。(2)求解“循环继续条件”表达式。如果其值非0,执行(3);否则,转至(4)。(3)执行循环体语句组,并求解“循环变量增值”表达式,然后转向(2)。(4)执行for语句的下一条语句。循环继续条件循环继续条件forfor的下一条语句的下一条语句非非0 0(真)(真)0 0(假)(假)循环体语句组循环体语句组循环变量赋初值循环变量赋初值循环变量增值循环变量增值 出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台循环控制语句whilewhilewhile语句:它用来实现语句:它用来实现“当型当型”循环结构。循环结构。while语句的执行
16、过程:判断表达式为真(非0)时执行循环体;重复过程,直到表达式为假(0)时结束.循环继续的循环继续的条件表达式条件表达式下一条语句下一条语句非非0 0(真)(真)0 0(假)(假)循环体语句组循环体语句组while语句执行过程 出版社 理工分社单片机应用技术项目教程版项目知识平台项目知识平台在程序当中,有时候需要循环体条件不会真的时候也执行一次语句的情况下。这样就不能用while循环,使用dowhile循环。dowhile循环语句格式:do 语句;while(循环体)例:用例:用dowhiledowhile循环实现延时循环实现延时255s255s(反复执行(反复执行255255次空操作)。次空
17、操作)。void delaymS()/void delaymS()/延时函数延时函数 unsigned char i=255;/unsigned char i=255;/定义变量定义变量 do do i-;i-;while(i);/while(i);/循环循环 循环控制语句do-while 出版社 理工分社单片机应用技术项目教程版项目实施项目实施【活动一活动一】硬件电路设计硬件电路设计XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.
18、7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52X1CRYSTALC133pFC233pFC322uFR11kR2330D1LED-REDD2LED-REDD3LED-REDD4LED-REDD5LED-RE
19、DD6LED-REDD7LED-REDD8LED-RED12345678161514131211109RN1100234567891RP1RESPACK-8图图2.7 单片机闪烁灯控制系统电路图单片机闪烁灯控制系统电路图 出版社 理工分社单片机应用技术项目教程版项目实施项目实施算法设计算法设计根据系统工作原理图2-5可知:当P0口输出高电平,即P00 xff时,根据发光二极管的单向导电性可知,这时发光二极管全亮;当P0口输出低电平,即P00 x00时,发光二极管D1D7全熄灭;发光二极管闪烁过程实际上就是发光二极管交替亮、灭的过程,单片机运行一条指令的时间只有几微秒,时间太短,眼睛无法分辨,看
20、不到闪烁的效果。因此,用单片机控制发光二极管闪烁时,需要增加一定的延时时间。【活动二活动二】软件设计软件设计开始P0=0 xFF,D1灯点亮熄灭 调用延时子程序P0=0 x00,D1灯熄灭 调用延时子程序 主程序设计流程图 出版社 理工分社单片机应用技术项目教程版项目实施项目实施单色灯闪烁:8只单色灯亮,然后8只单色灯灭#include reg51.hvoid main()P2 0 x00;/全亮(1)P2 0 xff;/全灭(2)P10 xff;是什么呢?0 xff对应二进制的数值是11111111,对应的引脚为1是熄灭单色灯,8个1,代表的就是熄灭8个单色灯。录入程序后我们通过单步运行程序
21、,就可以看到当程序走过第(1)条语句后单色灯全亮,走过第二条语句后单色灯全灭了。单片机执行的速度实在是太快了,我们跟本分辨不出单色灯点亮呢。单色灯就已经被熄灭了,如何能让我们分辨出单色灯的亮和灭呢,解决的办法就是“延时”,如何做延时呢?出版社 理工分社单片机应用技术项目教程版项目实施项目实施延时程序是一种应用较为广泛的小程序,在程序设计中一般采用通过执行无意义的操作消耗CPU时间实现延时的。在C语言中“空语句;”在程序执行时需要占用一条指令的执行时间,但是什么也不做。常用延时方法:非精确延时 1、for(i=0;i 100;i+);2、i=100;while(i-);精确延时办法 1、利用库函
22、数_nop_();(需要include)2、利用定时器进行定时 (后边的课程进行介绍)延时算法分析 出版社 理工分社单片机应用技术项目教程版项目实施项目实施开始外循环次数i内循环次数j空操作j-1=0?i-1=0?结束YYNN延时函数流程延时函数流程/*/*函数功能:延时约1ms/*/void delay(void)/延时程序 unsigned int i,j;/定义变量 for(i=0;i10;i+)/外循环次数控制 for(j=0;j115;j+)/内循环次数控制 ;/循环体 程序说明:延时函数地很多程序设计都会用到,这里的延时函数delay使用了双重循环,内外循环的循环次数由变量i和j提
23、供,总的循环次数是ij,循环体是空操作。延时程序 出版社 理工分社单片机应用技术项目教程版项目实施项目实施【活动三】系统仿真调系统仿真调试试 启动Keil uVision4软件,创建新工程:CH2.UVPROJ,CPU选择Atmel 89C52。对工程的属性进行设置:目标属性中选择“生成HEX文件”。编写参考源程序CH2.c,以C为扩展名保存在工程文件夹中。将参考源程序加入程序组:鼠标右键单击程序组图标,加入文件组。调试:进入调试状态,期间可能需要修改参考源程序,直到没有语法错误为止。打开相应窗口,运行程序,观察运行结果。出版社 理工分社单片机应用技术项目教程版项目实施项目实施【活动四】实物制
24、作实物制作闪烁灯实物图 出版社 理工分社单片机应用技术项目教程版项目考核项目考核考核项目考核内容技术要求评分标准得分备注总体设计任务分析方案设计软件和硬件功能划分任务明确(5分);方案设计合理、有新意(10分);软件和硬件功能划分合理(5分);20分硬件设计片内器件分配;电路原理图设计;电路制作;片内器件分配正确、合理(5分);电路原理图设计正确(10分);电路制作:布线正确、整齐、合理(5分);20分软件设计算法和数据结构设计;流程图设计;编程;算法和数据结构设计正确、合理(5分);流程图设计正确、简明;(5分);编程正确、有新意(10分);20分系统仿真与调试调试顺序;错误排除;调试结果;
25、调试顺序正确(5分);能熟练排除错误(10分);调试后运行正确(5分);20分实训报告书写;内容;图形绘制;结果分析书写规范整齐(5分);内容翔实具体(5分);图形绘制正确、完整、全面(5分);能正确分析实验结构(5分);20分合计100分 出版社 理工分社单片机应用技术项目教程版项目小结项目小结1MCS-51有4组8位I/O口:P0、P1、P2和P3口,P1、P2和P3为准双向口,P0口则为双向三态输入输出口,都可做I/O使用。P0口内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。P1、P2、P3口内部有上拉电阻。其中P0口在系统外部扩展存储器时,作数据总线/低8位地址总线;P2口可作地
26、址总线使用(高8位),P3口有第二功能。2C语言程序基本结构/*文件说明*/#include /预处理命令/*函数说明*/void main()/程序入口(主函数)/函数体开始 ;/功能语句 /函数体结束3C51语言有for循环、while循环和dowhile循环三种循环语句。出版社 理工分社单片机应用技术项目教程版项目拓展项目拓展 将P2口和P0口各输出控制8个发光二极管,分别交替闪烁,电路如何连接?程序如何修改?出版社 理工分社单片机应用技术项目教程版项目拓展项目拓展例如:1、一个语句以分号作为结束标识符。2、任何C程序都必须有且只能有一个主函数main(),它是程序的入口,也是程序的出口
27、。3、在同一程序块中,变量不能被重复定义;使用变量时必须“先定义,后使用”4 4、括号(花括号或圆括号)应成对出现。在编译器中如果无语法错误,编译通过,我们通常认为符合了C语言的基本语法规则。否则,存在语法错误,需要修改C语言的语法规则(法则)出版社 理工分社单片机应用技术项目教程版项目拓展项目拓展(调试是重要能力,需要理论+经验):1、对大小写敏感,即P与p存储在计算机的二进制编码是不一样的,代表的是两个不同的字母。出现变量未定义的情况。上机调试中的典型错误 出版社 理工分社单片机应用技术项目教程版项目拓展项目拓展2、输入法敏感(),(),出版社 理工分社单片机应用技术项目教程版项目拓展项目
28、拓展3、大括号没有配对出现 出版社 理工分社单片机应用技术项目教程版项目拓展项目拓展4、语句后缺少“;”。出版社 理工分社单片机应用技术项目教程版项目拓展项目拓展5、源程序未加入到工程项目中。出版社 理工分社单片机应用技术项目教程版项目拓展项目拓展6.无语法错误,编译通过 出版社 理工分社单片机应用技术项目教程版项目拓展项目拓展1、彩灯多种效果变换闪烁如何实现?2、在彩灯多种效果变换闪烁中,每种效果之间都需要延时,即for(i=0;i 100;i+);循环语句被反复调用,请问有不有更为简洁的设计方法来实现?出版社 理工分社单片机应用技术项目教程版项目拓展项目拓展程序修改为:#include“r
29、eg51.h”void delay()void delay()/延时函数体延时函数体 unsigned int i;unsigned int i;for(i=0;i10000;i+);for(i=0;i10000;i+);void main()P1 0 x00;delay();/调用延时函数。P1 0 xff;delay();出版社 理工分社单片机应用技术项目教程版项目拓展项目拓展延时功能函数清单:延时功能函数清单:/*/*函数功能:延时约函数功能:延时约1ms1ms/*/void delay(void)/void delay(void)/延时程序延时程序 unsigned int i,j;/
30、unsigned int i,j;/定义变量定义变量 for(i=0;i10;i+)/for(i=0;i10;i+)/外循环次数控制外循环次数控制 for(j=0;j115;j+)/for(j=0;j115;j+)/内循环次数控制内循环次数控制 ;/;/循环体循环体 延时子函数延时子函数 出版社 理工分社单片机应用技术项目教程版项目拓展项目拓展注意:在这里我使用的变量定义为unsigned int 代表的是无符号整型,其取值范围是065535,循环变量的值不要超过这个数值,否则就会出现死循环,就走不出延时子程序了。这也是大家经常犯的一个错误。例:下面就是一个错误的实例。void delay()unsigned int k;for(k=0;k70000;k+);该程序错误的原因是K永远加不到70000,所以无法跳出死循环。好了,现在有了延时函数了,那么整个程序应该如何去修改呢?出版社 理工分社单片机应用技术项目教程版复习思考复习思考1、能否让单色灯闪烁有限次呢?2、能否让单色灯闪烁逐个点亮呢?
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。