最新51单片机的基本端口操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机的基本端口

操作

第一章51单片机的基本端口操作

主要对单片机最简系统在实际应用中的使用方法,从简单到复杂地实现单片机最简系统的基本功能。

“点亮最简单的单片机系统”从单片机原理上介绍单片机的基本组成和最简单系统的典型电路,以及有关单片机

C51编程方法和例程。

“更加明亮的小灯”从功能上介绍如何使LED发光稳定,从原理上介绍单片机I/O口的电气特性和使用方法。

“定时亮灭的小灯”介绍如何使LED灯定时亮、灭,从单片机原理上介绍定时器的使用和编程方法。

“小灯亮灭的人工控制”从功能上介绍如何通过按键控制LED灯的亮灭,从单片机原理上介绍单片机中断的使用和编程方法。

先复习下Keil 51的操作。

1.1点亮最简单的单片机系统

常用MCS-51系列单片机引脚功能说明

提问:什么是单片机系统、

提问:单片机中晶振有什么作用?

回答:单片机访问一次存储器的时间,称之为一个及其周期,

是一个时间基准。一个机器周期包括12

个时钟周期。如果一个单片机选择了12MHz 晶振,它的时钟周期是

1/12us ,它的一个机器周期是

12X (1/12us ),也就是

1us 。

若是12MHz 的晶振,当单片机中定时

/计数器的数值加

1时,实际经过的时间就是

1us 。

提示:晶振电路,复位电路

基本电路图:

发光二极管导通压降通常为1.7V-1.9V;

为什么要接电阻?

电路原理及器件选择?

89C51:单片机,控制发光二极管亮灭

OSC:晶振,在本例中选择12MHz的立式晶振C3,C2:晶振电路的起振电容,容值为22pF

L1:发光二极管

R1:限流电阻,阻值为1k欧

地址分配和连接?

P1.0:与发光二极管电路相连,控制LED发光二极管阴极的电平高低

RESET:复位引脚

X1,X2:单片机的晶振引脚

程序设计:

延时程序:我们先不使用单片机的定时器,而是直接采用软件的延时程序定时控制发光二极管的亮灭。在12M晶振时,一个指令周期为1us,那么1M次就是1s。

程序代码:

#include

sbit gate=P1^0; //位定义

void main(void)

{

unsigned int i,j;

while(1)

{

for(i=1000;i>0;i--) //双重循环,延时约1s

for(j=1000;j>0;j--);

gate=!gate; //对P10取反,控制小灯

}

}

补充:结合第五代开发板电路图可以看到…

1.2更加明亮的小灯

外加与非门做驱动电路,增大电流,当然也有相应的电子驱动芯片。

1.3定时亮灭的小灯

下面我们进入单片机最重要的内容之一,定时和中断。

1.什么是单片机的定时器?

MSC-51单片机一般有两个内部的16位定时器/计数器,分别成为T0和T1.分别有两个8位的RAM单元组成,即每个计数器都是16位的计数器,最大计数量为

2的16次方等于65536.

而定时和计数的关系是什么呢?找个同学告诉我吧。

定时器每完成一个时间的定时,计数器就加1.

2.一定要计满65536个数吗?

3.如何使用MCS-51单片机的定时器呢?

定时器有两个特定的寄存器TMOD和TCON,就象定时器的操作界面。

首先介绍定时器/计数器的方式寄存器TMOD。

TMOD的控制字

可以看到,高四位和第四位分别代表两个定时器/计数器,所以我们可以以TMOD第四位来说明各位的定义与功能。

GATE:分为两种情况,GATE=0时,定时器的起停和INT1无关,在这种情况下,定时器的起停只取决与TR0.GATE=1时,在此种情况下定时器/计数器的开关不仅要由TR0来控制,而且还要受到INT1引脚的控制,只有TR1为1时,且INT1引脚也是高电平,定时器才能开始工作。

C/T:定时/计数器功能选择。如果C/T为0就做定时器,如果C/T为1就做计数器。当然只能二选一。 M1,M0:用M1,M0来控制定时器/计数器4种工作方式的选择。

工作方式0:M1=0,M0=0.13位定时.计数方式。

它由TL(1/0)的低五位和TH(0/1)的8位构成13位的计数器,此时TL(1/0) 的高3位未用。

工作方式1:M1=0,M0=1.是16位定时/计数方

式,其他特性与工作方式0相同。

工作方式2:M1=1,M0=0.自动重装初值的8位定时/计数器。初值放在T(0/1)的高8位。在工作方式2,只有低8位参与计算,而高8位不参与计算,用作预置数存放,技术范围256。每当计数溢出,就会打开T(0/1)的高、低8位之间的开关,计预置数进入低8位。这是由硬件自动完成的。通常这种方式用于波特率发生器(我们将在串行接口中讲解)

工作方式3:M1=1,M0=1.这种工作方式下,定时/计数器被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器的工作方式,儿TH0则只能作为定时器来用。只有在T1以工作方式2运行时,才让T0以工作方式3运行。

然后,我们介绍控制寄存器TCON

TCON控制寄存器

TR0: T0的运行控制位。启动定时器T0没有专门的指令,而是通过TR0进行控制。当GATE=0

时,T0的运行只取决于TR0的0和1;当门控位

GATE=1时,仅当TR0=1,并且外中断0引脚上的输入值为高电平时,T0才开始计数,这两个条件缺一

不可

TF0: T0的溢出和中断申请标志位。当T0溢出时,硬件置位TF0,表示提出了中断申请。该标志位可以通过软件查询,也可以用软件清零和置位,在单片机响应中断申请后,硬件自动清零。

TR1:

TF1:

接下来我们来看一个典型的定时器程序。

要求:定时10ms,P1.0反相。

//定义头文件和位定义

#include

#include

相关文档
最新文档