1.7k likes | 1.91k Vues
单片机原理与应用. 创新实验学院 杜 猛. 课程特点. 涉及内容多,讲课学时少( 16 学时) 1. 技术专题式讲解,不按部就班面面俱到 2. 自学为主,讲课内容作为提纲、框架 技术性强,不易掌握 多动手,重视实验环节,以实践验证理论 需要多种技术辅助 数电 / 模电 /C 语言等等,兴趣驱动,勤加学习,形成完善的知识体系. 考核办法. 平时成绩 上课及实验环节的出勤率 创新实践记录册 期中、期末考核成绩 作品完成情况:以二人小组形式完成 2 个实践课题 设计报告:每个实践课题 每人 上交一份设计报告,同组二人各有分工,报告 不能雷同 注意事项
E N D
单片机原理与应用 创新实验学院 杜 猛
课程特点 • 涉及内容多,讲课学时少(16 学时) 1. 技术专题式讲解,不按部就班面面俱到 2. 自学为主,讲课内容作为提纲、框架 • 技术性强,不易掌握 多动手,重视实验环节,以实践验证理论 • 需要多种技术辅助 数电/模电/C语言等等,兴趣驱动,勤加学习,形成完善的知识体系
考核办法 • 平时成绩 • 上课及实验环节的出勤率 • 创新实践记录册 • 期中、期末考核成绩 • 作品完成情况:以二人小组形式完成2个实践课题 • 设计报告:每个实践课题每人上交一份设计报告,同组二人各有分工,报告不能雷同 • 注意事项 • 按时参加实践活动,迟到、早退均做旷课处理 • 请假必须通过任课教师,助管无权准假 • 仔细阅读学院网站的《成绩评定办法》 • 核对本人的选课信息
课程安排 • 51单片机基本概念 • C51语言编程 • 中断系统 • I/O端口 • 定时/计数器 • 串行通信 • 电机驱动专题 • 电子大赛控制类题目研讨
推荐学习资源 • 任意一本51单片机教材 • 《单片机原理及其接口技术》清华 胡汉才 • 《单片机技术基础教程与实践》电子工业出版社 • 《平凡的单片机教程》平凡单片机工作室http://www.mcustudio.com/ • 《单片机的C语言应用程序设计》北航 马忠梅 • AT89S51 datasheet • KeilHelp
什么是单片机(MCU) • 将微处理器(CPU)、数据存储器、程序存储器、I/O接口电路和相应的实时控制器件集成在一块芯片上,形成一个单芯片的微型计算机,称为单片机,也称微控制器(MCU)。 • 单片机不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上 • 想想PC的结构,CPU、内存、硬盘,以及键盘、鼠标、显示器等输入/输出设备。 • 二者组成结构类似,差别在体积、性能、价格,这也决定了其不同的用途。
单片机的特点 • 功能强:可编程,实时性好 • 体积小,功耗低 • 可靠性高:高度集成,大量数据都在芯片内部传送 • 开发方便:外围电路简单,资料丰富 • 价格低廉,性价比高 • 研制周期短,易产品化
单片机的用途 • 特点决定其应用量大面广 • 工业控制:数控机床,汽车电子 • 智能仪表:数字存储示波器,数字煤气表 • 医疗设备:CT机,血液分析仪,病人监测仪 • 办公自动化:打印机,扫描仪,复印机 • 家用电器:全自动洗衣机,空调,智能家居设备 • 消费电子:DC,MP3,PSP • 通信系统:手机,基站,GPS,路由器 • 军事国防
主流单片机 • 8051 最普及,多种新型高性能51 • MSP430 低功耗,抗干扰,工业仪表 • AVR RISC,高速,高可靠性 • PIC 体积小,抗干扰,成本低 • Freescale 产品线丰富,汽车电子 • ARM 32位,高性能,外设丰富
时钟源 T0 T1 时钟电路 SFR和RAM ROM 定时/计数器 系 统 总 线 CPU 并行端口 串行端口 中断系统 TXD RXD P0 P1 P2P3 INT0 INT1 51单片机的基本结构 • 一个8位微处理器(CPU) • 数据存储器RAM和特殊功能寄存器SFR • 内部程序存储器ROM • 两个定时/计数器,用以对外部事件进行计数,也可用作定时器。
时钟源 T0 T1 时钟电路 SFR和RAM ROM 定时/计数器 系 统 总 线 CPU 并行端口 串行端口 中断系统 TXD RXD P0 P1 P2P3 INT0 INT1 51单片机的基本结构 • 四个8位可编程的I/O(输入/输出)并行端口,每个端口既可做输入,也可做输出 • 一个串行端口,用于数据的串行通信 • 中断控制系统 • 内部时钟电路
小知识:常见存储器类型 • ROM:非易失的存储器,即断电后数据不丢失 • Mask ROM 掩膜,工厂烧录,无法改写 • PROM 一次编程(OTP) • EPROM 紫外线擦除,高电压编程 • E2PROM 电擦除,以字节为单位修改 • Flash容量大,NAND/NOR • RAM:易失的存储器,即断电后数据丢失 • SRAM 静态,速度快,容量小,价格高 • DRAM 动态,容量可以做得很大,需要刷新逻辑
寄存器 • 寄存器是CPU内部一种高速的数据存储单元。 • 用途: • 对寄存器内数据执行算术及逻辑运算 ADD ACC, #0xFF // ACC寄存器存储的数据加上255 • 对存储单元进行寻址(寄存器寻址,寄存器间接寻址,变址寻址等) MOV A, @R1 // 以R1寄存器中的数据作为地址,将该 地址中保存的数据放到ACC中。 • 读取、控制外围设备的工作状态 SBUF = 0xFF; // 让单片机通过串口发送数据0xFF while(TI != 1); // 查询中断中断寄存器,以判断数据是否 发送完毕
51中的重要寄存器 • PC:程序计数器,存放下一条需要执行的指令的内存地址,能自动加1。16位,寻址64KB。 • ACC:累加器,最常用的寄存器,大部分指令的操作数取自ACC,存放算术运算的结果,大部分的数据存取操作等。 • SP:堆栈指针。保存当前栈顶地址,8位。 • PSW:程序状态字,存放上一条指令执行后的有关状态。 • 加减法运算中是否产生了进位、借位 • 计算结果是否产生了溢出 • 除法运算中是否误将零作除数 • DPTR:数据指针,16位。 • 若干用于控制外设的寄存器,将在今后逐一讲解。
小知识:认识堆栈 • 堆栈是一种按“先进后出,后进先出”规律存取数据的内存区域。 • 用来保存函数返回地址,保护现场等。 • 向上生长:栈顶向高地址方向生长。 向下生长:栈顶向低地址方向生长。 • 满堆栈:栈指针指向最后压入堆栈的有效数据项。 空堆栈:栈指针指向下一个要放入的空位置。 • 8051系列单片机为向上生长的满堆栈。
程序存储器 • 存放用户程序、数据、查找表等信息 • 51可寻址64KB地址空间,AT89S51片内有4KB Flash • 复位后程序计数器(PC)内容为0000H • EA引脚对程序存储器的控制作用 • EA接高电平时,CPU先从内部程序存储器中读取程序,当PC值超过内部ROM容量时,自动转向外部ROM读取程序。 • EA接低电平时,CPU始终从外部程序存储器读取程序。
程序存储器 • 程序存储器中的特殊地址: • 0000H~0002H复位后的PC值为0000H,一般在此安排跳转指令 • 0003H ~ 002AH为中断向量表 • C语言中的const数据类型,以及code关键字,都将变量存储于程序存储器
数据存储器 • 保存程序中的变量,以及一些不怕断电后消失的数据 • 51具有256B内部数据存储器,并可寻址64KB外部存储器 • 低128B为用户数据RAM • 高128B为特殊功能寄存器
数据存储器 • 30H~7FH用户自由使用,一般把堆栈设置于此 • 20H~2FH该16字节(128位)存储单元具备按位寻址能力,即可以以位单位进行数据操作,而其他位置都必须以字节为单位操作。 • 位地址为00H~7FH • 00H~1FH共32个字节,被分为4个块(Bank),每个Bank包括8个寄存器(R0~R7),称为通用寄存器。通过PSW的RS0和RS1位组合,来选中每个Bank
小知识:存储结构 • 哈佛结构:程序与数据存储器分别编址,对程序存储器和数据存储器使用分开的总线访问,如AVR,ARM9等 • 普林斯顿结构:也叫冯.诺依曼结构,程序与数据存储器统一编址,共用总线,如x86,MIPS等 • 51属于什么结构? • 改进的哈佛结构,独立编址,但共用总线 • 哈佛结构中如何程序区别程序和数据存储器? • 使用不同的指令,例如MOVC,MOVX等
51单片机存储器的一些特殊点 • 地址重叠:采用不同的指令、信号来区分重叠地址 • 片内RAM用MOV,片外RAM用MOVX,故片内、外低地址可以重叠 • 片内、外ROM都用MOVC指令,但可以靠EA区分 • 片外RAM和ROM具有相同地址,且共用地址、数据总线,但选通片外RAM的信号为RD和WE,选通片外ROM的信号是PSEN • 位操作能力:片内RAM中的20H ~ 2FH及SFR中的位地址;有专门的位操作指令 • 堆栈区:复位时SP = 07H,可任意设置到其他地址
51单片机时序 • CPU是一个复杂的同步时序电路,在时钟脉冲推动下工作。 • 执行指令时,CPU先从程序存储器中取出指令码,并译码,然后由时序部件产生一系列控制信号去完成指令的执行。这些控制信号在时间上的相互关系就是CPU时序。 • 标度时序信号的尺度有: • 时钟周期:时钟的震荡周期,是单片机时序中的最小单位 • 机器周期:51的1个机器周期固定为12个时钟周期 • 状态(S):每个机器周期分为6个状态(S1~S6) • 节拍(P):每个状态分为P1和P2两个节拍 • 指令周期:执行一条指令所需的时间 1个机器周期的12个时钟周期可表示为S1P1,S1P2,S2P1,……,S6P2 51单片机分为单周期指令、双周期指令和四周期指令 只有乘法和除法两条指令为四周期,其余均为单周期和双周期
指令时序 • 以采用12MHz晶振为例 • 1个时钟周期为? • 1/12 us • 1个机器周期为? • 1 us • 1个状态为? • 1/6 us • 1个节拍为 • 1/12us • NOP为单周期指令,耗时? • 1 us • DJNZ为双周期指令,耗时? • 2 us
小知识:衡量CPU运算速度 • MIPS( Million Instruments per Second)即每秒能执行多少百万条指令,是衡量CPU速度的重要指标之一。
AT89S51引脚 • 电源引脚(2): • VCC • GND • 控制引脚(6): • ALE:地址锁存允许,平时输出1/6时钟频率的方波 • EA:外部程序存储器访问允许 • PSEN:片外ROM选通,执行MOVC时自动产生一个负脉冲来选通片外ROM • RST:复位维持2个机器周期以上高电平,使单片机复位 • XTAL1/2:时钟输入/输出
AT89S51引脚 • 端口(32): • P0.7~P0.0: • 输入输出端口0 • 片外存储器地址总线低8位 • 片外存储器数据总线 • P1.7~P1.0: • 输入输出端口1 • P2.7~P2.0: • 输入输出端口2 • 片外存储器地址总线高8位 • P3.7~P3.0: • 输入输出端口3 • 外围部件信号线:串口收/发,外部中断输入,计数器计数输入,外部RAM读写选通
AT89S51最小系统设计 • 以单片机为主、外围电路为辅组成的系统称为单片机系统。 • 最少外围电路组成、可使单片机工作的系统,称为单片机最小系统 • 最小系统包括: • 电源 • 复位 • 时钟 • ISP(可选)
电源及复位电路 • AT89S51工作电压4.0~5.5V,最大6.6V。 • 工作在12MHz时,电流25mA。 • 可使用7805供电。 • 采用阻容复位电路,RST维持2个机器周期以上高电平即可。 • 右图上电时RST的高电平时间? • 想增加按键复位,按键加在哪?
单片机的复位源 • 上电复位 POR • 欠压复位 BOR:当电源电压低于某规定值时,单片机复位;当恢复到规定值时,启动欠压定时器,定时时间到时,欠压复位结束。BOR的作用是当电源低于某值时,停止单片机运行,以免造成运行错误或输出不确定电平,使外围电路工作异常。 • 外部复位:由单片机复位引脚的电平变化引起的复位,据此可以进行人工复位。 • 看门狗定时器复位 WDT:看门狗用于监测程序的运行,一旦程序跑飞、死锁,就不能定时清零看门狗定时器(即不能及时喂狗),则看门狗定时器产生溢出,引起单片机复位。 • AT89S51可进行外部复位和看门狗定时器复位。 • 对于没有欠压复位的单片机,为保证可靠性,需要外接专用复位芯片。
时钟电路 • X1和X2分别是内部用于构成振荡器的反相放大器的输入/输出端 • 反相放大器与晶体、电容共同构成自激振荡电路 • 电容值的选取 • 电容兼作去耦,不能太小 • 电容值过大,则振荡器启动太慢 • 典型值为30pF±10pF • 正常情况下,X2脚输出一个平滑的正弦波 • AT89S51最高工作频率33MHz
单片机程序的烧写 • 并行编程:使用专用的编程器,需要将芯片从电路板上取下,放到编程器插座中进行烧写。 • 写入速度快 • 高档烧写器可对多种芯片进行编程 • 价格昂贵 • 必须脱离目标电路板进行编程
AT89S51的ISP • ISP方式:在系统编程。无需将芯片从电路板上取下,只需在电路板上保留编程接口,即可将程序以串行方式写入单片机。 • 单片机中事先固化ISP程序 • PC与单片机之间连接用于缓冲或电平变换的简易电缆 • PC上运行控制烧写的软件
单片机系统开发流程 • 分析需求,确定方案 系统框架、器件选型、资源分配 …… • 设计、制作硬件电路 Protel,制板,测试 • 程序开发 Keil/IAR/Medwin,编译,链接,软件仿真 • 软、硬件联合调试 ISP,硬件仿真器
C51语言程序设计 创新实验学院 杜 猛
概述 • 单片机程序可以使用汇编语言或C语言编写。 • 汇编语言执行效率高,但语法晦涩,可读性差,调试、维护困难,可移植性差。 • C语言语法简洁,结构清晰,开发调试容易得多,而且也可以直接操作硬件,可移植性好,目前绝大多数单片机程序使用C语言开发。 • 在一些对速度、代码大小有苛刻要求的关键部分,可将汇编程序嵌入到C程序中。 • C51语言是C语言在8051系列单片机上的实现,使用特定的编译器(Franklin/Keil C),抛弃C语言中不适合51的一些特性,而加入对51单片机的“本地化”适应。 • 学习单片机技术,必须掌握C51语言程序设计,及Keil软件的使用。
单片机软件开发流程 • 创建一个项目 • 从器件数据库中选择目标芯片,并配置开发环境的相关设置 • 创建C或汇编源程序 • 构造(Build)应用 • 编译/汇编 • 链接 • 调试构造好的应用
Keil uVision3 IDE • Keil uVision3是一个集成开发环境,它将项目管理、源代码编辑和程序调试等组合在一个功能强大的环境中。 • 使用uVision3创建源文件,并把它们组织到一个目标应用项目中,IDE可以自动编译、汇编和链接应用。 • 代码编辑器:编辑源代码文件,支持语法高亮、自动缩进等特性。 • Cx51 国际标准优化C交叉编译器:从C源代码产生可重定位的目标模块。Keil Cx51完全遵照ANSI C语言标准,支持C语言所有标准特征。另外,还增加了可以直接支持8051结构的特征。(.c/.c51 -> .obj) • Ax51 宏汇编器:从汇编源代码产生可重定位的目标模块。Keil Ax51支持8051及其派生产品的所有指令集。(.asm/.a51 -> .obj)
Keil uVision3 IDE • LIB51 库管理器:由编译器和汇编器创建的目标文件生成目标库。 (.obj -> .lib) • BL51 链接器/定位器:组合由Cx51和Ax51产生的可重定位目标模块,以及库中的目标模块,生成绝对目标模块(无扩展名或.abs)。绝对目标文件可以用于: • 编程EPROM或其他存储器件 • 由uVision3调试器进行调试和模拟 • 使用在线仿真器进行程序调试 • OH51 目标文件至HEX格式转换器:从绝对目标文件生成Intel HEX文件,用于写入单片机。(.hex)
Keil uVision3 IDE • 调试器:进行快速、可靠的程序调试。内置的高速模拟器能模拟整个8051系统,包括片内外设。当从器件数据库中选择器件时,会自动配置该器件属性。Keil支持: • 软件仿真:纯粹的用调试器模拟程序的运行情况 • 硬件仿真:将MON51监控代码下载到目标系统,调试器通过Monitor-51与MON51进行通信,设置、监控硬件状态,实现硬件调试 • RTX51实时操作系统:针对8051系列单片机的一个多任务操作系统内核。简化了对时间关键事件进行快速反应的复杂应用的系统设计、编程和调试。
C51的特殊关键字 • 针对8051系列单片机的结构特点,C51语言对标准C进行了扩展,新增13个关键字。 • 存储相关: • 新数据类型:bit sbit sfr sfr16 • 存储类型:data bdata idata pdata xdata code • 函数相关: • interrupt using reentrant
数据类型 • 掌握数据类型,主要是掌握每种类型数据所占长度和取值范围。 • 相同的数据类型,在不同的体系结构上所占长度不一定相同。 • 例如,在x86 CPU上,int占4 bytes,而在8051上仅占2 bytes。