51单片机嵌入式开发:STC89C52环境配置到点亮LED
STC89C52环境配置到点亮LED
- 1 环境配置
- 1.1 硬件环境
- 1.2 编译环境
- 1.3 烧录环境
- 2 工程配置
- 2.1 工程框架
- 2.2 工程创建
- 2.3 参数配置
- 3 点亮一个LED
- 3.1 原理图解读
- 3.2 代码配置
- 3.3 演示
- 4 总结
1 环境配置
1.1 硬件环境
硬件环境采用“华晴电子”的MINIEL-89C开发板,这个板子是大学较为经典的51开发板硬件平台,作为单片机入门级应用来说是一个很好的学习板。
板子如图所示:

资源丰富,基础学习只此一个板子就够用,集成的开发模块主要有:
1、8 个高亮数码管显示(数字和字母显示)
2、16 个优质按键(2Pin)可配置成 4 个独立按键和 4*4 矩阵键盘(人机接口输入)
3、8 个高亮发光二极管(跑马灯、指示灯、红绿灯等)
4、标准的 RS232 通信接口(PC 通信)
5、一体化红外接收头(高灵敏度,可做红外遥控器解码)
6、遥控器用红外发射管(广发射角)可以模拟遥控器。
7、喇叭(报警以及音乐播放)
8、一路继电器输出(弱电控制强电,隔离控制)
9、EEPROM 24C02(数据存储)
10、8X8 单色点阵
11、DS18B20 接口(精密温度检测)
12、USB 口供电
13、加装优质电源开关
14、晶振采用拔插方式,可以使用于不同频率
15、DC 电机接口(直接接入小功率直流电机即可)
16、4 相步进电机接口(直接接入即可)
17、DS1302 实时时钟
18、经典双复位电路,支持 AVR
19、ISP 10Pin 下载线接口
20、PS2 键盘鼠标接口
21、标准 1602 液晶接口,独立对比度调节
22、标准 12864 液晶接口,独立对比度调节
23、外围供电,7805 稳压,最大电流 1A
24、4路AD模数转换输入
25、1路DA数模转换输出,LED指示
1.2 编译环境
编译环境采用资料包中的keil软件(Keil uVision2),安装过程按照安装说明安装即可。
安装说明:
版本号: 7.50a 安装过程
安装序列号:SN = K1DZP-5IUSH-A01UE
安装步骤如下:
- 记下安装序列号, 进入setup目录点击setup.exe进行安装;
- 选择Install Support…全新安装,以前没有安装过或者放弃以前的序列号安装;
选择Update Current Installation升级安装,将可以保持原来的序列号,不必再次输入 - 选择Full安装,Next->Yes(接受版权信息)->选择安装目录->Next->输入序列号、姓名、公司
等,除了序列号以外,都随意,可以如实输入你的姓名等。->next->
…直到安装完成。
一路确认直至安装完毕。
注意:
(1).每次安装都必须进行这几步,每次都需要重新写入AddOn标识;
(2).假如安装过程中存在病毒防火墙,可能会产生xcopy错误使安装失败,此时请先
关闭病毒防火墙,然后再安装;
(3).安装前必须退出正在运行的Keil软件,否则也会产生xcopy错误使安装失败;
(4).安装过程中可能会出现安装Secrity Key错误,点击确定即可。
1.3 烧录环境
烧录环境我们从官网下载最新的STCAI-ISP V6.94F 完整版烧录软件。并将Keil uVision2的STC芯片包安装,具体配置步骤如下:
1、 打开STCAI-ISP V6.94F
安装将芯片选择框选择如图所示,并点击如图中的配置框。

添加到Keil uVision2的安装目录下,如图所示,选择后点击确定即可。

2、 烧录测试
(1)使用方口-USB线连接板子和电脑(首先电脑应具有CH340串口驱动);
(2)打开串口STCAI-ISP下载工具,选择“芯片型号”和“串口”

(3)点击图中的打开程序文件,选择我们的测试程序。

(4)然后点击“编程”,板子打开供电(初始时,板子不供电,点击编程后再打开)。可以看到程序烧写成功,后续烧录过程不再演示。

