一、为什么要学习单片机?
作为一名工科学生,进入大学参加各种活动,例如:电子设计大赛、寻迹车比赛、LED电子灯比赛以及各种各样的微控、弱控强电路等,都离不开单片机的身影。电路、c语言、数电、模电、计算机控制等知识的学习,给单片机的学习增添了软辅助,但我认为,学习单片机更多的是自己的兴趣、爱好,正如“程序虐我千百遍,我视程序为初恋”。
此外,学习单片机知识,从最基础的51单片机入门学习,可以为我们后面学习STM32、ARM微控器等其微控制器的学习奠定知识基础和积攒一定的经验,给自己的大学及以后的职业道路增加一丝色彩。
二、首先了解什么是单片机?
单片机又称单片微控制器,把一整个计算机系统集成到一个芯片上,当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。一块芯片就成了一台计算机。体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
单片机属于一种集成式电路芯片。主要包含CPU、只读存储器ROM和随机存储器RAM、时钟电路、中断系统和定时/计数器及各种输入输出IO口构成,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。
图1 单片机的基本结构
三、如何快速、高效学习单片机?
多学习;查阅原始资料,即单片机手册和各个模块手册。
多动手;代码的学习主要是自己多动手进行练习,孰能生巧。
多思考;一个程序的实现往往有多种不同的方式,但最基本的原理保持不变,只是每个程序员的习惯和书写形式不一,复杂程度和代码的可移植性不一样,万变不离其原理。
四、准备资料和软件(提前了解,间接性、针对性学习印象比较深刻)
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对应二极管点亮。