一般认为,单片机将CPU、RAM、ROM、定时器/计数器、输入/输出(I/O)接口电路等计算机的主要部件集成在一块芯片上。 这样形成的芯片级微型计算机称为单片机(SingleChipMicrocomputer)。 简称单片机或单片机。 利用单片机程序,可以实现硬件系统的小型化智能控制。 由于单片机的硬件结构和指令系统是根据工业控制要求而设计的,常用于工业检测和控制设备中,因此也称为微控制器(Micro-Controller)或嵌入式控制器(Embedded-Controller)。 微控制器得到广泛应用。 我们将以Easy51KitPro单片机学习板为基础来学习51单片机的入门知识。 本学习材料面向已掌握基本电路知识和基本C语言编程的单片机初学者。 为了使读者能够快速上手,本教材没有深入介绍单片机的内部架构和指令系统,而是从读者比较熟悉的高级语言入手,使读者掌握C语言编程的微控制器。 通过本教材中大量的程序实例,读者应该能够在短时间内熟悉单片机的入门编程以及单片机基本外围电路的连接,从而具备基本的单片机开发能力。 然而,这是这种材料的局限性。 当读者需要更深入地开发微控制器或其他控制器时,可能需要进一步了解其内部架构和指令系统。 这时,读者应该查阅其他资料。
同时,本学习资料也致力于指导读者编写高质量的单片机C语言程序。 虽然单片机程序的大小有限,但高质量的单片机程序不仅可以优化运行效率,而且对程序的开发速度和可维护性产生重要影响。 51单片机C语言编程入门 – Easy51KitPro配套学习资料 单片机入门 2.1 数字电路入门 在一个控制系统中,单片机是电路的一部分,单片机中的程序是针对其所在电路而编写的。 因此,要对单片机进行编程并实现某些功能,就必须了解整个系统的电路图。 单片机编程是针对特定电路的,这与普通编程不同。 编程时您很可能需要经常参考电路图。 大多数与微控制器直接相关的电路都是数字电路。 数字电路各部分的功能非常清晰,因此比较容易掌握。 简单地说,数字电路就是只有两个信号的电路:“0”和“1”。 信号是“0”还是“1”由电压的大小(通常称为“电平”)决定。 不同数码设备的电平判断标准是不同的。 常用的数字设备使用高电平(高于某个阈值的电平)作为逻辑“1”,使用低电平(低于某个阈值的电平)作为逻辑“0”。 高电平阈值大于低电平阈值,高电平阈值与低电平阈值之间的电压无效。 高电平阈值和低电平阈值的具体值与数字设备的供电电压有关。 例如AT89S51单片机的高电平阈值是(0.2Vcc+0.9)V,低电平阈值是(0.2Vcc-0.1)V。 其中Vcc为单片机的电源电压。
早些年,常用数码设备的额定电源电压为5V。 现在3.3V、1.8V等电压的数字设备已经得到了广泛的应用。 在Easy51KitPro中,我们仍然使用5V供电的微控制器。 另外,还有RS-232电平标准,以-12V~-5V为逻辑“1”,5V~12V为逻辑“0”。 计算机上的串口均符合RS-232标准。 还有“土地”的概念。 电路中的“地”并不是通常意义上的地,而是指电路中的一点。 此时的电压被人为指定为0V。 2.2 MCS-51 单片机简介 目前生产单片机产品的公司有很多,其中比较有影响力的有Intel公司推出的MCS-51系列。 许多公司的产品都兼容MCS-51架构(MCS-51兼容)。 本材料中使用的Atmel公司的AT89C51/52或AT89S51/52微控制器是与MCS-51架构兼容的微控制器。 Atmel的AT89C51(以下简称“C51”)、AT89C52(以下简称“C52”)、AT89C2051(以下简称“C2051”)以及C51和C52的替代产品AT89S51(以下简称“S51”) )、AT89S52(以下简称“S52”)使用方便、价格低廉(不超过10元/片)、信息丰富。 是初学者入门时广泛使用的单片机。
C51有4096字节(1字节=8位)片内程序存储器、128字节RAM、32个两个定时器、6个中断源、一个串口等。C52和C2051的资源与C51相差不大。 其中,C52中的程序存储器为8192字节,RAM为256段,有3个定时器。 其它同C51; C2051中的程序存储器为2048字节,I/O端口只有15个,并且比C51多了1个模拟比较器。 工作电压范围比较宽,2.7V~6V(C51/52、S51/52为4.5~5.5V)。 其它与C51相同。 I/O、定时器、中断、串口等资源的使用将在后面详细介绍。 这里我们只解释程序存储器和RAM。 单片机程序代码经过编译(C程序)或汇编(汇编器)后,将编译或汇编得到的代码文件(一般来说,编译得到hex格式文件,汇编得到bin格式文件)到单片机,存放这个程序的地方就是程序存储器。 显然,单片机的程序存储器越大,我们可以放入的程序就越大、越复杂。 如果我们编写的程序太大,单片机的程序存储器可能无法容纳该程序。 这时唯一的解决办法就是精简代码、连接外部程序存储器(前提是所使用的单片机支持使用外部程序存储器),或者使用程序存储器容量更大的单片机。
RAM是微控制器程序运行时存储变量的地方。 常量也可以放置在 RAM 中。 C51中的RAM大小为128字节,这意味着单片机程序中只能同时存在128个unsigned char类型变量或64个unsigned int类型变量(在Keil环境中,int类型变量的长度为16位,因此不同于VC的32位)或相应的各类变量组合见相应的中国科学技术大学业余无线电协会51单片机C语言编程入门-Easy 51 Kit Pro配套学习资料。 可见,单片机程序允许的大小比Windows或其他操作系统环境下的程序要小得多。 编写微控制器程序时,请注意不要滥用资源。 S51和S52分别是C51和C52的更新换代产品。 从用户的角度来看,S5x 微控制器比相应的 C5x 微控制器具有更多的看门狗和在线编程 (ISP) 功能。 另外,最大运行速度也有所提高(C5x支持最大时钟频率为24MHz,而S5x支持最大时钟频率为33MHz。但是市面上比较容易买到的S5x单片机仍然只支持最大时钟频率)频率24MHz)。 看门狗的使用稍后会详细介绍。 我们来看看单片机的在线编程(ISP)功能。 将程序烧写到AT89C系列单片机中,最常见的方法是将单片机插入专用编程器中,通过编程器将程序烧录到单片机中。
这样做的麻烦在于,在调试程序时,程序员每次对程序进行修改时,都必须将单片机从电路中拔出,插到编程器上,烧录完后再将单片机插回电路板。它。 可想而知,这样的工作是吃力不讨好的。 使用S5x微控制器的ISP功能,我们不需要来回插拔微控制器。 只要单片机的ISP编程引脚连接在电路中,并且这些引脚所连接的外围电路对ISP没有影响,那么就可以使用ISP编程器对单片机进行编程。 另外,支持AT89C系列单片机的编程器的成本比ISP下载线至少高出好几倍。 一根并口ISP下载线的成本只有几块钱。 除了S系列和C系列之外,Atmel的MCS-51兼容产品还有其他系列。 它们的主要区别在于供电电压范围,这里不再介绍。 值得注意的是,单片机可重复擦除和写入的次数是有限的。 Atmel系列和S系列微控制器声称可以重复的次数为1000次。