单片机开发所需的Study-c整机和硬件套件、编写实验实例

51系列单片机最小系统对于现今的绝大部分单片机来说,其内部的程序存储器(一般为flash)容量都很大,因此基本上不需要外接程序存储器,而是直接使用内部的存储器。当然,现今的一些增强型单片机,是采用拉电流输出(接法2)的,只要单片机的输出电流能力足够强即可。

一、内容概要

本讲主要介绍51系列单片机最小系统的实现,通过编写程序实现单片机IO口的输出控制。 以点亮外部连接的LED(发光二极管)为例,简要介绍单片机的原理和最小系统的组成。 通过简单的C51编程,描述了编译软件Keil的使用以及下载Hex文件对单片机进行编程。

2. 原理介绍

在了解原理之前,我们先思考一个问题,什么是单片机,单片机有什么用? 这是一个有趣的问题,因为没有人能够给出一个大家都认可的概念,那么微控制器到底是什么? 一般来说,单片机又称单片机,集成了CPU(中央处理单元)、RAM(数据存储器)、ROM(程序存储器)、定时器/计数器和多功能I/O等。一颗芯片。 O(输入/输出)接口和计算机所需的其他基本功能部件,使其能够完成复杂的运算、逻辑控制、通信等功能。 在这里,我们不需要找到一个明确的概念来分析什么是微控制器。 尤其是用C语言编写程序时,我们不需要了解太多单片机的内部结构和工作原理。 从应用的角度来说,从简单的程序开始,慢慢熟悉,然后逐渐熟练掌握单片机。

简单了解了什么是单片机之后,我们接下来搭建单片机的最小系统。 单片机最小系统是单片机正常工作、发挥其功能所必需的组成部分。 也可以理解为由最少的组件组成。 微控制器可以工作的系统。 对于51系列单片机来说,最小系统一般应包括:单片机、时钟电路、复位电路、输入/输出器件等(见图1)。

图1 单片机最小系统框图

3.电路详解

根据以上内容,为51系列单片机设计的最小系统如图2所示。

图2 51系列单片机最小系统

下面对图2所示的微控制器最小系统各部分电路进行详细说明。

1.时钟电路

在设计时钟电路之前,我们先了解一下51单片机上的时钟引脚:

XTAL1(第19脚):芯片内部振荡电路输入端。

XTAL2(引脚18):芯片内部振荡电路的输出端。

XTAL1 和 XTAL2 是独立的输入和输出反相放大器,可以使用石英晶体将其配置为片上振荡器,也可以直接从外部时钟驱动该器件。 图2采用内部时钟模式,利用芯片内部的振荡电路,将外部定时元件(一个石英晶体和两个电容)连接到XTAL1和XTAL2引脚,内部振荡器即可产生自振荡。 一般来说,晶振可以在1.2~12MHz之间选择,甚至可以达到24MHz或更高,但频率越高,功耗越大。 本实验套件使用11.0592M石英晶体振荡器。 与晶振并联的两个电容的大小对振荡频率影响很小,可以起到频率微调的作用。 使用石英晶振时,电容可以在20~40pF之间选择(本实验套件使用30pF); 使用陶瓷谐振器件时,电容应适当增大,在30~50pF之间。 通常 33pF 陶瓷电容器就足够了。

另外值得一提的是,如果读者在设计单片机系统的印刷电路板(PCB)时,晶体和电容应尽可能靠近单片机芯片,以减少引线的寄生电容,保证可靠工作。振荡器的。 检测晶振是否振荡,可以用示波器观察XTAL2输出的非常漂亮的正弦波,也可以用万用表测量(将档位转到DC,测得的值就是此时的有效值) )XTAL2与地之间电压较高时,可以看到2V左右的电压。

2. 复位电路

在单片机系统中,复位电路非常关键。 当程序跑飞(运行异常)或崩溃(停止运行)时,需要重置。

当MCS-5l系列单片机的复位引脚RST(引脚9)出现高电平超过2个机器周期时,单片机将执行复位操作。 如果 RST 保持高电平,则微控制器处于循环复位状态。

