> 文章列表 > 51单片机入门

51单片机入门

51单片机入门

文章目录

    • 一、安装keil5及proteus
    • 二、MCS-51单片机结构与原理
      • (一).8051单片机基本组成
      • (二).8051单片机引脚
        • 1.电源引脚
        • 2.时钟电路引脚
        • 3.控制信号引脚
        • 4.输入/输出端口
      • (三) 并行输入/输出端口结构
    • 三、单片机cx51编程基础
      • (一).变量定义
      • (二).数据类型
      • (三).存储类型
      • (四).Cx51语言程序结构
    • 四、简单实现案例
    • 其他
      • protues如何选择器件?
      • 总线使用

一、安装keil5及proteus

keil5安装 相关博客
Keil C是德国KEIL公司开发的单片机C语言编译器。μVision 4是一个窗口环境下的、集成化的C51开发环境。集成了项目管理、文件编辑、编译连接、软件仿真调试等多种功能。

proteus7安装 相关博客
proteus 8.12安装 相关博客

Proteus软件是英国ab Center Electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。

二、MCS-51单片机结构与原理

(一).8051单片机基本组成

51单片机入门

(二).8051单片机引脚

单独的单片机芯片是工作无法独立工作的,由此引出单片机最小系统。
单片机最小系统,能使单片机正常工作的最基本元件组成的系统,包括外接电源正负极(VCC40引脚、VSS20引脚),复位电路使单片机初始化,晶振电路为单片机提供时钟脉冲信号。

51单片机入门
51单片机入门

1.电源引脚

2.时钟电路引脚

3.控制信号引脚

4.输入/输出端口

(三) 并行输入/输出端口结构

三、单片机cx51编程基础

Cx51语言所用到的数据、变量、运算符、流程控制语句等与C语言基本相同。

(一).变量定义

C51定义一个变量的格式如下 数据类型 [存储类型] 变量名表,其中数据类型与存储类型可以调换,存储类型可以缺省。

	unsigned int i;//定义无符号整数unsigned char bdata value;//定义无符号字符 value,定义在片内RAM位寻址区

为了提高执行效率和资源利用率,在程序运行期间根据数据的不同采用不同的方法进行处理,需要将数据定义为不同的类型。

(二).数据类型

Cx51支持的数据类型
51单片机入门
前8种在c语言中具体介绍,后四种为keil c51新增类型,不支持数组和指针操作。这四种简单了解下,在后面应用时再做详细学习。

  • bit用来定义位变量,位于8051单片机内部RAM位寻址区(20H~2FH)。如果指定bit存储类型只能使用data或者idata
  • sfr用于定义特殊功能寄存器变量,例如对P0口。该变量存储在片内的特殊功能寄存器存储区中,用来对特殊功能寄存器进行读写操作。
  • sbit用于定义特殊功能寄存器位变量,用来对特殊功能寄存器的可位寻址位进行读写操作。
  • sfr16也用于定义特殊功能寄存器,所不同的是它用于操作占两个字节的特殊功能寄存器
	unsigned char bdata value;//定义无符号字符 value,定义在片内RAM位寻址区bit value_0 = value^0;sfr P0 = 0x90;定义P0端口在片内寄存器,通过改变P0值对该端口寄存器(地址0x90)进行操作sfr16 DPTR = 0x82;// DPTR低8位地址为 0x82 高地址为0x83sbit P0_0 = P0^0;// 对P0第0位操作可以用P0_0代替

(三).存储类型

在Keil中,片内存储目标代码对变量访问速度快,存储空间有限,片外存储虽然访问速度慢但容量大。
51单片机有片内数据存储区程序存储区,在片内存储区空间不足时需要扩展片外存储区
51单片机入门

  • data区访问速度最快,不过DATA区存储空间有限,除了包含程序变量外,还包含堆栈和寄存器组,因此不可定义过多,以避免影响中断等正常功能。
  • bdata允许位与字节混合访问。
  • idata使用指针来进行寻址和访问。
  • pdata存储在片外存储器的第一页,寻址时只需装入8位地址,相对于xdata要快。
  • xdata寻址需要完整的16位地址。
  • code 将变量存储在程序存储器中,不占用RAM空间。缺点变量只读不能写,因此适合存储常量或者查表类数组数据

(四).Cx51语言程序结构

Cx51语言程序由编写者组织和定义的一个或者多个函数构成,通过函数的有序调用完成预期功能。
函数分为主函数,标准函数库,自定义函数。
51单片机入门

四、简单实现案例

在8051单片机上的P1.0端口接上LED,实现LED周期闪烁。

一些器件名称 CAP 电容;CAP-ELEC电解电容;CRYSTAL 晶振;RES电阻;

原理图
51单片机入门

代码实现

#include<reg51.h> //包含单片机定义寄存器的头文件
sbit led = P1^0; //将led定义为P1.0位
void delay(void) //延时函数
{unsigned int i;    //定义无符号整数,最大取值范围65535for(i=0;i<20000;i++);//做20000次空循环,以进行延时。                     
}
int main(void ) //主函数
{while(1)    //无限循环,以使LED持续闪烁。{led =0;  // P1.0输出低电平,灯亮delay(); //延时一段时间led =1;  // P1.0输出高电平,灯灭delay(); //延时一段时间}
}

其他

protues如何选择器件?

普通器件
51单片机入门
电源接地等。。。
51单片机入门

总线使用

proteus总线使用及网格标号相关博客

51单片机入门