第5课流水灯实验教学_第1页
第5课流水灯实验教学_第2页
第5课流水灯实验教学_第3页
第5课流水灯实验教学_第4页
第5课流水灯实验教学_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、主 讲一气呵成学511第5课 流水灯实验1. 单片机最小系统概述。2. LED流水灯原理。3. 流水灯程序相关语法。4. 实际操作,验证程序。21.1 51系列单片机的最小硬件系统51系列单片机的最小硬件系统是指能让单片机正常工作的最小硬件电路。对于8051系列单片机及其兼容的型号,其电路的最小系统大致相同,这里以STC89C52为例,介绍典型的51系列单片机最小硬件电路,如图所示。341.2 时钟振荡电路时钟振荡电路用于产生单片机正常工作时所需要时钟信号。51系列单片机可以采用两种方式的时钟振荡电路:内部振荡电路和外部振荡电路。下面分别介绍这两种方式。1内部振荡电路内部振荡电路是采用单片机内

2、部振荡器来产生工作所需的时钟。51系列单片机内部包含一个高增益的单级反相放大器,引脚XTAL1和XTAL2分别为片内反相放大器的输入端口和输出端口。外接无源晶振。2外部振荡电路外部振荡电路是采用外部振荡器产生时钟信号直接供单片机使用,外接有源晶振。51.3 单片机的复位电路单片机的复位电路使单片机进入复位状态。通过复位操作可以完成单片机的初始化,也可使处于死机状态下的单片机程序重新开始运行。1单片机复位的原理单片机复位的原理是,在时钟电路开始工作后,在单片机的RST复位引脚施加24个以上的时钟振荡脉冲的高电平,单片机便可以实现复位。当RST引脚从高电平跳变为低电平后,单片机便从0000H地址开

3、始执行程序。2复位电路最典型的上电复位电路如图所示,其基本原理是利用RC电路的充放电效应。当单片机上电的时候,复位电路通过电容加在RST引脚一个短暂的高电平信号,这个高电平信号随着电容的充电而逐渐降低,这个高电平持续的时间和RC电路的充放电时间有关。使用时需要选择合适的电容和电阻来使高电平的持续时间大于单片机的复位时间。62. LED流水灯原理2.1 流水灯原理图部分72.2 管脚电气信息82.3 灌电流和拉电流灌电流(sinking current) ,对一个端口而言,如果电流方向是向其内部流动的则是“灌电流”,比如一个IO通过一个电阻和一个LED连接至VCC,当该IO输出为逻辑0时可以点亮

4、LED。拉电流(sourcing current),对一个端口而言,如果电流方向是向其外部流动的则是“拉电流”,比如一个IO通过一个电阻和一个LED连至GND,当该IO输出为逻辑1时能不能点亮LED。93. 相关C语言语法3.1 C51程序的基本结构单片机C51语言继承了C语言的特点,其程序结构与一般C语言的程序结构没有差别。C51源程序文件的扩展名为“.c”,如Test.c、Function.c等。每个C51工程中包含一个名为“main()”的主函数,C51程序的执行总是从main()函数开始的。当主函数中所有语句执行完毕,则程序执行结束。 keil uVision 项目结构103.2 in

5、clude预处理命令以“#”号开头的是预处理命令。所谓预处理是指在进行编译的第一遍扫描之前所作的工作。预处理是语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。#include 包含预处理命令,文件包含命令的功能是把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。113.3 C51的数据类型C51的基本数据类型有整型(int)、浮点型(float)、字符型(char)、无值型(void)。在基本数据类型中,除void类型外,其前面均可以有各种修饰符

6、。修饰符用来改变基本类型的意义,以便更准确地适应各种情况的需求。常用的修饰符有signed(有符号)、unsigned(无符号)、long(长型符)、short(短型符)。在C51语言中的所有数据类型的字长和取值范围,如表所示。123.4 整型变量整型变量是整数类型的数据。整型变量是最常用的数据类型。整型变量的定义格式是“类型说明符 变量标识符,变量标识符”。示例如下:unsigned char temp; /定义temp为短整型变量 其中,类型说明符与变量标识符之间至少有一个空格。最后一个变量标识符必须以“;”结尾。整型变量的前面可以加上不同的修饰符。133.5 C51的标识符与关键字标识符

7、和关键字是一种编程语言最基本的组成部分,C51语言同样支持自定义的标识符以及系统保留的关键字。在进行C51程序设计时,需要了解标识符和关键字的使用规则。143.5.1 标识符标识符常用来声明某个对象的名称,如变量和常量的声明、数组和结构的声明、自定义函数的声明以及数据类型的声明等。示例如下。int count;void Function1();在上面的例子中,count为整型变量的标识符,Function1为自定义函数的标识符。在C51语言中,标识符可以由字母、数字(09)和下划线“_”组成,最多可支持32个字符。并且,C51标识符第一个字符必须是字母或者下划线“_”。例如“ut1”、“ch_

