问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

单片机基础与编程技巧入门指南

创作时间:
作者:
@小白创作中心

单片机基础与编程技巧入门指南

引用
1
来源
1.
http://www.pa555.com.cn/display.php?id=817

单片机(Microcontroller Unit,MCU)是一种在一片集成电路芯片上集成计算机基本功能部件的微型计算机,广泛应用于各种控制领域。本文将从单片机的定义、基本结构、入门知识、编程技巧等方面,为初学者提供全面的指导。

一、什么是单片机?单片机的定义和种类

不同封装形式的单片机

单片机的定义:单片机就是单片微型计算机,它是在一片单块的集成电路芯片上,包含了计算机的基本功能部件:中央处理器CPU、存储器(RAM,ROM)、定时器/计数器,中断控制器,串行口,和I/O输入输出接口电路等,构成一个完整的计算机。由于多用于控制领域,所以又叫微控制器(MCU)。单片机只需要适当的外部电路和软件相结合,便可以构成一个简单的单片机控制系统。

最简单的控制系统:

LED EQU P1.1
LOOP:
 CLR LED
 CALL DELAY
 SETB LED
 CALL DELAY
 JMP LOOP

此段程序能使发光二极管每隔0.5秒轮流点亮和熄灭。

单片机的引脚定义图:

单片机的种类:

  • 按厂家型号分有:Intel,Atmel,PIC,Philips,Motorola,TI,Syscoms等。
  • 按位数分:4位,8位,16位,32位单片机。目前应用最广的是8位单片机,价格低廉。目前正兴起的32位ARM单片机是高性能单片机。
  • 按引脚数量分:有8脚,16脚,20脚,28脚,40脚,48脚,64脚,100脚以上甚至更多。引脚越多,功能越强大。
  • 按封装分:DIP,PLCC,SSOP等。
  • 按擦写方式有:OTP(一次性),可多次擦写。

单片机的应用领域:

  • 单片机应用无处不在,日常生活中随处可见,广泛应用于以下领域:
  • 测控系统:用于各种工业控制、数据采集。
  • 智能仪表:如温度、压力、流量、速度等。
  • 机电一体化产品:数控机床、医疗器械等。
  • 智能民用产品:家用电器、冰箱、洗衣机、空调、电视机、数码照相机、游戏机、玩具、音响、公共广播。
  • 高档产品:汽车、手机、PDA、机顶盒、GPS等。

二、单片机的基本结构

单片机内部方框图(以AT89S52为例):

三、从事单片机所需的基本知识

  • 有浓厚的兴趣、热爱,专注执著,视为事业。
  • 要有一定的电子技术基础:单片机产品开发是软件和硬件紧密结合的工作,对硬件懂的越多越好,可以加快开发速度。
  • 基本数字电路知识。
  • 计算机基本知识,数制及其转换,补码原码反码。
  • 至少掌握一门编程语言,汇编语言、C语言。
  • 一定的数学知识,数据结构,算法等,特别对DSP,ARM等高档单片机犹为重要。
  • 一定的英语基础,能基本读懂英文资料。

四、学单片机怎么快速入门?先学什么?

  • 硬件方面:学习基本的电子技术,如模拟电路,数字电路,能看懂电路图。
  • 软件方面:学习汇编语言、C语言。
  • 有人问:现在流行C,还用学汇编吗?各自的优缺点。汇编语言是低级语言,直接面向机器,代码紧凑、效率高,但难阅读难理解、难维护、可移植性差。C语言是高级语言,表达能力强,表达方式灵活,表达方式简洁直观,可读性强,容易理解,使用简单的方法就可以构造出相当复杂的数据类型和程序结构;可进行结构化设计,适用于大型的复杂项目,可大大缩短开发周期,可移植性好,非常利于维护。所以两种语言都要学好。
  • 学习单片机的原理和结构、接口电路,推荐《单片机原理及其接口技术》清华大学出版社,胡汉才编著。推荐学习C语言的入门书:《C程序设计》谭浩强编著,清华大学出版社。
  • 做个简单的实验板或买块开发板,做几个简单的控制实验,掌握单片机开发的基本流程:创建项目,编写代码,调试和仿真,烧写单片。理论联系实际,实践非常重要。

推荐基本入门书:

  • 单片机原理及接口技术
  • C程序设计
  • C程序设计(第二板)

MCS-51系列单片机117条汇编指令表:

单片机学习板:

本学习板专为单片机爱好者学习MCS-51系列单片机而设计.可直接的实验有:
1.点亮LED,各种跑马灯
2.数码管显示数字和字母,.数码管动态刷新显示
3.查询方式按键,中断方式按键
4.蜂鸣器发声,单片机奏乐
5.外部事件计数
6.串行通讯
7.IIC总线存储器读写
8.IIC总线时钟芯片操作

单片机仿真器:
用于在线适时仿真,方便调试、修改软件中的逻辑错误等

单片机编程器:
用于往单片里烧写已调试好的程序,加密单片程序。
目前单片流行的C语言编译环境:KEIL C

