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

学习内容:单片机入门与走马灯设计

  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 <reg51.h>

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 <reg51.h>

 

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;

  }

  }

}

感悟:

今天是单片机入门,由于时间关系,之前在学校学的内容有所忘记,所以今天刚开始有点迷糊和焦虑,不过再复习过程中,罗列知识点之后,我又找回了状态,不在慌张。所以复习的过程很重要。

关于走马灯程序,还是很简单的。

关于花样灯,再有了走马灯的练手后,逐步去写,也写出来了。

总之,学习路上任重道远。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值