第三章:并口+led灯

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章单片机并行I/O口应用Page2本章内容并行I/O口电路结构认识C语言C语言的基本语句C语言数据与运算数组的概念Page3并行I/O口电路结构MCS-51系列单片机共有四个8位并行I/O口,分别用P0、P1、P2、P3表示。每个I/O口既可以按位操作使用单个引脚,也可以按字节操作使用8个引脚。Page4除了I/O功能以外,在进行单片机系统扩展时,P0口是作为单片机系统的地址/数据线使用的,一般称为地址/数据分时复用引脚。P0口的结构Page5P1口是准双向口,只能作为通用I/O口使用。P1口作为输出口使用时,无需再外接上拉电阻。P1口作为输入口使用时,应区分读引脚和读端口。读引脚时,必须先向电路中的锁存器写入“1”,使输出级的FET截止。P1口的结构Page6P2口是准双向口,在实际应用中,可以用于为系统提供高8位地址,也能作为通用I/O口使用。P2口作为通用I/O口的输出口使用时,与P1口一样无需再外接上拉电阻。P2口作为通用I/O口的输入口使用时,应区分读引脚和读端口。读引脚时,必须先向锁存器写入“1”。P2口的结构Page7P3口是准双向口,可以作为通用I/O口使用,还可以作为第二功能使用。作为第二功能使用的端口,不能同时当作通用I/O口使用,但其他未被使用的端口仍可作为通用I/O口使用。P3口作为通用I/O的输出口使用时,不用外接上拉电阻。P3口的结构Page8认识C语言C语言程序以函数形式组织程序结构,C程序中的函数与其他语言中所描述的“子程序”或“过程”的概念是一样的。C程序函数i函数1预编译命令……函数定义函数体主函数C程序基本结构Page9认识C语言一个C语言源程序是由一个或若干个函数组成,每一个函数完成相对独立的功能。每个C程序都必须有(且仅有)一个主函数main(),程序的执行总是从主函数开始,调用其他函数后返回主函数main(),不管函数的排列顺序如何,最后在主函数中结束整个程序。C语言程序中可以有预处理命令,预处理命令通常放在源程序的最前面。C语言程序使用“;”作为语句的结束符,一条语句可以多行书写,也可以一行书写多条语句。Page10认识C语言结构化语言丰富的数据类型便于维护管理与汇编语言相比,C语言的优点如下:不要求编程者详细了解单片机的指令系统,但需了解单片机的存储器结构;寄存器分配、不同存储器的寻址及数据类型等细节可由编译器管理;结构清晰,程序可读性强;编译器提供了很多标准库函数,具有较强的数据处理能力。Page11C语言的基本语句C语言程序的执行部分由语句组成。C语言提供了丰富的程序控制语句,按照结构化程序设计的基本结构:顺序结构、选择结构和循环结构,组成各种复杂程序。这些语句主要包括表达式语句、复合语句、选择语句和循环语句等。Page12表达式语句和复合语句表达式语句是最基本的C语言语句。表达式语句由表达式加上分号“;”组成,其一般形式如下:表达式;执行表达式语句就是计算表达式的值。在C语言中有一个特殊的表达式语句,称为空语句。空语句中只有一个分号“;”,程序执行空语句时需要占用一条指令的执行时间,但是什么也不做。在C51程序中常常把空语句作为循环体,用于消耗CPU时间等待事件发生的场合。Page13表达式语句和复合语句把多个语句用大括号{}括起来,组合在一起形成具有一定功能的模块,这种由若干条语句组合而成的语句块称为复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。复合语句在程序运行时,{}中的各行单语句是依次顺序执行的。在C语言的函数中,函数体就是一个复合语句。Page14选择语句:if,switch,break,continue.循环语句:for,while,do…while。C语言基础1.赋值运算符2.算术运算符和算术表达式3.关系运算符和关系表达式4.逻辑运算符和逻辑表达式Page15分隔符为分号C语言数据与运算1.赋值运算符2.算术运算符和算术表达式3.关系运算符和关系表达4.逻辑运算符和逻辑表达式Page16逻辑运算符及其优先级逻辑运算符优先级!(逻辑非)&&(逻辑与)||(逻辑或)注意:逻辑运算符与位操作运算符的区别。Page17位运算与操作按位与操作符:&格式:x&y规则:对应位均为1时才为1,否则为0例如,i=i&0x0f;等同于i&=0x0f;主要用途:取(或保留)1个数的某(些)位,其余各位置0。Page18位运算或操作按位或操作符:|格式:x|y规则:对应位均为0时才为0,否则为1例如,i=i|0x0f;等同于i|=0x0f;主要用途:将1个数的某(些)位置1,其余各位不变Page19位运算异或操作按位异或操作符:^格式:x^y规则:对应位相同时为0,不同时为1例如,i=i^0x0f;等同于i^=0x0f;主要用途:使1个数的某(些)位翻转(即原来为1的位变为0,为0的变为1),其余各位不变。Page20位运算按位取反操作按位取反操作符:~格式:~x规则:各位翻转,即原来为1的位变成0,原来为0的位变成1例如,i=~i;主要用途:间接地构造一个数,以增强程序的可移植性。Page21左移运算符“”的功能,是把“”左边的操作数的各二进制位全部左移若干位,移动的位数由“”右边的常数指定,高位丢弃,低位补0。例如:“a4”是指把a的各二进制位向左移动4位。如a=00000011B(十进制数3),左移4位后为00110000B(十进制数48)。右移运算符“”的功能,是把“”左边的操作数的各二进制位全部右移若干位,移动的位数由“”右边的常数指定。进行右移运算时,如果是无符号数,则总是在其左端补“0”位运算Page22分隔符为分号数组的概念数组属于常用的数据类型,数组中的元素有固定数目和相同类型,数组元素的数据类型就是该数组的基本类型。数组:是有序数据的集合;数组中的每一个元素都属于同一个数据类型,用一个统一的数组名和下标来唯一地确定数组中的元素。应用场合:需要处理的数据为数量已知的若干相同类型的数据时。注意:先定义,后使用。Page23流水灯实验P0.0=0,点亮信号灯P0.0=1,熄灭信号灯开始延时延时结束★流程图:Page24常用延时办法非精确延时1、for(i=0;i100;i++);2、i=100;while(i--);精确延时办法1、利用库函数_nop_()(一个机器周期);(需要includeintrins.h)2、利用定时器进行定时(后边的课程进行介绍)Page25动态扫描原理:LED的闪烁间隔说明:50MS以上可识别亮灭,10MS以下就只能看到常亮了!Page26变量类型关键字所占字节取值范围unsignedchar10~255“00000000”到”11111111”unsignedint20~65535“0000000000000000”到“1111111111111111”依照国际惯例,我们可以用uint8uint16等缩写来替代,只需要用typedef语句可以完成:typedefunsignedcharuint8;typedefunsignedintuint16;P70表3.6Page27流水灯实验8个LED发光二极管,分别对应单片机IO口的P0.0到P0.7口,8个单片机IO口组成一个字节,在程序编写过程中,可以直接用P0来进行操作。C语言的8位二进制数代表了8个IO口P0=0xfe;P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.011111110Page28C语言运算符左移右移X2X2左移,最低位填0补充;右移,最高位填0补充0xf0按位取反符号~取反后1变成0,0变成10x0F取反后成为0xF0,即00001111-11110000Page29数码管Page30数码管真值表根据单片机连接电路,可以计算出数码管的真值表:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0dpgfedcba11111001P0=0xF9;Page31数码管真值表根据单片机连接电路,计算出数码管的真值表0123450xc00xf90xa40xb00x990x926789Ab0x820xf80x800x900x880x83CdEF0xa70xa10x860x8e软件实现

1 / 31
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功