51单片机(入门保姆级教程)——点亮一个LED灯

2023-02-24 21:30   248   0  

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


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


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


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


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


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


0ee3d645-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


图1 单片机的基本结构


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


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

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

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


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


4.1 相关基础知识


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


4.2 基础软件


  • 推荐keil5: 编写程序代码

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

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

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

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


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


5.1 LED原理和知识


0ee3d646-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


图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基本数据类型(熟悉并能运用)


0ee3d647-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


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


六、KEIL中建立工程文件


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


0ee3d648-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


图4 创建一个新的项目


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


0ee3d649-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


图5 选择单片机型号


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


0ee3d64a-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


图6 添加新的.c文件1


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


0ee3d64b-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


图7 添加新的.c文件2


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


0ee3d64c-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


图8 程序编译


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


0ee3d64d-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


图9 创建HEX文件步骤1


0ee3d64e-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


图10 创建HEX文件步骤2


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


0ee3d64f-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


图11 生成HEX文件


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


0ee3d650-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


图 12 配置STC-ISP


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


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




登录icspec成功后,会自动跳转查看全文
博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。