KEIL C与标准C有什么不同?

  • Keil C的主要特点和它与ANSI C的不同之处
  • Keil C除了具有标准C的所有功能外,还增加了一些针对单片机硬件特点的特殊功能,如增加了对单片机内部硬件资源、特殊功能寄存器,I/O口的控制,如:
  • sfr SCON=0X98; //定义SCON串行控制寄存器
  • sbit SM0=0X9F; //定义SCON的各位
  • sbit SDA=P1^1; //定义单片I/0口。
  • 增加了数据存储类型:data, idata, bdata, pdata, xdata, code.
  • 增加中断服务函数:void timer0(void) interrupt 1 {}

五、单片机应用系统的研发步骤

  • 拟制设计任务书:市场调研,方案论证,功能设计,指标要求。
  • 建立数学模型:如温度、电压电流,功率,要用数学公式具体化。把模糊的概念数字化。
  • 硬件电路设计、模拟电路数字电路、可靠性设计、器件选型、画原理图、PCB图、制版、插件、焊接、调试。
  • 结构设计:机箱、面板、后板,线材。
  • 软件设计:首先确定程序结构、程序功能、确定算法、流程图设计、绘制流程图是单片机程序编写前最重要的工作,首先画出简单的功能流程图(粗框图),再对功能流程图进行扩充和具体化。
  • 编写程序代码,程序的检查和修改,编译。
  • 系统的软硬件测试、调试、运行和维护。

六、单片机编程技巧略谈

  • 先确定程序结构的重要性:尽可能把问题想全面一点,做到胸有成竹。
  • 使用无符号类型unsigned char,原因是8051不支持符号运算。
  • 避免使用浮点指针你可以这样做但会浪费大量的代码时间。
  • 尽量采用短变量:能用char型就不要用int型,节省内存空间。
  • 使用位变量,对于某些标志位应使用位变量而不是unsigned char这将节省你的内存。
  • 用局部变量代替全局变量,把变量定义成局部变量比全局变量更有效率,且节省内存,对于循环次数较多的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量。
  • 为变量分配内部存储区。局部变量和全局变量可被定义在你想要的存储区中,当你把经常使用的变量放在内部RAM中时,可使你的程序的速度得到提高,除此之外,你还缩短了你的代码,因为外部存储区寻址的指令相对要麻烦一些,考虑到存储速度,按下面的顺序使用存储器DATA IDATA PDATA XDATA当然你要记得留出足够的堆栈空间。
  • 使用宏替代函数,巧用宏定义,条件编译,方便修改、维护程序。
  • Switch case语句要有default语句,防止找不到匹配的。函数参数范围检查
  • BINGO平台里的技巧。
  • 多阅读别人的程序,了解别人的编程思路,吸收先进的编程技巧和方法。

七、单片机软件抗干扰技术:防止程序跑飞

  • 运用看门狗(WATCHDOG):看门狗有硬件看门狗和软件看门狗,硬件看门狗是带有复位电路的器件,如带看门狗的存储器CAT1611。软件看门狗大多都是单片内部自带的看门狗定时器,定时器溢出时能使单片复位。
  • 看门狗喂狗正确方法:不要在定时器中断程序中喂狗,否则失去看门狗功能。最好只在主程序中喂狗,且喂狗指令不要太频繁。

八、项目文件的管理,资料的管理

  • 自己的设计的项目要放在同一个目录下,每个目录名应以项目名称命名。
  • 同一个项目文件、源程序和资料要尽量只放在一个分区的一个目录下面,不要放在多个地方,不要在其他的分区和目录下再复制相同的项目文件和程序,否则弄不清哪个版本是最新的。
  • 资料文件专门放在资料目录下面,并分类存放。
  • 项目文件里应包含一个写注释的文本文件,记录一些关键的说明和变动,如:

九、单片机调试技巧略谈

  • 调试分硬件调试和软件调试,
  • 首先检查硬件电路,先排除硬件故障,节约时间。如首先排除目标板的短路、短路,引脚错位,电源和地是否正确等问题,
  • 保证单片正常工作的基本条件:电源、接地是否正确、晶振是否起振、复位电路是否正常等。
  • 软件调试分模块逐个逐个调试,可以检验硬件和软件是否都正常,保证基本模块功能无误,为整体调试铺平道路。
  • 充分运用编译软件带的调试功能,如断点调试、单步调试、运行到指定行、各种观察窗口如局部变量窗口,全局变量窗口、I/O窗口,串行窗口,CPU窗口、时间记录窗口,观察程序运行的状态和结果,发现问题和解决问题。
  • 考虑外围接口器件的速度,如果是低速器件,要有足够的延时时间。
  • 考虑外围接口器件I/O端口的结构,如果是开漏结构,则必须加上拉电阻,否则驱动不够,影响正常工作。原则上作输出用的I/O口加上拉电阻可以增加驱动能力,和增强抗干扰能力。在电源和地间加滤波电容。
  • 仿真器运行正常,但写入单片后单片运行却不正常,应检查单片的复位电路、电源、晶振电路是否正常,如不正常,单片是无法开始工作的。还有就是检查单片的EA/Vpp脚是否接到VCC,因为现在的单片机多是用内部的程序存储器。
  • 测试单片的每个I/O是否都正常,有时单片的某几个非关键I/O口损坏,但单片还是能正确烧写进去,但实际却不能正常工作。
  • 经验的积累非常重要,功多艺熟,熟能生巧。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号