51单片机STC89C52RC进阶 – 在面包板上构建51单片机最小系统

51单片机STC89C52RC进阶 – 在面包板上构建51单片机最小系统电子元件准备STC89C52RC单片机芯片(40Pin直插式DIP封装)x110uF铝电解电容x110K直插式电阻x211.0592MHz晶振x130pF瓷片电容x2电子元件图示STC89C52RC单片机芯片(40Pin直插式DIP封装):一定要是DIP封装的,如果买成贴片的是无法插在面包板上的10uF铝电解电容…

电子元件准备

  1. STC 89C52RC 单片机芯片(40Pin 直插式DIP封装) x 1

  2. 10uF铝电解电容 x 1

  3. 10K直插式电阻 x 2

  4. 11.0592MHz晶振 x 1

  5. 30pF瓷片电容 x 2

电子元件图示

  1. STC 89C52RC 单片机芯片(40Pin 直插式DIP封装):
    在这里插入图片描述
  • 一定要是DIP封装的,如果买成贴片的是无法插在面包板上的
  1. 10uF铝电解电容:
    在这里插入图片描述
  • 正负极辨别:

从侧面环顾一周,纵向查看电容外壳,标有“-”符号的一侧,顺势下去,此方向的引脚为负极,相反的另一方引脚为正极

  1. 10K直插式电阻:
    在这里插入图片描述
  • 一般包装上会有说明,如没有,可看电阻色环计算出阻值
  1. 11.0592MHz晶振:
    在这里插入图片描述
  • 注意要直插式
  1. 30pF瓷片电容:
    在这里插入图片描述
  • 不区分正负极,直接连即可

STC 89C52RC电气特性

管脚定义

在这里插入图片描述

管脚符号 管脚序号 管脚含义 备注
T2/P1.0 ~ P1.7 1 ~ 8 带内部上拉电阻的8位双向I/O口 可输入或输出数据。同时可做定时器/计数器2的的外部技术输入(P1.0/T2)和触发输入(P1.1/T2EX)
RST 9 复位输入 用来完成单片机单片机的复位初始化操作
RXD/P3.0 10 串行输入口 使用USB转TTL下载器烧写程序时,此接口一般接下载器的TXD引脚
TXD/P3.1 11 串行输出口 使用USB转TTL下载器烧写程序时,此接口一般接下载器的RXD引脚
INTO/P3.2 12 外部中断口0
INT1/P3.3 13 外部中断口1
TO/P3.4 14 定时器0的外部输入
T1/P3.5 15 定时器1的外部输入
WR/P3.6 16 外部数据存储器写选通
RD/P3.7 17 外部数据存储器读选通
XTAL2 18 振荡器反相放大器的输入端
XTAL1 19 振荡器反相放大器和内部时钟发生电路的输入端
VSS 20 接地(GND)端
P2.0/A8 ~ P2.7/A15 21 ~ 28 带内部上拉电阻的8位双向I/O端口 可输入或输出数据
PSEN 29 外ROM读选通信号 在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号
ALE/PROG 30 地址锁存允许/片内EPROM编程脉冲 ALE:用来锁存P0口送出的低8位地址 PROG:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲
EA 31 访问外部程序存储器控制信号 为了执行内部程序指令,应该接电源正极
P0.0/AD0 ~ P0.7/AD7 32 ~ 39 漏极开路的8位双向I/O口 可输入或输出数据
VCC 40 电源正极输入 接电源正极

综上,使用STC 89C52RC构建51最小系统电路,STC
89C52RC的引脚一共需要连接6处。要连接的6个引脚的“管脚符号”已使用红色字体标出,各自如何连接已用注释阐明。

补充:表格注释:
在这里插入图片描述

电路图

在这里插入图片描述

这是官方文档中描述的51最小系统电路图。

在这里插入图片描述
这是另外绘制的高清简洁版51最小系统电路图。

最小系统电路搭建

  1. 按照上一个标题中另外绘制的“STC 89C52RC最小系统
    电路图”,在面包板上将原件都插装好。

  2. 插装好后如图所示:
    在这里插入图片描述

下图是后来改进的新搭建方式。比之前更清晰,该拐弯的地方拐弯腾出地方来,减少交叉,更便于观察和理解。
在这里插入图片描述

烧写程序

烧写程序,需要使用USB转TTL来实现。在最小系统电路上进行添加。

电路升级

在这里插入图片描述

  • 原电路需要和USB转TTL程序下载器相连来烧写程序。因为USB转TTL下载器有5V电源输出,所以不烧写程序一直连着也充当了电源的角色。

  • USB转TTL程序下载器关键的地方在于:下载器的TXD、RXD针脚要和芯片的TXD、RXD引脚反着接。
    在这里插入图片描述

  • 在USB转TTL下载器上,只需要接4个针脚即可,3.3V的不用接。

软件环境安装及配置

开始之前

