单片机素材课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《单片机素材课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 素材 课件
- 资源描述:
-
1、培训内容第一部分:C语言基础 1、C51特点 2、C51开发环境安装与简介 3、C语言基本语法 4、编程风格第二部分:常用接口模块编程 1、键盘接口 2、数码管显示 3、温度传感器18B20使用 4、LCD1602使用 5、时钟芯片1302使用与编程 C51知识C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。目前,使用C语言进行程序设计已经成为软件开发的一个主流。用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进、扩充和移植。而针对8051的C语言日趋成熟,成为了专业化的实用高级语言。C C语言作为一种非常方便的语言而得到广泛语言作为一种非常
2、方便的语言而得到广泛的支持,很多硬件开发都用的支持,很多硬件开发都用C C语言编程,如:语言编程,如:各种单片机、各种单片机、DSPDSP、ARMARM等等.C C语言程序本身不依赖于机器硬件系统,基语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中本上不作修改就可将程序从不同的单片机中移植过来。移植过来。C C提供了很多数学函数并支持浮点运算,开提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可发效率高,故可缩短开发时间,增加程序可读性和可维护性。读性和可维护性。C-51C-51的特点的特点C-51C-51与与ASM-51ASM-51相比,有如
3、下优点:相比,有如下优点:1.1.对单片机的指令系统不要求了解,仅对单片机的指令系统不要求了解,仅要求对要求对8051 8051 的存贮器结构有初步了解;的存贮器结构有初步了解;2.2.寄存器分配、不同存贮器的寻址及数寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;据类型等细节可由编译器管理;3.3.程序有规范的结构,可分成不同的函程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;数,这种方式可使程序结构化;4.4.提供的库包含许多标准子程序,具有提供的库包含许多标准子程序,具有较强的数据处理能力;较强的数据处理能力;5.5.由于具有方便的模块化编程技术,使由于具有方便的
4、模块化编程技术,使已编好程序可容易地移植;已编好程序可容易地移植;v汇编语言与C语言对比举例 (1)1 1、在一个、在一个C C语序中必须有一个语序中必须有一个void main()void main()函数,函数,此函数是整个程序的入口,函数体由括起。此函数是整个程序的入口,函数体由括起。2 2、C C语言中的大小写是敏感的。语言中的大小写是敏感的。3 3、C C程序是由语句构成,一个语句必须由程序是由语句构成,一个语句必须由“;”;”号号结束。结束。4 4、#include#include命令的功能是把指定的文件插入该命命令的功能是把指定的文件插入该命令行位置取代该命令行,从而把指定的文件
5、和当前令行位置取代该命令行,从而把指定的文件和当前的源程序文件连成一个源文件。的源程序文件连成一个源文件。:系统路径查找:系统路径查找 “”“”:源文件路径查找:源文件路径查找通常有通常有:reg51.h reg52.h math.h stdio.h:reg51.h reg52.h math.h stdio.h 常常用有用有:reg51.h reg52.h:reg51.h reg52.h(定义特殊功能寄存器和位(定义特殊功能寄存器和位寄存器)寄存器)基本基本C C程序结构程序结构C C语言基础知识语言基础知识下面我们开始学习下面我们开始学习C C语言基本知识语言基本知识一、常量一、常量常量是在
6、程序运行过程中不能改变值的量常量是在程序运行过程中不能改变值的量常量表示:常量表示:1 1 整型常量十进制表示如整型常量十进制表示如123,0123,0,8989等。等。十六进制表示则以十六进制表示则以0 x0 x开头如开头如0 x34,-0 x3B0 x34,-0 x3B等。等。2 2 浮点型常量。十进制由数字和小数点组成,浮点型常量。十进制由数字和小数点组成,如如0.888,3345.345,0.00.888,3345.345,0.0等,等,3 3 字符型常量是单引号内的字符,如字符型常量是单引号内的字符,如a,da,d等,等,4 4 字符串型常量由双引号内的字符组成,如字符串型常量由双引
7、号内的字符组成,如test,OKtest,OK 等。等。二、变量二、变量程序执行过程中其值能不断变化的量,放在程序执行过程中其值能不断变化的量,放在RAMRAM中。中。例如你要对例如你要对P1.1P1.1口输入的脉冲进行计数,就需要一口输入的脉冲进行计数,就需要一个地方存这个数。个地方存这个数。1 1、定义一个、定义一个普通变量普通变量的格式如下:的格式如下:数据类型变量名表数据类型变量名表例如:例如:unsigned int a,b,cunsigned int a,b,c;变量名,只能以字母或下划线开头,由字符组成,变量名,只能以字母或下划线开头,由字符组成,不能与关键字重名。不能与关键字重
8、名。常见的数据类型:常见的数据类型:C C语言基础知识语言基础知识类型类型符号符号关键字关键字数的表示范围数的表示范围所占位数所占位数整型整型字符型字符型实型实型有有无无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned int0655353204294967295unsigned long intunsigned short int16065535有有float323.4e-383.4e38有有double641.7e-3081.7e308有有char8
9、-128127无无unsigned char80255举例说明举例说明 2 2C关键字(保留)2 2、定义一个特殊功能寄存器变量的格式如下:、定义一个特殊功能寄存器变量的格式如下:sfrsfr 特殊功能寄存器名特殊功能寄存器名=特殊功能寄存器地址常数特殊功能寄存器地址常数;例如:例如:sfrsfr P0 =0 x80;P0 =0 x80;3 3、定义一个可位寻址对象变量的格式如下:、定义一个可位寻址对象变量的格式如下:sbitsbit 位变量名位地址位变量名位地址例如:例如:sbitsbit P0.0 =0 x80;P0.0 =0 x80;sbit sbit P0.0 =P00;P0.0 =P
10、00;举例说明作用举例说明作用4 4、位变量定义、位变量定义 bit bit 位变量名位变量名三、运算符三、运算符1 1、赋值运算符、赋值运算符 赋值运算符就是赋值符号赋值运算符就是赋值符号“=”=”2 2、算术运算符、算术运算符 加法运算符加法运算符 减法运算符减法运算符乘法运算符乘法运算符除法运算符除法运算符 模运算或取余运算符模运算或取余运算符为自增运算符为自增运算符为自减运算符。为自减运算符。3 3、复合赋值运算符、复合赋值运算符 ,例如:例如:a+=b a+=b 等价于等价于a=(a+ba=(a+b)x x*=a+b=a+b 等价于等价于x=(xx=(x*(a+b(a+b)4 4、位
11、运算符、位运算符&按位与按位与相当于相当于ANLANL指令指令|按位或按位或 相当于相当于ORLORL指令指令按位异或按位异或 相当于相当于XRLXRL指令指令 按位取反按位取反相当于相当于CPLCPL指令指令 右移右移相当于相当于RRRR指令指令按位与(&)v运算规则0&0=0;0&1=0;1&0=0;1&1=1;v用途按位清零保留某些指定位按位与举例v运算举例 1010,1101(0 xAD)&0110,1001(0 x69)0010,1001(0 x29)v按位清零、其他位不变xxxx,xxxx_&0110,0010(0 x62)0 xx0,00 x0_按位或(|)v运算规则0|0=0;
12、0|1=1;1|0=1;1|1=1;v用法按位置一按位或举例v运算举例 1010,1101(0 xAD)|0110,1001(0 x69)1110,1101(0 xED)v按位置一xxxx,xxxx_|0110,0010(0 x62)x11x,xx1x_按位异或()v运算规则0 0=0;0 1=1;1 0=1;1 1=0;v说明相“异”则为1,相“同”则为0相当于按位且无进位的加法按位异或用法举例v特定位翻转 1010,1101(0 xAD)0110,1001(0 x69)1100,0100(0 xC4)v与0相异或,保持原值不变。v与1相异或,翻转其值。(翻转特定位)v与自身相异或,则全部位
13、清零v交换两个整数值a=ab;b=ba;a=ab;按位取反()v运算规则 0=1;1=0;v用法所有位翻转按位取反举例v运算举例 1010,1101(0 xAD)0101,0010(0 x52)所有位翻转左移()v运算规则i n把i各位全部向左移动n位最左端的n位被移出丢弃最右端的n位用0补齐v用法若没有溢出,则左移n位相当于乘上2n运算速度比真正的乘法和幂运算快得多左移举例v运算举例 1010,1101 3(101)0110,1000_v溢出举例若左移后的数据超出表示范围,则发生溢出int i,j;i=0 x2431;j=i2;/*j=-0 x6F3C,溢出*/j=i)v运算规则i n把i各
14、位全部向右移动n位最右端的n位被移出丢弃最左端的n位用0补齐(逻辑右移)或最左端的n位用符号位补齐(算术右移)v用法右移n位相当于除以2n,并舍去小数部分运算速度比真正的除法和幂运算快得多右移举例v运算举例0101,1101 30000,1011(101)5 5、关系运算符、关系运算符 小于小于 小于等于小于等于 大于大于 大于等于大于等于 等于等于!不等于不等于实例分析实例分析6 6、逻辑运算符、逻辑运算符&逻辑与逻辑与|逻辑或逻辑或!逻辑非逻辑非实例分析实例分析四、程序流程控制四、程序流程控制1 1、顺序结构、顺序结构 依次执行的语句。依次执行的语句。2 2、选择语句、选择语句 (1)(1
15、)、ifif语句语句以下三种形式:以下三种形式:ifif(表达式)(表达式)语句;语句;ifif(表达式)(表达式)语句语句1 1;else else 语句语句2 2;嵌套使用:嵌套使用:ifif(表达式(表达式1 1)语句语句1 1;else ifelse if(表达式(表达式2 2)语句语句2 2;else ifelse if(表达式(表达式3 3)语句语句3 3;else if else if(表达式(表达式m m)语句语句m m;elseelse 语句语句 n n;三种形式的简明示意图例例1 1:if(p1!=0)if(p1!=0)c=20;c=20;例例2 2:if(p1!=0)if
16、(p1!=0)c=20;c=20;elseelse c=0;c=0;例例3 3:if(a=1)c=10;if(a=1)c=10;else if(a=2)c=20;else if(a=2)c=20;else if(a=3)c=30;else if(a=3)c=30;else if(a=4)c=40;else if(a=4)c=40;else c=0;else c=0;if语句中注意的问题ifif关键字之后的表达式通常是逻辑表达式或关系表关键字之后的表达式通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,达式,但也可以是其它表达式,如赋值表达式等,甚至可以是一个变量。甚至可以是一
17、个变量。例如:例如:ifif(a=5a=5););ifif(b b)语句;都是允许的。)语句;都是允许的。只要表达式的值为非只要表达式的值为非0 0,即为,即为“真真”,那么其后的,那么其后的语句就要执行。在语句就要执行。在ifif语句中,条件判断表达式必须语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。用括号括起来,在语句之后必须加分号。在在ifif语句的语句的3 3种形式中,所有的语句应为单个语句,种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用必须把这一组语句用括起来组成一个复合语句
18、。括起来组成一个复合语句。但要注意的是在但要注意的是在“”之后不能再加分号。之后不能再加分号。上机练习:上机练习:根据按键亮灯,当按下一个铵键后,灯亮,松开后,根据按键亮灯,当按下一个铵键后,灯亮,松开后,灯灭。灯灭。(2)(2)、switch/switch/casecase语句语句switch/caseswitch/case语句的一般形式如下:语句的一般形式如下:switchswitch(表达式)(表达式)case case 常量表达式常量表达式1 1:语句:语句1 1;breakbreak;case case 常量表达式常量表达式2 2:语句:语句2 2;breakbreak;case c
19、ase 常量表达式常量表达式n n:语句:语句n n;breakbreak;default default:语句:语句n+1n+1;breakbreak语句又称间断语句,它的功能是终止当前语语句又称间断语句,它的功能是终止当前语句的执行,使程序跳出句的执行,使程序跳出switchswitch语句。语句。switch语句说明(1 1)switchswitch括号后面的表达式,允许为任何类型。括号后面的表达式,允许为任何类型。(2 2)当)当“表达式表达式”的值与某个的值与某个casecase后面的常量表后面的常量表达式的值相等时,就执行此达式的值相等时,就执行此casecase后面的语句。如果后
20、面的语句。如果表达式的值与所有常量表达式都不匹配,就执行表达式的值与所有常量表达式都不匹配,就执行defaultdefault后面的语句后面的语句(如果没有如果没有defaultdefault就执行跳出就执行跳出switch,switch,执行执行switchswitch语句后面的语句语句后面的语句)。(3 3)各个常量表达式的值必须互不相同,否则出)各个常量表达式的值必须互不相同,否则出现矛盾。现矛盾。(4 4)各个)各个casecase,defaultdefault出现的顺序不影响执行结出现的顺序不影响执行结果。果。(5 5)执行完一个)执行完一个casecase后面的语句后,流程控制转后
21、面的语句后,流程控制转移到下一个移到下一个casecase中的语句继续执行。此时,中的语句继续执行。此时,“case case 常量表达式常量表达式”只是起到语句标号的作用,并不在此只是起到语句标号的作用,并不在此处进行条件判断。在执行一个分支后,可以使用处进行条件判断。在执行一个分支后,可以使用breakbreak语句使流程跳出语句使流程跳出switchswitch结构,即终止结构,即终止switchswitch语句的执行(最后一个分支可以不用语句的执行(最后一个分支可以不用breakbreak语句)。语句)。(6 6)casecase后面如果有多条语句,不必用后面如果有多条语句,不必用括起
22、来。括起来。(7 7)多个)多个casecase可以共用一组执行语句。(注意可以共用一组执行语句。(注意breakbreak使用的位置)使用的位置)switch语句说明switch 语句应用举例#includestdio.h#include#include#includeextern serial_initialextern serial_initial();();void main()void main()int a,b int a,b;serial_initial serial_initial();();printf(“please printf(“please input b=”);in
23、put b=”);scanf(“%d”,&b scanf(“%d”,&b););switch(b)switch(b)case 0:a=1;case 0:a=1;case 1:a=3;case 1:a=3;case 2:a=5;case 2:a=5;default:a=7;default:a=7;printf(“n a=%d,b=%d”,a,b printf(“n a=%d,b=%d”,a,b););while(1);while(1);3 3、循环语句、循环语句 许多问题的求解归结为重复执行的操作,比如许多问题的求解归结为重复执行的操作,比如数值计算中的方程迭代求根,非数值计算中的对象数值计算中
24、的方程迭代求根,非数值计算中的对象遍历。重复执行就是循环。重复工作是计算机特别遍历。重复执行就是循环。重复工作是计算机特别擅长工作之一。擅长工作之一。重复的动作是受控制的,比如满足一定条件继重复的动作是受控制的,比如满足一定条件继续做,一直做直到某个条件满足,做多少次结束。续做,一直做直到某个条件满足,做多少次结束。也就是说重复工作需要进行控制也就是说重复工作需要进行控制-循环控制。循环控制。(一)while语句(当型循环)注意事项(1)while语句的特点是先计算表达式的值,然后根据表达式的值决定是否执行循环体中的语句。因此,如果表达式的值一开始就为“假”,那么循环体一次也不执行。(2)当循
25、环体为多个语句组成,必须用括起来,形成复合语句。(3)在循环体中应有使循环趋于结束的语句,以避免“死循环”的发生。while语句应用举例例:利用while语句,编写程序计算1+2+3+100。流程图 (二)do-while语句(直到型循环)执行流程说明(1)do-while循环,总是先执行一次循环体,然后再求表达式的值,因此,无论表达式是否为“真”,循环体至少执行一次。(2)do-while循环与while循环十分相似,它们的主要区别是:while循环先判断循环条件再执行循环体,循环体可能一次也不执行。do-while循环先执行循环体,再判断循环条件,循环体至少执行一次。(三)for语句(当型
展开阅读全文