51单片机项目教程项目-3--点亮一个LED灯课件

上传人:文**** 文档编号:157325593 上传时间:2022-09-29 格式:PPTX 页数:18 大小:2.28MB
返回 下载 相关 举报
51单片机项目教程项目-3--点亮一个LED灯课件_第1页
第1页 / 共18页
51单片机项目教程项目-3--点亮一个LED灯课件_第2页
第2页 / 共18页
51单片机项目教程项目-3--点亮一个LED灯课件_第3页
第3页 / 共18页
点击查看更多>>
资源描述
项目 3 3 点亮一个LEDLED灯项目目标项目目标通过单片机最小系统点亮LED灯,了解单片机开发程序基础及系统结构和流程。建议学时建议学时8学时知识要点知识要点1单片机系统开发流程2C51程序基础3.进行程序烧写技能掌握技能掌握1、了解发光二极管介绍,硬件。2、建立工程、完成“点亮一个发光管”掌握程序的编写、编译3、C51的标识符和关键字;4、常用数据类型;5、运算符和表达式;6、程序结构、函数、数组和指针;7、预处理。8、进行程序烧写学习目标:学会用C语言控制单机,点亮开发板上的第1个LED发光管。3.1 3.1 项目分析单片机最小系统就是在单片机上接上最少的外围电路元件让单单片机最小系统就是在单片机上接上最少的外围电路元件让单片机工作。让输入片机工作。让输入/输出口的输出口的P1.0连接一盏连接一盏LED灯进行点亮。通过灯进行点亮。通过这一项目将整个开发流程展示出来,包括点亮这一项目将整个开发流程展示出来,包括点亮LED灯,闪烁灯,闪烁LED灯,灯,控制闪烁时间多项任务。控制闪烁时间多项任务。3.2 3.2 技术准备1、LED发光二极管。发光二极管。它是半导体二极管的一种,可以把电能转化成光能;常简写为它是半导体二极管的一种,可以把电能转化成光能;常简写为LED。发光二极。发光二极管与普通二极管一样是由一个管与普通二极管一样是由一个PN结组成,也具有单向导电性结组成,也具有单向导电性。2、LED的工作原理。的工作原理。LED的符号为:的符号为:LED的工作是有方向性的,只有当正级接到的工作是有方向性的,只有当正级接到LED阳极,负极阳极,负极接到接到LED的阴极的时候才能工作,如果反接的阴极的时候才能工作,如果反接LED是不能正常工作的是不能正常工作的。3、LED的原理图解析的原理图解析开发板上面开发板上面LED的原理图如右图,的原理图如右图,LED的阳极串联一个电阻,然后连接到电源的阳极串联一个电阻,然后连接到电源VCC,而,而LED的阴极连接到单片机的的阴极连接到单片机的P1口,如果你想点亮一盏口,如果你想点亮一盏LED就对把单片就对把单片机相对应的机相对应的IO赋为低电平。赋为低电平。图3-1 LED流水灯3.2 3.2 技术准备1、C51的标识符和关键字的标识符和关键字C语言的标识符用来标识源程序中某个对象的名字,这些对象可以语言的标识符用来标识源程序中某个对象的名字,这些对象可以是语句、数据类型、函数、变量、数组等。标识符由字符串、数是语句、数据类型、函数、变量、数组等。标识符由字符串、数字和下划线等组成,第一个字符必须是字母或下划线。错误的标字和下划线等组成,第一个字符必须是字母或下划线。错误的标识符,编译时会有错误提示。由于识符,编译时会有错误提示。由于C51中有些库函数的标识符是以中有些库函数的标识符是以下划线开头的,所以一般不要以下划线开头命名标识符。下划线开头的,所以一般不要以下划线开头命名标识符。例如:例如:f-2,4am,a.m等均为错误标识符等均为错误标识符。标准标准C语言定义了语言定义了32个关键字,如表个关键字,如表3-1所示所示:表表3-1 ANSI C关键字关键字关键字关键字用途用途说明说明auto存储种类说明用于声明局部变量,为默认值break 程序语句退出最内层循环体case 程序语句switch语句中的选择项char 数据类型声明单字节整型数或字符型数据const 存储种类说明在程序执行过程中不可修改的值表表3-1 ANSI C关键字关键字关键字关键字用途用途说明说明auto存储种类说明用于声明局部变量,为默认值break 程序语句退出最内层循环体case 程序语句switch语句中的选择项char 数据类型声明单字节整型数或字符型数据const 存储种类说明在程序执行过程中不可修改的值continue 程序语句程序语句转向下一次循环转向下一次循环default 程序语句switch语句中缺省选择项do 程序语句构成dowhile 循环结构double 数据类型声明双精度浮点数else 程序语句构成ifelse 条件结构enum 数据类型声明枚举类型数据extern 存储种类说明在其他程序模块中声明了的全局变量float 数据类型声明单精度浮点数for 程序语句构成for循环结构goto 程序语句构成goto循环结构if 程序语句构成ifelse 条件结构int 数据类型声明整型数long 数据类型声明长整型数register 存储种类说明使用CPU内部寄存器变量return 程序语句函数返回short 数据类型声明短整型signed 数据类型声明数据类型声明有符号整型数有符号整型数sizeof 运算符计算表达式或数据类型的字节数static 存储种类说明静态变量struct 数据类型声明结构体类型数据switch 程序语句构成switch选择结构typedef 数据类型声明重新进行数据类型定义union 数据类型声明联合类型数据unsigned 数据类型声明无符号数据void 数据类型声明无类型数据或函数volatile 数据类型声明声明该变量在程序执行中可被隐含地改变while 程序语句构成while和dowhile循环结构C51在此基础上,针对单片机功能进行了扩展。如表3-2所示。表表3-2 C51编译器扩充关键字编译器扩充关键字关键字关键字用途用途说明说明_at_ 地址定位为变量进行绝对地址定位_priority_ 多任务优先声明规定RTX51或RTX51 Tiny的任务优先级_task_ 任务声明定义实时多任务函数alien 函数特性声明用于声明与PL/M51兼容的函数bdata 存储器类型声明可位寻址的MCS-51内部数据存储器bit 位变量声明声明一个位变量或位类型函数code 存储器类型声明MCS-51的程序存储空间compact 存储器模式按compact模式分配变量的存储空间data 存储器类型声明直接寻址MCS-51的内部数据寄存器idata 存储器类型声明间接寻址MCS-51的内部数据寄存器interrupt中断函数声明定义一个中断服务函数large存储器模式按large模式分配变量的存储空间pdata存储器类型声明分页寻址的MCS-5外部数据空间sbit位变量声明声明一个位变量sfr特殊功能寄存器声明声明一个8位特殊功能寄存器sfr16特殊功能寄存器声明声明一个16位特殊功能寄存器small存储器模式按small模式分配变量的存储空间using寄存器组定义定义MCS-5的工作寄存器组xdata存储器类型声明定义MCS-5外部数据空间3.2 3.2 技术准备2、常量和变量、常量和变量常量又称为标量,它的值在程序执行过程中不能改变,常量的数据类型有整型、浮常量又称为标量,它的值在程序执行过程中不能改变,常量的数据类型有整型、浮点型、字符型和字符串型等。点型、字符型和字符串型等。实际使用中用实际使用中用#define定义在程序中经常用到的常量,或者可能需要根据不同的情定义在程序中经常用到的常量,或者可能需要根据不同的情况进行更改的常量,例如译码地址。而不是在程序中直接使用常量值。这样一方面况进行更改的常量,例如译码地址。而不是在程序中直接使用常量值。这样一方面有助于提高程序的可读性,另一方面也便于程序的修改和维护,例如:有助于提高程序的可读性,另一方面也便于程序的修改和维护,例如:#define PI 3.14/以后的编程中用以后的编程中用PI代替浮点数常量代替浮点数常量3.14,便于阅读,便于阅读#define SYSCLK 12000000/长整型常量用长整型常量用SYSCLK代替代替12MHz时钟时钟#define TRUE 1/用字符用字符TRUE,在逻辑运算中代替,在逻辑运算中代替1#define STAR*/用用STAR表示字符表示字符“*”#define uint unsigned int/用用uint 代替代替unsigned int变量是一种在程序执行过程中,其数值不断变化的量。变量是一种在程序执行过程中,其数值不断变化的量。C51规定变量必须先定义后规定变量必须先定义后使用使用。3、数据类型、数据类型变量都有相应的数据类型,变量都有相应的数据类型,C51的数据类型如表的数据类型如表3-3所示。所示。数据类型长度值域unsigned char单字节0255signed char单字节-128+127unsigned int双字节065535signed int双字节-32768+32767unsigned long四字节04294967295signed long四字节-2147483648+2147483647float四字节1.175494E-383.402823E+38*13 字节对象的地址bit位0 或 1sfr单字节0255sfr16双字节065535sbit位0 或 1表表3-3 C51的数据类型的数据类型3.2 3.2 技术准备1)char 字符类型字符类型char 类型的长度是一个字节,通常用于定义处理字符数据的变量或常量。分类型的长度是一个字节,通常用于定义处理字符数据的变量或常量。分无符号字符类型无符号字符类型 unsigned char 和有符号字符类型和有符号字符类型 signed char,默认值为,默认值为 signed char 类型。类型。unsigned char 类型用字节中所有的位来表示数值,所能类型用字节中所有的位来表示数值,所能表达的数值范围是表达的数值范围是 0255。signed char 类型用字节中最高位字节表示数据类型用字节中最高位字节表示数据的符号,的符号,“0”表示正数,表示正数,“1”表示负数,负数用补码表示。所能表示的数值表示负数,负数用补码表示。所能表示的数值范围是范围是-128+127。unsigned char 常用于处理常用于处理 ASCII 字符或用于处理小于字符或用于处理小于或等于或等于 255 的整型数。的整型数。2)int 整型整型int 整型长度为两个字节,用于存放一个双字节数据。分有符号整型长度为两个字节,用于存放一个双字节数据。分有符号 int 整型数整型数 signed int 和无符号整型数和无符号整型数 unsigned int,默认值为,默认值为 signed int 类型。类型。signed int 表示的数值范围是表示的数值范围是-32768+32767,字节中最高位表示数据的符,字节中最高位表示数据的符号,号,“0”表示正数,表示正数,“1”表示负数。表示负数。unsigned int 表示的数值范围是表示的数值范围是 065535。3)long 长整型长整型long 长整型长度为四个字节,用于存放一个四字节数据。分有符号长整型长度为四个字节,用于存放一个四字节数据。分有符号 long 长整长整型型 signed long 和无符号长整型和无符号长整型 unsigned long,默认值为,默认值为 signed long 类类型。型。signed int 表示的数值范围是表示的数值范围是-2147483648+2147483647,字节中最高,字节中最高位表示数据的符号,位表示数据的符号,“0”表示表示正数,正数,“1”表示负数。表示负数。unsigned long 表示的表示的数值范围是数值范围是 04294967295。3.2 3.2 技术准备4)float 浮点型浮点型float 浮点型在十进制中具有浮点型在十进制中具有 7 位有效数字,是符合位有效数字,是符合 IEEE754 标准标准的单精度浮点型数据,占用四个字节。的单精度浮点型数据,占用四个字节。5)指针型)指针型指针型是一种特殊的数据类型,其本身就是一个变量,但在其中存放指针型是一种特殊的数据类型,其本身就是一个变量,但在其中存放的是另一个数据的地址。在的是另一个数据的地址。在C51中,指针的长度一般是中,指针的长度一般是3个字节。根据个字节。根据所指向的变量类型的不同指针变量也有不同的类型,指针变量的类型所指向的变量类型的不同指针变量也有不同的类型,指针变量的类型也就表示了该指针指向的地址中的数据的类型。也就表示了该指针指向的地址中的数据的类型。6)bit 位标量位标量bit 位标量是位标量是C51的一种扩充数据类型,利用它可定义一个位标量,但的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是 0 就是就是 1,位变量的值可以取,位变量的值可以取0(false)或或1(true)。对位变量进行定义。对位变量进行定义的语法如下:的语法如下:bit flag1;bit send_en=1;3.2 3.2 技术准备7)sfr 特殊功能寄存器特殊功能寄存器单片机内的各种控制寄存器、状态寄存器以及单片机内的各种控制寄存器、状态寄存器以及I/O端口锁存器、定时器、串行端口数端口锁存器、定时器、串行端口数据缓冲器是内部数据存储器的一部分,离散地分布在据缓冲器是内部数据存储器的一部分,离散地分布在80HFFH的地址空间范围的地址空间范围内,这些寄存器统称特殊功能寄存器(内,这些寄存器统称特殊功能寄存器(SFR,Special Function Registers)。)。sfr类型的长度为一个字节,其定义方式如下:类型的长度为一个字节,其定义方式如下:sfr 特殊功能寄存器名特殊功能寄存器名=地址常量地址常量;说明说明“地址常量地址常量”就是所定义的特殊功能寄存器的地址,例如:就是所定义的特殊功能寄存器的地址,例如:sfrTMOD=0 x89;/*定义定时器定义定时器/计数器方式控制寄存器计数器方式控制寄存器TMOD的地址为的地址为89H*/sfrP1=0 x90;/*定义定义P1口的地址为口的地址为90H*/注意:在关键字注意:在关键字sfr后面必须是一个名字,名字可以任意选取,但应符合一般的习后面必须是一个名字,名字可以任意选取,但应符合一般的习惯。等号后面必须是常数,不允许有带运算符的表达式,而且该常数必须在特殊功惯。等号后面必须是常数,不允许有带运算符的表达式,而且该常数必须在特殊功能寄存器的地址范围之内(能寄存器的地址范围之内(80H0FFH)。)。8)sfr16 16位特殊功能寄存器位特殊功能寄存器在新一代的在新一代的8051单片机中,特殊功能寄存器在功能上经常组合成单片机中,特殊功能寄存器在功能上经常组合成16位来使用。为了位来使用。为了有效地访问这种有效地访问这种16位的特殊功能寄存器,可采用关键字位的特殊功能寄存器,可采用关键字sfrl6。sfrl6类型的长度为两类型的长度为两个字节,其定义语法与个字节,其定义语法与8位位SFR相同,但相同,但16位位SFR的低端地址必须作为的低端地址必须作为sfr16的定义的定义地址。例如地址。例如sfr16 T2=0CCH;/定义定义TIMER2,其地址为,其地址为T2L=0CCH、T2H=0CDH。3.2 3.2 技术准备9)sbit 可寻址位可寻址位sbit 同样是同样是C51中一种扩充数据类型,利用它能访问芯片内部的中一种扩充数据类型,利用它能访问芯片内部的 RAM 中的可寻址位或特殊功能寄存器中的可寻址位。例中的可寻址位或特殊功能寄存器中的可寻址位。例如:如:PSW是可位寻址的是可位寻址的SFR,其中各位可用,其中各位可用sbit定义。定义。sbitCY=0Xd7;/*定义进位标志定义进位标志CY的地址为的地址为D7H*sbitAC=0 xD06;/*定义辅助进位标志定义辅助进位标志AC的地址为的地址为D6H*/sbitRS0=0XD03;/*定义定义RS0的地址为的地址为D3H*/注意:注意:sfr和和sbit只能在函数外使用,一般放在程序的开头只能在函数外使用,一般放在程序的开头实际上大部分特殊功能寄存器及其可位寻址的位的定义在实际上大部分特殊功能寄存器及其可位寻址的位的定义在reg51.h、reg52.h等头文件中已经给出,使用时只需在源文件等头文件中已经给出,使用时只需在源文件中包含相应的头文件,即可使用中包含相应的头文件,即可使用SFR及其可位寻址的位;而对于未定义的位,使用前必须先定义。例如:及其可位寻址的位;而对于未定义的位,使用前必须先定义。例如:#includesbitP10=P10;sbitP12=P12;main()P10=1;P12=0;PSW=0 x08;使用使用Keil C51编写程序编写程序参考项目一的使用参考项目一的使用Keil 的方法,将该程序编写出来。如图的方法,将该程序编写出来。如图3-2所所示。示。图3-2编写程序烧录程序烧录程序打开烧录软件,并且选择好单片机型号和串口。如图所示。打开烧录软件,并且选择好单片机型号和串口。如图所示。图3-3烧录程序点击点击“打开程序文件打开程序文件”,打开之前编写好的程序。(,打开之前编写好的程序。(.hex文件)如文件)如图所示。图所示。图3-4打开程序文件程序烧入,点击右下角程序烧入,点击右下角“下载下载/编程编程”。如图所示。如图所示。图3-5程序烧入3.3 3.3 项目实施3.2.1点亮点亮LED灯实战环节灯实战环节显然,从显然,从LED原理图上看,只要原理图上看,只要P1.0输出为低电平就可以点亮输出为低电平就可以点亮LED灯了。灯了。软件设计不用汇编,一律采用软件设计不用汇编,一律采用C51语言,便于理解和扩展语言,便于理解和扩展。图3-6 LED点亮实物结果
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!