版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
工作模块2:LED灯显示控制
工作模块1:目录2.4C51的文档结构2.5C语言基本结构LED灯显示控制任务2-1LED灯闪烁任务2-28个LED灯流水控制2.1单片机的并行I/O口使用2.2LED灯显示电路的硬件设计2.3单片机的编程语言2.6数据类型及常量变量2.7C51运算符2.8函数使用任务实施知识链接
目录
2.1.LED灯闪烁控制的电路图
单片机的并行IO口使用。
2.2.LED灯显示电路的硬件设计
2.3.单片机的编程语言2.4.C文档结构任务2-1LED灯闪烁控制任务2.1LED灯闪烁控制电路序号元件名称元件型号元件参数1单片机AT89C52
2瓷片电容CAP30pF3电解电容CAP-ELEC22uF4晶振CRYSTAL12MHZ5按键BUTTON
6发光二极管红LED-RED
7电阻RES10k、4702.1LED灯闪烁控制电路LED闪烁电路所用电子元器件2.1单片机I/O口应用输入/输出端口四个双向并行I/O端口:
P0.0~P0.7P1.0~P1.7P2.0~P2.7P3.0~P3.7共32条线XTAL2
XTAL1EAALEPSEN2.1P0口应用(1)作为通用I/O口使用时,由于P0口内部电路是漏极开路,当需要输出高电平时,需要外接上拉电阻。使用时区分读引脚:需要先在端口写入1,即P0=0xff。读端口:是为了适应对I/O口进行“读-修改-写”操作语句的需要。例如,C51语句:P0=P0&0x0f;//&按位取“与”,将P0口的高4位引脚清零后输出。
读端口是由CPU自行完成的,在编程方面无须做前期处理。(2)在进行单片机系统扩展时,P0可以作为“低位地址/数据”线分时复用,P0口是具有高电平、低电平和高阻抗3种状态的端口。因此,是一个真正的双向端口,简称双向口。
(3)每个引脚能驱动8个TTL负载,2.1P1口应用
通用I/O口:P1端口是一个带内部上拉电阻的8位准双向I/O端口。P1端口的每一位都可驱动4个TTL负载,读引脚时,需要先向端口写入1,即P1=0xff;。小提示:准双向口,是说具备双向工作的能力,由于内部电路的结构,不具备高阻态。
2.1P2口应用
(1)作为通用I/O口使用:P2端口的每一位都可驱动4个TTL负载,读引脚时,需要先向端口写入1,即P2=0xff;。(2)高8位地址线使用:P2端口在访问外部程序存储器或16位地址的外部数据存储器时,P2送出高8位地址数据,与P0口的低8位地址数据共同组成16位地址总线,可寻址64KB地址空间,当P2口作为高8位地址总线口使用时,就不能再作为通用I/O口使用。2.1P3口应用
作为通用I/O口使用:P3端口是一个带内部上拉电阻的8位准双向I/O端口。P3端口的每一位都可驱动4个TTL负载,读引脚时,需要先向端口写入1,即P3=0xff;P3端口除作为一般I/O外,还具有复用功能。2.1P3口应用2.1I/O应用总结任一I/O口都可独立作I/O使用,但P0和P2访问外部存储器时,将不能作通用I/O口用;1I/O口作为输入时,必须通过程序输出1;2P1、P2、P3为“准双向口”,无需外接上拉电阻;3P0口没有内部上拉电阻,作输入时需外接上拉电阻。401021203042.2LED灯显示电路的硬件设计
发光二极管简称LED灯(LightEmittingDiode),主要由红色、绿色、黄色和蓝色,是半导体二极管的一种,具备单向导电性,即正向偏置导通,反向偏置截止。式中
U——LED电路电压,ULED
为LED管压降;推荐值为:R=(5V-1.8V)/10mA=320Ω;
一般选择470Ω~1KΩ电阻。2.2LED灯显示电路的硬件设计51单片机输出低电平时,驱动能力很强,可达20mA~50mA;输出高电平时,驱动能力弱,电流在5mA以下。a图灌电流
b拉电流2.3
单片机编程语言大致分成三类:机器语言、汇编语言、高级语言。机器语言汇编语言高级语言2.4
C文档组成在C语言程序中,子程序的作用是由函数来实现的,函数是C语言的基本组成模块,一个C语言程序就是由若干个模块化的函数组成的。C程序都是由一个主函数main()和若干个子函数构成,有且只有一个主函数,程序由主函数开始执行,主函数根据需要来调用其他函数,其它函数可以有多个。2.2LED灯显示电路的硬件设计//任务2-1点亮一个LED灯
//注解符号#include<reg51.h>//预编译命令sbitP1_0=P1^0;
//定义可寻址位voiddelay();
//函数的声明voidmain()
//主函数{while(1)
{P1_0=0;
//点亮1个LED灯
delay();
P1_0=1;
//LED灯熄灭
delay();}}voiddelay()
//延时子函数{
unsignedinti;
for(i=0;i<50000;i++);}任务2-28个LED灯流水控制2.5C语言基本结构第三步掌握程序架构第二步第一步函数编写语句实现单片机编程技巧任务2-28个LED灯流水控制2.5C语言基本结构2.5C语言基本结构——表达式语句表达式语句是最基本的C语言语句。表达式语句由“表达式”加上分号“;”组成,其一般形式如下:
P1_0=0;//赋值语句
在C语言中有一个特殊的表达式语句,称为空语句。
空语句中只有一个分号“;”,程序执行空语句时需要占用一条指令的执行时间,但是什么也不做。
在C51程序中常常把空语句作为循环体,用于消耗CPU时间等待事件发生的场合。
如:for(j=0;j<255;j++);while(1);程序设计时,通常把该语句作为停机语句使用;2.5C语言基本结构——复合语句把多个语句用大括号{}括起来,组合在一起形成具有一定功能的模块,这种由若干条语句组合而成的语句块称为复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。{}内部的各条语句都必须以“;”结尾,在“}”之外,不能加“;”。voidmain(){//函数体的复合语句开始while(1){//while循环体的复合语句开始P1_0=0;
delay(10); P1_0=1;
delay(10);//注意:复合语句的各条语句都必须以“;”}结尾,在“}”之外,不能加“;”}2.5C语言基本结构——复合语句把多个语句用大括号{}括起来,组合在一起形成具有一定功能的模块,这种由若干条语句组合而成的语句块称为复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。{}内部的各条语句都必须以“;”结尾,在“}”之外,不能加“;”。voidmain(){//函数体的复合语句开始while(1){//while循环体的复合语句开始P1_0=0;
delay(10); P1_0=1;
delay(10);//注意:复合语句的各条语句都必须以“;”}结尾,在“}”之外,不能加“;”}2.5C语言基本结构——循环语句while语句用来实现“当型”循环,执行过程:首先判断表达式,当表达式的值为真(非0)时,反复执行循环体。为假(0)时执行循环体外面的语句。循环体循环继续的条件表达式下一条语句非0(真)0(假)循环体语句组while执行过程格式:while(循环继续的条件表达式)
{语句组;}花括号不能丢掉!请问:下述程序实现了什么功能?main(){inti,sum=0;while(i<=5){sum=sum+i;i++;}}2.5C语言基本结构——循环语句do-while语句用来实现“直到型”循环执行过程:先无条件执行一次循环体,然后判断条件表达式,当表达式的值为真(非0)时,返回执行循环体直到条件表达式为假(0)为止。绝对不能少分号!循环体格式:do{循环体语句组;
}while(循环继续条件);花括号不能丢掉!循环继续的条件表达式下一条语句非0(真)0(假)循环体语句组请问:下述程序实现了什么功能?main(){inti,sum=0;do{sum=sum+i;i++;}while(i<=100);}2.5C语言基本结构——循环语句总循环次数已确定的情况下,可采用for语句形式为:for语句的一般形式:
for(循环变量赋初值;循环继续条件;循环变量增值)
{循环体语句组;} 分隔符为分号请问:下述程序实现了什么功能?main(){inti,y=0;for(i=1;i<=10;i++){y=y+i;}}2.5C语言基本结构——选择语句基本if语句的格式如下:if(表达式){ 语句组;}注意:在if语句中,“表达式”必须用括号括起来。在if语句中,花括号“{}”里面的语句组如果只有一条语句,可以省略花括号。2.5C语言基本结构——选择语句if-else语句的一般格式如下:if(表达式) {
语句组1;
} else{
语句组2;
}if-else语句执行过程:当“表达式”的结果为“真”时,执行其后的“语句组1”,否则执行“语句组2”2.5C语言基本结构——选择语句if-else-if语句是多个条件分支的选择,其一般格式如下:if(表达式1){语句组1;}elseif(表达式2){语句组2;}…elseif(表达式n){语句组n;}else{语句组n+1;}图2-14if-else-if语句执行流程2.5C语言基本结构——选择语句多分支选择的switch语句,其一般形式如下:
switch(表达式){ case常量表达式1:语句组1;break; case常量表达式2:语句组2;break; …… case常量表达式n:语句组n;break; default:语句组n+1;}该语句的执行过程是:首先计算表达式的值,并逐个与case后的常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,则执行对应该常量表达式后的语句组,再执行break语句,跳出switch语句的执行,继续执行下一条语句。如果表达式的值与所有case后的常量表达式均不相同,则执行default后的语句组。2.6C51数据类型及常量变量关于数据类型的含义:1.不同类型数据在内存中占不同的存储空间,且采取不同的存储形式。2.不同类型数据对应不同的取值范围。3.数据类型确定了允许对其进行的操作。2.6C51数据类型及常量变量数据类型名称数据类型符占用字节数所占位数数的表示范围无符号(短)整型unsignedint2B160~65535有符号(短)整型signedint2B16-32768~32767无符号长整型unsignedlong4B320-4294967295有符号长整型signedlong4B32-2147483648~2147483647无符号字符型unsignedchar1B80~255有符号字符型signedchar1B8-128~127单精度实型float4B32±1.175494E-38~3.402823E+38位型bit1bit10或1指针型*1~3B8~24对象的地址可寻址位sbit1bit10或1专用寄存器sfr1B80~25516位专用寄存器sfr162B160~655352.6C51数据类型及常量变量例:数据类型变量名
charn1;unsignedcharx;inti;
注意:变量名不能用C语言中关键字表示,如:int、for、char等;写unsigned,默认为是有符号型。2.6C51数据类型及常量变量标识符定义:用来标识变量、常量、函数等的字符序列组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线大小写敏感不能使用关键字长度:最长32个字符命名原则:见名知意不宜混淆如l与I,o与0例:判断下列标识符号合法性decDEcM.D.TomDate3daysstudent_name#33chara>b$123_x12.6C51数据类型及常量变量
在程序执行过程中,其值不发生改变的量称为常量。常量区分为不同的类型,有整型常量、实型常量、字符常量和字符串常量。常量类型具体类型表示形式说明整型常量八进制整常数○12八进制数12十六进制整常数0x1A;0X1A十六进制数1A十进制整常数34;34L十进制数34(占16位);长整型数34(占32位)实型常量十进制形式0.0,.25,5.7890~9和小数点组成小数点前面的0可以省略指数形式2E53.7E-2等于2*105等于3.7*10-2字符常量字符型‘b’‘5’字符b,字符5转义字符型\n回车换行,具体见表2.8字符串常量字符串常量"CHINA"在内存中存的是C-H-I-N-A-\02.6C51数据类型及常量变量符号常量:用标识符代表常量定义格式:#define
符号常量常量如#defineNUM30#defineNUM30voidmain(){inttotal;total=NUM*5}2.6C51数据类型及常量变量字符常量:定义:用单引号括起来的单个普通字符或转义字符.
字符常量的值:该字符的ASCII码值转义字符转义字符的意义转义字符转义字符的意义\n回车换行\\反斜线符(\)\t横向跳到下一制表位置\'单引号符\v竖向跳格\”双引号符\b退格\a鸣铃\r回车\ddd1~3位八进制数所代表的字符\f走纸换页\xhh1~2位十六进制数所代表的字符如‘A’——65,‘a’——97,
‘0’——48,‘\n’——102.6C51数据类型及常量变量字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个‘\0’
作为字符串结束标志(字符串用数组表示)字符常量与字符串常量不同thank\0例字符串“thank”在内存中a
a\0例‘a’“a”例空串“”\0例:charch;ch=‘A’;2.6C51数据类型及常量变量
在程序执行过程中,取值可变的量称为变量。一个变量必须有一个名字,在内存中占据一定的存储单元,在该存储单元中存放变量的值。变量使用时则必须作强制定义即“先定义,后使用”。变量定义的完整形式为:【存储类型】数据类型
【存储器类型】变量名...;(1)存储类型说明符
auto自动变量(动态存储区)register寄存器变量(动态存储区)extern外部变量(CPU的通用寄存器)static静态变量(静态存储区)小贴士:
静态存储变量:在程序执行时,定义时指定的存储单元一直保持不变,直到程序结束。
动态存储变量:在程序执行时候;使用时才分配内存单元,使用完毕后立即释放,再使用再分配。从以上分析可知,静态存储变量是一直存在的,而动态存储变量则时而存在时而消失。2.6C51数据类型及常量变量自动变量
把存储类型符auto加在变量名前,变量就是自动变量。自动变量只能在函数内说明;auto可以省略。在不同函数中说明的自动变量,可以使用相同的名字,它们的类型可以相同,也可以不同。寄存器变量把数据存放在寄存器里,操作起来比内存里快。比如:registerintx;就把变量x定义为一个寄存器型的整型变量,存放在CPU的一个通用寄存器中。现在程序中极少使用寄存器型变量。外部变量
把存储类型符extern加在变量名及其类型前面,该变量就成为一个外部变量。凡是在函数外部定义的变量都是外部变量。静态变量
把存储器类型符static加在变量名及其类型前面,该变量就成为静态变量。例如:staticinti;在整个程序运行期间,静态变量一直占据分配给它的存储区不予归还,直到程序运行结束。2.6C51数据类型及常量变量存储器类型C51编译器支持的存储器类型见表所示。
C51编译器支持的存储器类型存储器类型描述data直接访问内部数据存储器,允许最快访问(128B)bdata可位寻址内部数据存储器,允许位与字节混合访问(16B)idata间接访问内部数据存储器,允许访问整个内部地址空间(256B)pdata“分页”外部数据存储器(256B)xdata外部数据存储器(64KB)code程序存储器(64KB)变量定义的完整形式为:【存储类型】数据类型
【存储器类型】变量名...;2.6C51数据类型及常量变量变量名
变量的名字是一种标识符,它必须遵守标识符的命名规则。习惯上变量名用小写字母表示,以增加程序的可读性。必须注意的是大写字符和小写字符被认为是两个不同的字符。例如:inta,b,c;//定义整型变量a,b.c,自动变量,auto省略了。unsignedchari=‘A’;//定义无符号字符型变量i,同时赋初值字符“A”;说明:1)允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。
2)最后一个变量名之后必须以“;”号结尾。
3)变量定义必须放在变量使用之前,一般放在函数体的开头部分。2.7C51运算符符号说明运算对象个数举例含义+加法运算双目x=y+z;y+z的结果赋值给x-减法运算双目x=y-z;y-z的结果赋值给x*乘法运算双目x=y*z;y×z的结果赋值给x/除法运算双目x=y/z;y÷z的结果赋值给x%取余运算双目x=y%z;y÷z的余数赋值给x,如5%2的结果是1++自增1单目i++;i自身加1--自减1单目i--;i自身减1算术运算符2.7运算符赋值运算符符号说明运算对象个数举例含义=基本赋值双目x=y+z;y与z的和赋值给x+=加赋值双目x+=1;x=x+1;-=减赋值双目x-=1;x=x-1;*=乘赋值双目x*=2;x=x*2;/=除赋值双目x/=2;x=x/2;%=模赋值双目x%=2;x=x%2;<<=左移位赋值双目x<<=1;x变量整体先左移1位,再赋值给x;>>=右移位赋值双目x>>=1;x变量整体先右移1位,再赋值给x;&=位与赋值双目x&=0xf0;做位与操作后赋值|=位或赋值双目X|=0xf0;做位或操作后赋值^=异或赋值双目X^=0xf0;做位异或操作后赋值~=取反赋值双目x~=x;做位取反操作后赋值2.7运算符关系运算符符号说明运算对象个数举例含义<小于双目x<y;x是否小于y;<=小于等于双目x<=y;x是否小于等于y;>大于双目x>y;x是否大于y;>=大于等于双目x>=y;x是否大于等于y;==等于双目x==yx是否等于y!=不等于双目X!=yx是否不等于y2.7运算符逻辑运算符符号说明运算对象个数举例含义!逻辑非单目!a;A为非0时,!a为假;a为0时,!a为真;&&逻辑与双目x&&yx,y都为真时,才为真||逻辑或双目X||yx,y有1个为真时,就为真2.7运算符位运算符符号说明运算对象个数举例含义&按位逻辑与双目0x23&0x0f=0x03;屏蔽0x23的高四位,保留低四位;|按位逻辑或双目0x23|0x0f=0x2f;0x23保留高四位,置1低四位;~按位取反单目x=~0x23;x=0xd2;^按位异或双目0x23^0x0f=0x2c异或运算:相同出0,相异出1<<按位左移双目x<<2;高位丢弃,低位补0若x=0x01,移位后为0x04>>按位右移双目x>>2;高位补0,低位丢弃若x=0x10,移位后为0x042.7运算符指针和地址运算符符号说明运算对象个数举例含义*提取变量的内容单目nx=*a;提取地址a的内容赋值给nx&提取变量的地址单目Ny=&b;提取变量b的地址赋值给Ny2.8函数1.标准库函数由C51编译器提供,用户不必定义可以直接调用。在C51编译环境中,以头文件的形式给出。eg:math.h、stdio.h函数的分类2.用户自定义函数用户根据需要自行编写的函数,它必须先定义之后才能被调用。eg:delay();2.8函数函数定义的一般形式是:函数类型函数名(形式参数表)
{
局部变量定义;
函数体语句;
return语句;}
其中,“函数类型”说明了自定义函数返回值的类型。“函数名”是自定义函数的名字。“形式参数表”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社交网络信息真实性验证课程设计
- 智慧养老系统课程设计实践课程设计
- 图嵌入欺诈分析技术课程设计
- 搜索引擎关键词研究课程设计
- 冲压折弯课程设计
- 2026年房地产估价师《房地产估价原理》培训试卷
- Snort安全防御课程实训内容课程设计
- 贝叶斯网络在医疗诊断中的精准医疗课程设计
- 2026年翻译专业资格《翻译实务》模拟试题及答案
- 《垂径定理》课件
- 农村集体经营性建设用地入市方案模板
- 合规转利润:降本增效全指南(2026)《CBT 3472-2019船舶总体自由振动计算方法》
- (正式版)DB11∕T 212-2024 《园林绿化工程施工及验收规范》
- 2026年职业技能大赛电工赛项理论考试指导题库含答案
- 2026年版《小学生规范行为准则》与《日常守则》
- 苗木采购运输供应服务方案投标文件(技术标)
- 2026 ACC、AHA、AACVPR 指南:血脂异常的管理
- 2026年招标采购从业人员《招标采购专业实务(中级)》真题卷(含解析)
- 输尿管结石治疗指南总结2026
- 2026年中华护理学会动脉血气技能比赛理论题库试题含完整答案详解【网校专用】
- 铁路工务段保密工作制度
评论
0/150
提交评论