苏嵌寒假学习博客日志//周文东//2019.1.22

2019-04-15 17:14发布

学习内容:单片机入门与走马灯设计
  1. 单片机为TTL电平
   高电平:+5v    低电平:0v
  1. RS232电平:计算机串口(负逻辑)
   高电平:-12v    低电平:+12V 计算机串口与单片机进行通信时,需要电平转换芯片MAX232,现在计算机没有串口,用不着画MAX232。
  1. 单片机为16位,最多为2的16次方=65536
  2. 一个机器周期=6个状态周期=12个脉冲周期
  3. AD:把模拟量十进制转化成数字量二进制。
数字电路中的两种电平特性决定了使用二进制简便。
  1. 与为串联,或为并联,非为短路,^:按位异或,~:按位取反。
  2. 单片机是在一片集成电路芯片上集成微处理器,存储器,I/O接口电路,从而构成单芯片微型计算机,简称单片机。
  3. MSC51单片机指以8051为核心的单片机,统称为MSC51单片机。
  4. 单片机三大指标:
  1. FLASH(程序存储空间ROM)掉电非易失性,只读不写。
  2. RAM(数据存储器)掉电易失性,读写。
  3. SFR(特殊寄存器)
10.8位单片机构成:8kFLASH,512字节RAM,32个I/O口,3个定时器,1个UART,8个中断源。 11. 特殊功能寄存器声明: 语法:sfr sfr_name = int_constant 例如:sfr P0 = 0x80;       Sfr SCON = 0x98 特殊功能位声明: 例如:sbit CY = PSW^7;       Sbit LED = P1^0;
  1. SFR寄存器:
高128个单位,离散分布有21个特殊功能寄存器SFR 11个可以进行位寻址(能被8整除,尾数为0,8的可以位寻址) 特别提示:对SFR只能使用直接寻址方式,书写时可使用寄存器符号,也可以用寄存器单元地址。 我个人认为比较重要的图:    
  1. I/O接口电路结构
    MCS-51系列单片机共有四个8位并行I/O口,分别用P0、P1、P2、P3表示。 每个I/O口既可以按位操作使用单个引脚,也可以按字节操作使用8个引脚。
  1. P0
    当P0口作为输出口使用时,内部总线将数据送入锁存器,内部的写脉冲加在锁存器时钟端CP上,锁存数据到Q、端。经过MUX,T2反相后正好是内部总线的数据,送到P0口引脚输出。     当P0口作为输入口使用时,应区分读引脚和读端口两种情况,所谓读引脚,就是读芯片引脚的状态,这时使用下方的数据缓冲器,由“读引脚”信号把缓冲器打开,把端口引脚上的数据从缓冲器通过内部总线读进来。     读端口是指通过上面的缓冲器读锁存器Q端的状态。读端口是为了适应对I/O口进行“读-修改-写”操作语句的需要。例如下面的C51语句: P0=P0&0xf0; //将P0口的低4位引脚清0输出 除了I/O功能以外,在进行单片机系统扩展时,P0口是作为单片机系统的地址/数据线使用的,一般称为地址/数据分时复用引脚。 当输出地址或数据时,由内部发出控制信号,使“控制”端为高电平,打开与门,并使多路开关MUX处于内部地址/数据线与驱动场效应管栅极反相接通状态。此时,输出驱动电路由于两个FET处于反相,形成推拉式电路结构,使负载能力大为提高。输入数据时,数据信号直接从引脚通过输入缓冲器进入内部总线。
  1. P1
P1口是准双向口,只能作为通用I/O口使用。 P1口作为输出口使用时,无需再外接上拉电阻。 P1口作为输入口使用时,应区分读引脚和读端口。读引脚时,必须先向电路中的锁存器写入“1”,使输出级的FET截止。
  1. P2
    P2口是准双向口,在实际应用中,可以用于为系统提供高8位地址,也能作为通用I/O口使用。 P2口作为通用I/O口的输出口使用时,与P1口一样无需再外接上拉电阻。 P2口作为通用I/O口的输入口使用时,应区分读引脚和读端口。读引脚时,必须先向锁存器写入“1”。
  1. P3
    P3口是准双向口,可以作为通用I/O口使用,还可以作为第二功能使用。作为第二功能使用的端口,不能同时当作通用I/O口使用,但其他未被使用的端口仍可作为通用I/O口使用。 P3口作为通用I/O的输出口使用时,不用外接上拉电阻。 P0,P1,P2,P3结构图       程序设计:走马灯 一.实现八个LED灯轮流闪烁的三种方法: 1. #include sbit P1_0 = P1^0; void DelayUs2x(unsigned char n) { while(--n); } void DelayMs(unsigned char n) {     while(n--) {     DelayUs2x(245);     DelayUs2x(245); } }   void main() { While(1) {         P1 = 0xfd; DelayMs(200);     P1 = 0xfb; DelayMs(200);     P1 = 0xf7;     DelayMs(200);     P1 = 0xef;     DelayMs(200);     P1 = 0xdf;     DelayMs(200);     P1 = 0xbf;     DelayMs(200);     P1 = 0x7f;     DelayMs(200);  } }   2.#include   sbit P1_0 = P1^0;   void DelayUs2x(unsigned char n) { while(--n); }   void DelayMs(unsigned char n) {    while(n--)  {     DelayUs2x(245);     DelayUs2x(245);  } }   void main() { unsigned char i,  w;     while(1)   {     for(i = 0, w = 0x01; i < 7; i++)   {         P1 = ~w;         DelayMs(100);     w <<= 1;   }   } } 感悟: 今天是单片机入门,由于时间关系,之前在学校学的内容有所忘记,所以今天刚开始有点迷糊和焦虑,不过再复习过程中,罗列知识点之后,我又找回了状态,不在慌张。所以复习的过程很重要。 关于走马灯程序,还是很简单的。 关于花样灯,再有了走马灯的练手后,逐步去写,也写出来了。 总之,学习路上任重道远。