2 工程配置
2.1 工程框架
首先创建一个文件夹“C51project20240701”,并在其文件夹下创建4个文件夹,用具存放不同的内容。
APP:用于存放用户代码h和c文件
Include:用于存放系统的h文件
Listing2:用于存放编译生成的文件
Objects:用于存放可执行文件

2.2 工程创建
(1)打开Keil uVision2软件,在C51project20240701文件夹下创建新工程,新工程名称我们任意取名,

(2)弹出窗口,我们选择STCMCU……。

(3)芯片选择我们开发板上使用的芯片型号,点击确认,后续的弹出窗继续点“是(Y)”即可创建成功。

2.3 参数配置
工程配置过程
(1)OUTPUT配置如图所示,并选择输出hex文件HEX-80。

(2)listing配置如图所示

(2)工程创建路径如图所示,指明.h文件的路径

以上配置完成后直接确认即可完成配置。
配置工程框架:
(1)将STARTUP.A51移动到include文件夹下。
(2)在App文件夹下新建一个main.C文件,并实现点亮LED。
(3)工程架构修改:


点击确认完成,至此,工程创建完成,后续再有实现功能的c和h文件,按照这种方式添加即可,后续测试编译成功。

3 点亮一个LED
3.1 原理图解读
根据原理图所示,其中8个指示灯对应板子位置如图所示,按照原理图的原理,当P10~P17引脚为低电平时,指示灯会亮起来,
所以设定以下实验题目,我们现在实现D0/D2/D4/D6指示灯亮起,D1/D3/D5/D7指示灯灭掉,并演示。

3.2 代码配置
/*-----------------------------------------------名称:IO口高低电平控制内容:现在实现D0/D2/D4/D6指示灯亮起,D1/D3/D5/D7指示灯灭掉,并演示
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
/*------------------------------------------------主函数
------------------------------------------------*/
void main (void)
{P1 = 0xFF; //P1口全部为高电平,对应的LED灯全灭掉,ff换算成二进制是 1111 1111P1 = 0x00; //P1口全部为低电平,对应的LED灯全亮起,ff换算成二进制是 0000 0000P1 = 0xAA; //D0/D2/D4/D6指示灯亮起//D1/D3/D5/D7指示灯灭掉,AA换算成二进制是 1010 1010 while (1) //主循环{//主循环中添加其他需要一直工作的程序}
}
3.3 演示
如图所示,指示灯点亮方式与实现题目一致,工程创建成功,代码演示成功。
……
……
……
……
……

