信息电子工程学院徐州建筑职业技术学院情境一流水灯项目二流水灯的制作(1)---------学习微控制器I/O口简介信息电子工程学院徐州建筑职业技术学院知识目标:1.掌握单片机的内部硬件资源2.理解并运用相关指令3.掌握微控制器的输出接口的电路形式与作用技能目标:1.掌握流水灯电路的制作2.掌握延时程序的计算和编写3.掌握LED与单片机之间的连接信息电子工程学院徐州建筑职业技术学院单片机经常要和外设之间传输数据(输入,输出),P0,P1,P2,P3就是可以和外设完成并行数据传输的接口。一、P1口1.结构其1位的结构原理如图2―7所示。P1由8个这样的电路组成锁存器起输出锁存作用,场效应管(FET)V组成输出驱动器,以增大带负载能力;三态门1是用于读锁存器端口;三态门2是引脚输入缓冲器;信息电子工程学院徐州建筑职业技术学院2.功能(1)输出(外接发光二极管)MOVP1,#data(P1=0Xdata)内部总线输出“0”,则D=0,Q=1,V导通,则输出点=0(2)输入(外接开关)a.读引脚MOVA,P1(A=P1)读引脚脉冲有效,为高电平,把该三态缓冲器打开,这样端口引脚上的数据经过三态门缓冲器读入到内部总线。如果输入数据走该通道,那么V是否对引脚有影响?有的。如果锁存器原来寄存的数据Q=0,那么则V导通,引脚始终被嵌位在低电平,不可能输入外接电路的高电平。所以在输入前,必须用输出指令向锁存器写入“1”,使V截止(断开),保证单片机输入的电平与外接电路电平相同。所以P0口被称为一个准双向口。MOVP1,#0FFH(P1=0XFFH)MOVA,P1(ACC=P1)复位时?b.读锁存器如:ANLP0,A称为“读-改-写”信息电子工程学院徐州建筑职业技术学院二、P0口1.结构与P1不同:多路选择开关(选择它的两种功能)V1:输出驱动器2.功能(1)输出开关连接B点,V1截止(其它同P1口)因为输出驱动器漏极开路,所以外接上拉电阻(2)输入(准双向口,先写入“1”)外接上拉电阻(其它同P1口)(3)地址/数据线开关接在A点,输出地址信号(低8位)或输出/输入数据信号不需接上拉电阻信息电子工程学院徐州建筑职业技术学院三、P2口1.结构多路选择开关(接在Q上)反相器、Q0输出驱动2.功能(1)输出(同P1口)(2)输入(同P1口)(3)地址总线(高8位)与P0口构成16位地址信息电子工程学院徐州建筑职业技术学院四、P3口1.结构2.功能(1)输出(同P1口)(2)输入(同P1口)(3)第二功能第二功能输入:缓冲器2关闭,P3口的口线状态通过缓冲器0送入“第二功能输入端”第二功能输出:Q端为高电平时,P3口的口线状态就取决于第2功能输出线的状态。P3第二功能各引脚功能定义:P3.0:RXD串行口输入P3.1:TXD串行口输出P3.2:INT0外部中断0输入P3.3:INT1外部中断1输入P3.4:T0定时器0外部输入P3.5:T1定时器1外部输入P3.6:WR外部写控制P3.7:RD外部读控制信息电子工程学院徐州建筑职业技术学院总结:准双向口通用I/O口上拉电阻(I/O口)其它用途P0口√√√数据线/低8位地址线P1口√√P2口√√高8位地址线P3口√√第二功能信息电子工程学院徐州建筑职业技术学院五、带负载能力(驱动能力)负载能力就是说能够在一定的电压(0-5V)下面能够灌入或拉出的最大电流。拉电流和灌电流是衡量电路输出驱动能力的参数,这种说法一般用在数字电路中。1.灌电流(输出低电平)当负载的另一端接VCC/VDD,输出端口输出低电平时,就会产生灌电流。就是从负载流向输出端口,“灌进去”的电流,一般是要吸收负载的电流,其吸收电流的数值叫“灌电流”。2.拉电流(输出高电平)当负载的另一端接地,输出端口输出高电平时,就会产生拉电流;就是从输出端口流向负载,“拉出来”的电流,一般是对负载提供电流,其提供电流的数值叫“拉电流”.一般地,LSTTL即低功耗肖特基晶体管。1个LSTTL:拉电流(高电平)0.20uA,灌电流(低电平)0.35mA。所以灌电流一般它比拉电流要大得多。3.I/O口驱动能力P0:灌入,驱动8个(没有高电平能力,必须上拉电阻),2.88mAP1-3:灌入、拉,驱动4个,1.44mA51系列的芯片低电平的驱动能力比较大一点。举例说明流水灯4个引脚,每个引脚灌电流≤10mA每个端口8个引脚灌电流之和:P0≤26mAP1、P2、P3≤15mA信息电子工程学院徐州建筑职业技术学院学生分组讨论以下问题,:1.带负载能力小,会怎样?(数码管,发光二极管)2.增加负载能力的方法提出问题:画出流水灯电路总结布置作业信息电子工程学院徐州建筑职业技术学院情境一流水灯项目二流水灯的制作(2)--------C51的学习信息电子工程学院徐州建筑职业技术学院一、支持的语言1、汇编语言2、高级语言三种高级语言:PL/M、C和BASICC语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。目前,使用C语言进行程序设计已经成为软件开发的一个主流。用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进、扩充和移植。针对51系列单片机扩展的C语言是C51,现日趋成熟,成为了专业化的实用高级语言。3.C51特点:C语言作为一种非常方便的语言而得到广泛的支持,很多硬件开发都用C语言编程,如:各种单片机、DSP、ARM等.C51语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。C51提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护性。信息电子工程学院徐州建筑职业技术学院4.C51与ASM51相比,有如下优点:a.对单片机的指令系统不要求了解,仅要求对51系列单片机的存贮器结构有初步了解;b.C51管理内部寄存器和存储器的分配,编程时,无需考虑不同存储器的寻址和数据类型等细节问题;c.程序可以由若干函数组成,具有良好的模块化结构;d.有丰富的标准库函数可直接引用,从而大大减少用户编程的工作量;e.由于具有方便的模块化编程技术,使已编好程序可容易地移植;信息电子工程学院徐州建筑职业技术学院二、C51与C语言1.C语言程序的组成结构如下所示:全局变量说明/*可被各函数引用*/main()/*主函数*/{局部变量说明/*只在本函数引用*/执行语句(包括函数调用语句)}fun1(形式参数表)/*函数1*/形式参数说明{局部变量说明执行语句(包括调用其他函数语句)}信息电子工程学院徐州建筑职业技术学院2.C51同标准C一样,C51单片机的程序由一个个函数(子程序、过程)组成,其中必须有一个主函数main(),程序的执行从main()函数开始voidmain(){从这里开始执行;其他语句;}3.两者不同C51的语法规定、程序结构及程序设计方法与标准C语言相同,但C51程序与标准C程序在以下几个方面不一样:a.C51中定义的库函数和标准C语言定义的库函数不同。标准的C库函数是按通用微型计算机定义,C51库函数是按单片机定义;b.C51中的数据类型与标准C的数据类型也有一定的区别,在C51中还增加了几种针对MCS-51单片机特有的数据类型;c.C51与标准C的输入输出处理不一样,C51中的输入输出是通过MCS-51串行口来完成的,输入输出指令执行前必须要对串行口进行初始化;d.C51与标准C在函数使用方面也有一定的区别,C51中有专门的中断函数。信息电子工程学院徐州建筑职业技术学院三、C511.C51的数据类型(1)基本数据类型类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int√16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsignedint√0~65535320~4294967295unsignedlongintunsignedshortint160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char√8-128~127无unsignedchar√80~255信息电子工程学院徐州建筑职业技术学院例:#includeREG51.hsbitLED0=P1^0;sbitLED1=P1^1;Voidmain(){unsignedinta;unsignedcharb;Do{for(a=0;a65535;a++)LED0=0;LED0=1;for(a=0;a30000;a++);for(b=0;a255;b++)LED1=0;LED1=1;for(a=0;a30000;a++);}while(1);}信息电子工程学院徐州建筑职业技术学院(2)扩充的数据类型a.单片机中特殊功能寄存器(SFR)的定义sfr:对特殊功能寄存器的定义,占一个字节单元sfr16:对16位特殊功能寄存器的定义,占一个字单元sfr特殊功能寄存器名=地址;特殊功能寄存器名一般用大写字母表示例:sfrP1=0X90;sfr16T2=0xCC;一般C51帮我们做好了定义存在头文件中(REG51.H)b.位变量的定义C51中位的类型符有两个:bit和sbit。bit:定义一般的可位处理位变量。格式如下:bit位变量名;但注意存储类型只能是片内RAM的可位寻址区bdata。bitbdataa2;/*正确*/bitxdataa4;/*错误*/信息电子工程学院徐州建筑职业技术学院Sbit:定义片内可位寻址区(20H-2FH)和SFR中的可位寻址位sbit位变量名=SFR名^位号;例:sbitled0=P1^0;sbitOV=PSW^2;信息电子工程学院徐州建筑职业技术学院2.常量与变量(1)常量:在程序执行过程中其值不能改变的量。在C51中支持整型常量、浮点型常量、字符型常量和字符串型常量。整型常量•十进制整数:如234、-56、0•十六进制整数:以0x开头表示,如0x12表示12H浮点型常量:实型常数。有十进制表示形式和指数表示形式。字符型常量•单引号引起的字符,如‘a’、‘1’、‘F’等•可显示的ASCII字符字符串型常量如“A”,“OK”存储时在字符串尾部加上\O(ASCII码00H),作为结束标志信息电子工程学院徐州建筑职业技术学院(2)变量:在程序运行过程中其值可以改变的量C51变量定义的格式:数据类型[存储类型]变量名1[=初值],变量名2[初值]…;数据类型:char,int….存储类型:见下表,缺省的是由单片机来随机制定(有时片内RAM)变量名是名字,有两种:普通变量名和指针变量名。它们的区别是指针变量名前面要带“*”号。例:unsignedcharcodedsy[]={0x12,0x34,0x78,0x76};inti=0;存储类型描述data直接寻址的片内RAM低128B,访问速度快bdata片内RAM的可位寻址区(20H~2FH),允许字节和位混合访问idata间接寻址访问的片内RAM,允许访问全部片内RAMpdata用Ri间接访问的片外RAM的低256Bxdata用DPTR间接访问的片外RAM,允许访问全部64k片外RAMcode程序存储器ROM64k空间信息电子工程学院徐州建筑职业技术学院例:chardatavarl;/*在片内RAM低128B定义用直接寻址方式访问的字符型变量var1*/intidatavar2;/*在片内RAM256B定义用间接寻址方式访问的整型变量var2*/unsignedlongdatavar3;/*在片内RAM128B定义用直接寻址方式访问的无