复位操作通常有两种基本形式:上电自动复位和开关复位。 图2所示的复位电路包括这两种复位方法。 通电瞬间,电容器两端电压不能突然变化。 此时电容负极接RESET,电压全部加到电阻上。 RESET输入为高电平,芯片复位。 然后+5V电源对电容充电,电阻上的电压逐渐下降,最后接近0,芯片正常工作。 电容器两端并联有复位按钮。 当复位按钮未被按下时,电路实现上电复位。 芯片正常工作后,按下按钮使RST引脚出现高电平,达到手动复位的效果。 一般来说,只要RST引脚保持高电平10ms以上,单片机就可以有效复位。 图中所示的复位电阻和电容均为经典值。 实际生产中可以用同数量级的电阻和电容来代替。 读者也可以自行计算RC充电时间或在工作环境中实际测量,以确保单片机的复位电路可靠。

3. EA/VPP(引脚31)的功能及连接方法

51 单片机的 EA/VPP(引脚 31)是内部和外部程序存储器的选择引脚。 当EA保持高电平时,微控制器访问内部程序存储器; 当EA保持低电平时,无论是否有内部程序存储器,都只访问外部存储器。

对于当今的大多数微控制器来说,其内部程序存储器(通常是闪存)容量很大,因此基本上不需要外部程序存储器,而是直接使用内部存储器。

在此实验套件中,EA 引脚连接至 VCC,仅使用内部程序存储器。 必须注意这一点,因为很多初学者经常将EA引脚悬空,导致程序执行异常。

4、P0口外接上拉电阻

51 单片机的P0口为开漏输出,内部无上拉电阻(见图3)。 因此,当用作普通I/O输出数据时,由于V2截止,输出级为开漏电路。 要使“1”信号(即高电平)正常输出​​,必须外接上拉电阻。

图3 P0口1位结构

另外,为了避免输入时读取数据出错,还需要外接上拉电阻。 这里简单解释一下原因:在输入状态下,从锁存器和引脚读取的信号一般是一致的,但也有例外。 例如,当内部总线输出低电平时,锁存器Q=0,Q=1,场效应晶体管V1导通,端口线处于低电平状态。 此时,无论端口线上的外部信号是低电平还是高电平,从该引脚读入单片机的信号始终为低电平,因此无法正确读取该端口引脚上的信号。 又例如,当内部总线输出高电平时,锁存器Q=1,Q=0,场效应管V1截止。 如果外部引脚信号为低电平,则从该引脚读取的信号与从锁存器读取的信号不同。 因此,当P0口作为通用I/O接口输入时,在输入数据之前,应先向P0口写入“1”。 此时锁存器的Q端为“0”,使得输出级的两个场效应管V1、V2截止,引脚处于浮空状态,才能作为高电平使用。 – 阻抗输入。

总结一下:为了使P0口输出时能够驱动NMOS电路,避免输入时读取数据出错,需要外接上拉电阻。 在这个实验套件中,使用了一个额外的 10K 电阻。 另外,为了避免误读51单片机对P0-P3端口的输入操作,应先向电路中的锁存器写入“1”,关闭场效应管,避免锁存器为“0”的干扰状态期间的引脚读数。

5. LED驱动电路

细心的读者可能已经发现,在最小的系统中,发光二极管(LED)的连接方法是将电源连接到二极管的阳极,然后通过一个连接器连接到单片机的I/O端口。 1K电阻(见图4连接方法1)。 为什么你会这样接受呢? 首先我们要了解LED的照明工作条件。 不同的LED有不同的额定电压和额定电流。 一般来说,红色或绿色LED的工作电压为1.7V~2.4V,蓝色或白色LED的工作电压为2.7~4.2V,直径为3mm的LED的工作电流为2mA~10mA。 这里使用红色 3mm LED。 其次,当51单片机(如本实验板使用的STC89C52单片机)的I/O口作为输出口时,汲取电流(输出电流)的能力在μA级别,这是不够的点亮发光二极管。 灌电流方式(向内电流输入)可高达20mA,因此采用灌电流方式来驱动发光二极管。 当然,现在的一些增强型单片机采用了拉电流输出(连接方法2),只要单片机的输出电流能力足够强即可。 另外,图4中的电阻阻值为1K,是为了限制电流,使发光二极管的工作电流限制在2mA~10mA。