4 总结
嵌入式领域开发过程,涉及的细节方面较多,尤其是一些环境配置编程细节与原理细节,遇到问题,一步步根据提示和现象去解决,重要的是掌握方法和解决问题的思路。
欢迎大家交流。
相关文章:
51单片机嵌入式开发:STC89C52环境配置到点亮LED
STC89C52环境配置到点亮LED 1 环境配置1.1 硬件环境1.2 编译环境1.3 烧录环境 2 工程配置2.1 工程框架2.2 工程创建2.3 参数配置 3 点亮一个LED3.1 原理图解读3.2 代码配置3.3 演示 4 总结 1 环境配置 1.1 硬件环境 硬件环境采用“华晴电子”的MINIEL-89C开发板,这…...
源代码加密:保护你的数字宝藏
在当今日益复杂的网络安全环境中,源代码作为企业的核心知识产权,其安全保护显得尤为重要。传统的源代码加密方法虽能提供一定的保护,但在应对新型威胁和复杂场景时,往往显得力不从心。而SDC沙盒技术的出现,为源代码加密…...
Jackson库使用教程
1. Jackson概述 定义: Jackson是一个基于Java的开源JSON解析工具,用于Java对象与JSON数据的互相转换。示例JSON:{"author": "一路向北_Coding","age": 20,"hobbies": ["coding", "leetcode", "r…...
汉王、绘王签字版调用封装
说明 需要配合汉王或绘王签字版驱动以及对应的sdk服务使用 constants.js //汉王、绘王sdk websocket连接地址 export const WS_URLS {1:ws://127.0.0.1:29999, //汉王2:ws://127.0.0.1:7181, }export const COMMAND1 {1: {HWPenSign: "HWStartSign",nLogo: "…...
如何在TikTok上获得更多观看量:12个流量秘诀
TikTok作为热门海外社媒,在跨境出海行业中成为新兴的推广渠道,但你知道如何让你的TikTok赢得更多关注次数吗?如果您正在寻找增加 TikTok 观看次数的方法,接下来这12种策略,你需要一一做好! 1. 在内容中添加…...
vue模板语法v-html
模板语法v-html vue使用一种基于HTML的模板语法,使我们能够声明式的将其组件实例的数据绑定到呈现的DOM上,所有的vue模板都是语法层面的HTML,可以被符合规范的浏览器和HTML解释器解析。 一.文本插值 最基本的数据绑定形式是文本插值&#…...
13 Redis-- 数据一致性模型、MySQL 和 Redis 的数据一致性
数据一致性模型 根据一致性的强弱分类,可以将一致性模型按以下顺序排列: 强一致性 > 最终一致性 > 弱一致性 数据一致性模型一般用于分布式系统中,目的是定义多个节点间的同步规范。 在这里,我们将其引入数据库和缓存组…...
启动Nuxt-hub-starter: Failed to initialize wrangler bindings proxy write EOF
重新安装 node.js 这样做可以确保下载到了适合的 Windows 框架、Chocolatey(一款Windows包管理工具)、Python 等资源。 这个错误与Node版本、pnpm/yarn 的版本无关! Node.js — Download Node.js (nodejs.org)...
技术驱动旅游创新!深度解析景区导览小程序的地图渲染与AR导航技术
随着现代生活节奏的加快,人们在外出旅游时更倾向于轻便出行,携带导览地图已成为过去。然而,面对景区广阔的面积和众多景点,游客常常感到迷茫,难以快速定位到自己所需的地点。景区导览小程序让游客只需搜索景区名称&…...
二叉树之遍历
二叉树之遍历 二叉树遍历遍历分类前序遍历流程描述代码实现 中序遍历流程描述代码实现 后序遍历流程描述代码实现 层次遍历流程描述代码实现 总结 二叉树遍历 遍历分类 遍历二叉树的思路有 4 种,分别是: 前序遍历二叉树,有递归和非递归两种…...
【经验贴】如何做好自己的职业规划(技术转项目经理)
我有几个问题想问大家 第一,你了解自己吗?你知道自己想要是什么吗?你了解自己的优势劣势吗? 第二,你了解这个行业吗?你知道这个行业是如何发展起来的吗?你了解这个行业的背景吗?你…...
【笔记】字符串相似度代码分享
目录 一、算法介绍1、算法1)基于编辑距离2)基于标记3)基于序列4)基于压缩5)基于发音6)简单算法 2、安装 二、代码demo1、Hamming 距离2、Levenshtein 距离3、Damerau-Levenshtein距离4、Jaro 相似度5、Jaro…...
AI墓地:738个倒闭AI项目的启示
近年来,人工智能技术迅猛发展,然而,不少AI项目却在市场上悄然消失。根据AI工具聚合网站“DANG”的统计,截至2024年6月,共有738个AI项目停运或停止维护。本文将探讨这些AI项目失败的原因,并分析当前AI初创企…...
工程文件参考——CubeMX+LL库+SPI主机 阻塞式通用库
文章目录 前言CubeMX配置SPI驱动实现spi_driver.hspi_driver.c 额外的接口补充 前言 SPI,想了很久没想明白其DMA或者IT比较好用的方法,可能之后也会写一个 我个人使用场景大数据流不多,如果是大批量数据交互自然是DMA更好用,但考…...
LLM - 模型历史
...
Go语言中的时间与日期处理:time包详解
在Go语言中,time包提供了丰富而强大的功能来处理时间和日期,这对于构建精确计时、定时任务、日期格式化等应用场景至关重要。本文将深入浅出地探讨time包的核心概念、常见问题、易错点及其规避策略,并通过实用代码示例加深理解。 一、时间与…...
Java实现单点登录(SSO)详解:从理论到实践
✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步&am…...
【leetcode82-91动态规划,91-95多维动态规划】
动态规划【82-91】 多维动态规划【91-95】...
Django学习第四天
启动项目命令 python manage.py runserver 分页功能封装到类中去 封装的类的代码 """ 自定义的分页组件,以后如果想要使用这个分页组件,你需要做: def pretty_list(request):# 靓号列表data_dict {}search_data request.GET.get(q, &…...
redis-benchmark 使用
Redis 自带了一个叫 redis-benchmark 的工具来模拟 N 个客户端同时发出 M 个请求。 Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests>] [-k <boolean>]-h <hostname> Server hostname (default 127.0…...
地理空间机器学习库全解析:从TorchGeo到Raster Vision的实战指南
1. 项目概述:为什么我们需要专门的地理空间机器学习库?如果你尝试过用标准的PyTorch或TensorFlow去处理一张卫星影像,大概率会在第一步就卡住。不是模型写不出来,而是数据根本读不进去,或者读进去了却对不上位置。一张…...
CI/CD流水线中的幽灵依赖——DeepSeek项目92%存在未声明的transitive risk,你中招了吗?
更多请点击: https://intelliparadigm.com 第一章:CI/CD流水线中的幽灵依赖——DeepSeek项目92%存在未声明的transitive risk,你中招了吗? 在现代CI/CD实践中,开发者常误以为 package.json 或 requirements.txt 中显式…...
基于Matter与Thread协议实现本地化智能电表数据采集与家居集成
1. 项目概述:将传统电表接入智能家居的“最后一公里”家里那个不起眼的电表,每个月只在抄表员来或者收到账单时才会被想起。但你知道吗?在法国,以及许多其他采用类似标准的地区,这个默默无闻的“铁盒子”其实一直在实时…...
Go语言调试技巧:Delve调试器
Go语言调试技巧:Delve调试器 1. Delve使用 dlv debug main.go (dlv) breakpoint main.go:10 (dlv) continue2. 总结 Delve是Go语言的官方调试器,支持断点、单步执行等调试功能。...
从PointNet到Transformer:聊聊‘参数共享’这个省内存又提性能的炼丹技巧
从PointNet到Transformer:参数共享如何重塑深度学习效率 在深度学习模型日益复杂的今天,算法工程师们不断面临一个核心矛盾:如何在保持模型性能的同时,有效控制参数规模?当我们处理点云、序列或图结构这类不规则数据时…...
为内容创作平台集成 AI 功能时利用 Taotoken 实现模型灵活调度
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内容创作平台集成 AI 功能时利用 Taotoken 实现模型灵活调度 在内容创作或媒体类平台中集成 AI 辅助功能,如文章生成…...
手机号码定位技术:从查询到地图可视化的完整解决方案
手机号码定位技术:从查询到地图可视化的完整解决方案 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirro…...
工业控制系统安全:融合网络与过程数据的异常检测实践
1. 项目概述与核心思路在工业控制系统的安全防护领域,我们面临着一个日益严峻的挑战:攻击者不再满足于传统的网络渗透,而是将目标对准了物理过程本身。想象一下,一个水处理厂的阀门被恶意远程关闭,或者一个发电厂的涡轮…...
Kali Web渗透实战:从登录接口到管理员后台的完整链路
1. 这不是Kali的安装教程,而是Web渗透测试者的真实工作切片“精通 Kali Linux Web 渗透测试”——这个标题在各大技术社区里出现频率极高,但绝大多数内容要么是Kali系统安装基础命令罗列,要么是照搬OWASP Top 10概念空谈原理,真正…...
Java + Spring Boot 操作 Kafka 完整学习指南
前置条件:ZooKeeper 集群 Kafka 集群已启动(3个ZK节点 3个Broker) Broker 地址:172.17.0.7:9092, 172.17.0.7:9093, 172.17.0.7:9094第一阶段:原生 Java API 操作 Kafka目的:理解底层原理,Spr…...
