历史上的今天
返回首页

历史上的今天

今天是:2026年01月06日(星期二)

正在发生

2023年01月06日 | 51单片机(入门保姆级教程)——点亮一个LED灯

2023-01-06 来源:zhihu

一、为什么要学习单片机?

作为一名工科学生,进入大学参加各种活动,例如:电子设计大赛、寻迹车比赛、LED电子灯比赛以及各种各样的微控、弱控强电路等,都离不开单片机的身影。电路、c语言、数电、模电、计算机控制等知识的学习,给单片机的学习增添了软辅助,但我认为,学习单片机更多的是自己的兴趣、爱好,正如“程序虐我千百遍,我视程序为初恋”。

此外,学习单片机知识,从最基础的51单片机入门学习,可以为我们后面学习STM32、ARM微控器等其微控制器的学习奠定知识基础和积攒一定的经验,给自己的大学及以后的职业道路增加一丝色彩。

二、首先了解什么是单片机?

单片机又称单片微控制器,把一整个计算机系统集成到一个芯片上,当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。一块芯片就成了一台计算机。体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

单片机属于一种集成式电路芯片。主要包含CPU、只读存储器ROM和随机存储器RAM、时钟电路、中断系统和定时/计数器及各种输入输出IO口构成,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。

图1 单片机的基本结构

三、如何快速、高效学习单片机?

  1. 多学习;查阅原始资料,即单片机手册和各个模块手册。

  2. 多动手;代码的学习主要是自己多动手进行练习,孰能生巧。

  3. 多思考;一个程序的实现往往有多种不同的方式,但最基本的原理保持不变,只是每个程序员的习惯和书写形式不一,复杂程度和代码的可移植性不一样,万变不离其原理。

四、准备资料和软件(提前了解,间接性、针对性学习印象比较深刻)

4.1 相关基础知识

单板的基本知识、电路的基本电路知识、数字电子技术基础知识、模拟电子技术基础知识、选用模块的逻辑知识、电力电子知识(模块化弱控强应用电路后buck、boost电路等)

4.2 基础软件

  • 推荐keil5: 编写程序代码

  • proteus模拟仿真: 可以进行模型构建及仿真演示,为实物排除问题

  • Altium Designer: 进行原理图绘制,设计自己专属的pcb板

  • STC-ISP: 将keil5生成的Hex文件烧录进单片机内

  • B站:可以在上面进行部分程序的学习

五、(最基础、最简单程序)点亮一个LED灯

5.1 LED原理和知识

图2 LED原理图

LED即发光二极管,是一种半导体固体发光器件。具有单向导通性,两极分别为P极和N极,也有说成是阳极和阴极,如图2中阳极接电源端,只需阴极给低电平LED就会发光。(其余LED知识大家可自行了解)

5.2 点亮一个LED灯具体代码

#include   //此文件定义单片机的一些特殊功能寄存器

sbit led=P2^0;	   //将单片机的P2.0端口定义为led(当然也可以定义其他端口,欢迎尝试)

void main()      //每一个main.c中必须包含一个主函数,程序从这里开始执行
{
	while(1)   //while死循环,程序将在这里进行不断重读执行
	{
		led=0;	//P2.0端口设置为低电平,根据二极管原理点亮LED灯			
	}		
}

注:其中对应行都有注释,大家移植后可以删除

5.3 包含/区分/学习知识点

  • int main和void main的区别(掌握)

有一定c语言知识的同学应该知道int是需要返回的,在单片机里也一样。

void main没有返回值,int main有返回值(即return 0)。

  • C51中的一些程序扩充定义(了解)

(1)sfr:特殊功能寄存器。

sfr 变量名=地址值(现在已经平时不用我们自己去定义寄存器的名字,因为在reg52.H这个头文件里面都帮我们定义好了)

(2) sbit:特殊功能位声明

sbit 变量名=地址值;在给某个引脚取名的时候经常会用到。如上面对LED管脚的定义sbit led=P2^0。