图4 LED连接方法

4. 编程

在单片机编程语言方面,有两种选择:C语言和汇编语言。 本系列教程使用C语言编写程序。 这里简单对比一下开发单片机时C语言和汇编语言。 汇编语言是面向硬件的,需要熟悉寄存器等硬件特性。 它的执行效率较高,但可读性和可移植性较差,不同单片机之间的程序不能通用。 例如,我学会了51单片机的汇编指令,但无法在AVR单片机上使用。 C语言是面向过程的,具有良好的可读性和可移植性,但效率不如汇编。 对于刚接触单片机的人来说,学习这两种语言是一样的,但是从以后的开发效率来看,C语言的优势就会体现出来。 几乎不需要任何改动就可以移植,大大提高了开发效率。 速度。

控制发光二极管D1闪烁的C语言源程序:

1. 流程详细说明

(1) 头文件包含。 程序接下来调用的P0_0是头文件中定义的寄存器地址。 在操作单片机内部的寄存器之前,应该先说明其来源。 有兴趣的读者可以看一下AT89X52.h文件的内容。

(2)宏定义LED,方便直观理解和程序修改。 将P0_0端口命名为led,这样程序中就可以用LED代替P0_0端口进行操作。

(3) 延迟函数声明。 该函数必须在调用之前声明。 由于函数定义放在主函数之后,因此延迟函数声明在主函数之前。

(4)主功能入口。 main函数不传递参数,也不返回值。

(5)无限循环。

(6)输出高电平,LED不亮。

(7) 延迟一段时间,使人眼能够直观地看到。

(8) 输出低电平,LED 亮。

(九)延误一段时间的。

(10)延时函数定义。

(11)For语句循环延迟。

2. 程序流程图及实验现象

程序流程如图5所示,用编译软件(keil)编译后,生成单片机编程文件,然后可以下载到单片机运行。 硬件电路板如图6所示。本实验板采用STC89C52RC,可以通过板载USB转换为串口。 烧录程序。 因此,将 USB 电缆(包含在本实验套件中)连接到计算机和实验板。 电源可以从USB 或外部电源获取。 冷启动,即先点击下载,再开机。 将程序下载到单片机并运行后,可以看到实验板上P0_0口连接的外部LED灯(D1)闪烁。

图5 程序流程图

图6 硬件电路板图

5. 总结

本讲主要介绍51单片机最小系统的设计以及第一个简单程序的编写。 通过本次实验,您可以掌握单片机的开发流程并快速上手。 本次讲座需要注意的几个问题:

1、本讲使用C语言来编写程序,因为C语言具有很强的可读性和可移植性。 如果读者没有学过C语言,则应该了解并掌握相应的C语言知识。 C语言简单易学,使用起来简单,相信你很快就会熟练掌握它。

2、程序编译软件采用Keil。 由于篇幅限制,这里我就不描述了。 如果读者对此有任何疑问,可以到本杂志论坛的微控制器部分。 作者制作了详细的Keil入门教程。 我们通过Keil编译程序,最终生成用于对单片机进行编程的Hex代码文件。

Keil软件界面如图7所示,中间的空白区域是代码区域,左侧是工程列表,底部是消息窗口。

图7 Keil软件开发界面

3、本实验板使用的STC单片机通过串口下载程序。 上位机软件界面如图8所示(建议使用V3.1版本,最新版本可以从STC主页下载:)。 编程操作非常简单。 单击“打开文件”按钮浏览并找到生成的要编程的十六进制。 文件完成后,将单片机断电,点击“下载”按钮,给单片机上电,即可将程序下载到单片机中。

图8 STC编程软件界面

4. 产品组成

如果读者按照本讲内容进行理解和练习,可以说单片机才刚刚入门。 下一讲将进一步介绍单片机的内部定时器和中断系统,敬请期待。

单片机

唐山十味农业有限公司·遵化云幽山谷蔬菜种植园

2024-2-2 18:05:19

单片机

主流PLC如何通过4G网络来实现远程通讯?PLC

2024-2-2 19:02:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索