单片机ret和reti的区别end结尾的区别

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
感谢爱我和关心我的老师们、亲人和朋友,也深深祝愿来到这里的你一生幸福!
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(4302)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_082064',
blogTitle:'单片机',
blogAbstract:'&
80C31单片机,它是8位高性能单片机。属于标准的MCS-51的HCMOS产品。它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,标准MCS-51单片机的体系结构和指令系统。 80C31内置中央处理单元、128字节内部数据存储器RAM、32个双向输入/输出(I/O)口、2个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。但80C31片内并无程序存储器,需外接ROM。 此外,80C31还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:4,
publishTime:3,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'感谢爱我和关心我的老师们、亲人和朋友,也深深祝愿来到这里的你一生幸福!',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}单片机实验指导书
DTHS-A 互 动 式 实 验 教 学 平 台《单片机原理及应用》 实验指导书张鑫张岩编山东工商学院 信息与电子工程学院 前言单片机原理及应用实验指导书, 是针对自动化、 电气工程及其自动化、 电子信息工程、 电子信息科学与技术、电子科学与技术、通信工程及计算机科学与技术等专业的学生学习 《单片机原理及应用课程》 而编写的, 主要用于互动式单片机教学中实践环节的参考教材。 单片机及相关的应用技术是近代超大规模集成电路技术与计算机技术发展的产物,已 经深入到国民经济与人民生活的各个领域。 《单片机原理及应用》课程已经被几乎所有工 科院校中仪器仪表、测控技术、光机电一体化、电子、通信、计算机等类专业列为本科主 干专业课程,是培养现代电子技术应用类专业人才的重要技术课程之一。 单片机实践教学是学习单片机理论的重要实践环节。通过边学习理论课程边实践的教 学模式,使学生在课堂理论课学习的基础上,进一步加深对理论知识的理解,学习、掌握 单片机的硬件扩展技术、软件编程技术、以及典型应用系统设计技术等相关的实践技术, 增强感性认识,促进认识的深化,培养学生科学的分析能力、实践创新能力,使学生掌握 单片机应用系统开发的基本方法与基本技能,培养学生严肃认真和实事求是的科学作风, 锻炼科学实验的能力。为今后在相关领域中从事与单片机有关的设计、开发、应用等工作 打下良好的基础。 本实验指导书是根据《单片机原理及应用》课程实验教学大纲的要求,以及我校单片 机实验开发系统的情况由张鑫、张岩老师编写。山东工商学院 信息与电子工程学院 2014 年 1 月I 目第一章1.1 1.2 1.3 1.4录系统概述..................................................................................................... 1上部扩充区(简称上板) .......................................................................................... 1 中部核心控制区(简称中板) .................................................................................. 2 下部常规实验区(简称下板) .................................................................................. 3 MCS-51 集成开发环境................................................................................................ 7第二章单片机及其接口实验 .............................................................................. 12实验一 系统认识实验 ..................................................................................................... 12 实验二 程序设计实验 ..................................................................................................... 14 实验三 74LS138 译码实验 .............................................................................................. 15 实验四 P1 口输入/输出实验 1(控制发光二极管亮灭) ............................................ 17 实验五 P1 口输入/输出实验 2(控制转向灯) ............................................................ 19 实验六 P3.3 口输入/P 1 口输出实验 .............................................................................. 22 实验七 MCS-51 单片机中断系统实验 ........................................................................... 25 实验八 MCS-51 单片机内部定时器/计数器实验 ....................................................... 27 实验九 MCS-51 单片机串行口并/串、串/并转换实验 ........................................... 29 实验十 MCS-51 单片机串行口双机通信实验 ............................................................... 31 实验十一 MCS-51 单片机与 PC 通信实验 .................................................................... 33 实验十二 外部数据存储器扩展实验 ............................................................................. 39 实验十三 外部 I/O 口扩展实验 ...................................................................................... 41 实验十四 工业顺序控制实验 ......................................................................................... 43 实验十五 8255 并行口输出方波实验 ........................................................................... 47 实验十六 8255 并行口输入/输出实验 ........................................................................... 49 实验十七 8255 并行口模拟交通灯实验......................................................................... 51 实验十八 8259 中断控制实验 ........................................................................................ 54 实验十九 8253 定时器/计数器实验 ............................................................................ 56 实验二十 DS1302 实时时钟实验 ................................................................................... 58 实验二十一 X5045P 看门狗实验 ................................................................................... 67 实验二十二 D/A 数模转换实验...................................................................................... 69 实验二十三 A/D 模数转换实验...................................................................................... 71 实验二十四 8255 键盘显示实验 .................................................................................... 75 实验二十五 LCD128× 64 液晶显示实验 ........................................................................ 81 实验二十六 微型打印机实验 ......................................................................................... 88 实验二十七 继电器控制实验 ......................................................................................... 90 实验二十八 步进电机控制实验 ..................................................................................... 92 实验二十九 直流电机调速实验 ..................................................................................... 94 实验三十 DS18B20 温度闭环控制实验 ......................................................................... 96II 第一章系统概述DTHS-A 是由耐思(NICE)科技有限公司设计制造的 MCS-51 单片机系统通用型实 验台,它以常规实验设备的开放式实验环境为基础,增加了在线检测模式,在自定义环 节融入轨迹捕捉,影射和展现实验电路搭接的全过程,为互动教学活动的展开创造了一 个较为完整与规范的实践平台。 DTHS-A 实验台由三个部分组成:上部为实验台扩充区,适用于课程设计及实验电 路与模块的扩展;中部为实验台核心控制区,主要由通用仿真器、在线控制器、轨迹捕 捉器及机电与单总线等实验模块组成;下部为实验台常规实验区,适用于基础性教学实 践活动。 DTHS-A 实验台支持 NICE 自主研发的集成开发环境, 并与 KEIL/MPLAB/AVRStudio 等主流开发环境无缝结合。1.1 上部扩充区(简称上板)1) 直流电压表 上板右上角配有数字式直流电压表,其量程为±20V;电压表左测的钮子开关用于 选择电压表的检测来源。 ① 信号源测量 该钮子开关拨向 “外” 方向时, 位于电压表下方的红孔为电压表输入端 (+20V~-20V) , 其黑孔为电压表直流地端(非负极性输入端) ,该端与本工位的“GND”己连接互通, 仅适用于实验台二工位之间 GND 的并端,不允许加载负极性或与“GND”相冲突的信 号源; ② 内置源监视 该钮子开关拨向“内”方向时,由位于钮子开关上方的 2×3 波段开关选择与确认当 前监视源。我们强调监视源的选择应在掉电方式下进行,即在关闭直流源的前提下才能 拨动波段开关选择当前监视源,否则会引发+5V、+12V、-12V 之间的瞬间短接,对低压 供电器件的损伤率极高,亦危及开关电源的寿命。 2) 微型打印机 上板偏左上方配有智能窗式针型打印机,位于钮子开关下方的双排八芯座为它的总 线口, “STB”孔为打印命令控制端, “BUSY”为打印机忙闲标志, “ERR”为打印机出 错标志。 3) 逻辑加密存储卡 存储卡正下方为该卡读写加密控制端,该卡左边为插卡口,该卡右边定义状态标志 指示。1 4) FPGA 扩展 上板右下方为 FPGA 逻辑控制器设计与实践区域,选用 Altera EPF10K10LC84-4 为 硬 布 线 控 制 器 , 配 有 下 载 口 , 用 符 合 Xilinx 标 准 的 下 载 电 缆 即 可 实 现 针 对 EPF10K10LC84-4 的逻辑设计与编程。 5) 扩充区 上板左下方为自行设计区域,该区域正下方为阻容件、晶体、三极管、二极管扩充 区,该区域左上方为门电路、运放等 IC-14 以下芯片及集成电阻的扩充区,该区域右上 方为 IC-40 以下集成器件扩充区。1.2 中部核心控制区(简称中板)1) CPU 单元 中板左上方为实验台 CPU 选择单元,目前可适配的 CPU 类型有 MCS-51/PIC 单片 机、以 8088 为内核的微机接口。 2) 总线接口 ① 数据总线:双向,来源于仿真器。当 CPU 单元挂 51 时,它是由 P0 口隔离驱动 后形成双向总线。 ② 地址总线:输出,来源于仿真器。当 CPU 单元挂 51 时,它的低八位由 P0 口驱 动锁存输出;它的高八位由 P2 口隔离驱动输出。 ③ 控制总线 ? RD:输出,来源于仿真器。当 CPU 单元挂 51 时为外部数据读,受 P3.7 控制。 ? WD:输出,来源于仿真器。当 CPU 单元挂 51 时为外部数据写,受 P3.6 控制。 ? ALE: 输出, 来源于仿真器。 当 CPU 单元挂 51 时为地址锁存, 受 51_ALE 控制。 ? RESET:复位输出,高电平有效,受仿真器复位电路控制。 ? MER:输出,来源于仿真器。当 CPU 单元挂 88 时为内存读,受 8088CPU 控制。 ? MEW: 输出, 来源于仿真器。 当 CPU 单元挂 88 时为内存写, 受 8088CPU 控制。 ? AEN:输入,总线出借控制。当 CPU 单元挂 88 时为 DMA 操作,受 8237_AEN 控制。 ? φ:时钟输出,当 CPU 单元挂 51 时,由 51CPU 第 18 脚提供。 3) 并行模块 ① LCD 液晶显示 其数据线与总线接口中的 D7~D0 己连接互通,总线连接定义为省缺项。位于 LCD 正下方的使能控制端“E” ,命令与数据选择端“R/S”及读写选择端“R/W”在自行设计 状态定义为实验连接项。 ② 8255 并行口 其数据线与仿真器中的 D7~D0 己连接互通。位于 8255 正右测的“CS”为 8255 选 通控制端。位于 LCD 正下方的 add1~add0 为 8255 地址端 A1~A0,位于下板“直流源指 示”上方的 RD、WR 为 8255 读写控制端,在自行定义状态它们为实验连接项。2 4) 单总线模块 单总线模块超越并行总线的寻址规则,局限于 I/O 端口寻址,不宜在线掌控,只能 工作在自定义状态,因此在单总线模块的设计与实现中实验连接项不可省缺。 5) 闭环控制 ① 直流电机 直流电机控制单元定义了“调速”与“测速”两个端口,其中调速端为电机启停。 正反转及转速控制端, 它加载的模拟量范围是 0~5V, 2.5V 时电机处停止状态, 大于 2.5V 启动电机正转, 小于 2.5V 启动电机反转, 该端达 5V 或 0V 时电机处正转或反转最高速。 至于测速端是电机当前状态与转速的反馈端,为电机按设置的参数恒定运作提供依据。 在自行设计状态该两个端口定义为实验连接项。 ② 温度控制 温度控制单元定义了“调温”与“测温”两个端口,其中调温端口由 5V 电源控制, 至于测温端口是当前温度传递端口,反馈温度参数,为加温与恒温提供依据。在自行设 计状态该两个端口定义为实验连接项。 6) 步进电机 步进电机控制单元设有四拍控制端口, 在自行设计状态该四端口定义为实验连接项。 7) 虚拟示波器 实验台提供了一个双通道简易示波器, 适用于电位及赫兹级低频信号的测量与观察。 8) 扁平链接口 中板下方设有五个扁平链接口, 其中二个 20 芯扁平口为检测口, 其余三个 8 芯扁平 口为地址与数据总线延伸接口。1.3 下部常规实验区(简称下板)1) 下板接口 ① 检测接口 下板上方二个 20 芯扁平口为检测口, “在线”态它为控制口,输出常规实验模块的 控制信号。在自定义状态它为状态口,反馈常规实验模块的控制信号。 ② 总线接口 下板上方三个 8 芯扁平口为地址与数据总线链接口,该三个接口是主控区(中板) 扩展寻址的桥梁,面向下板实验时必须连接。 2) 下板总线 ① 控制线 位于“直流源指示”上方的为下板自定义状态的公共控制总线,以下为它们的定义: ? CLR 下板区域[除控制,在自定义实验中连接中板 RESET 复位信号。 ? WR 下板区域写控制, 在自定义实验中连接中板控制总线单元 WR 写信号。 ? RD 下板区域读控制, 在自定义实验中连接中板控制总线单元 RD 读信号。 ? CLK 下板区域锁存控制,在自定义实验中连接中板 ALE 信号。3 ② 地址线 位于“存储器扩展单元”左下测的 ADD2~ADD0 为下板区域公共地址线,在自定义 实验中通常连接中板 A2~A0 。遇单模块实验可另行定义,例如 0809 A/D 转换中 ADD2~ADD0 用于选择通道,可改接中板地址总线单元 A2~A0。 ③ 译码器 位于“发光二极管显示单元”正下方的 138 译码器亦有二种定义途径, “在线”态实 验台赋于的定义是译码端口 CBA 与 A5~A3 相连,选通控制端口 G2A(低电平有效)由 A14 控制,当 A14 为零时,138 输出端 Y7~Y0 八中选一,有一个输出端为“0” ,其余输 出端为“1” 。它的寻址范围为 0~3FFFh,8000h~BFFFh。在自定义方式其选通与译码端 口呈悬浮态,属译码控制不可省缺的连接项。 3) 存储器扩展 位于下板右上角为“存储器扩展单元” ,它的地址与数据总线通过其上方的三个 8 芯扁平接口融入中板主控 CPU 的寻址范围,位于该单元左上测的 MR、MW 及 MCS 分 别为存储器读、写和选通控制端。自定义态属实验不可省缺的连接项。在线态由在线控 制器掌控,寻址范围为 0~0FFFh。存储器与 I/O 口处同一寻址空间,用相同的控制信号, 通常采用译码法分享数据寻址空间。 4) I/O 口扩展 ① 16×16 点阵 16×16 点阵位于“存储器扩展单元”正下方,它的数据总线通过 8 芯扁平接口(下 板 上 右 一 ) 与 中 板 总 线 单 元 的 D7~D0 连 接 互 通 , “存储器扩展单元”左下测的 ADD1~ADD0 定义行与列口地址。16×16S 为点阵写选通控制,自定义态属实验不可省 缺的连接项。在线态由在线控制器掌控,寻址范围为 0ECH~0EFH。 ② 键盘与 LED 显示器 实验台选用 8255 为并行键盘与 LED 显示接口,定义其 A 口为字形口,B 口为字位 与键扫口, PC2~PC0 为键入口。 位于并行键盘与显示扩展板左则的 8255CS 为 8255 选通 控制,它的数据总线通过 8 芯扁平接口(下板上右一)与中板总线单元的 D7~D0 连接互 通, “存储器扩展单元”左下测的 ADD1~ADD0 定义其地址线 A1~A0, “串并转换单元” 右边的 RD、WR 定义其读写控制信号,自定义态属实验不可省缺的连接项。在线态由在 线控制器掌控,寻址范围为 0DCH~0DFH。 ③ 简易 I/O 口 实验台选用 244 为简易 I/O 口缓冲输入器件,该单元“G”为读选通控制,自定义 态属实验不可省缺的连接项。该单元“PI7~PI0”为八位缓冲输入端口。 实验台选用 273 为简易 I/O 口锁存输出器件,该单元“CLK”为锁存触发端,自定 义态属实验不可省缺的连接项。该单元“PO7~PO0”为八位锁存输出端口。 ④ A/D 与 D/A 并行 A/D 转换器 ADC0809 位于“调模拟电压电位器”正下方, “SC/ALE”为锁通 道地址与启动 A/D 转换, “CLK”为 A/D 转换时钟, “OE”为 A/D 采样(读)选通, ADD1~ADD0 定义当前通道地址, “自定义”态属实验不可省缺的连接项, “在线”态由 在线控制器掌控, 寻址范围为 0E0H~0E7H, 另外 “EOC” 为 A/D 转换结束标志, IN7~IN04 为 A/D 转换通道。 并行 D/A 转换器 DAC0832 位于“A/D 转换单元”左边, “CS”为 D/A 转换器选通 控制, “WR”为 D/A 转换器启动控制, “自定义”态属实验不可省缺的连接项, “AOUT” 为 D/A 转换器输缍恕 ⑤ 串并转换 并转串 165 位于下板左上角,它的并行输入端口通过 8 芯扁平接口(下板上右一) 与中板总线单元的 D7~D0 连接互通, “SERI”与“QH”分别定义串行输 8 位移位寄 存器移入与移缥唬 “LOAD”为并行输入端口数据装载控制, “LOCK”为串行移位输 控制。 串转并 164 位于 165 正下方, “DATA”为串行数据输入端, “LOCK”为并行移位输 缈刂疲挥 164 下方以 H~A 顺序排列的“8 芯单排针”为 164 的并行输缈凇 ⑥ 定时计数器 8253 定时计数单元位于“串并转换”下方,它的总线口通过 8 芯扁平接口(下板上 右一)与中板总线单元的 D7~D0 连接互通, “CLK2~CLK0”为定时计数时钟输入端, “OUT2~OUT0”为可编程定时计数输缍恕S伞ADD1~ADD0”定义地址线 A1~A0, RD、WR 定义读写控制线, “8253CS”定义它的片选端。 ⑦ 串行通信 8251 串行通信单元位于“8253 定时计数单元”右测,它的总线口通过 8 芯扁平接口 (下板上右一)与中板总线单元的 D7~D0 连接互通, “CLK”与“T/RXC”为它的时钟 输入端, “RXD”与“TXD”为它的串行接收与发送端,由“ADD0”定义地址线 A0, RD、WR 定义读写控制线, “8251CS”定义它的片选端。 ⑧ 中断控制 8259 中断控制单元位于“8253 定时计数单元”下方,它的总线口通过 8 芯扁平接口 (下板上右一)与中板总线单元的 D7~D0 连接互通,IRQ7~IRQ0 为中断向量输入端, 位于“8251 串行通信单元”下测的“INT”与“INTA”分别为 8259 中断请求与中断向 量读控制,由“ADD0”定义地址线 A0,RD、WR 定义读写控制线,位于“8253CS” 右边的“8259CS”为它的片选端。 ⑨ PACK 扩展 “PACK 扩展单元”位于下板左上方,可选配 USB1.1、USB2.0、以太网 TCP/IP、 CAN-BUS 等接口扩展,本实验台把“RS485 远程通信”列为 PACK 扩展的标配模块。 5) 通用电路 ① 12 位电平指示 “12 位电平指示”位于下板中上方,L11~L0 为 12 个发光二极管驱动器输入端。低 电平点亮,高电平熄灭。 ② 9 位电平开关 “9 位电平开关”位于下板中下方,K8~K0 为逻辑电平开关输出端。开关处上方 其对应的孔端输出低电平“0” ,开关处下方时与其对应的孔端输出高电平“H” 。 ③ 单脉冲电路 “单脉冲电路”位于 138 译码器右测,由 AN 按钮与 RS 触发器构成单脉冲电路,5 鞍匆淮 AN 按钮,即可从两个插座上分别输出一个正脉冲“SP”及负脉冲“/SP” ,供 中断、清零、计数等实验使用。其电路如图 1.3.1 所示。图 1.3.1 单脉冲电路原理图④ 音频驱动电路 位于 AN 按钮左边的 LM386 为音频信号驱动器, 其下方为自锁式音频输出控制开关, 上方“VIN”为音频信号输入端,音频发生器位于“存储器扩展单元”6264 左边。 ⑤ 393 分频器 “393 分频器” 位于 “8251 串行通信单元” 右边, 该分频器[零端受下板 CLR 控制, 其输入频率由 4.9152MHz 晶体振荡源供给,分频器输缍 T0~T7 的频率分别为 2.4567MHz、1.2288MHz、614.4KHz、307.2KHz、153.6KHz、76.8KHz、38.4Hz、19.0Hz。 其电路如图 1.3.2 所示。图 1.3.2分频器电路原理图⑥ 继电器控制 “继电器控制”位于 D/A 转换器左上方,它的输入端“JIN”加载低电平“0”时, 继电器吸合,常开触点“JK”闭合,常闭触点“JB”断开, “JZ”为控制信号输入端。 ⑦ RS232 串行口 位于 138 译码器左测的是实验用 RS232 串行口,它的“TXD”和“RXD”分别为 TTL 电平级的串行发送与串行接收端。 ⑧ 电压调节器 在下板 A/D 转换上方。实验台提供二路 0~5V 模拟电压调节器,适用于 A/D 与 V/F 转换等对电压有调节需求的实验。6 ⑨ 逻辑门电路 在下板 138 译码器下方左右两测提供了“与” 、 “或” 、 “非”三种基本门电路,它们 之间的相互串接可形成自定义态实验所需的控制电路。 6) 实验扩充 ① 锁式扩展 在下板逻辑电平开关上方设有一个 IC-40 芯以下可编程器件的扩展单元,它既适用 于 I/O 接口器件的扩展, 亦可作为 CPU 的扩展区, 让学生设计一个简易的单片机控制器。 ② 转接单元 在下板逻辑电平开关上方左右两测设有两个“转接单元” ,构造了一个扁平八芯、单 排八芯及八位插孔之间的并行互通电路,以实现不同接口之间的相互转接。1.4 MCS-51 集成开发环境DTHS-A 实验台支持 NICE 自主研发的集成开发环境(IDE) 。 (1)打开实验设备后面的蓝色空气开关; (2)打开实验设备中板的直流电源开关; (3)进入 NICE 集成开发环境进行程序输入与调试。NICE 集成开发环境使用简介:(1)进入 NICE 集成开发环境 双击桌面上的集成开发环境图标,如图 1.4.1 所示。图 1.4.1IDE 图标 7 (2)设置串行通信口 双击桌面上的集成开发环境图标后,出现串行通信口设置界面。串行口默认为“串 口 1” ,波特率设置为 57600,如图 1.4.2 所示。点击确认按钮。进入 IDE 主界面,如图 1.4.3 所示。图 1.4.2 串行通信口设置图 1.4.3IDE 主界面(3)新建、保存文件 文件→新建,如图 1.4.4 所示。输入汇编语言程序文件,保存文件,保存文件类型 为汇编文件(*.ASM) 。保存文件路径为:E:\A51\。(在 E 盘应建立 A51 文件夹)8 图 1.4.4新建、保存文件设置界面(4)编辑图 1.4.5编辑界面(5)编译、连结源程序。编译无误后,装载程序运行。1.4.6编译、连结、装载程图序界面编译、连结、装载程序也可通过工具栏中的快捷图标实现。如图 1.4.7 所示。图 1.4.7编译、连结、装载程序快捷图标 9 (6)调试运行程序图 1.4.8调试运行界面(7)建立、打开、编辑工程界面图 1.4.9建立、打开、编辑工程界面(8)设置仿真模式、串行通信口界面 仿真模式包括硬件仿真、软件方针;串行通信口包括选择硬件串行通信口、设置串 行通信口波特率、重新连结等。如图 1.4.10 所示。图 1.4.10设置仿真模式、串行通信口界面(9)调试窗口、查看存储器内容、查看编译连结信息、示波器界面 视图菜单中包括调试窗口,可以查看变量、寄存器、存储器内容,事件跟踪窗口, 查看编译连结信息,逻辑示波器。如图 1.4.11 所示。 调试窗口可在汇编环境下,产生反汇编代码,在 C51 环境下,产生汇编与反汇编代 码。10 图 1.4.11调试窗口、查看存储器内容、查看编译连结信息、示波器界面(10)窗口设置 窗口设置中可实现窗口的层叠、平铺(横、竖) ,查看前一个窗口、后一个窗口, 关闭窗口等功能。如图 1.4.12 所示。图 1.4.12 窗口设置(11)工具栏中的快捷图标 鼠标放到工具栏中的快捷图标,系统可自动指示快捷图标的功能。工具栏中的快捷 图标指示如图 1.4.13 所示。图 1.4.13 工具栏中的快捷图标指示 11 第二章单片机及其接口实验系统认识实验实验一一、实验目的熟悉DTHS-A单片机同步教学互动实验系统的环境,学习并掌握其使用方法。二、实验内容计算 N 个数据的和,即 Y ??XK ?1nK。其中 Xk 分别放在片内 RAM 区 30H-35H 单元中, N=6, 求和的结果 Y 放在片内 RAM 区 03H(R3, 高位) ,04H(R4, 低位)单元中。 验证:32H+41H+01H+56H+11H+03H=00DEH 95H+01H+02H+44H+48H+12H=0136H 54H+F6H+1BH+20H+04H+C1H=024AH三、实验要求根据实验内容编写一个程序,并在实验系统上调试和验证程序。 程序参考如下: ORG LJMP ORG START: MOV MOV MOV MOV MOV ST1: MOV INC ADD MOV MOV ADDC MOV DJNZ SJMP END 0000H START 0030H SP, #60H R0, #30H R3, #00H R4, #00H R7, #06H A, @ R0 R0 A, R3 R3, A A, R4 A , #00H R4, A R7, ST1 $12 四、实验步骤1. 打开实验设备后面的蓝色空气开关; 2. 打开实验设备中板的直流电源开关; 3. 进入 NICE 集成开发环境 4. 新建文件→输入汇编语言源程序→保存文件到 E:\A51\→编译连接装载(有错误 返回源程序修改)→设置存储器窗口(视图―存储空间―CPU 内部存储区)→在 30H~ 35H 单元中输入 6 个求和数据→全速运行→暂停运行 (或复位) , 在 CPU 内部存储区查看 结果。 5. 熟悉 IDE 环境,学会使用。练习调试程序、单步运行、宏单步运行,学会查看、 修改存储器的内容。四、思考与练习自己编写程序(也可以检查作业) ,在 NICE 集成开发环境下进行汇编语言程序的 编辑、编译、连接、调试,并验证其结果正确与否。重点要注意调试过程,观察程序调 试过程中,存储单元和寄存器的内容是否和预想的一致。13 实验二一、实验目的程序设计实验熟悉MCS-51单片机指令系统,学习并掌握MCS-51单片机程序的调试方法。二、实验内容1. 将片内RAM 30H单元中的两位压缩BCD码转换成二进制数送到片内RAM 40H单元 中。 2. 编制程序将片内RAM的30H~4FH单元中的内容传送至片外RAM的2000H开始的单 元中。 3. 设MCS-51单片机内部RAM起始地址为30H的数据块中共存有64个无符号数,编制 程序使它们按从小到大的顺序排列。三、实验要求根据实验内容编写程序,并在 IDE 环境中调试和验证。四、实验步骤1. 打开实验设备后面的蓝色空气开关; 2. 打开实验设备中板的直流电源开关; 3. 进入 NICE 集成开发环境 4. 新建文件→输入汇编语言源程序→保存文件到 E:\A51\→编译连接装载(有错误 返回源程序修改)→全速运行→查看结果。 5. 进一步熟悉 IDE 环境,学会使用。练习调试程序:单步运行、宏单步运行、全速 运行,学会查看、修改存储器的内容。五、实验程序略六、思考与练习将分数在 1~100 之间的 10 个成绩存入首地址为 30H 的内部 RAM 单元中,30H+ I 表示学号为 I 的学生成绩。编写程序,将排出的名次表放在 40H 开始的数据区。14 实验三一、实验目的74LS138 译码实验74LS138 是很常见地址译码逻辑芯片,了解与掌握其基本用法。二、预备知识74LS138 是低电平有效的 3 线-8 线译码器/数据分配器。 管脚功能描述:VCC 是电源。GND 接地。A、B、C 是地址输入,A 是低地址,C 是高地址。G1、/G2A、/G2B 是控制输入,当 G1 为“1”并且/G2A 和 G2B 同时为“0” 时,138 输出端 Y7~Y0 八中选一,有一个输出端为“0” ,其余输出端为“1” 。否则 Y0~ Y7 为全“1” 。74LS138 内部电路及引脚图如图 2.3.1 所示。图 2.3.1 74LS138 的管脚图和逻辑图注:实验台对译码器的使能控制端/G2B 已连接直流地(GND) ,G1 已连接 VCC。三、实验内容1. 通过单片机 P1.2~P1.0 控制 74LS138 译码器的使能及译码输入端口,控制其译码 输出端口(Y7~Y0) 。 2. 把译码输出端口 Y7~Y0 连接到 L7~L0 八位 LED 电平指示输入端口,验证 74LS138 的逻辑译码功能。四、实验连线1. 74LS138 译码单元/G2A 连接 GND,C、B、A 分别连接 P1.2、P1.1、P1.0。 2. 74LS138 译码单元 Y7~Y0 分别连接 L7~L0。15 五、实验步骤1. 译码控制 改变译码输入端 CBA(P1.2~P1.0) ,与 Y7~Y0 相对应的 L7~L0 发光二极管八 中选一,其中一位灯亮,其余灯灭。逻辑关系如表 2.3.1 所示。表 2.3.1 138 译码器控制逻辑关系 输入 C 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 A 0 1 0 1 0 1 0 1 输出 Y0 有效,L0 亮,其余灯灭 Y1 有效,L1 亮,其余灯灭 Y2 有效,L2 亮,其余灯灭 Y3 有效,L3 亮,其余灯灭 Y4 有效,L4 亮,其余灯灭 Y5 有效,L5 亮,其余灯灭 Y6 有效,L6 亮,其余灯灭 Y7 有效,L7 亮,其余灯灭2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 在全速运行状态下,观察发光二极管移位点亮情况。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。六、实验参考程序ORG 0000H LJMP START ORG 0030H START: MOV SP, #60H ST1: CLR A MLOOP: MOV P1,A CALL DELAY INC A JNB ACC.3,MLOOP SJMP ST1 DELAY: MOV R7,#0 DL1: MOV R6,#0 DJNZ R6,$ DJNZ R7,DL1 RET END七、思考与练习1. 74LS138 的控制使能引脚如何连接的?发光二极管是什么电平点亮? 2. 用地址线连接 74LS138 的 CBA 引脚,编写程序,验证输出的地址范围。16 实验四一、实验目的P1 口输入/输出实验 1(控制发光二极管亮灭)1. 学习 P1 口的使用方法; 2. 学习延时子程序的编写。二、实验预备知识1. P1 口作为双向口,每一位都可独立地定义为输出或输入。 2. 本实验中延时子程序采用指令循环来实现,机器周期( 12/6MHz)*指令所需机 器周期数*循环次数,在系统时间允许的情况下可以采用此方法。三、实验内容P1 口作为输出口,接八个发光二极管,编写程序,使发光二极管循环点亮。四、实验电路图 2.4.1 P1 口亮灯电路图五、程序流程图 2.4.2程序流程图 17 六、实验步骤1. 实验连线 P1.7~P1.0 连至 L7~L0。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 在全速运行状态下,观察发光二极管闪亮移位情况。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。七、实验参考程序ORG 0000H LJMP START ORG 0030H START: MOV SP, #60H MOV P1,#0FFH MOV A,#0FEH MLOOP: MOV P1,A LCALL DELAY RL A SJMP MLOOP DELAY: MOV R6,#0A0H D1: MOV R7,#0FFH DJNZ R7,$ DJNZ R6,D1 RET END;送 P1 口 ;L0 发光二极管点亮 ;延时 ;左移位 ;循环 ;延时八、思考与练习1. 计算延时时间。 2. 改变延时常数,使发光二极管闪亮时间改变,测试人眼的暂留时间。 3. 修改程序,使发光二极管 1 个亮、2 个亮、??、8 个亮,然后循环。18 实验五一、实验目的P1 口输入/输出实验 2(控制转向灯)进一步了解 P1 口的使用, 通过 P1 口输出高低电平, 实现转向灯 (LED 发光二极管) 控制。学习汇编语言的编程方法与调试技巧。二、实验内容P1.0 接高电平、P1.1 接低电平时,右转向灯闪亮;P1.0 接低电平、P1.1 接高电平时 左转向灯闪亮;否则转向灯关闭。 本实验的准备知识:复习 P1 口结构与应用方法,预习实验指导书的实验 04,编写 需要调试的程序。三、实验电路图 2.5.1 P1 口控制转向灯电路图四、程序流程图 2.5.2程序流程图 19 五、实验步骤1. 实验连线 P1.1、P1.0 分别连接 K1、K0,P1.7~P1.4 分别连接 L11、 L8、 L5、 L2。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 在全速运行状态下,拨动 K1、K0,观察转弯灯正确闪亮。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。六、实验参考程序ORG 0000H LJMP START ORG 0030H START: MOV SP, #60H PX00: MOV P1,#0FFH PX03: MOV A,P1 MOV B,A ANL A,#03H CJNE A,#01H,PX01 JB 00H,PX04 CLR P1.4 CLR P1.5 SETB P1.6 SETB P1.7 MOV R2,#20H LCALL DELAY SETB 00H LJMP PX03 PX04: SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 MOV R2,#20H LCALL DELAY CLR 00H AJMP PX03 PX01: CJNE A,#02H,PX02;初始化;满足只是 P1.0 为高条件吗? ;闪烁标志位 ;开右灯 ;关左灯 ;延时 ;置标志位 ;继续查状态;关灯;延时 ;清标志位 ;继续查状态 ;满足只是 P1.1 为高条件吗?20 JB 01H,PX05 SETB P1.4 SETB P1.5 CLR P1.6 CLR P1.7 MOV R2,#20H LCALL DELAY SETB 01H LJMP PX03 PX05: SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 MOV R2,#20H LCALL DELAY CLR 01H LJMP PX03 PX02: SETB P1.4 SETB P1.5 SETB P1.6 SETB P1.7 LJMP PX03 DELAY: PUSH 02H DEL2: PUSH 02H DEL3: PUSH 02H DEL4: DJNZ R2,DEL4 POP 02H DJNZ R2,DEL3 POP 02H DJNZ R2,DEL2 POP 02H DJNZ R2,DELY RET END;判标志位 ;开左灯 ;关右灯 ;延时 ;置标志位 ;继续查状态;关灯;延时 ;清标志位 ;继续查状态;关灯 ;继续 ;延时七、思考与练习1. 修改程序,使发光二极管闪亮移位方向改变。注意流水灯程序的设计方法。 2. 修改程序,改变流水灯的花样,如:每隔 1 灯亮灭或每隔 1 灯亮灭间隔。21 实验六一、实验目的P3.3 口输入/P 1 口输出实验1. 掌握 P1 口、P3 口的简单使用方法。 2. 学习延时程序的编写和使用。二、实验内容1. P3 口做输入口,外接一脉冲,每输入一个脉冲,P1 口按十六进制加一。 2. P1 口做输出口,编写程序,使 P1 口接的 8 个发光二极管 L1―L8 按 16 进制加一 方式点亮发光二极管。三、实验说明P3 口是准双向口,它作为输出口时与一般的双向口使用方法相同,由准双向口结构 可知:当 P3 口作为输入口时,必须先对它置高电平,使内部 MOS 管截止,因内部上拉 电阻是 20KΩ ―40KΩ ,故不会对外部输入产生影响。若不先对它置高,且原来是低电 平,则 MOS 管导通,读入的数据是不正确的。四、实验电路图 2.6.1 P3.3 口输入,P 1 口输出电路图五、程序流程22 图 2.6.2程序流程图六、实验步骤1. 实验连线 P3.3 连接 K0,P1.7~P1.0 分别连接 L7~L0。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 在全速运行状态下,观察发光二极管闪亮移位情况。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。七、实验参考程序ORG 0000H LJMP START ORG 0030H START: MOV SP, #60H J100: MOV A,#00H J101: JB P3.3,J101 MOV R2,#20H LCALL DELAY JB P3.3,J101 J102: JNB P3.3,J102 MOV R2,#20H LCALL DELAY JNB P3.3,J102 INC A PUSH ACC CPL A;P3.3 电平为低吗?;P3.3 电平高吗? ;加 1 ;取反23 MOV P1,A POP ACC AJMP J101 DELAY: PUSH 02H DEL2: PUSH 02H DEL3: PUSH 02H DEL4: DJNZ R2,DEL4 POP 02H DJNZ R2,DEL3 POP 02H DJNZ R2,DEL2 POP 02H DJNZ R2,DELAY RET END;驱动发光二极管 ;循环;延时八、思考与练习1. 编写程序,验证 MCS-51 单片机 I/O 口输入与输出在编写程序时的区别。 2. 编写程序,使设备连续工作;编写程序,使设备只工作一次就停下来,注意二者 在主程序设计时的区别。 3. 计算延时子程序的延时时间。24 实验七一、实验目的MCS-51 单片机中断系统实验学习并掌握 MCS-51 外部中断技术的的使用和编程方法。二、实验内容INT0 端接单次脉冲发生器。按一次脉冲产生一次中断,CPU 使 P1.0 状态发生一次 反转,P1.0 接 LED 灯,以查看信号反转。 根据实验内容编写一个程序,并在实验系统上调试和验证。三、实验说明1. 外部中断的初始化设置共有三项内容:中断总允许 EA=1、外部中断允许 EXi=1 (i=0 或 1) 、中断方式设置。中断请求信号由引脚 INT0(P3.2)和 INT1(P3.3)引入。 2. 中断控制是提供给用户使用的中断控制手段。实际上就是控制一些寄存器, 51 系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及 IP。 3. 编中断服务程序应注意: (1)保护进入中断时的状态,并在退出中断之前恢复进入的状态。一般中断程序进 入时应保护 PSW、ACC 以及中断程序使用但非其专用的寄存器。 (2)必须在中断程序中设定是否允许中断重入,即设置 EX0 位。四、实验电路INT0 端接单次脉冲发生器,CPU 的 P1.0 接发光二极管 L0。图 2.7.1MCS-51 单片机中断系统实验电路图25 五、程序流程图 2.7.2程序流程图六、实验步骤1. 实验连线 单片机的 P3.2 连接单脉冲单元 SP,单片机的 P1.0 连接发光二极管单元 L0。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 在全速运行状态下, 每按一次单脉冲按钮观察发光二极管闪亮情况, 闪亮时间。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。七、实验参考程序LED BIT P1.0 LEDBUF BIT 20H ORG 0000H LJMP START ORG 0003H LJMP INT00 ORG 0030H START: MOV SP, #60H CLR LEDBUF CLR LED MOV TCON, #01H MOV IE, #81H OK: LJMP OK INT00: PUSH PSW CPL LEDBUF MOV C, LEDBUF MOV LED, C POP PSW RETI END; 外部中断0下降沿触发 ; 打开外部中断允许位(EX0)及总中断允许位(EA) ; 保护现场 ; 取反LED ; 恢复现场八、思考与练习编写程序,验证单片机的中断自然优先级,验证开放、关闭中断允许对程序的影响。26 实验八一、实验目的MCS-51 单片机内部定时器/计数器实验学习并掌握 MCS-51 内部计数器的使用和编程方法。二、实验内容使用 MCS-51 内部定时/计数器,定时 1 秒钟,CPU 运用定时中断方式,实现每 1 秒钟输出状态发生一次反转,即发光管每隔 1 秒钟亮一次。 根据实验内容编写一个程序,并在实验仪器上调试和验证。三、实验电路图 2.8.1MCS-51 单片机内部定时器/计数器实验电路图四、程序流程图 2.8.2程序流程图五、实验步骤27 1. 实验连线 CPU 的 P10 接发光二极管 L0。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 在全速运行状态下,观察发光二极管闪亮情况。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。六、实验参考程序TICK T100US C100US LEDBUF EQU 10000 ; 10000 X 100US = 1S EQU 156 ; 100US 时间常数(6M) EQU 30H ; 100US 记数单元 BIT 20H ORG 0000H LJMP START ORG 000BH LJMP T0INT ORG 0030H MOV SP, #60H MOV TMOD, #02H ; 定时器 0,方式 2 MOV TH0, #T100US MOV TL0, #T100US MOV IE, #B ; EA=1, IT0 = 1 SETB TR0 ; 开始定时 CLR LEDBUF CLR P1.0 MOV C100US, #27H ;#HIGH(TICK) MOV C100US+1, #10H ;#LOW(TICK) MOV C, LEDBUF MOV P1.0, C SJMP LOOP PUSH PSW MOV A, C100US+1 JNZ GOON DEC C100US DEC C100US+1 MOV A, C100US ORL A, C100US+1 JNZ EXIT ; 100US 记数器不为 0, 返回 MOV C100US, #27H ; #HIGH(TICK) MOV C100US+1, #10H ; #LOW(TICK) CPL LEDBUF ; 100US 记数器为 0, 重置记数器,取反 LED POP PSW RETI ENDSTART:LOOP: T0INT:GOON:EXIT:七、思考与练习1. 总结定时时间超过定时器定时范围的程序设计方法? 2. 编写程序,用定时器/计数器实现外部脉冲计数,并显示计数值。28 实验九一、实验目的MCS-51 单片机串行口并/串、串/并转换实验掌握串并转换器件 74LS164/74LS165 应用,掌握串并转换程序的编写要点。二、实验内容利用 MCS-51 单片机 P1.0、P1.1 做控制信号,实现并转串、串转并,并把串转并的 数据送到发光二极管单元显示。三、实验说明并转串的数据口通过 LOAD 控制电路实现并行数据的装载,并转串的 CLK 由 P1.0 控制产生;串转并的串行输入端口 DATA 与并转串的串行输出端口相连,它的 CLK 由 P1.1 控制产生,形成并入串出、串入并出送发光二极管显示。四、实验电路图 2.9.1 并/串、串/并转换电路图五、实验步骤1. 实验连线 (1)译码连接:译码器的 G2A 连接 NAND 与非门输出端,该与非门的输入端 分别连接 A15、A14,译码器的输入端 CBA 分别连接 A5~A3。 (2)把并转串单元的 LOCK 和串转并单元的 LOCK 连接至 P1.0。29 (3)把并转串单元的 QH 连接串转并单元的 DATA。并转串单元的 LOAD 连 接 OR 或门输出端,其输入端分别连接译码器输出端 Y5 和控制总线单元的 WR。 (4)将 CLR 连接至控制总线单元的 RESET。 (5)用 8 芯排线把串转并单元的 8 位并行数据口 H~A 连接到 L7~L0。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 在全速运行状态下,通过并入串出的方式向 74LS165 循环发送数据,再将 74LS165 的数据以串入并出的方式显示到发光二极管,观察 L7~L0 是否对应点亮。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。六、实验参考程序CS165 CLK EQU 0FFE8H EQU P1.0 ORG 0000H LJMP START ORG 0030H START: MOV SP, #60H CLR CLK MOV A,#7FH STA1: CALL TRXD CALL DELAY RR A SJMP STA1 TRXD: MOV DPTR,#CS165 MOVX @DPTR,A MOV R7,#8 TLOOP: CPL CLK NOP NOP NOP CPL CLK NOP NOP NOP DJNZ R7,TLOOP RET DELAY: MOV R6,#0 DL0: MOV R5,#0 DJNZ R5,$ DJNZ R6,DL0 RET END;指 165 并行口 ;装载并行数据七、思考与练习1. 计算电路外扩中芯片的地址范围。 2. 编写程序,改变发光二极管的点亮方向,注意区分串行数据输出 /输入时是低位 在前还是高位在前。30 实验十一、实验目的MCS-51 单片机串行口双机通信实验1. 掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。 2. 了解实现串行通信的硬环境,数据格式的协议,数据交换的协议。 3. 掌握双机通信的原理和方法。二、实验内容1. 利用 MCS-51 单片机串行口,实现双机通信。 2. 本实验将 K0~K3 作为发送的数据,并将接收到的数据通过 L0~L3 显示。三、实验电路图 2.10.1MCS-51 串行口双机通信电路图四、实验步骤1. 实验连线 (1)将 P1.0~P1.3 连接发光二极管 L0~L3 用于显示接收数据。 (2)将 P1.4~P1.7 连接逻辑电平开关 K0~K3 用于发送数据。 (3)将 1 号机的 P3.0(RXD)连接到 2 号机的 P3.1(TXD) 。 (4)将 1 号机的 P3.1(TXD)连接到 2 号机的 P3.0(RXD) 。 (5)连接 1 号机和 2 号机的 GND。 2. 实验程序的编写、装载与运行 编写串行发送与接收程序,编译、连接,并分别装载到 1 号机和 2 号机,用全 速方式运行程序。 3. 观察运行结果 拨动 K0~K3 发送数据,观察 L0~L3 发光二极管显示。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。五、实验参考程序ORG 0000H LJMP START31 ORG 0023H LJMP UARTINT ORG 0030H START: MOV SP, #60H CALL INIT MLOOP: CALL SEND SJMP MLOOP INIT: MOV TMOD,#20H MOV SCON,#50H MOV TH1,#0FDH MOV TL1,#0FDH MOV PCON,#00H SETB EA SETB ES SETB TR1 RET SEND: CLR ES CLR TI MOV A,P1 ANL A,#0F0H MOV SBUF,A JNB TI,$ CLR TI SETB ES RET UARTINT:JB RI,RECEIVE CLR TI RETI RECEIVE:CLR RI PUSH ACC MOV A,SBUF ANL A,#0F0H ORL A,#0FH SWAP A MOV P1,A POP ACC RETI END;设置 T1 为方式 2 ;设置串口位方式 1 ;设置波特率为 9600;定时器 1 开始计数;发送六、思考与练习双机通信中,通信协议、通信波特率是如何确定的?32 实验十一一、实验目的MCS-51 单片机与 PC 通信实验1. 掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。 2. 了解实现串行通信的硬环境,数据格式的协议,数据交换的协议。 3. 掌握双机通信的原理和方法。二、实验内容1. 利用 MCS-51 单片机串行口,实现双机通信。 2. 本实验将 1 号实验机键盘上键入的数字显示到 2 号实验机的数码管上。三、实验电路图 2.11.1MCS-51 单片机与 PC 通信电路图四、程序流程图 2.11.2程序流程图 33 五、实验步骤1. 实验连线 (1)将 P3.0、P3.1 分别连接到 232 单元的 RXD、TXD (2)译码连接:译码器的 G2A 连接 NAND 与非门输出端,该与非门的输入端 分别连接 A15、A14,译码器的输入端 CBA 分别连接 A5~A3。 (3)将 ADD1、ADD0 分别连接地址总线单元的 A1、A0。 (4)键盘显示单元的 8255 CS 连接译码器输出端 Y5。 (5)下板左上方的 WR、RD 分别连接中板控制总线单元的 WR、RD。 (6)用 9 芯通信线连续 232 单元的通信口与 PC 机串口。 2. 实验程序的编写、装载与运行 编写串行发送与接收程序,编译、连接,并分别装载,用全速方式运行程序, 并在 PC 机运行串口调试软件,设置 9600 波特率、选择正确的串口并打开。 3. 观察运行结果 (1)单片机发送、PC 机接收:按实验台的数字键 0~F 发送,PC 机的串口调试 软件显示接收到的数据; (2)PC 机发送、单片机接收:在 PC 机的串口调试软件发送 00~FF 数字,实验 台数码管显示接收到的数据。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。六、实验参考程序CS8255 EQU 0FFEFH OUTSEG EQU 0FFECH ;字形控制口 OUTBIT EQU 0FFEDH ;字位/键扫控制口 IN_KEY EQU 0FFEEH ;键盘读入口 LEDBUF EQU 7EH ;显示缓冲 ORG 0000H LJMP START ORG 0023H LJMP UARTINT ORG 0030H START: MOV SP,#60H ;给堆栈指针赋初值 MOV DPTR,#CS8255 MOV A,#89H ;命令字:A,B 输出、C 输入 MOVX @DPTR,A ;8255 初始化 CALL INIT MOV LEDBUF-0,#11H MOV LEDBUF-1,#10H MOV LEDBUF-2,#10H MOV LEDBUF-3,#10H34 MOV LEDBUF-4,#10H MOV LEDBUF-5,#10H MOV LEDBUF-6,#10H MOV LEDBUF-7,#10H MOV B,#0 MLOOP: CALL LEDKEY CJNE A,#10H,LED0 LED0: JNC MLOOP JB B.0,LED2 LED1: MOV LEDBUF-0,A MOV LEDBUF-1,#10H INC B SJMP MLOOP LED2: MOV LEDBUF-1,A INC B MOV A,LEDBUF-0 SWAP A ORL A,LEDBUF-1 CALL SEND SJMP MLOOP INIT: MOV TMOD,#20H ;设置 T1 为方式 2 MOV SCON,#50H ;设置串口位方式 1 MOV TH1,#0FDH ;设置波特率为 9600 MOV TL1,#0FDH MOV PCON,#00H SETB EA SETB ES SETB TR1 ;定时器 1 开始计数 RET SEND: CLR ES CLR TI MOV SBUF,A ;发送 JNB TI,$ CLR TI SETB ES RET UARTINT:JB RI,RECEIVE CLR TI RETI RECEIVE:CLR RI MOV A,SBUF PUSH B MOV B,A SWAP A ANL A,#0FH ANL B,#0FH MOV LEDBUF-4,A35 MOV LEDBUF-5,B POP B RETI ;显示、键扫消抖程序 LEDKEY: CALL DISP ;显示 CALL GETKEY ;得到键盘扫描码 MOV R4,A ;键消抖处理程序 MOV R1,#48H MOV A,@R1 MOV R2,A INC R1 MOV A,@R1 MOV R3,A MOV A,R4 XRL A,R3 MOV R3,04H ;R4 MOV R4,02H ;R2 JZ XGE10 MOV R2,#88H MOV R4,#88H ;键盘消抖延迟参数 XGE10: DEC R4 MOV A,R4 XRL A,#82H JZ XGE11 MOV A,R4 XRL A,#0EH JZ XGE11 MOV A,R4 JZ XGE12 MOV R4,#20H DEC R2 SJMP XGE13 XGE12: MOV R4,#0FH XGE11: MOV R2,04H ;R4 NOP NOP MOV R4,03H ;R3 XGE13: MOV R1,#48H MOV A,R2 MOV @R1,A INC R1 MOV A,R3 MOV @R1,A MOV A,R4 JB ACC.5,XG113 JB ACC.4,XG113 MOV DPTR,#KEYCODE36 MOVC A,@A+DPTR XG113: RET ;显示子程序 DISP: PUSH DPL PUSH DPH SETB RS1 MOV R0,#LEDBUF MOV R2,#80H MOV DPTR,#LEDMAP DISP2: MOV A,@R0 MOVC A,@A+DPTR PUSH DPL PUSH DPH MOV DPTR,#OUTSEG MOVX @DPTR,A MOV A,R2 MOV DPTR,#OUTBIT MOVX @DPTR,A POP DPH POP DPL MOV R7,#3 ;显示防闪 DISPDL: MOV R6,#00H DJNZ R6,$ DJNZ R7,DISPDL CLR C RRC A ;右移显示 MOV R2,A DEC R0 JNZ DISP2 CLR RS1 POP DPH POP DPL RET ;键扫子程序 GETKEY: SETB RS1 MOV R2,#B MOV R3,#08H MOV R0,#00H LGEP1: PUSH DPL PUSH DPH MOV DPTR,#OUTBIT MOV A,R2 MOVX @DPTR,A RR A MOV R2,A MOV DPTR,#IN_KEY MOVX A,@DPTR37 POP DPH POP DPL ANL A,#07H JNZ LGEP0 INC R0 DJNZ R3,LGEP1 XGEP33: MOV A,#20H XGEP3: MOV R2,A MOV A,#0FH PUSH DPL PUSH DPH MOV DPTR,#OUTBIT MOVX @DPTR,A POP DPH POP DPL MOV A,R2 CLR RS1 SJMP RETURN LGEP0: CPL A JB ACC.0,XGEP0 MOV A,#00H SJMP LGEPP XGEP0: JB ACC.1,XGEP1 MOV A,#08H SJMP LGEPP XGEP1: JB ACC.2,XGEP33 MOV A,#10H LGEPP: ADD A,R0 SJMP XGEP3 RETURN: RET ;字形表 LEDMAP: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H ;0~7 DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH ;8~F DB 0FFH,0CH ;' ','P.' ;键值表 KEYCODE:DB 07H,04H,08H,05H,09H,06H,0AH,0BH DB 01H,00H,02H,0FH,03H,0EH,0CH,0DH END七、思考与练习1. 学会应用串行调试软件进行串行数据传送。 2. 单片机与 PC 通信,如何设置通信协议与波特率?38 实验十二一、实验目的外部数据存储器扩展实验1. 了解数据存储器扩展方法。 2. 掌握数据存储器的寻址方法。二、实验内容使用一片 6264 SRAM,作为数据存储器,对其进行读写。三、实验电路图 2.12.1MCS-51 单片机扩展数据存储器电路图四、实验步骤1. 实验连线 (1)把存储器扩展单元的 MCS 连接地址总线单元的 A15。 (2)把存储器扩展单元的 MW、MR 分别连接控制总线单元的 WR、RD。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 打开数据存储器窗口,用单步方式运行,程序先向 FH 单元依次填入 80~8FH,再将 FH 单元传送到 FH。五、实验参考程序ORG 0000H LJMP START ORG 0030H39 START: MOV SP, #60H MOV A,#80H MOV DPTR,#0000H LOOP1: MOVX @DPTR,A INC DPTR INC A CJNE A,#90H,LOOP1 MOV R2,#00H MOV R3,#00H MOV R4,#00H MOV R5,#20H MOV R6,#00H MOV R7,#0FH SE22: MOV DPL,R3 MOV DPH,R2 MOVX A,@DPTR MOV DPL,R5 MOV DPH,R4 MOVX @DPTR,A CJNE R3,#0FFH,LO42 INC R2 LO42: INC R3 CJNE R5,#0FFH,LO43 INC R4 LO43: INC R5 CJNE R7,#00H,LO44 CJNE R6,#00H,LO45 SJMP $ LO44: DEC R7 SJMP SE22 LO45: DEC R7 DEC R6 SJMP SE22 END;F 写入数据;源地址 ;目的地址 ;数据长度;建立源程序首址 ;取数 ;目的地首址 ;传送;源地址加 1;目地址加 1 ;字节数减 1;未完继续六、思考与练习1. 计算电路中外扩数据存储器的地址范围。 2. 改变实验程序,完成外扩数据存储器不同区域之间的数据传送。40 实验十三一、实验目的外部 I/O 口扩展实验学习在单片机系统中扩展简单 I/O 口的基本方法。二、实验内容MCS-51 系列单片机对外部设备的访问(即 I/O 口输入/输出操作)的基本要求是 “输入缓冲、输出锁存” 。实验中开关量 K7~K0 的输入经 74LS244 八位缓冲输入接口实 现,74LS273 作为锁存输出接口,控制 L7~L0 八个发光二极管的亮灭。三、实验电路图 2.13.1MCS-51 单片机扩展外部 I/O 口电路图四、程序流程图 2.13.2程序流程图 41 五、实验步骤1. 实验连线 (1)译码连接:译码器的 G2A 连接 NAND 与非门输出端,该与非门的输入端 分别连接 A15、A14,译码器的输入端 CBA 分别连接 A5~A3。 (2)244 缓冲输入单元的 G 连接 OR 或门输出端,该或门的输入端分别连接下 板译码单元的 Y5 和中板控制总线单元的 RD;273 锁存输出单元的 CLK 连接 NOR 或非门输出端,该或非门的输出端分别连接下板译码单元的 Y5 和中板控制总线单 元的 WR。 (3) 74LS244 缓冲输入 PI7~PI0 分别连接 K7~K0, 74LS273 锁存输出 PO7~PO0 分别连接 L7~L0。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 在全速运行状态下,拨动 K7~K0,观察 L7~L0 发光二极管是否对应点亮。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。六、实验参考程序CS244 CS273 EQU 0FFE8H EQU 0FFE8H ORG 0000H LJMP START ORG 0030H START: MOV SP, #60H ST1: MOV DPTR,#CS244 MOVX A,@DPTR MOV DPTR,#CS273 MOVX @DPTR,A SJMP ST1 END;取出 244 状态 ;送 273 驱动发光二极管七、思考与练习1. LED 发光二极管是高电平点亮还是低电平点亮,开关上拨接通高电平还是低电 平? 2. 分析译码电路,计算外口芯片的地址范围。42 实验十四一、实验目的工业顺序控制实验掌握工业顺序控制程序的简单编程,熟悉中断的概念和编程方法。二、预备知识在工业控制中,像冲压、注塑、轻纺、制瓶等生产过程,都是一些断续生产过程, 按某种程序有规律地完成预定的动作,对这类断续生产过程的控制称顺序控制,例注塑 机工艺过程大致按“合模→注射→延时→开模→产伸→产退”顺序动作,用单片机最易 实现。三、实验内容MCS-51 单片机的 P1.6~P1.0 控制注塑机的七道工序, 现模拟控制七只发光二极管的 点亮,高电平有效,设定每道工序时间转换为延时,P3.4 为开工启动开关,高电平启动。 P3.3 为外故障输入模拟开关,P3.3 为 0 时不断报警。P1.7 为报警声音输出,设定 6 道工 序只有一位输出,第七道工序三位有输出。四、实验说明实验中用外部中断0,编中断服务程序的关键是: 1. 保护进入中断时的状态,并在退出中断之前恢复进入的状态。 2. 必须在中断程序中设定是否允许中断重入,即设置 EX0 位。 一般中断程序进入时应保护 PSW、ACC 以及中断程序使用但非其专用的寄存器, 本实验中未涉及。五、实验电路43 图 2.14.1工业顺序控制电路图六、程序流程图 2.14.2程序流程图七、实验步骤1. 实验连线 (1) P3.4、 P3.3 分别连接 K0、 K1, P1.6~P1.0 分别连接 L6―L0, P1.7 连 SIN (音44 频输入端) 。 (2)K1、K2 开关拨在高电平位置(钮子开关拨向下方) 。 (3)按下音频驱动单元自锁式按钮开关(处开位置) 。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 (1)用全速方式开始运行程序,此时应在等待开工状态。 (2)K0 拨至低电平位置,各道工序应正常运行。 (3)K1 拨至低电平位置,应有声音报警(人为设置故障) 。 (4)K1 拨至高电平位置,即排除故障,程序应从报警的那道工序继续执行。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。八、实验参考程序ORG 0000H LJMP START ORG 0013H LJMP PO16 ORG 0030H START: MOV SP, #60H PO10: MOV P1,#7FH ORL P3,#00H PO11: JNB P3.4,PO11 ORL IE,#84H ORL IP,#01H MOV PSW,#00H MOV SP,#53H PO12: MOV P1,#7EH ACALL PO1B MOV P1,#7DH ACALL PO1B MOV P1,#7BH ACALL PO1B MOV P1,#77H ACALL PO1B MOV P1,#6FH ACALL PO1B MOV P1,#5FH ACALL PO1B MOV P1,#0FH;开工吗?;初始化 ;第一道工序 ;第二道工序 ;第三道工序 ;第四道工序 ;第五道工序 ;第六道工序 ;第七道工序45 ACALL PO1B SJMP PO12 PO16: MOV B,R2 PO17: MOV P1,#7FH MOV 20H,#0A0H PO18: SETB P1.7 ACALL PO1A CLR P1.7 ACALL PO1A DJNZ 20H,PO18 CLR P1.7 ACALL PO1A JNB P3.3,PO17 MOV R2,B RETI PO1A: MOV R2,#06H ACALL DELAY RET PO1B: MOV R2,#30H ACALL DELAY JNB P3.4,$ RET DELAY: PUSH 02H DEL2: PUSH 02H DEL3: PUSH 02H DEL4: DJNZ R2,DEL4 POP 02H DJNZ R2,DEL3 POP 02H DJNZ R2,DEL2 POP 02H DJNZ R2,DELY RET END;保护现场 ;关输出 ;振荡次数 ;振荡 ;延时 ;停振 ;延时 ;不为 0 转 ;停振 ;故障消除吗? ;恢复现场;延时;延时;延时九、思考与练习修改程序,使每道工序中有多位输出。46 实验十五一、实验目的8255 并行口输出方波实验掌握可编程 I/O 接口芯片 8255 的接口原理使用,熟悉对 8255 初始化编程和输入, 输出软件的设计方法。二、实验内容在 8255 的 PA.PB.PC 口用万用表可测出每个口的高低电平变化。或用示波器观察 PA.PB.PC 的输出波形。三、程序流程图 2.15.1程序流程图四、实验步骤1. 实验连线 (1)译码连接:译码器的 G2A 连接 NAND 与非门输出端,该与非门的输入端 分别连接 A15、A14,译码器的输入端 CBA 分别连接 A5~A3。 (2)8255 并行口的 CS 连接译码器输出端 Y2,位于 LCD 下方的 add1、add0 分别连接 A1、A0;8255 的读写信号 RD、WR(位于下板发光二极管显示单元左侧) 分别连接控制总线单元 RD、WR(位于中板控制总线单元) 。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 在全速运行状态下,用示波器测量 PA、PB、PC 任意一位端口的方波输出。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。47 五、实验参考程序PORTA EQU 0FFD0H PORTB EQU 0FFD1H PORTC EQU 0FFD2H CS8255 EQU 0FFD3H ORG 0000H LJMP START ORG 0030H START: MOV SP, #60H ST1: MOV DPTR,#CS8255 MOV A,#80H MOVX @DPTR,A MOV A,#55H LO15: MOV DPTR,#PORTA MOVX @DPTR,A MOV DPTR,#PORTB MOVX @DPTR,A MOV DPTR,#PORTB MOVX @DPTR,A MOV R2,#40H CALL DELAY CPL A SJMP LO15 DELAY: PUSH 02H DEL2: PUSH 02H DEL3: PUSH 02H DEL4: DJNZ R2,DEL4 POP 02H DJNZ R2,DEL3 POP 02H DJNZ R2,DEL2 POP 02H DJNZ R2,DELY RET END;8255 初始化 ;一位隔一位高电平;PA.PB.PC 口送入 ;延时 ;取反 ;循环;延时六、思考与练习设计电路,编写程序,通过 LED 发光二极管显示输出方波。48 实验十六一、实验目的8255 并行口输入/输出实验1. 掌握 8255 的工作原理及 8255 和单片机的接口方法 2. 掌握 8255A 的工作方式和编程方法。二、实验内容用 8255 PA 通过逻辑电平开关作输入口,PB 通过发光二极管作输出口。三、实验电路图 2.16.1MCS-51 外扩 8255 PA 口输入/PB 口输出实验四、程序流程图 2.16.2程序流程图49 五、实验步骤1. 实验连线 (1)译码连接:译码器的 G2A 连接 NAND 与非门输出端,该与非门的输入端 分别连接 A15、A14,译码器的输入端 CBA 分别连接 A5~A3。 (2)8255 并行口的 CS 连接译码器输出端 Y2。位于 LCD 下方的 add1、add0 分别连接 A1、A0;8255 的读写信号 RD、WR(位于下板发光二极管显示单元左侧) 分别连接控制总线单元 RD、WR(位于中板控制总线单元) 。 (3)8255 并行口的 PA7~PA0 分别连接 K7~K0、PB7~PB0 分别连接 L7~L0。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 在全速运行状态下,拨动 K7~K0,观察 L7~L0 发光二极管是否对应点亮。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。六、实验参考程序PORTA EQU 0FFD0H PORTB EQU 0FFD1H PORTC EQU 0FFD2H CS8255 EQU 0FFD3H ORG 0000H LJMP START ORG 0030H START: MOV SP, #60H ST1: MOV DPTR,#CS8255 MOV A,#90H MOVX @DPTR,A ST2: MOV DPTR,#PORTA MOVX A,@DPTR MOV DPTR,#PORTB MOVX @DPTR,A SJMP ST2 END;8255 初始化 ;PA 口状态取出 ;送 PB 口七、思考与练习1. 计算 8255 的地址范围。 2. 每次拨动 K7~K0,L7~L0 发光二极管都对应动作,程序中如何实现?50 实验十七一、实验目的8255 并行口模拟交通灯实验进一步掌握 8255 的工作原理以及编程方法。二、实验内容用 8255 作输出口,控制 12 个发光二极管燃灭,模拟交通灯管理。三、程序流程图 2.17.1程序流程图四、编程提示1. 通过 8255 控制发光二极管。PB3、PB0、PA5、PA2 对应黄灯,PB1、PA6、PA3、 PA0 对应红灯,PB2、PA7、PA4、PA1 对应绿灯,模拟交通灯的管理。 2. 交通路灯的亮灭规律: 东西路口的绿灯亮南北路口的红灯亮, 东西路口方向通车。 延时等待后,东西路口绿灯熄灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮南北 路口绿灯亮,南北路口方向开始通车,延时等待后,南北路口绿灯熄灭,黄灯开始闪烁。 闪烁若干次后,切换到东西路口方向,重复以上过程。 3. 程序中设定好 8255 的工作模式,三个端口均工作在方式 0,并处于输出状态。 4. 系统使用的发光二极管为共阴极,逻辑 0 点亮、逻辑 1 熄灭。五、实验步骤1. 实验连线 (1)译码连接:译码器的 G2A 连接 NAND 与非门输出端,该与非门的输入端 分别连接 A15、A14,译码器的输入端 CBA 分别连接 A5~A3。 (2)8255 并行口的 CS 连接译码器输出端 Y2。位于 LCD 下方的 add1、add0 分 别连接 A1、A0;8255 的读写信号 RD、WR(位于下板发光二极管显示单元左侧)51 分别连接控制总线单元 RD、WR(位于中板控制总线单元) 。 (3)8255 并行口的 PB3~PB0 分别连接 L11~L8、PA7~PA0 分别连接 L7~L0。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 在全速运行方式下,初始态为四个路口的红灯全亮之后,东西路口的绿灯亮南 北路口的红灯亮,东西路口方向通车。延时一段时间后东西路口的绿灯熄灭,黄灯 开始闪耀。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口 方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪耀。闪耀若干 次后,再切换到东西路口方向,之后重复以上过程。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。六、实验参考程序PORTA EQU 0FFD0H PORTB EQU 0FFD1H PORTC EQU 0FFD2H CS8255 EQU 0FFD3H ORG 0000H LJMP START ORG 0030H START: MOV SP, #60H MOV DPTR,#CS8255 MOV A,#88H MOVX @DPTR,A MOV DPTR,#PORTA MOV A,#0B6H MOVX @DPTR,A INC DPTR MOV A,#0DH MOVX @DPTR,A MOV R2,#25H LCALL DELAY JOD0: MOV DPTR,#PORTA MOV A,#75H MOVX @DPTR,A INC DPTR MOV A,#0DH MOVX @DPTR,A MOV R2,#55H LCALL DELAY MOV R7,#05H JOD1: MOV DPTR,#PORTA MOV A,#0F3H MOVX @DPTR,A INC DPTR MOV A,#0CH MOVX @DPTR,A MOV R2,#20H LCALL DELAY;8255 初始化;点亮 4 个红灯 ;延时;东西绿灯亮,南北红灯亮 ;延时 ;闪烁次数;东西黄灯亮,南北红灯亮 ;延时52 MOV DPTR,#PORTA MOV A,#0F7H MOVX @DPTR,A INC DPTR MOV A,#0DH MOVX @DPTR,A MOV R2,#20H LCALL DELAY DJNZ R7,JOD1 MOV DPTR,#PORTA MOV A,#0AEH MOVX @DPTR,A INC DPTR MOV A,#0BH MOVX @DPTR,A MOV R2,#55H LCALL DELAY MOV R7,#05H JOD2: MOV DPTR,#PORTA MOV A,#9EH MOVX @DPTR,A INC DPTR MOV A,#07H MOVX @DPTR,A MOV R2,#20H LCALL DELAY MOV DPTR,#PORTA MOV A,#0BEH MOVX @DPTR,A INC DPTR MOV A,#0FH MOVX @DPTR,A MOV R2,#20H LCALL DELAY DJNZ R7,JOD2 LJMP JOD0 DELAY: PUSH 02H DEL2: PUSH 02H DEL3: PUSH 02H DEL4: DJNZ R2,DEL4 POP 02H DJNZ R2,DEL3 POP 02H DJNZ R2,DEL2 POP 02H DJNZ R2,DELY RET END;南北红灯亮 ;延时 ;闪烁次数未到继续;东西红灯亮,南北绿灯亮 ;延时 ;闪烁次数;东西红灯亮,南北黄灯亮 ;延时;东西红灯亮 ;延时 ;闪烁次数未到继续 ;循环 ;延时七、思考与练习1. 修改程序,改变交通灯的时间。 2. 按照校门口的交通灯的规则设计本实验。53 实验十八一、实验目的8259 中断控制实验1. 了解 8259 中断控制器的基本结构和工作原理; 2. 掌握 8259 中断控制器和单片机系统的连接方法; 3. 掌握 8259 中断控制器的应用和编程方法。二、实验内容利用 8259 芯片作为中断管理器,编制程序,用中断的方式,实现循环点亮发光二极 管。三、实验电路图 2.18.1MCS-51 单片机外扩 8259 中断控制器电路图四、实验步骤1. 实验连线 (1)译码连接:译码器的 G2A 连接 NAND 与非门输出端,该与非门的输入端 分别连接 A15、A14,译码器的输入端 CBA 分别连接 A5~A3。 (2)将下板右上角 ADD0(8259 A0)连接中板地址总线单元的 A0。 (3)8259 CS(位于 8259 单元 IRQ6 上方)连接译码器输出端 Y0。 (4)下板左上方的 WR、RD 分别连接中板控制总线单元的 WR、RD。 (5)8259 INTA(位于中板控制总线单元)连接或门输出端,该或门输入端分 别连接译码单元 Y0 和控制总线单元 RD。 (6)8259 INTR(位于中板控制总线单元)连接非门输入端,该非门输出端连 接单片机 P3.2。 (7)8259 单元 IRQ7 连接单脉冲信号 SP(位于下板 LED 点阵单元左侧) 。 (8)单片机 P1.0~P1.3 分别连接发光二极管单元 L0~L3。54 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 以全速方式运行程序,按 SP 单脉冲按钮,L0~L3 移位点亮。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。五、实验参考程序CS8259I EQU 0FFC0H CS8259O EQU 0FFC1H ORG 0000H LJMP START ORG 0003H AJMP INT59 ORG 0030H START: MOV SP, #60H MOV DPTR,#CS8259I MOV A,#13H MOVX @DPTR,A MOV DPTR,#CS8259O MOV A,#08H MOVX @DPTR,A MOV A,#09H MOVX @DPTR,A MOV A,#7FH MOVX @DPTR,A SETB IT0 SETB EX0 SETB EA MOV A,#11H SJMP $ INT59: PUSH ACC MOV DPTR,#CS8259I MOV A,#20H MOVX @DPTR,A POP ACC CLR IE0 CPL A MOV P1,A CPL A RL A NOP NOP NOP RETI END七、思考与练习1. 修改程序,完成:接单次脉冲,L0~L3 亮灭间隔。 2. 验证 8259 的中断优先级。55 实验十九一、实验目的8253 定时器/计数器实验学会 8253 芯片和单片机接口原理和方法,掌握 8253 定时器/计数器的工作方式和 编程原理。二、实验内容8253 的 0 通道工作在方式 3,产生方波。三、实验电路图 2.19.1MCS-51 单片机外扩 8253 定时器/计数器电路图四、程序流程图 2.19.2程序流程图五、实验步骤1. 实验连线 (1)译码连接:译码器的 G2A 连接 NAND 与非门输出端,该与非门的输入端 分别连接 A15、A14,译码器的输入端 CBA 分别连接 A5~A3。 (2) 8253 定时计数器选通信号 8253CS 连接译码单元 Y2 输出孔, CLK0 连接分56 频单元 T2,读写信号 RD、WR(位于下板左上角)分别连接控制总线单元的 RD、WR (位于中板控制总线单元) 。 (3)8253 地址线 ADD1、ADD0(位于下板右上角)分别连接地址总线单元的 A1、A0(位于中板地址总线单元) 。 (4)外设接口的 CLR(393 分频器主复位)连接中板控制总线单元的 RESET。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 在全速运行状态下, 用示波器测量 8253 定时计数单元的 OUT0, 应有方波输出。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。六、实验参考程序CS8253 EQU 0FFD3H COUNT0 EQU 0FFD0H COUNT1 EQU 0FFD1H COUNT2 EQU 0FFD2H ORG 0000H LJMP START ORG 0030H START: MOV SP, #60H MOV DPTR,#CS8253 MOV A,#36H MOVX @DPTR,A MOV DPTR,#COUNT0 MOV A,#00H MOVX @DPTR,A MOV A,#10H MOVX @DPTR,A SJMP $ END;置 8253 工作方式 ;启动 8253 方波;结束七、思考与练习改变 8253 电路,将 T3 进行分频,采用计数器 0 和计数器 2 两级级联的方式,输出 一个周期为 1 秒的方波。57 实验二十一、实验目的DS1302 实时时钟实验1. 了解 DS1302 的基本结构、工作原理; 2. 熟悉 DS1302 和单片机系统的连接方法; 3. 掌握 DS1302 实时时钟的基本编程方法。二、实验内容利用 DS1302 实时时钟,设计程序在 LCD 液晶显示器上,显示年、月、日、星期、 时、分、秒。三、实验电路C2 1 0 . 1u F BT 1 3 V VCC 1 2 3 4 U2 1 VCC2 X1 X2 GND DS13 02 VCC R2 3 1 0K VCC1 SCL K I/O RST 8 7 6 5 R2 1 1 0K R2 2 1 0K SCL K I/O RSTX1 3 2. 7 68 KHz图 2.20.1MCS-51 单片机外扩 DS1302 实时时钟电路图四、实验步骤1. 实验连线 (1)将 DS1302 单元的 SCLK、I/O、RST 分别连接单片机的 P3.2、P3.3、P3.5。 (2)译码连接:译码器的 G2A 连接 NAND 与非门输出端,该与非门的输入端 分别连接 A15、A14,译码器的输入端 CBA 分别连接 A5~A3。 (3)将液晶显示单元的 R/W、RS 分别连接地址总线单元的 A1、A0。 (4)液晶显示单元的 E 连接或非门输出端,该或非门输入端分别连接译码器输 出端 Y6 和与门输出端,该与门输入端分别连接中板控制总线单元的 WR、RD。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 以全速方式运行程序,观察 LCD 显示,应显示年、月、日、星期、时、分、秒。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。58 五、实验参考程序I_YEAR DATA 12H ;DS1302 的年寄存器为 8 位,只能处理 00~99 I_MONTH DATA 02H I_DAY DATA 20H I_WEEK DATA 03H I_HOUR DATA 18H I_MIN DATA 12H I_SEC DATA 00H SCLK BIT P3.2 IO BIT P3.3 RST BIT P3.5 RC_ADDR DATA 48H RC_DATA DATA 47H YEAR DATA 46H MONTH DATA 45H WEEK DATA 44H DAY DATA 43H HOUR DATA 42H mintue DATA 41H second DATA 40H LCD EQU 0FFF0H WRICODE EQU LCD+0 ;写命令 WRDATA EQU LCD+1 ;写数据 COUNT EQU 34H ORG 0000H LJMP START ORG 0030H START: MOV SP, #60H ;CALL INITRC ;初次使用置时钟初值,以后可注销此行 CALL INIT ;DS1302 初始化 ;初始化 LGS0: MOV A,#30H ;30H--基本指令操作 LCALL SEND_I MOV A,#01H ;清除显示 LCALL SEND_I LCALL DELAY2 LCALL DELAY2 MOV A,#06H ;指定在资料写入或读取时,光标的移动方向 LCALL SEND_I MOV A,#0CH ;开显示,关光标,不闪烁 LCALL SEND_I MLOOP: CALL READRC ;读时钟 MOV DPTR,#TAB1 ;显示汉字和字符 MOV COUNT,#16 MOV A,#80H LCALL SEND_I59 MLOOP1: CLR A MOVC A,@A+DPTR LCALL SEND_D INC DPTR DJNZ COUNT,MLOOP1 MOV A,#0D0H LCALL SEND_D MOV A,#0C7H LCALL SEND_D MOV A,#0C6H LCALL SEND_D MOV A,#0DAH LCALL SEND_D MOV A,week WK1: CJNE A,#01H,WK2 MOV A,#0D2H ;星期一 LCALL SEND_D MOV A,#0BBH LCALL SEND_D AJMP WKEND WK2: CJNE A,#02H,WK3 MOV A,#0B6H ;星期二 LCALL SEND_D MOV A,#0FEH LCALL SEND_D AJMP WKEND WK3: CJNE A,#03H,WK4 MOV A,#0C8H ;星期三 LCALL SEND_D MOV A,#0FDH LCALL SEND_D AJMP WKEND WK4: CJNE A,#04H,WK5 MOV A,#0CBH ;星期四 LCALL SEND_D MOV A,#0C4H LCALL SEND_D AJMP WKEND WK5: CJNE A,#05H,WK6 MOV A,#0CEH ;星期五 LCALL SEND_D MOV A,#0E5H LCALL SEND_D AJMP WKEND WK6: CJNE A,#06H,WK7 MOV A,#0C1H ;星期六 LCALL SEND_D MOV A,#0F9H60 LCALL SEND_D AJMP WKEND WK7: MOV A,#0C8H ;星期日 LCALL SEND_D MOV A,#0D5H LCALL SEND_D WKEND: MOV COUNT,#10 MOV A,#20H MLOOP2: LCALL SEND_D DJNZ COUNT,MLOOP2 MOV A,#'2' ;DS1302 仅支持 8 位年份寄存器,高位年份固定 LCALL SEND_D MOV A,#'0' LCALL SEND_D MOV A,YEAR ANL A,#0F0H SWAP A ADD A,#30H LCALL SEND_D MOV A,YEAR ANL A,#0FH ADD A,#30H LCALL SEND_D MOV A,#0C4H LCALL SEND_D MOV A,#0EAH LCALL SEND_D MOV A,MONTH ANL A,#0F0H SWAP A ADD A,#30H LCALL SEND_D MOV A,MONTH ANL A,#0FH ADD A,#30H LCALL SEND_D MOV A,#0D4H LCALL SEND_D MOV A,#0C2H LCALL SEND_D MOV A,DAY ANL A,#0F0H SWAP A ADD A,#30H LCALL SEND_D MOV A,DAY ANL A,#0FH ADD A,#30H61 LCALL SEND_D MOV A,#0C8H LCALL SEND_D MOV A,#0D5H LCALL SEND_D MOV A,#20H LCALL SEND_D LCALL SEND_D MOV A,HOUR ANL A,#0F0H SWAP A ADD A,#30H LCALL SEND_D MOV A,HOUR ANL A,#0FH ADD A,#30H LCALL SEND_D MOV A,#':' LCALL SEND_D MOV A,mintue ANL A,#0F0H SWAP A ADD A,#30H LCALL SEND_D MOV A,mintue ANL A,#0FH ADD A,#30H LCALL SEND_D MOV A,#':' LCALL SEND_D MOV A,second ANL A,#0F0H SWAP A ADD A,#30H LCALL SEND_D MOV A,second ANL A,#0FH ADD A,#30H LCALL SEND_D MOV COUNT,#8 MOV A,#20H MLOOP3: LCALL SEND_D DJNZ COUNT,MLOOP3 AJMP MLOOP ;DS1302 初始化 INIT: MOV RC_ADDR,#8EH MOV RC_DATA,#00H LCALL WRITE ;允许写 130262 MOV RC_ADDR,#90H MOV RC_DATA,#0A6H LCALL WRITE ;1302 充电,充电电流 1.1MA RET ;读取当前时钟 READRC: MOV RC_ADDR,#8DH LCALL READ ;读出年 MOV year,A MOV RC_ADDR,#8BH LCALL READ ;读出星期 MOV week,A MOV RC_ADDR,#89H LCALL READ ;读出月 MOV month,A MOV RC_ADDR,#87H LCALL READ ;读出日 MOV day,A MOV RC_ADDR,#85H LCALL READ ;读出小时 MOV hour,A MOV RC_ADDR,#83H LCALL READ ;读出分钟 MOV mintue,A MOV RC_ADDR,#81H LCALL READ ;读出秒 MOV second,A RET ;时钟初始化 INITRC: MOV RC_ADDR,#8EH MOV RC_DATA,#00H LCALL WRITE ;允许写 1302 MOV RC_ADDR,#80H MOV RC_DATA,#80H LCALL WRITE ;1302 停止振荡 MOV year,#I_YEAR MOV RC_ADDR,#8CH MOV RC_DATA,year LCALL WRITE ;年值送入 1302 MOV month,#I_MONTH MOV RC_ADDR,#88H MOV RC_DATA,month LCALL WRITE ;月值送入 1302 MOV day,#I_DAY MOV RC_ADDR,#86H MOV RC_DATA,day LCALL WRITE ;日值送入 1302 MOV week,#I_WEEK MOV RC_ADDR,#8AH63 MOV RC_DATA,week LCALL WRITE ;星期值送入 1302 MOV hour,#I_HOUR MOV RC_ADDR,#84H MOV RC_DATA,hour LCALL WRITE ;小时值送入 1302 MOV mintue,#I_MIN MOV RC_ADDR,#82H MOV RC_DATA,mintue LCALL WRITE ;分钟值送入 1302 MOV second,#I_SEC MOV RC_ADDR,#80H MOV RC_DATA,second LCALL WRITE ;1302 晶振开始振荡 MOV RC_ADDR,#8EH MOV RC_DATA,#80H LCALL WRITE ;禁止写入 1302 RET ;写 1302 程序 WRITE: CLR RST NOP CLR SCLK NOP SETB RST NOP MOV A,RC_ADDR MOV R4,#8 WRITE1: RRC A ;送地址给 1302 NOP NOP CLR SCLK NOP NOP NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP DJNZ R4,WRITE1 CLR SCLK NOP MOV A,RC_DATA MOV R4,#8 WRITE2: RRC A NOP ;送数据给 130264 CLR SCLK NOP NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP DJNZ R4,WRITE2 CLR RST RET ;读 1302 程序 READ: CLR RST NOP CLR SCLK NOP SETB RST NOP MOV A,RC_ADDR MOV R4,#8 READ1: RRC A ;送地址给 1302 NOP MOV IO,C NOP NOP NOP SETB SCLK NOP NOP NOP CLR SCLK NOP NOP DJNZ R4,READ1 MOV R4,#8 READ2: CLR SCLK NOP ;从 1302 中读出数据 NOP NOP MOV C,IO NOP NOP NOP NOP NOP RRC A65 NOP NOP NOP NOP SETB SCLK NOP DJNZ R4,READ2 MOV RC_DATA,A CLR RST RET ;写数据子程序 SEND_D: PUSH DPL PUSH DPH LCALL delay1;CHKBUSY MOV DPTR,#WRDATA MOVX @DPTR,A POP DPH POP DPL RET ;写指令子程序 SEND_I: PUSH DPL PUSH DPH LCALL delay1;CHKBUSY MOV DPTR,#WRICODE MOVX @DPTR,A POP DPH POP DPL RET DELAY2: MOV R6,#0CH DEL21: MOV R7,#18H DEL22: DJNZ R7,DEL22 DJNZ R6,DEL21 RET DELAY1: MOV R6,#80H DJNZ R6,$ RET TAB1: DB &DS1302 实时时钟 & END六、思考与练习1. 总结 DS1302 的应用方法。 2. 修改程序,改变显示方式与显示数据。66 实验二十一一、实验目的X5045P 看门狗实验1. 了解 X5045P 的基本结构、工作原理; 2. 熟悉 X5045P 和系统的接线方法; 3. 掌握 X5045P 看门狗的编程方法。二、实验内容执行死循环模拟程序走死或跑飞,验证 X5045P 作为看门狗的作用。三、实验电路U6 1 CS SO WP 1 2 3 4 CS/W DI VCC SO RE SE T WP SCK GND SI X5 04 5 C6 1 0 . 1u F 8 7 6 5 VCC RE SE T SCK SI图 2.21.1MCS-51 单片机外扩 X5045P 看门狗电路图四、实验步骤1. 实验连线 (1)X5045P 看门狗单元 CS、SO、SI、SCK 分别连接单片机 P1.0、P1.1、P1.2、 P1.3。 (2)X5045P 看门狗单元 WP 连接+5V(写配置允许) 。 (3)X5045P 看门狗单元 RESET 连接发光二极管 L0(用于观察 RESET 信号) , 并将 RESET 连接逻辑电平开关单元 K0,置 K0 为高电平上拉(K0 拨向下方) 。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 以全速方式运行程序, 程序初始化看门狗, 再执行死循环模拟程序走死或跑飞, 当看门狗定时器溢出时,X5045P 启动复位信号,观察 L0 发光二极管状态。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。五、实验参考程序SCK SI BIT P1.3 BIT P1.267 SO CSBIT P1.1 BIT P1.0 ORG 0000H LJMP START ORG 0030H START: MOV SP, #60H LCALL WRITES ;配置 X5045 SJMP $ WRITES: CLR SCK CLR CS MOV A,#06H ;写允许 LCALL AWRITE SETB CS CLR CS MOV A,#01H ;WRSE LCALL AWRITE MOV A,#00H ;1.4S LCALL AWRITE CLR CS SETB CS RET AWRITE: MOV R3,#08H WRITE01:CLR SCK RLC A MOV SI,C ;SI SETB SCK DJNZ R3,WRITE01 CLR SI RET END六、思考与练习修改程序,改变看门狗的喂狗时间,观察输出变化。68 实验二十二一、实验目的D/A 数模转换实验1. 了解 D/A 转换与单片机的接口方法。 2. 了解 D/A 转换芯片 0832 的性能及编程方法。 3. 了解单片机系统中扩展 D/A 转换芯片的基本方法。二、实验内容利用 0832 D/A 数模转换输出方波。三、实验电路图 2.22.1MCS-51 单片机外扩 DAC0832 电路图四、程序流程图 2.22.2程序流程图69 五、实验步骤1. 实验连线 (1)译码连接:译码器的 G2A 连接 NAND 与非门输出端,该与非门的输入端 分别连接 A15、A14,译码器的输入端 CBA 分别连接 A5~A3。 (2)DA0832 单元的 CS、WR 分别连接下板译码单元的 Y5 和中板控制总线单 元的 WR。 (3)DA0832 单元的 AOUT 为数模转换输出,可接电压表观测电压或接入示波 器观测波形。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 以全速方式运行程序,用示波器测量 AOUT 输出端,观察其输出波形。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。六、实验参考程序CS0832 EQU 0FFE8H DA0V EQU 00H DA5V EQU 0FFH ORG 0000H LJMP START ORG 0030H START: MOV SP, #60H MOV DPTR,#CS0832 MLOOP: MOV A,#DA0V MOVX @DPTR,A CALL DELAY ;可断点到此行测 AOUT 电压 MOV A,#DA5V MOVX @DPTR,A CALL DELAY ;可断点到此行测 AOUT 电压 SJMP MLOOP DELAY: MOV R7,#20H DL1: MOV R6,#00H DJNZ R6,$ DJNZ R7,DL1 RET END七、思考与练习修改程序,使 DAC0832 的 AOUT 输出锯齿波、三角波、梯形波等。70 实验二十三一、实验目的A/D 模数转换实验1. 掌握 A/D 转换与单片机的接口方法。 2. 了解 A/D 芯片 0809 转换性能及编程方法。 3. 通过实验了解单片机如何进行数据采集。二、实验内容利用实验台上的 0809 做 A/D 转换实验,实验台上的 W1 电位器提供模拟量输入。 编制程序,将模拟量转换成数字量。三、实验说明A/D 转换器大致分有三类:一是双积分 A/D 转换器,优点是精度高,抗干扰性好, 价格便宜,但速度慢;二是逐次逼近式 A/D 转换器,精度、速度、价格适中;三是并行 A/D 转换器,速度快,价格也昂贵。 实验用 ADC0809 属第二类,是 8 位 8 路 A/D 转换器。每采集一次一般需 100μ s。 由于 ADC0809 A/D 转换器转换结束后会自动产生 EOC 信号(高电平有效) ,取反后将 其与 MCS-51 的 INT0 相连,可以用中断方式读取 A/D 转换结果。四、实验电路图 2.23.1MCS-51 单片机外扩 ADC0809 电路图五、程序流程71 图 2.23.2程序流程图六、实验步骤1. 实验连线 (1)译码连接:译码器的 G2A 连接 NAND 与非门输出端,该与非门的输入端 分别连接 A15、A14,译码器的输入端 CBA 分别连接 A5~A3。 (2)AD0809 单元的 SC/ALE 连接 NOR 或非门输出端,该或非门的输入端分别 连接译码器输出端 Y4 和写控制信号 WR;AD0809 单元的 OE 连接 NOT 非门输出 端,该非门输入端连接 OR 或门输出端,该或门输入端分别连接译码器输出端 Y4 和读控制信号 RD。 (3)AD0809 的读写信号 RD、WR(位于下板发光二极管显示单元左侧)分别 连接控制总线单元 RD、WR(位于中板控制总线单元) 。 (4)外设接口的 CLR(393 分频器主复位)连接中板控制总线单元的 RESET。 (5)AD0809 单元的 CLK 连接 T3、采集通道 IN0 连接 0~5V 模拟电压输出端。 (6)将 ADD2、ADD1、ADD0(位于下板右上方)分别连接地址总线单元的 A2、A1、A0。 (7)键盘显示单元的 8255 CS 连接译码器输出端 Y5。 2. 实验程序的编写、装载与运行 编写程序,编译、连接并装载到实验台,用全速方式运行程序。 3. 观察运行结果 以单步或断点方式运行程序,显示器显示“0809 XX” ,旋动模拟电压电位器, 改变 IN0 的模拟量,数码管显示采集值。 4. 终止运行 按“暂停图标” ,使系统无条件退出该程序的运行返回待令状态。七、实验参考程序CS0809 EQU 0FFE0H CS8255 EQU 0FFEFH OUTSEG EQU 0FFECH OUTBIT EQ

我要回帖

更多关于 电影结尾the end 的文章

 

随机推荐