8、1”等,都是正确的。而“5count”则是错误的标识符。另外,C51的标识符区分大小写,例如“count1”和“COUNT1”代表两个不同的标识符。153.5.2 关键字关键字是C51语言重要的组成部分,是C51编译器已定义保留的专用特殊标识符,有时也称为保留字。这些关键字通常有固定的名称和功能,如int、float、if、for、do、while、case等。扩展关键字,如sbit、using 、xdata、data、reentrant 、interrupt、sfr等。163.6 变量、函数声明、定义unsigned char i; / 变量的声明;void delay(void); / 函

9、数的声明;void delay(unsigned int t) / 函数的定义; 173.7 声明声明语句用于声明变量或者自定义函数。通过声明语句,可以指定变量的类型、初始值以及函数的类型和形参等。声明语句的一般形式如下: 类型说明符 变量名(=初始值);类型说明符 函数名(形参); 值得注意的几点:类型说明符为C51语言中的变量或者函数类型。变量名或者函数名为读者定义的标识符,应符合C51标识符的命名规则。如果在声明变量的时候需要指定初始值,则可以使用“=”来指定,否则“=”可以省略。对于函数,如果不需要形参,则可以使用void来代替。183.8 运算符和表达式位运算符是对字节或字中的二进制

10、位(bit)进行逐位逻辑处理或移位的运算符。C51语言中的位运算符如下所示。“&” 运算符:进行逻辑与(AND)运算。“|” 运算符:进行逻辑或(OR)运算。“” 运算符:进行逻辑异或(XOR)运算。“” 运算符:进行按位取补(NOT)运算。“”运算符:进行右移运算。“”运算符:进行左移运算。位运算符的操作对象整型和字符型数据的字节或字,位操作不能用于float、double、long double、void或其他聚合类型。支持全部的位运算符,表明C51可以进行汇编语言所具有的位运算,因此C51语言既具有高级语言的特点,也具有低级语言的功能。193.9 循环控制结构循环语句提供了一种以最少的代

11、码来执行多条重复语句的形式。C51语言中的循环语句有如下几类:for语句while语句do-while语句 203.9.1 for语句在程序中使用for语句的时候,应特别注意如下几点:一定要特别注意循环条件和循环变量的变化方式,保证循环在一定条件满足的时候能够结束,防止出现死循环的情况。for语句中的三个表达式都是可选择项,但“;”不能省。例如,for(;)是一个合法的语句,但其表示一个无限死循环。for循环语句可以实现多级嵌套。当循环体语句只有一条的时候,可以省略花括号“”,否则不可以省略。 for(表达式1;表达式2;表达式3)语句;213.9.2 while语句在程序中使用while语句

12、的时候,应特别注意如下几点:在循环体语句中一定要加入能够改变while表达式取值的语句,保证循环在一定条件满足的时候能够结束,防止出现死循环的情况。while语句的表达式可以永远为真,此时表示一个无限死循环。例如,while(1)。while循环语句可以实现多级嵌套当循环体语句只有一条的时候,可以省略花括号“”,否则不可以省略。while语句循环体内允许空语句。 while(表达式)语句;223.9.3 do-while语句在程序中使用do-while语句的时候,应特别注意如下几点:在循环体语句中一定要加入能够改变while表达式取值的语句,保证循环在一定条件满足的时候能够结束,防止出现死循环

13、的情况。do-while语句和while语句区别在于执行循环体语句的顺序不同。do-while循环语句也可以实现多级嵌套。当循环体语句只有一条的时候,可以省略花括号“”,否则不可以省略。do语句;while(表达式);233.10 延时函数void delay(unsigned int t) /延时子程序 unsigned char i; while(t-) for(i=0;i125;i+) 243.11 主函数分析void main(void) / 主程序 while(1) temp=0 xFE; for(i=0;i8;i+) P2 = temp; temp = (temp1)|1; / 实

14、现跑马灯的移动 delay(100); 253.12 P2口的变化i = 0 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 1 1 1 1 1 1 1 0 = 0XFEi = 1 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 1 1 1 1 1 1 0 1 = 0XFDi = 2 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 1 1 1 1 1 0 1 1 = 0XFBi = 3 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 1 1 1 1 0 1 1 1 = 0XF7i = 4 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 1 1 1 0 1 1 1 1 = 0XEFi = 5 P2.7 P2.6 P2.5 P2.4 P2.3 P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论