(3)bit:位变量声明

bit 用来定义位数据变量,由它定义的变量数据仅为1位,只有0或1两种状态,长度为1字节。

  • c51基本数据类型(熟悉并能运用)

图3 基本数据类型(来源:若诗余)

六、KEIL中建立工程文件

6.1创建新的工程文件(打开——项目—— new project)

图4 创建一个新的项目

6.2选择单片机型号(直接输入AT89C52或者点击Atmel左边的小加号,选择或at89c52)

图5 选择单片机型号

6.3点击确认后创建好工程。右键点击Group1——Add new文件

图6 添加新的.c文件1

6.4 选择.c文件并创建(一般主函数确认为main.c文件)

图7 添加新的.c文件2

6.5 输入程序并进行编译(如图1、2、3步骤,但是图中没有生成HEX文件)

图8 程序编译

6.6 创建设置HEX文件(直接点击上方魔术棒或者ALT+F7快捷键都可以;进入后点击output——Creat HEX File——ok即可)

图9 创建HEX文件步骤1

图10 创建HEX文件步骤2

6.7 生成HEX文件(0错误后才能生成hex文件,后面跟着具体存放文件目录)

图11 生成HEX文件

6.8 配置STC-ISP(按照所表示顺序即可)

图 12 配置STC-ISP

选择芯片型号为STC89C52即可。串口号点击扫描一般即可自动搜索到,若搜不到可能存在问题及解决方法:①没有安装驱动。驱动分为很多种,即使名字看上去非常一样的,但是有的也不通用,如CH340和CH341。选择安装之后,插上串口线,打开设备管理器,如果显示COM了,那么就安装成功了。②打开了另外一个串口调试助手,串口被占用了。③换一根好一点的数据线或者换一个电脑的USB口。可能存在串口线接触不良或者电阻过大导致供电不足,④检查开发板上的晶振,是不是接触不良或者掉落。⑤单片机损坏或者接触不良导致检测不到芯片。

6.9 下载成功后对应单片机显示相关现象。如上程序则单片机P1.0对应二极管点亮。


推荐阅读

史海拾趣

DZUS公司的发展小趣事

随着公司实力的增强,DZUS公司开始拓展国际市场。通过参加国际展览、与海外客户建立合作关系等方式,公司逐渐打开了国际市场的大门。同时,公司还针对不同国家和地区的市场需求,推出了定制化的产品和服务。这些举措使DZUS公司的品牌知名度和市场份额不断提升。

Data Translation Inc公司的发展小趣事

Data Translation Inc公司成立于1973年,初期专注于数据采集和处理技术的研发。在成立初期,公司就凭借对技术的深刻理解和敏锐的市场洞察力,成功开发了一系列具有创新性的数据采集和处理产品。这些产品不仅满足了当时工业界对高精度、高速度数据采集的需求,还引领了整个行业的发展方向。随着技术的不断进步和市场需求的不断变化,Data Translation不断推出新产品,逐渐确立了其在数据采集和处理领域的领先地位。

Agere System(LSI Logic)公司的发展小趣事

Data Translation一直以客户为中心,致力于为客户提供优质的产品和服务。公司不断创新产品设计和制造技术,以满足客户对数据采集和处理性能、稳定性、易用性等方面的需求。同时,公司还建立了完善的客户服务体系,为客户提供从产品咨询、选型、安装、调试到售后维护等全方位的服务。这些举措赢得了客户的广泛赞誉和信任,为公司赢得了更多的市场份额和声誉。

ALPS公司的发展小趣事

随着公司业务的不断发展,Data Translation开始寻求全球扩张的机会。公司通过设立海外分支机构、与当地企业合作等方式,成功将产品推向全球市场。同时,公司还加大了品牌建设的力度,通过参加国际展会、发布新产品等方式提高品牌知名度。这些举措不仅为公司带来了更多的客户和合作伙伴,还进一步巩固了其在全球数据采集和处理领域的领先地位。

