51单片机

51单片机_第1张图片

 目录

一.简介

  • 89c51

  • 单片机工作基本时序

  • 引脚

二、基本函数    

  • 延时函数

  • 循环左右移

三、锁存器

四、中断

五、定时/计数器

六、键盘

七、D/A&A/D

八、计算机通信

九、IIC总线

十、芯片使用心得

一、简介

stc89c52rc

stc:公司名

89:系列

c:cmos

52:内存2x4k

ps.引脚默认为高电平1

sfr:特殊功能寄存器声明

sfr16:sfr的16位数据声明

sbit:特殊功能位声明

bit:位变量声明

unsigned char 定义变量默认值为0

单片机工作基本时序

1.振荡周期(时钟周期):指为单片机提供时钟脉冲信号的震荡源的周期,TX实验板上为11.0592MHZ。

2.状态周期:每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的。

3.机器周期:1个机器周期包含6个状态周期S1~S6,也就是12个时钟周期。在一个机器周期内,CPU可完成一个独立操作,约为1us

4.指令周期:指CPU完成一条操作所需的全部时间。每条指令执行时间都是由一个或几个机器周期组成。

引脚

51单片机_第2张图片

RST:高电平有效,持续两个机器周期,程序指针指向0地址,完成复位操作。

EA上划线:访问内外部存储器。当为H,访问内部存储器,当程序计数器超过存储限度时,访问外部程序;当为L,只访问外部程序。

ALE:正常工作时输出1/6时钟周期的方波,可用来检测是否正常工作。

P1、P2、P3口有上拉电阻,P0口没有上拉电阻。

 二、基本函数

延时函数

void delay500ms()
{
	uint x, y;
	for(x = 100;x>0;x--)
	{
		for(y = 600;y>0;y--)
		{
		}
	}
}

x,y参数需在keil调试中根据时间调整,设置中晶振频率(keil模拟)调为11.0295


51单片机_第3张图片                          51单片机_第4张图片

循环左移:_crol_(右移为_cror_)

#include
void tst_crol_()
{
    char a;

    a = 0xA5;         #10100101

    b = _crol_(a,3);  #00101101
}

三、锁存器

51单片机_第5张图片51单片机_第6张图片

OE加上划线表示该芯片OE端为低电平时有效。

通过LE进行锁存数据。当LE为H是时,Q端随E端变化;当LE为L时,Q保持之前之前状态不在随D改变。

Q0表示维持之前状态。

Z为高阻态。

四、中断 

五个中断源:

51单片机_第7张图片

中断请求标志:

TCON为定时器/计数器的控制寄存器:锁存外部中断请求标志(IE0),也保存触发控制方式(IT0)。

ps.字节地址能被8整除可以进行位寻址(8位1个字节)

51单片机_第8张图片

51单片机_第9张图片

中断优先级:

80c51有两个中断优先级,可实现二级中断嵌套

51单片机_第10张图片

从上到下中断函数interrupt 0~4

中断允许寄存器:

51单片机_第11张图片

中断响应条件:

①总中断打开(EA = 1)

②对应中断源的中断允许位为1

③中断源有中断请求(与触发控制方式搭配)

五、定时/计数器 

结构及原理:

实质是16位加1计数器,由低8位和高8位两个寄存器构成,经过一个机器周期加1,直到两个寄存器均为1时,再加1使两个寄存器回0且计数器溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定数/计数器中断允许时)。

ps.若晶振频率为12MHz,则一个机器周期为1μs

TMOD工作方式寄存器:

51单片机_第12张图片

GATE = 0时,TR0或TR1为1就可启动定时/计数器工作;GATE = 1时,除上述条件还需要外部中断引脚为高电平才能工作

C/T = 0 为定时模式;C/T = 1为计数模式

M1M0可调工作方式(只讨论方式1:M1M0 = 01)

TCON(中断部分有图)

TCON低八位控制外部中断,高八位控制定时/计数器,控制T0、T1的启动和停止及设置溢出标志。

TR1控制T1,TR0控制T0,为1时开始工作,0时停止工作

TF0、TF1由硬件自动控制不做解释

方式1:

51单片机_第13张图片

TMOD由T0部分控制

初始值:

  TH0 = (65536-次数)%256

  TL0 = (65536-次数)/256

  最大计时约65ms。

定时/计数器应用条件:

①对TMOD赋值,以确定T0,T1的工作方式。

②计算初值,并将其写入TH0、TL0或TH1、TL1。

③两级中断都打开

④TR0或TR1置位

每50ms进入一次中断程序interrupt 1:

		\\T0方式一每次50ms
        TMOD = 0x01;  //设置T0工作方式
		TH0 = (65536-50000)/256;		
		TL0 = (65536-50000)%256;//初值
		EA = 1;//总中断
		ET0 = 1;//T0溢出中断
		TR0 = 1;//T0开始工作

        void exter0() interrupt 1
        {
	        TH0 = (65536-50000)/256;		
	        TL0 = (65536-50000)%256;
        }

六、键盘

键盘抖动:

51单片机_第14张图片

抖动大约持续5ms,设置延迟10ms比较稳妥。

低电平即接地,高电平引脚与低电平引脚或与地相连时,高电平变低电平,即由1→0,用以检测按键是否按下。

七、D/A&A/D

①D/A 

原理:

51单片机_第15张图片

从D7~D0依次接1,I01得到的电流值为(VREF/R)*(1/2+1/2^2……+1/2^8),依此来将电压值转化为8位二进制数。

分辨率:

指最低位接1时,输出模拟量的变化(I01的变化量),上图8位则分辨率位VREF/2^8,通常VREF=5V,则分辨率为5/256=19.5mv。

