




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理与应用本文由ruyunshui_rys贡献 ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 单片机原理与应用 主 讲:王晓荣 Email: POPO: njwsir TEL : 83587368 要求 1. 2. 3. 4. 课堂上要记笔记 课前提前10分钟进教室 缺课需有请假条 课堂上禁止小声讲话 参考书 李广弟 单片机基础北航出版社 求是科技 单片机典型模块设计实例导航 人民邮电出版社 PROTEL相关书籍 C51相关书籍 1 单片机概述 1.1什么叫单片机 ? 什么叫单片机 英文解释:SCMC(Single Chip MicroComputer) 中文解释:一个单片的微型计算机 (CPU、内存、硬盘、主板等) 1.2单片机的特点 单片机的特点 体积小,价格低,开发成本低 容量小,速度慢 想想看:为什么8位、12M的单片机20多 年来还没有被淘汰? 1.3单片机的应用 单片机的应用 1.4单片机的种类 单片机的种类 生产单片机的公司很多: Motorola公司、 Intel公司、Atmel公司、Philips公司等 每个公司生产的单片机又有很多型号 但很多种类的单片机采用相同的内核 内核相同的单片机软硬件设计方法类似 以MCS-51为内核的单片机全球市场占有量 约为54 ;国内市场占有量约为80 ; 1.5单片机系统设计 单片机系统设计 硬件设计 画电路图 PCB板 硬件电路板 软件设计 汇编语言设计(基础;同微机原理中的学的汇编语言不 同;MCS-51的汇编共111条指令P70) C语言设计(常用;同标准C语言类似但不完全相同) 1.6实例:用8051实现发光二极管的闪烁 实例: 实例 实现发光二极管的闪烁 1.6.1硬件 硬件 89c51(引脚数;引脚标号;电源引脚) 时钟电路(通用电路;4M-12M) 复位电路(通用电路;原理;RESET键) EA引脚(为“1”,则从内部ROM开始执行 程序) 发光二极管(驱动能力问题) 1.6.2软件 软件 LOOP: SETB LCALL CLR LCALL AJMP MOV MOV DJNZ DJNZ RET P1.0 DELAY P1.0 DELAY LOOP R7, #50H R6, #0e0H R6, D2 R7, D1 DELAY: D1: D2: END 1.6.3其它 其它 编程环境(如E6000) ROM;EPROM;FLASH (编程器) 仿真器 作业 1. 自学单片机概述 2. 8051、80C51、89C51的区别是? 3. 如果采用片内ROM,8051中的/E/A引脚 如何接? 4. 民用级、工业级、军用级的单片机温度范围 是? 5. 单片机的英文简称 6. 用8051实现两个发光二极管轮流发光(硬 件图及汇编程序) 2 单片机芯片的硬件结构 2.1单片机的结构框图 CPU RAM ROM C/T C/T 2.1.1CPU 读取指令、执行指令 2.1.2 256B的RAM 内部RAM共有256个字节(00H0FFH)。 可分为5个区域 通用寄存器区(00H1FH) 位寻址区(20H2FH、80H 、88H 、90H 、 98H 、0A0H 、0A8H 、0B0H 、0B8H 、 0D0H 、0E0H 、0F0H ) 用户RAM区(通常为20H7FH) 专用寄存器区(80H0FFH;仅使用了其中的23 个单元) 堆栈区(自定7FH) 通用寄存器区(00H-1FH) 通用寄存器区 32个存储单元:R0-R7,共4组 哪些指令与通用寄存器区有关?(举例) 如何改变寄存器的组别? (后面会讲到) 用户RAM区(通常为 用户 区 通常为20H-7FH) 通常为 哪些指令与用户 用户RAM区有关? (举例) 用户 区 专用寄存器区(80H-0FFH) 专用寄存器区 共128个单元,但只利用了23个单元,每 个单元都有专门的用途 我们把有专门用途的存储单元叫做专用寄存 器 (参见P21表;共22个) 指令同用户RAM区的指令 介绍几个专用寄存器 程序计数器PC (占2个存储单元) 在专用寄存器区,但没有单元地址 MOV PC,0FFH 1.6例程序代码执行全过程 * MCS-51内核(系列)的单片机只能扩展 64k的ROM 累加器A (0E0H) 哪些指令与A有关? ADD 20H, 30H MOV A, 20H ADD A, 30H MOV 20H, A 程序状态字PSW (0D0H) 位序 位标志 PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0 CY AC F0 RS1 RS2 OV / P CY: 进位标志(自动变化);位累加器 RS1、RS2: 寄存器组选择位 问:如何改变寄存器的组别? 哪些指令与PSW有关? 位寻址区(20H-2FH、部分专用寄存器) 位寻址区 哪些指令与位寻址区有关? CLR 20H 如果将2BH.3位置位,用什么指令? 答:SETB 5BH 如果将3BH.3位置位,用什么指令? 答:MOV A, 3BH ORL A, #08H MOV 3BH, A 作业 1. 2. 3. 4. 内部RAM可分为哪5个区域? CPU的作用是? 单片机复位时,(PC)=? 标出1.6例的每一条语句执行后的PC值。 堆栈区(自定7FH) 堆栈区 堆栈的用途:子程序或中断程序调用时保护 断点(自动)和保护现场 SP工作原理*(举例) 片外RAM(顺便介绍) 片外 (顺便介绍) 如果片内RAM不够,最多可另外扩展64K 的外部RAM 片内RAM和片外RAM地址可重叠(画图) MOV A,30H 是将片内RAM还是片外RAM 中的数据读到A? MOV、MOVX的区别 如何读取片外RAM的内容?* 2.1.3 4KB的片内ROM及外部ROM 作用:存放程序和原始数据 如何读取程序?(前面已经介绍) 如何存放原始数据?(举例) 读取原始数据的指令是? ROM空间分配图* 不提倡片内ROM和片外ROM混用。 如何读取原始数据?(举例) EQU #50H ;顺便介绍伪指令 AJMP MAIN ;原因以后讲 ORG 0030H MAIN: MOV SP, #60H MOV A, DATA ORG 1000H TAB: DB 0C0H, 0F9H, 0A4H DB 90H, 39H, 44H ORG 1100H TAB1: DW 0ABCDH, 3333H, 2222H DW 5555H, 5555H, 7777H END TAB2: DB 0ABH, 39H DATA 2.1.4 2个定时 计数器 个定时/计数器 个定时 实现定时有两种:软件定时和硬件定时 1.6例中的延时子程序为软件定时 用片内定时/计数器定时为硬件定时 如何实现硬件定时以后详细讲 2.1.5 并口 4个并口(P0、P1、P2、P3) 4个并口都可以作为通用I/O口使用 P1口作输入口使用时,应先写“1” 如何读取P1.0引脚(或P1口)的数据? 答: SETB P1.0 MOV C, P1.0 P0口 1.通用I/O口 2.数据线() 3.低8位地址线() 第1功能不能同第2、3功能同时使用 P1口 通用I/O口 P2口 通用I/O口 高8位地址线() 第1功能不能同第2功能同时使用 P3口 通用I/O口 P3.0、P3.1:(串口作通讯用;自学) P3.2 :外部中断0申请;P3.3 :外部中断1 申请(5个中断) P3.4:T0计数输入;P3.5 :T1计数输入(定 时器和计数器) P3.6 (/W/R): 外部RAM写选通(简单介绍) P3.7 (/R/D): 外部RAM读选通(简单介绍) 2.2 时序 时钟电路:通用 晶振可选4M-12M(常用:6M和12M) 执行一条指令要多长时间? 1-4个机器周期 一个机器周期等于晶振的12个振荡周期 晶振为6M时,执行指令MOV R7, 50H 需多长时间?1.6例中软件延时多长时间? 2.3 信号引脚 共40个引脚 并口(32)电源(2)晶振(2) RST/E/A ALE+/P/S/E/N ALE:地址锁存信号;接锁存器 /P/S/E/N:取指信号(/W/R、/R/D) 作业1 作业 1. 某程序中出现MOV SP, #60H语句,请 问该语句的作用是? 2. 简述子程序调用时,堆栈区是如何工作的? 3. 单片机复位时,(SP)=? 4. 按要求预习第三章和第四章 5. 简述MOV、MOVX、MOVC指令的区别 6. 编程将片内RAM 30H单元开始的15个字节 的数据传送到片外RAM3000H开始的单元 中去。 作业2 作业 1. 4个并口除作为通用I/O口之外,还有什么 其他功能? 2. 如果使用12M的晶振,请编一个延时子程 序,使延时时间为40ms。 3. /P/S/E/N、/W/R、/R/D这3个引脚的功 能是? 4. 89C51共有多少个引脚?多少个并口?并口 的位数是? 3 4 指令系统 汇编语言 31 指令 ADD与ADDC 例 MOV A,#0C0H ADD A,#60H (A)=? (CY)=? 答:20H ;1 例 例 SETB MOV ADD ADDC (A)=? C A, 50H A, 50H A, 50H (CY)=? 答:0F0H ;0 INC 例:MOV A,#33H INC A (A) = ? (CY) = ? 例:MOV A,#0FFH INC A (A) = ? (CY) = ? 例:MOV A,#00H DEC A (A) = ? (CY) = ? DA A 什么叫BCD码?什么叫压缩BCD码? (十 进制) 例:如果30H内容为:10101000B,问A 中值是多少? 压缩BCD码是多少? 执行指令MOV 31H, #50H 后,31H的 压缩BCD码是多少? BCD码的主要用途是为了显示方便 如何进行BCD码的相加呢? DA A (续1) 问:MOV A, MOV R1, ADD A, (A)=? 问:MOV A, MOV R1, ADD A, DA A (A)=? #50H #50H R1 #50H #50H R1 DA A (续2) 例:将30H、31H中BCD码相加结果存在 30H、31H中。 答: MOV A, 30H ADD A, 31H DA A MOV 31H,#00H ADDC 31H ,#00H AJMP、SLMP、LJMP、JMP的区别 直接转移指令(不返回) AJMP addr11:只能在2K的页面内转移 SJMP rel:只能在该语句位置的128 127个字节范围内转移(P161) LJMP addr16:无条件转移 实际编程中, addr11、 addr16、 rel统 一用标号代替 JMP A+DPTR:无条件转移;这条语句专 门为实现多分支程序 多分支程序设计的(例4.5) 多分支程序 ACALL、 LCALL的区别 子程序调用指令 (必须返回) ACALL addr11:只能在2K的页面内调用 子程序 LCALL addr16:无条件调用子程序 CJNE 、 DJNZ CJNE:用于数值比较;对CY有影响(左边 小,CY=“1”);P86例题 DJNZ:用于实现循环 作业 将R0中的内容乘以10(积256) 求片外RAM3000H、3001H单元数据的平 均值,并传送给3002H单元 R1中存有一BCD码,请编程将它转换成 ASCII码。 编程注意事项 1. 汇编程序设计必须对硬件结构有详细了解。 2. 主程序末尾必须加死循环语句。(原因) 如:SJMP $ (HERE: SJMP HERE)等 3. 多看,多练 课堂练习1 2000H(ROM): 3FH,06H,5BH,4FH 执行程序: CLR A INC A MOV DPTR, #2000H MOVC A, A+DPTR CPL A 问:(A)=? 课堂练习2 MOV 60H, #2BH MOV 61H, #61H CLR C MOV A, #91H SUBB A, 60H ADD A, 61H DA A (A)=? 课堂练习3 MOV A, #3BH, ANL A, #9EH, (A)=? (CY)=? 课堂练习4 下面哪条指令在8051单片机的/W/R引脚产生 低电平信号? (A) MOVX A, DPTR (B) MOVC A, A+PC (C) MOVC A, A+ DPTR (D) MOVX DPTR, A 课堂练习5(判断正误) 将片外RAM中3057单元的内容传送给A 1. MOVX A, 3057H 2. MOVX DPTR, #3057H MOVX A, DPTR 将PSW内容读入A PSW A 3. MOV A, PSW 4. MOV A, 0D0H 5. MOV R0, #0D0H MOV A,R0 6. PUSH PSW POP ACC 课堂练习6 将片内RAM21H、20H单元中的3位压缩 BCD码,转换成二进制数,其结果仍存放 于21H、20H中。 作业 片内RAM50H、51H中有一个2B的二进制 数,高位在前,低位在后,请编程将其求补 并存回原单元中去。 片内RAM30H开始有10个1B的二进制数, 求它们的和,并将结果存于40H、41H中。 5 编程环境介绍 文件和项目 汇编语言的文件名后缀为:*.asm 仿真器设置 项目由仿真器设置、文件和包含文件组成 编译 主要用来检查语法错误 注意: 仿真器设置 中文字符 确保关闭旧项目 执行 全速执行 暂停 复位 执行到光标处 跟踪 单步 设置/取消断点 窗口 项目窗口 信息窗口 数据窗口 DATA 窗口 CODE窗口 XDATA窗口 6 单片机存储器扩展 6.1 RAM扩展 内部RAM空间不够,要外接RAM 例:外接一片UT6264 芯片资料可以访问网站: WWW.21IC.COM 电路图 思考:读写外部RAM时,硬件工作原理 思考:地址范围问题 线选电路和译码电路 例:外接两片UT6264 6.2 ROM扩展 例:外接一片M2764A 例:外接两片M2764A 6.3 ROM、RAM扩展 例:外接一片M2764A 和一片UT6264 作业 课本P135问答题1 课本P135问答题3(其中1片改为2片) 7 单片机的中断与定时系统 7.1 89C51的中断 89C51有5个中断:2个外部中断、2个定 时/计数中断、1个串行中断 7.2 外部中断 7.2.1 举例:按键控制发光二极管的亮灭 硬件:在1.6例子的基础上在P3.2引脚增加一 个按键电路。 软件 软件 LJMP ORG 0003H LJMP ORG 0030H MAIN: INT0 ;?2 ;?3 ;?4 ;?5 MAIN ;?1 INT0: END SETB IT0 SETB EA SETB EX0 SJMP $ CLR P1.0 RET I 7.2.2 外部中断申请信号的引脚 /I/N/T/0(P3.2) /I/N/T/1 (P3.3) 7.2.3 外部中断申请信号的种类 脉冲信号(下降沿有效) 电平信号(低电平有效) ;解释 信号种类需要告知单片机。 如何告知单片机呢? ;SETB IT0 专用寄存器:TCON 位序 位标志 8FH TF1 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0 单元地址:88H ;P22 位地址:88H8FH ;P23 IT0、IT1:”0” 电平触发(低电平有效) ”1” 脉冲触发(下降沿有效) 默认值是”0” IE0、IE1:有中断请求时,自动置”1” 中断响应后, 自动清”0” 专用寄存器:IE 位序 位标志 0AFH EA 0AEH / 0ADH / 0ACH ES 0ABH ET1 0AAH EX1 0A9H ET0 0A8H EX0 单元地址:0A8H ;P22 位地址:0A8H0AFH ;P23 EA:总中断开关 ; SETB EA 其余:分中断开关 ; SETB EX0 7.2.4 外部中断响应 条件1:IE0(IE1)为“1” 条件2:相应中断开关打开 外部中断响应:自动执行语句 LCALL XXXXH XXXXH: 0003H ;外部中断0 0013H ;外部中断1 中断响应后, IE0(IE1)清零 7.2.5 外部中断响应的全过程 7.2.6 电平触发的问题 低电平触发时间过长,结果会怎样? 如何解决? 硬件: 加D触发器 ;P145 D触发器原理: 当CP有正跳变时,Q=D 其余,Q不变 当SD(直接置位端)有负跳变时,Q=1 软件:在中断程序开头加:SETB P1.1 CPL P1.1 7.3 中断优先级 如果INT0和/INT1同时有申请信号,怎么办? 自动将IE0、IE1都置“1” 如果两个外部中断开关都打开,如何响应中断? 必须考虑中断优先级 专用寄存器:IP 位序 位标志 0BFH / 0BEH / 0BDH / 0BCH PS 0BBH PT1 0BAH PX1 0B9H PT0 0B8H PX0 单元地址:0B8H ;P22 位地址:0B8H0BFH ;P23 优先顺序:从右到左 如果IP相应位置“1”: 则优先响应 作业 描述外部中断响应的全过程 利用8个发光二极管记录按键按下次数。(忽 略按键抖动问题;实验四) 7.3 定时计数中断 7.3.1 举例:发光二极管的每隔0.1秒定时 亮灭 硬件:同1.6例 软件: 见7.3.1例 7.3.2 定时计数器的工作方式 定时器和计数器 4种工作方式(0、1、2、3) 如何设定定时计数器及其工作方式? 专用寄存器:TMOD 位序 位标志 7 GATE 6 C/T 5 M1 4 M0 3 GATE 2 C/T 1 M1 0 M0 单元地址:89H ;P22 不能进行位寻址 ;P23 C/T :定时计数选择 M0、M1:工作方式选择 GATE:启动方式设定(”1”:外部中断启 动;”0”:软件启动;软件启动比较常见, TCON中的TR1、TR0 ) 7.3.3 工作方式1 再学几个专用寄存器:TL0(8AH)、 TL1(8BH)、TH0(8CH)、TH1(8DH) TL0、TH0 (TL1、TH1)组成一个16位 的大存储单元 如果定时计数器被启动,该存储单元内容自 动加1(定时器每隔1个机器周期;计数器 每数1个脉冲) 该存储单元可以赋初值 7.3.3 工作方式1 (续) 如果该存储单元发生溢出,自动改变TCON中 的TF0(TF1 ) 如果满足 条件1 TF0(TF1)为“1” 条件2:相应中断开关 则响应中断(自动执行语句 LCALL XXXXH) XXXXH: 000BH;定时计数中断0 001BH;定时计数中断1 响应中断后,硬件自动将TCON中的TF0 (TF1 )清零 定时时间确定 设机器周期为Tp, 定时时间为T, 定时初值 为n T=Tp(216-n) 问题 存储单元溢出后的值是多少? 解决 工作方式1的解决办法是:在中断程序中再 次赋初值 定时计数器工作方式1的工作过程 作业 定时中断用到哪些专用寄存器? 描述定时计数器工作方式1中断响应全过程 利用计数器实现:每当按键按下10次时,发 光二极管亮灭变化。(忽略按键抖动问题;实 验五) 7.3.4 工作方式2 具有自动重新加载功能 TL0(TL1)作计数器 TH0(TH1)作预置寄存器 溢出后, TH0(TH1)自动加载TL0(TL1) 缺点:8位 问: 当晶振为6M时,方式1和方式2最大定 时时间分别是? 例题 如果将7.3.1例题中的定时器改用方式2, 程序应如何修改? 7.4 查询方式程序设计 将7.3.1例改为查询方式 缺点:占用主程序 7.5 综合举例 课本P158例 改为查询方式,如何改? 缺点:定时不准确 作业 编程实现(6M):P1.0口输出矩形波,其 中高电平宽0.2s,低电平宽0.8us 8 单片机 单片机I/O口的扩展及应用 口的扩展及应用 8.1 I/O口为什么需要扩展 口为什么需要扩展 I/O口数量不够 增加驱动能力 8.2 常用I/O口扩展芯片种类 输入口扩展芯片 输出口扩展芯片 可编程I/O口扩展芯片 8.2 常用I/O口扩展芯片 74LS244、 74LS245 、74LS373、74LS377、 8155、8255、8279等 8.2.1 74LS244 输入口扩展芯片(接P0口) P175图7.9 16个引脚(8822) 八三态(3S)缓冲器 MCS51采用统一编址方式 举例 很多芯片内部集成有74LS244,如 ADC0809(P250
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF 2317-2025光湿热老化试验箱校准规范
- 2025年浙江省生态环境厅部分直属事业单位招聘7人(第二批)考前自测高频考点模拟试题附答案详解(模拟题)
- 2025北京十一未来城学校春季招聘模拟试卷及1套参考答案详解
- 广汽本田安全驾驶培训课件
- 安全培训教室设备要求课件
- 2025年超深井用高抗挤毁石油管钢项目建议书
- 2025年潍坊职业学院高层次高技能人才引进(招聘)(10人)考前自测高频考点模拟试题及完整答案详解一套
- 山西省【中职专业高考】2025年中职高考对口升学(理论考试)真题卷【轻工纺织大类】模拟练习
- 安全培训教学存在的不足
- 2025年公路旅客运输服务项目发展计划
- 工业污水处理基础设施建设项目可行性研究报告
- 2025 种植护理术中配合技巧课件
- 《组织行为学》课件-第1章 组织行为学概述
- 高炉大修总结课件
- 调动员工积极性工会课件
- 露天煤矿边坡课件
- 龙门吊吊装施工方案
- 单侧双通道UBE手术
- 汽车发动机构造课件
- 脊柱解剖图(颈胸腰椎)医学课件医学课件
- 盾构关键参数计算
评论
0/150
提交评论