烧写51单片机程序所需的环境和软件如下:

  1. USB转TTL下载器驱动程序(这里使用的是CH340芯片的USB转TTL下载器)

  2. Keil for C51 IDE(Version 4)

  3. STC-ISP(V6.85I)

注意:

  • Win10下安装下载器驱动程序要以禁用签名驱动方式启动后再安装

  • Keil IDE不要下载成ARM版本的,里面没有C51的相关CPU选项

安装USB转TTL驱动程序

百度搜索CH340驱动程序,下载安装即可

安装Keil IDE

百度搜索“keilc51”,下载安装即可。里面一般有激活成功教程教程,按步骤来即可。注意版本最好是Version
4。

安装STC-ISP

百度搜索“STC-ISP”,下载安装即可。此软件免安装,下载解压后双击即可运行。

注意:

  • 此软件中也提供了诸如CH340的驱动,也要安装一下。

使用Keil编写点亮一个LED的程序

  1. 点击“Project” – “New project”,选择项目文件的保存位置,然后保存。

  2. 弹出“选择CPU设备类型”对话框,在左侧树中依次选择“Atmel” –
    “AT89C52”,点击“OK”即可。

  3. 点击“File” – “New”创建一个空文件,直接点击保存,保存为后缀名为c的c语言文件。

  4. 在左侧“Project”选项卡中,找到“Source Group 1”,右键点击“Add Files to
    Group‘Source Group
    1’”,选择刚才保存的后缀名为c的c语言文件,点击“Add”后关闭对话框。

  5. 在c语言文件中写入以下代码:

#include <reg52.h>

sbit led = P2^0;
void main()
{ 
   
	led=0;
}
  1. 保存后,点击以下图标设置输出hex文件:
    在这里插入图片描述

  2. 在弹出的对话框中,切换到“Output”选项卡,勾选“Create HEX
    File”,值保持默认,点击“OK”即可。

  3. 保存后,点击以下图标开始编译:
    在这里插入图片描述

  4. 输出结果:

Build target 'Target 1'

assembling STARTUP.A51...

compiling hello-led.c...

linking...

Program Size: data=9.0 xdata=0 code=18

creating hex file from "hello-led"...

>   "hello-led" - 0 Error(s), 0 Warning(s).

以上表示编译成功。会在项目的同级目录下生成一个以hex为后缀名的文件。

使用STC-ISP软件烧录程序

  1. 此时确保USB转TTL驱动程序都已安装好,USB转TTL下载器已插在电脑的USB口上。
    下载器插入以后,系统会自动检测USB设备,同时在“设备管理器”中的“端口”中也会有此设备对应的COM端口。

  2. 打开STC-ISP软件,首先选择“单片机型号”。这里选择“STC89C52RC”。
    在这里插入图片描述

  3. 检查“串口号”是否检测出下载器的COM端口。
    在这里插入图片描述
    以上就是成功检测到下载器。

  4. 点击“打开程序文件”,选择刚才生成的hex文件。
    在这里插入图片描述

  5. 点击“下载/编程”:
    在这里插入图片描述

  6. 此时,先将USB转TTL下载器5V的电源线拔掉,然后再接上,以触发冷启动后监听重新握手来实现程序的刷入。

  7. 软件日志输出框内输出结果:

正在重新握手 ... 成功 [0.594"] 当前的波特率: 115200 正在擦除目标区域 ... 完成 ! [0.312"]

正在下载用户代码 ... 完成 ! [0.109"] 正在设置硬件选项 ... 完成 ! [0.016"]

更新后的硬件选项为:

. 当前的时钟频率: 11.088MHz

. 系统频率为12T(单倍速)模式

. 振荡器的放大增益不降低

. 当看门狗启动后,任何复位都可停止看门狗

. MCU内部的扩展RAM可用

. ALE脚的功能选择仍然为ALE功能脚

. P1.0和P1.1与下次下载无关

. 下次下载用户程序时,不擦除用户EEPROM区

单片机型号: STC89C52RC/LE52RC

固件版本号: 6.6.4C

操作成功 !

以上即表示程序烧写成功,程序会立即执行。

  1. 看到LED成功被点亮。
    在这里插入图片描述

扩展

  1. 程序烧写好了,只要电源一直供电,程序就会永久执行下去。但是不想一直插着下载器,太累赘。后来使用手机数据线(必须是4芯的,刚开始不知道找了个什么设备上的USB线,居然是2芯的),剥开以后,将红色线接电源正极输入,黑色线接GND,USB线接任意的USB口上都可以,51单片机正常运行。

  2. LED 间隔1秒亮灭切换代码:

#include <reg52.h>

sbit led = P2^0;

void delay(int n) { 
   
	int i, j;
	for(i = n; i > 0; i--)
	for(j = 110; j > 0; j--);
}

void main()
{ 
   
	while(1) { 
   

		led=~led;
		delay(1000);

	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/38473.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注