1. 单片机io口赋值
一、STC51单片机外部引脚介绍
1、电源和时钟引脚。如Vcc、GND、XTAL1、XTAL2
2、编程控制引脚。如RST(复位)。
3、I/O口引脚。
Vcc、GND——单片机电源引脚,不同的型号单片机接入对应电压电源,常压为+5V,低压为+3.3V
XTAL1、XTAL2——外接时钟引脚。XTAL1为片内震荡电路的输入端,XTAL2为片内震荡电路的输出端。8051的时钟有两种方式,一种是片内时钟震荡方式,需要在这两个脚外接石英晶体和震荡电容,震荡电容的值一般取10p~30p;另一种是外部时钟方式,将XTAL1接地,外部时钟信号从XTAL2脚输入。
P0口——双向8位I/O口,每个口可独立控制,没有上拉电阻,为高阻态,所以不能正常的输出高低电平,因此该组IO口在使用时务必要接上拉电阻,一般选10千欧。
P1口——准双向8位IO口,每个口可独立控制,内带上拉电阻,这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向IO口。之所以称它为准双向,是因为该口在作为输入使用前,要先向该口进行写1操作,然后单片机内部才可正确的读出外部信号,也就是要使其先有个“准”备的过程,所以说才是准双向接口。
P3口——与P1口类似,作为第二功能使用时,和引脚有着各种功能的定义,要查手册。
二、电平特性
单片机的输入输出电平为TTL电平,其中高电平为+5V,低电平为0V。计算机串口为RS-232电平,其中高电平为-12V,低电平为+12V。注意,RS-232为负逻辑电平。
三、单片机的几个周期介绍
1、时钟周期:也称为震荡周期,定义为时钟频率的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,如12Mhz的晶振,它的时钟周期就是1/12us),它是单片机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成这一个最基本的动作
2、状态周期:它是时钟周期的两倍
3、机器周期:单片机的基本操作周期,在一个操作周期内,单片机完成一项基本操作,如取指令、存储器读写等。它由12个时钟周期(6个状态周期)组成。
4、指令周期:他是指CPU执行一条指令所需要的时间。一般一个指令周期含有1~4个机器周期。
四、移位操作
1、左移。C51操作符为“<<”,最低位补零
2、右移。同上
3、循环左移,最高位移入最低位,其他依次向左移一位。
五、数码管显示原理
电路方面有共阴极和共阳极之分,让数码管显示不同的数字就是先定义一个保存16进制数的数组,然后在程序中把这个16进制数赋值给相应的引脚。
六、中断概念
1、51单片机一共有6个中断源
INT0——外部中断0
INT1——外部中断1
T0/1/2——计时器/定时器中断,由计数器满回零引起。
T1/R1——串行口中断,串行端完成一帧字符发送/接收后引起。
七、单片机的定时器中断
51单片机内部共有两个16位可编程的定时器/计数器,即定时器T0和定时器T1。它们既有定时功能又有计数功能。定时器/计数器的实质是加1计数器(16位),由高8位和底8位两个寄存器组成,TMOD寄存器是定时器/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0,T1的启动和停止以及设置溢出标志。
加一计数器的输入计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;另一个是T0或T1引脚输入的外部脉冲源。如果定时器/计数器工作在定时模式,则表示时间已到;如果工作在计数模式,则表示计数值已经满了。
定时器初始化过程如下:
①对TMOD赋值,以确定T0和T1的工作方式
②计算初值,并将初值写入TH0、TL0或TH1、TL1中。
③中断方式时,则对IE赋值,开放中断。
④使TR0或TR1置位,启动定时器/计数器定时或计数
八、并行与串行基本通信方式
1、并行通信方式:将数据字节的各位用多条数据线同时进行传输,每位数据都需要一条传输线。
2、串行通信方式:串行通信是将数据字节分成一位一位的形式在一条传输线上逐个的传输,此时只需要一条数据线
3、异步串行通信方式:指通信的接收与发送设备使用各自的时钟控制数据的发送和接收过程。其特点是:不要求发送双方时钟严格一致,容易实现,设备开销小,但每个字符要附加2~3位,用于起始位、校验位、停止位,各帧之间还有间隔,因此传输效率不高。在单片机与单片机之间,单片机与计算机之间通信时,通常采用异步串行通信方式。
4、同步串行通信方式:同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方完全达到同步。
九、RS-232电平与TTL电平的转换
一般使用MAX232实现电平转换
十、波特率与定时器初值的关系
1、波特率:单片机或计算机在串口通信时的速率用波特率表示,它定义为每秒传输二进制代码的位数,即1波特 = 1位/秒,单位是bps。
2、波特率的计算:在串行通信中,收、发双方对发送或接受数据的速率有约定。通过编程可对单片机串行口设定四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。
3、为什么51系列单片机常用11.0592MHz的晶振设计?常用波特率通常按规范取1200,2400,4800,9600···,若采用晶振12Mhz或6Mhz,计算得出的T1定时初值将不是一个整数,这样通信时便会产生积累误差。
十一、串行口结构描述
1、串行口结构:51单片机的串行口是一个可编程全双工的通信接口,具有UART(通用异步收发器)的全部功能,能同时进行数据的发送和接收。串行口主要由两个独立的串行数据缓冲寄存器SBUF(一个发送缓冲寄存器,一个接收缓冲寄存器)和发送控制器、接收控制器、输入移位寄存器以及若干控制门电路组成。执行写指令时,访问串行发送寄存器;执行读指令时,访问串行接收寄存器。与串口紧密相关的一个特殊功能寄存器是串行口控制寄存器SCON,它用来设定串行口的工作方式,接收/发送控制以及设置状态标志位等。
2、串口方式简介:重点介绍方式1:。方式1是十位数据的异步通信口,其中1为起始位,8为数据位,1位停止位。TXD为数据发送引脚,RXD为数据接收引脚。其传输的波特率是可变的,对于51单片机,波特率由定时器1的溢出率决定。通常在做单片机与单片机串口通信、单片机与计算机串口通信、计算机与计算机串口通信时,基本都选择方式1。
3、在具体操作串行口之前,需要对单片机的一些与串口有关的特殊功能寄存器进行初始化设置,主要是设置产生波特率的定时器1、串行口控制和中断控制。①确定T1工作方式(编程TMOD寄存器)②计算T1的初值,装载TH1,TL1③启动T1(编程TCON寄存器的TR1位)④确定串行口工作方式(编程SCON寄存器)⑤串行口工作在中断方式时,要进行中断设置(编程IE、IP寄存器)
十二、I2C总线概述
1、I2C具有接线口少,控制简单,器件封装形式小,通信速率高等优点。I2C总线由数据线SDA和时钟线SCL两条线构成通信线路,即可发送数据,也可接受数据。
2、单片机模拟I2C总线通信,因为有许多单片机没有I2C总线接口,如51单片机,不过我们可以在单片机应用系统中通过软件模拟I2C总线的工作时序,在使用时,只需要正确调用各个函数就能方便地扩展I2C总线接口器件。
3、单片机在模拟I2C通信时,需要写出如下几个关键部分的程序:总线的初始化、启动信号、应答信号、停止信号、写一个字节、读一个字节。
十三、单片机空闲与掉电模式
1、空闲模式:除CPU处于休眠状态之外,其余硬件全部处于活动状态。
2、掉电模式:也成为休眠模式,外部晶振停振,CPU,定时器、串行口全部停止工作,只有外部中断继续工作。
十四、看门狗概念
在由单片机构成的系统中,由于单片机的工作有可能受到外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称看门狗。
其工作过程如下:看门狗芯片和单片机的一个IO引脚相连,该IO引脚通过单片机程序控制,使他定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散的放在单片机其他控制语句中间的,一旦单片机由于干扰造成的程序跑飞而陷入某一程序段进入死循环状态时,给看门狗引脚送电平的程序便不能被执行到,这时看门狗电路会由于得不到单片机送来的信号,便对它与单片机复位引脚相连接的引脚送一个复位信号,使单片机复位。
十五、SPI接口
1. 概述
SPI = Serial Peripheral Interface,是串行外围设备接口,是一种高速,全双工,同步的通信总线。常规只占用四根线,节约了芯片管脚,PCB的布局省空间。现在越来越多的芯片集成了这种通信协议,常见的有EEPROM、FLASH、AD转换器等。
优点:
支持全双工,push-pull的驱动性能相比open-drain信号完整性更好;
支持高速(100MHz以上);
协议支持字长不限于8bits,可根据应用特点灵活选择消息字长;
硬件连接简单;
缺点:
相比IIC多两根线;
没有寻址机制,只能靠片选选择不同设备;
没有从设备接受ACK,主设备对于发送成功与否不得而知;
典型应用只支持单主控;
相比RS232 RS485和CAN总线,SPI传输距离短;
2. 硬件结构
SPI总线定义两个及以上设备间的数据通信,提供时钟的设备为主设备Master,接收时钟的设备为从设备Slave;
信号定义如下:
SCK : Serial Clock 串行时钟
MOSI : Master Output, Slave Input 主发从收信号
MISO : Master Input, Slave Output 主收从发信号
SS/CS : Slave Select 片选信号
2. 单片机io口定义
使用单片机的io口要注意一下几个问题:
1.如果配置为输入口,必须对首先此io口置1
2.如果配置为输出口,要注意此io口是推挽输出还是集电极开路输出(OC),如果是OC输出可能需要加上拉电阻。
3.计算最大输出电流,要区分是灌电流还是拉电流。一般灌电流要比拉电流带负载强。
4.如果io口作为总线,要注意总线驱动问题。
3. 单片机io口作为输入口
PCA9554 ,IIC接口的IO输入输出扩展芯片。
只是输出扩展的话可以用74HC595之类的串行移位锁存。具体用法不是一两句话能讲清的,你搜索芯片手册和使用范例吧
4. 单片机IO口怎么配置成输出口
由于STC单片机上电后有一段时间的延迟,好像最长能到65535个指令周期,才进入用户程序,所以从软件上想办法不能阻止上电误动作的产生,最简单的方法是在需要处理的IO口加一个下拉电阻,STC单片机上电后默认IO为准双向口,查其手册可知拉电流为150-250uA之间,系统电压为5V的情况下,计算可知相当于20K以上的上拉电阻,因此只要远小于这个阻值,例如下拉1K,即可实现上电后IO输出为低电平,这个阻值你可以实验一下,在可靠的前提下,能加到多大就用多大,以优化功耗。
当然,之后再想使用这个管脚作为输出的话,就应该使用推挽模式了,否则不能输出高电平,使用推挽模式需要考虑限流电阻的问题。另外这样处理完可能单片机功耗会上升,1K下拉的话输出高电平会额外消耗5mA电流,IO多的话,注意不要超过限制值。
5. 单片机IO口初始化
IO端口都是高电平(或者低电平,不同的MCU不一样),SP在初始,其他都是00H
6. 单片机IO口操作有两种
功能不同。
P口指的是“并行口”
IO口指的是“输入输出口”
P口当然可以作为IO口来用,但是通常P3口会用于他的第二功能,而P2口、P0口则经常被用作地址总线和数据总线。只有P1口,常被用于IO口。
7. 单片机io口复用
有32根I/O口线,P0口和P2口的16根口线构成外部地址总线,P0口的8根口线还是外部数据总线,是和地址的低8位分时复用的,故使用时要加外部锁存器,以便将低8位地址进行所存。地址总线为8位,数据总线为16位,可寻址64KB的空间。
8. 单片机io口赋值方法
十六进制,8位数据,比如0x04=0000 0100;0x00~0xff也可以表明ASCII码,比如0x30在ASCII码对应的是数字0;也可以给单片机的IO口和寄存器赋值,比如P0=0x0F,就是对P0.0~P0.3赋1,P0.4~P0.7赋0。
9. 单片机io口赋值的方法有哪些
工业机器人 IO 指令:IO 指令包括了 D_IN 指令、D_OUT 指令、WAIT 指令、WAITUTIL 指令、以及 PLUSE 指令,D_IN、D_OUT 指令可用于给当前 IO 赋值为ON 或者 OFF,也可用于在 D_IN 和 D_OUT 之间传值;
WAIT 指令用于阻塞等待一个指定 IO 信号,可选 D_IN 和 D_OUT;WAITUNTIL 指令用等待 IO 信号,超过设定时限后退出等待;PLUSE 指令用于产生脉冲。