51单片机led灯依次全部点亮 51单片机学习笔记4(1)

一、使用keil新建工程

点击菜单: Project-Create New Project

51单片机led灯依次全部点亮 51单片机学习笔记4(2)

这里选择AT89C52芯片:

51单片机led灯依次全部点亮 51单片机学习笔记4(3)

提示是否使用8051启动代码,选择否:

51单片机led灯依次全部点亮 51单片机学习笔记4(4)

点击File-New, 创建新文件,这里命名为main.c 。

51单片机led灯依次全部点亮 51单片机学习笔记4(5)

在Source Group1上右键,选择刚创建的 main.c 文件。

51单片机led灯依次全部点亮 51单片机学习笔记4(6)

二、项目设置1. 点击魔术棒,钩选Output-Create Hex File

51单片机led灯依次全部点亮 51单片机学习笔记4(7)

2. 设置仿真器

点击Debug,选择Use PZ51Tracker Driver, 钩选 Run to main()

51单片机led灯依次全部点亮 51单片机学习笔记4(8)

点击Settings,如下图填写选项:

51单片机led灯依次全部点亮 51单片机学习笔记4(9)

点击Utilities,选择PZ51Tracker Driver仿真器。

51单片机led灯依次全部点亮 51单片机学习笔记4(10)

三、编写代码1. 尝试编译代码

// 包含8051头文件 #include "reg52.h" void main(){ while(1){ } } 123456

这里写一个死循环,然后就可以编译代码,生成Hex文件。

51单片机led灯依次全部点亮 51单片机学习笔记4(11)

2. 点亮LED的代码

#include "reg52.h" sbit LED1 = P2^0; sbit LED2 = P2^1; void delay_10us(int ten_us){ while(ten_us--); } void main(){ while(1){ LED1=0; delay_10us(1000*1000); LED1=1; delay_10us(1000*1000); LED2=0; delay_10us(1000*1000); LED2=1; delay_10us(1000*1000); } }

sbit 在前一节说过,是8051定义的位类型, LED1指向P2的0位,LED2指定P2的1位。delay_10us是模拟延迟。编译后使用前文方法烧写到开发板即可运行。

3. GPIO引脚介绍

GPIO是General purpose input output的简称,中文为通用输入输出端口。51单片机的引脚大致分为:

  1. 电源引脚
  2. 晶振引脚
  3. 复位引脚
  4. 下载引脚
  5. GPIO引脚图上P1.n, P0.n, P2.n都是GPIO引脚,共4*8=32个。
4. GPIO内部结构P0端口:

51单片机led灯依次全部点亮 51单片机学习笔记4(12)

P0口作为I/O输出时,数据流向: 内部总线 => 锁存器 => !Q => 多路开关 => V2栅极 => V2 漏极 。 这时漏极开路,外部需要上拉电阻。P0口作为I/O输入时,内部读引脚是打开的, 数据流向:通过输入缓冲器到达内部总线。

P1 端口

51单片机led灯依次全部点亮 51单片机学习笔记4(13)

P1 内部有上拉电阻(比较弱)。

其它端口不再详细介绍,要注意的是P3端口有第二功能。

四、软件仿真

点击魔法棒属性设置,选择Debug、Use Simulator

51单片机led灯依次全部点亮 51单片机学习笔记4(14)

在Target Xtal(Mhz)填写晶振频率

51单片机led灯依次全部点亮 51单片机学习笔记4(15)

点击菜单仿真按钮即可运行。

,