CTC Coils Ltd公司的发展小趣事

在快速发展的过程中,CTC Coils Ltd公司始终注重企业文化建设和团队建设。公司倡导创新、务实、高效的企业精神,鼓励员工勇于创新、追求卓越。同时,公司还注重员工的培训和成长,为员工提供广阔的发展空间和良好的职业晋升通道。这些举措使得公司凝聚力不断增强,为公司的长远发展奠定了坚实的基础。

请注意,这些故事是虚构的,旨在展示一个电子行业公司可能经历的发展路径和关键阶段。实际情况可能因公司具体情况和市场环境的不同而有所差异。

Elektron公司的发展小趣事

随着业务的不断拓展和市场的不断扩大,Elektron公司逐渐将目光投向了全球市场。公司在全球范围内设立了多个代表处和分支机构,与当地的合作伙伴建立了紧密的合作关系。通过全球化战略的实施,Elektron成功进入了焊接设备、等离子切割设备和电池服务设备的高端市场,并成为了世界市场的领导者之一。

问答坊 | AI 解惑

51单片机综合学习系统_DS18B20温度实验篇.pdf

51单片机综合学习系统_DS18B20温度实验篇.pdf…

查看全部问答>

编译问题解决

Can\'t insert Symbol into Block Design File filename because the Symbol represents the current Block Design File…

查看全部问答>

贴片电阻电容功率与尺寸对应表

贴片电阻电容功率与尺寸对应表 电阻封装尺寸与功率关系,通常来说: 0201 1/20W 0402 1/16W 0603 1/10W 0805 1/8W 1206 1/4W 电容电阻外形尺寸与封装的对应关系是: 0402=1.0x0.5 0603=1.6x0.8 0805=2.0x1.2 1206=3.2x1.6 1210=3.2x2.5 1 ...…

查看全部问答>

大功率开关电源中功率MOSFET的驱动技术

功率MOSFET具有导通电阻低、负载电流大的优点,因而非常适合用作开关电源(switch-mode power supplies,SMPS)的整流组件,不过,在选用MOSFET时有一些注意事项。    功率MOSFET和双极型晶体管不同,它的栅极电容比较大,在导通之前要 ...…

查看全部问答>

wi-fi的设置问题

我开发板上有一个wi-fi模块,经常在不同的无线局域网中使用,每次都需要手工设置,有没有办法用代码来完成无线网络的设置呢(无线网络没加密,或固定的一个密码)?…

查看全部问答>

请问大家都用什么笔记本.现在 一般的笔记本都没有串并口

如题. 做ARM开发,有时候会用到串并口,现在 的笔记本一般都没有,不知道大家有什么建议,我听朋友说,用转接口不太稳定.最好用台式机,不过我还是想换个带串并口的笔记本,大家有什么建议…

查看全部问答>

WINCE 分区如何隐藏

eboot 分了 4个分区, 1个binfs 3个fatfs 3个fatfs在pc上都是别出来了, 现在遇到以下问题: 1). 我想隐藏其中2个fatfs分区, 因为 我要放 应用程序 用 所以需要隐藏起来 2). 现在分区的路径名是按默认的名字, 比如默认是 disk, 那么 后面几 ...…

查看全部问答>

atmega16单片机 自身AD问题

近期用atmega16 自身的ad测试陀螺仪,在测试的时候发现,当把ADC0接地时  LCD1602显示AD转换后的值为0096,接VCC=AVCC时  显示0993 这不对啊  应该是0和1023啊,这是程序 DDRA&=0xfe; PORTA&=0xfe; SF ...…

查看全部问答>

求助

有这么一个结构体static union{    struct    {        BYTE    bBroadcastSwitchToggled    : 1; & ...…

查看全部问答>

严重求助焊接清洗问题

现在助学板子清洗问题比较大,焊接调试倒好,清洗需要3次过酒精水,因为小批量还没找厂家机贴,人工贴完回来自己清洗 不知各位有啥经验,烦请指教…

查看全部问答>