51单片机入门

MCS-51单片机入门:从Keil5安装到Proteus仿真
文章介绍了MCS-51单片机的基础知识,包括Keil5的安装、Proteus的使用,以及8051单片机的结构和引脚功能。内容涵盖单片机最小系统、电源和时钟引脚、控制信号和I/O端口。此外,还讲解了C51编程的基础,如变量定义、数据类型和存储类型,并提供了简单的LED闪烁案例作为实践应用。

一、安装keil5及proteus

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

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

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

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

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

在这里插入图片描述

(二).8051单片机引脚

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

在这里插入图片描述
在这里插入图片描述

1.电源引脚
2.时钟电路引脚
3.控制信号引脚
4.输入/输出端口

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

三、单片机cx51编程基础

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

(一).变量定义

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

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

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

(二).数据类型

Cx51支持的数据类型
在这里插入图片描述
前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 高地址为0x83
	
	sbit P0_0 = P0^0;// 对P0第0位操作可以用P0_0代替

(三).存储类型

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

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

(四).Cx51语言程序结构

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

四、简单实现案例

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

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

原理图
在这里插入图片描述

代码实现

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

其他

protues如何选择器件?

普通器件
在这里插入图片描述
电源接地等。。。
在这里插入图片描述

总线使用

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

在这里插入图片描述

相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了。单片机是一块在集成电路芯片上集成了一台有一定规模的微型计算机。简称为:单片微型计算机或单片机 (Single Chip Computer)。单片机的应用到处可见,应用领域广泛,主要应用在智能仪表、实时控制、通信、家电等方面。不过这一切都没什么关系,因为我(当然也包括任何人)都是从不知道转变成知道的,再转变成精通的。现在我只想把我学习单片机的经历,详细地讲叙给大家听听,可能有些大虾会笑话我,想:那么简单的东西还在这里卖弄。但是你错了,我只是把我个人学习的经历讲述一遍而已,仅仅对那些想 学习单片机,但又找不到好方法或者途径的朋友,提供一个帮助,使他们在学习过程中,尽量少走些弯路而已! 首先,你必须有学习单片机的热情,不是说今天去图书馆看了一个下午关于单片机的书,而明天玩上半天,后天就不知道那个本书在讲什么东西了。还是先说说我吧,我从大二的第一个学期期末的时候才开始接触单片机,但在这之前,正如上面所说的:我知道有种芯片叫单片机,具体长成什么样子,却一点也不知道!看到这里很多朋友一定会忍不住发笑。嘿嘿,你可千万别笑,有些大四毕业的人也同样不知道单片机长成什么样子呢!而我对单片机的痴迷更是常人所不能想象的地步,大二的期末考试,我全放弃了复习,每当室友拿着书在埋头复习的时候,我却捧着自己从图书馆借的单片机书在那看,虽然有很多不懂,但是我还是坚持了下来,当时我就想过,为了单片机值不值得我这样去付出,或许这也是在一些三流学校的好处吧,考试挂科后,明年开学交上几十元一门的补考费,应该大部分都能过了。于是,我横下一条心,坚持看我的单片机书和资料。 当你明白了单片机是这么一回事的时候,显而易见的问题出来了:我要选择那种语言为单片机编写程序呢?这个问题,困扰了我好久。具体选择C51还是A51呢?汇编在我们大二之前并没有开过课,虽然看着人家的讲解,很容易明白单片机的每一时刻的具体工作情况,但是一合上书或者资料,自己却什么也不知道了,根本不用说自己写程序了。于是,我最终还是决定学C51,毕竟C51和我们课上讲的C语言,有些类似,编程的思想可以说是相通的。而且C51还有更大的优点就是编写大程序时的优越性更不言而喻,当然在那时,我并没有想的那么深远,C51的特点,还是在后来的实践过程中,渐渐体会到的!朋友如果你选择了C51,那么请继续往下看,如果你选择了A51,那么你可以不要看了!因为下面讲的全是C方面的,完全在浪费你的时间! 呵呵 ^_^ 第二,既然你想学好单片机,你必须得舍得花钱,如果不买些芯片回来自己动手焊焊拆拆的(但是在后期会介绍给大家一个很好用的硬件仿真软件,并不需要你用实验板和仿真器了,直接在你的PC上完成,但是软件毕竟是软件,从某个特定的意义上来说是并不能代替硬件的),即使你每天捧着本书,把那本书翻烂,也永远学不会单片机的!刚接触单片机的朋友,看了资料,一定会对以下几个词见的比较多,但是具体的概念还是比较模糊,现作如下说明:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值