②A/D 

原理(逐次逼近式):

51单片机_第16张图片

以VREF位参考,通过电压比较器使VIN与VREF逐位比较,从高位到低位逐个存放至寄存器,直到最低为存好时,控制逻辑EOC,寄存器数据输出。

分辨率:

只有超过分辨率的电压量才能使数码加1,具体定义与D/A分辨率类似。

八、计算机通信 

简介

并行通信:

51单片机_第17张图片

串行通信:

51单片机_第18张图片

串行通信基础:

异步通信

51单片机_第19张图片

异步通信发送/接收设备有各自的始终,传输数据时尽量保持一致

单个字符(1帧)内位与位间隔时间固定,帧与帧间隔时间任意

同步通信

发送方对接收方时钟的完全控制,后文均为主要介绍异步通信

数据格式:

51单片机_第20张图片

10位1帧,起始位低电平,停止位高电平,校验位进行错误校验

串行通信传输方向

51单片机_第21张图片

调制与解调:

Ⅰ调制器(Modulator):把数字信号转换成模拟信号

Ⅱ解调器(Demodulator):把模拟信号转换成数字信号

由于通信是双向的,两者合并到一个装置,即为调制解调器(MODEM)

错误校验

Ⅰ奇偶校验:奇校验时数据位与校验位所有的“1”加起来应为奇数,偶校验时数据位与校验位所有的“1”加起来应为偶数。

Ⅱ代码和校验:发送方将发送的多个字节数据相加,接收方将接收的多个字节相加,若两者相等,则无差错。

Ⅲ循环冗余校验:广泛用于同步通信。

传输速率(比特率):每秒钟传输二进制代码的位数,单位:位/秒(bps)

串行通信接口标准:

①RS-232C:

51单片机_第22张图片

数据终端设备(DTE)、数据通信设备(DCE)

51单片机_第23张图片

RS-485:

51单片机_第24张图片

ps.一般PC机不带RS485接口,故须RS-232C/RS-485转换器,如MAX485可进行此转换。

80C51串行口结构:

51单片机_第25张图片

A=SBUF;(读数据)

SBUF=A;(发数据)

51单片机波特率由定时器1(T1)溢出率决定,故编程时只能用T1不能T0。

80C51串行口控制寄存器:

51单片机_第26张图片

ps.此处只讨论方式1,fosc位晶振频率。

SM2:多机通信控制位,方式1为0。

REN:允许串行接收位,REN=1启动串行口接收数据,REN=0禁止接收。

TB8:在方式2、3中,是发送数据第九位,即校验位,方式0、1中均未用,设置为0。

RB8:在方式2、3中,是接收数据第九位,其他同TB8。

TI:发送中断标志位,方式1、2、3中,串行发送停止位开始,内部硬件使TI自动置1,即向CPU发送中断申请,在中断程序中,需手动输入程序清0,取消此中断申请。

ps.若ES=0,也会自动置1,只是不会进入中断。

RI:接收中断标志位,其他同TI。

51单片机_第27张图片

SMOD:波特率倍增位,在方式1、2、3中,当SMOD=1时,波特率增加一倍。复位时,SMOD=0。

方式1:

51单片机_第28张图片51单片机_第29张图片

波特率的计算:

51单片机_第30张图片

串口通信应用步骤:

Ⅰ确定T1工作方式(编程TMOD寄存器)。

ps.计时器工作方式需为方式2,TH0满了后TH1自动将值赋给TH0。

Ⅱ计算T1初值,载入TH1、TL1

ps.通过波特率计算初值。

启动T1(编程TCON中TR1位

Ⅳ确定串行口控制(编程SCON寄存器

Ⅴ串口工作在中断方式时,要进行中断设置(编程IE、IP寄存器)

九、IIC总线

1.IIC总线组成及工作原理

①IIC总线概述:

51单片机_第31张图片

主线空闲时均为高电平,当有任何一器件的SDA/SCL为低电平时,主线的SDA/SCL也变为低电平

SDA:数据线   SCL:时钟线

总线仲裁:主机发送地址与相应器件匹配,多主机系统中,可通过总线仲裁决定那个主机控制主线

②IIC总线数据传送:

Ⅰ有效性

51单片机_第32张图片

只有时钟信号高电平是,才能读到数据

ps.当收到一个完整字节后开始中断则需先将时钟信号SCL调为低电平,调为待机状态,直到中断程序结束后再调为高电平继续传送。

Ⅱ起始终止信号

51单片机_第33张图片

只有时钟信号高电平期间检测到数据信号变化才能开始/结束读所需数据

③数据传送格式

Ⅰ字节的传送与应答

51单片机_第34张图片

应答由从机发给主机,若为非应答,则主机发送终止信号

起始信号由7位从机地址(从机地址分为固定部分和可编程部分,用以多个相同从机与主机相连)与第8位传送方向位(R/T)组成,当传送方向位为“0”时主机传送数据(T),当传送方向位为“1”时主机接收数据(R)

a、主机一直向从机发送数据

S:起始信号

A:应答

A上划线:非应答

P:终止信号

b、主机在发送起始信号后一直从从机接收信号

c、中间出现发送/接收信号转换

2.EEPROM--AT24C02

地址固定部位为1010,A0、A1、A2通过高低电平确定可编程部分3位编码

如:51单片机_第35张图片

读/写数据:

主机起始信号发送完后需再发送被写入器件存储的首地址

写:

读:

51单片机_第36张图片

十、芯片使用心得

重点:

  • 芯片的引脚作用
  • 寄存器地址
  • 读写时序

你可能感兴趣的:(单片机,51单片机)