欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载
     

    MCS 51单片机实验集合(9个实验)课件.ppt

    • 资源ID:1869299       资源大小:549KB        全文页数:94页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    MCS 51单片机实验集合(9个实验)课件.ppt

    附录A 实 验,实验一 MCS-51单片机及其开发系统 (仿真器)的认识实验二 MCS-51指令系统实验三 MCS-51指令系统综合练习实验四 中断实验实验五 显示器与定时中断实验六 串行通信实验七 键盘扫描实验八 A/D转换 实验九 D/A转换,实验一 MCS-51单片机及其开发系统(仿真器)的认识,一、实验目的 (1) 了解MCS-51单片机开发常用工具。 (2) 了解仿真器构成、功能及连接。 (3) 掌握MCS-51开发软件(汇编器)安装、功能及基本操作。 (4) 掌握源程序的编辑、汇编、运行(包括连续执行、单步执行和跟踪执行)。 (5) 掌握汇编语言指令与机器语言指令之间的对应关系。 (6) 掌握ORG、DATA、BIT等伪指令的作用。 (7) 掌握在特定仿真开发系统下浏览、修改特殊功能寄存器、内部RAM、外部RAM单元的方法。 (8) 理解MCS-51单片机在复位期间及复位后有关引脚的状态、特殊功能寄存器的初值。,二、实验器材 仿真器及附件(电源、仿真头、联机通讯电缆)、直流稳压电源(最好是单片机专用电源)、逻辑笔、数字万用表各一套。,三、实验电路,图 附A-1,表 附A-1,该实验电路具有如下一些特点。 1. 结构简单 该电路所需元器件少,费用低,它几乎能完成“单片机原理与应用”课程所必须的基本实验项目,如:(1) 复位期间、复位后各引脚状态测试。(2) I/O端口及禁止ALE引脚脉冲输出实验。(3) 中断、定时/计数实验。(4) 定时器T2可编程时钟输出实验。(5) LED显示及驱动实验。(6) 键盘接口实验。(7) 串行通讯实验。,2. 可扩充性强 例如,增加RS232与TTL电平转换器件(如MAX232芯片)后,即具备RS232电平转换功能,使该电路串行口能与其他串行设备(如PC机)进行串行通讯。 增加8155并行口扩展芯片后即具备并行口扩展功能和256字节外部RAM,即可进行外部RAM存取实验。 增加I2C总线EEPROM存储器(如24WC02、24WC32)或日历时钟芯片PCF8563后,即可进行I2C总线设备存取实验。 增加SPI总线接口器件,如EEPROM存储器或IDS4000系列语音芯片后即可进行SPI总线存取实验。,3. 安装焊接方便 实验前,先在万能板上焊好两个40引脚、三个14引脚IC插座、LED数码管、晶振和复位电路,并用导线段按原理图连接关系将电阻、电容、复位按钮、LED和IC引脚连接好。LED电源引脚、IC电源引脚连一起,作为实验电路板(目标板)的电源输入端VCC,接+5 V;所有地线引脚连在一起,作为实验电路板的地线GND,并用导线将实验电路板电源输入端VCC、地线GND分别接到直流稳压源+5 V和地线上。 仿真时,仿真头插入目标板上40引脚的CPU(即U1)插座内。 当然也可以将该实验电路(包括可选芯片、必要插座、接线头如电源插座、串行通信插座)做成印制板。,四、实验内容 1. PC机仿真器目标板(用户板)的连接,(1) 联机通讯口。目前多数仿真器不带键盘、LED显示器,需与PC机配套使用。单片机仿真开发设备一般以串行方式与PC机通讯,通过联机通讯电缆将仿真器联机通讯口与PC机串行口(COM1或COM2)相连。 (2) 仿真插座。通过仿真电缆将仿真器与仿真头连在一起(有些仿真器、仿真头的插座没有采用防反插技术,连接时务必注意插座、插头方向)。作为特例,图2给出了E6000、E2000、E51系列仿真器与POP8X5X仿真头之间的连接方式,即仿真电缆一端与仿真器相连,另一端与仿真头相连。 仿真头直接插入用户板上的CPU插座内。,图 附A-2,(3) 电源插座。通过仿真器上的电源插座给仿真器提供工作电源,与仿真器电源(作为仿真器附件之一)相连。 由于目标板上功耗不确定,因此多数仿真机(头)不给用户板提供电源,必须给用户板外接工作电源(一般为+5 V,具体数值与目标板上元器件工作电压有关,但外接电源电压不得超过5V+5%,否则可能损坏单片机应用系统中74系列逻辑电路芯片)。,2. 仿真软件安装及操作 仿真软件也称为汇编器。仿真器只有在仿真软件的支持下才能完成源程序的编辑(目前多数仿真软件均具有源程序编辑功能)、汇编(编译)、运行及调试。仿真软件功能强弱直接关系到单片机应用系统的开发效率,一套功能齐全、性能良好、符合用户操作习惯的单片机开发系统,会使单片机开发项目由难变易、由繁变简、由不可能变可能,收到事半功倍的效果。不同仿真开发软件的功能、操作方式不尽相同,用户只能依据开发商提供的使用说明书或用户指南来安装、操作仿真开发软件。,3. 汇编语言源程序编辑、运行及调试 输入、编辑、汇编、运行(连续、单步执行)如下程序段: ; 变量定义区 XVARDATA 30H YVARDATA 38H P10BIT P1.0 ORG 0000H LJMP MAIN ORG 0100H MAIN:,MOV SP, #9FHMOV A, #55HMOV XVAR, AMOV R0, #XVARMOV R0, #01HINC R0MOV R0, #02HMOV R1, #YVARMOV A, R0MOV R1, APUSH Acc; 在此处设置断点PUSH PSWMOV A, #0AAHSETB RS0CLR RS1MOV R0, #5AHMOV R1, #0A5HPOP PSW,POP ACCINC R1DEC R0MOV A, R0MOV R1, ACLR P10SETB P1.0CLR P10MOV 90H, #00HMOV 90H, #55HMOV 90H, #0FFMOV P1, #00HMOV P1, #55HMOV P1, #0FFHSJMP $END,(1) 找出每条指令的机器码,并与第3章指令码表对照,指出每一指令的功能、寻址方式、操作数书写形式。 (2) 在单步执行过程中,每执行一条命令后,观察并记录有关寄存器、内存单元的变化情况。设置断点后,再连续执行,记录30H、31H、38H单元内容,与复位后的内容进行比较,由此得出什么结论? (3) 修改ORG 100H指令后的地址,重新汇编,观察程序代码在程序存储器中存放位置的变化情况。,4. 复位期间及复位后有关引脚状态、寄存器初值 按下复位按钮不放,用逻辑笔测出并记录各I/O引脚的电平;复位后,再用逻辑笔测出I/O口引脚电平;读出复位后,各特殊功能寄存器的初值,并与表2-4进行比较。 修改特殊功能寄存器、内部RAM及外部RAM单元内容,观察复位后相应单元内容有无变化,即可了解复位对特殊功能寄存器、内部RAM、外部RAM的影响。 注:由于8XC5X CPU P1P3口引脚输出级电路采用准双向结构,上拉电阻大,电流小,对地线短路电流小,即I/O引脚具有“线与”功能,而P0漏极开路,也具有“线与”功能。因此,在测量I/O引脚电平、电压操作过程中,即使逻辑笔、表笔将两根I/O引脚短路也不会损坏I/O口(但不允许将I/O引脚与电源VCC短路)。,实验二 MCS-51指令系统,一、实验目的(1) 理解MCS-51指令系统中常用指令功能和使用方法。(2) 掌握汇编语言程序的输入、编辑、运行、调试方法。,二、实验器材 仿真器及附件、图附A-1所示实验电路板、直流稳压电源各一套。 注:对于具备“软件模拟”运行方式的仿真开发系统,如WAVE系列的仿真开发软件。本实验可以不用仿真器、实验电路板等硬件设备,在“软件模拟”状态下运行调试即可。,三、实验内容 1. 寻址方式代码源程序指令源操作数寻址方式MOV R0,#4FH立即数寻址MOV A,#55H立即数寻址MOV R0,A寄存器寻址MOV R1, 4FH直接寻址MOV A,R1寄存器间接寻址MOVC A,A+DPTR变址寻址 SETB P1.1位寻址,2. 高128字节内部RAM与低128字节内部RAM之间的数据传送 (执行前,先将高128字节内部RAM中的80H单元置为特定数值,如55H,以便验证)代码源程序指令 说明MOV R0,#80H;将高128字节内部RAM地址80H传到R0中MOV A,R0;将高128字节内部RAM 80单元内容传到A中 MOV 30H,A;把存放在A中数据传到内部RAM30H单元中,3. 外部RAM与内部RAM之间的数据传送 (执行前,先将内部RAM 30H单元置为特定数值,如0AAH,以便验证)代码源程序指令 说明;将内部RAM数据传送到外部RAM中MOV A,30H;将内部RAM 30单元内部传送到A中MOV DPTR,#1000HMOVX DPTR,A;把存放在A中数据传到外部RAM 1000H单元;将外部RAM数据传送到内部RAM中MOV DPTR,#1000HMOVX A,DPTR;把外部RAM 1000H单元内容传到A中 MOV 31H,A;把数据传送到内部RAM 31H单元中,4. 把存放在程序存储器中的数表读到内部RAM中 执行下列程序段后,验证数表中的数码是否已传送到内部RAM 30H39H单元中。,代码源程序指令 说明MOV DPTR,#TAB;将表头地址传送到DPTR中MOV R0,#30HMOV R1,#00H;计数器初值00传送到R1中,LOOP:MOV A,R1MOVC A,A+DPTRMOV R0,A;把数表内容逐一传送到30H开始的内部RAM中INC R1INC R0CJNE R1,#0AH, LOOP;R1不等于0AH时,循环;数表ORG 1000HTAB:DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H,5. 算术运行指令 假设16位(双字节)被加数、加数分别存放在内部RAM的30H33H中,和存放在内部RAM的40H42H单元中(数据存放规则是低字节存放在低地址、高字节存放在高地址中)。,代码源程序指令 说明MOV A,30H;把被加数低8位传送到A中ADD A,32H;与加数低8位相加,结果存放在A中MOV 40H,A;把低8位相加结果存放在40H单元中MOV A,31H;把被加数高8位传送到A中ADDC A,33H;与加数高8位、进位Cy相加,结果存放在A中JC Next;有进位跳转MOV 42H,#00H;高8位相加没有进位,将42H单元清零SJMP ProendNext:MOV 42H,#01H;高8位相加有进位,将42H单元置1Proend:MOV 41H,A;把高8位相加结果存放在41H单元中,实验三 MCS-51指令系统综合练习,一、实验目的 (1) 进一步理解MCS-51指令系统中常用指令功能、使用方法。 (2) 理解以I/O口作为源操作数时,哪些指令读锁存器,哪些指令读引脚。,二、实验器材 仿真器及附件、直流稳压电源、万用表各一套,导线数条。 图附A-1所示实验电路板一块,但需将U2、U3芯片从IC插座上拔出,使P1口引脚悬空。,三、实验内容 在仿真机上输入并单步执行如下程序段,判定哪些指令读锁存器,哪些指令读引脚。 1. 验证“MOV C, P1.0”读操作对象 SETB P1.0; P1.0引脚悬空,执行该指令后,观察P1.0锁存器的状态,并用万用表; 测量P1.0引脚的电平状态MOV C, P1.0; 执行后观察进位标志Cy的状态MOV C, P1.0; 先用导线将P1.0引脚接地,再执行该指令,观察P1.0锁存器、进位; 标志Cy的状态 尽管P1.0锁存器为1,但P1.0引脚接地,即P1.0引脚为低电平,因此指令执行后Cy标志为0,说明“MOV C, P1.x”指令读引脚,而不是读锁存器。,2. 验证“MOV A, P1”指令读操作是锁存器还是I/O口引脚MOV P1, #55H; 将P1.0、P1.2、P1.4、P1.6锁存器位置1。执行该指令后,观察P1口; 锁存器的状态,并用万用表测量P1口各引脚的电平状态MOV A, P1; P1口引脚悬空,执行该指令后观察累加器Acc内容MOV A, P1; 先用导线将P1.0、P1.2、P1.4、P1.6引脚接地,然后执行该指令,观; 察累加器Acc的内容 尽管P1口锁存器内容为55H,对应的P1.0、P1.2、P1.4、P1.6锁存器为1,处于输入状态,因此将P1.0、P1.2、P1.4、P1.6引脚接地后,执行“MOV A, P1”指令后,累加器Acc内容为00H,说明该指令也是读P1口引脚的。,3. 验证“AND A, P1”指令源操作数是P1口锁存器还是P1口引脚MOV P1, #0FH; 将P1.0、P1.1、P1.2、P1.3锁存器位置1。执行该指令后,观察; P1口锁存器的状态,用万用表测量P1口各引脚的电平MOV A, #0FFH; 把立即数FFH送累加器AccAND A, P1; P1口引脚悬空,执行该指令后观察累加器Acc内容MOV A, #0FFH; 再把立即数FFH送累加器AccAND A, P1 ; 用导线将P1.0、P1.1、P1.2、P1.3引脚之一或全部接地,然后执行; 该指令,观察累加器Acc的内容,4. 验证“JB P1.0,LOOP”指令测试对象是P1.0锁存器还是P1.0引脚 P1.0引脚悬空(由于P1口具有上拉电阻,因此悬空的输入引脚相当于接高电平),执行如下程序段,观察指令跳转过程及执行后累加器Acc的内容。SETB P1.0MOV A, #0AAHJB P1.0, NEXTMOV A, #55HNEXT:NOP 然后,用导线将P1.0引脚接地,再执行上面程序段,观察指令跳转过程及执行后累加器Acc的内容。,5. 验证“INC P1”指令操作对象 MOV P1, #0FFH; 将立即数FFH送P1口锁存器 INC P1 用导线将P1.0引脚通过一个2 k电阻接+5 V电源(I/O引脚不能直接与+5 V电源相连,否则当I/O引脚对应的锁存器位为0时,下拉MOS管会因过流而损坏),然后执行该指令,观察锁存器P1内容,并用万用表测量P1.0引脚的电平。,实验四 中 断 实 验,一、实验目的 (1) 理解MCS-51中断控制系统。 (2) 理解MCS-51中断识别、控制及优先级排队。 (3) 理解中断响应过程及条件。 (4) 理解中断入口地址,掌握中断初始化、中断服务程序结构及编写方法。,二、实验器材 仿真器及附件、直流稳压电源、万用表各一套,导线数条。 图附A-1所示实验电路板一块,但需将U2、U3芯片从IC插座上拔出,使P1口引脚悬空。,三、实验内容及电路 1. 理解外中断 初始化、中断标志有效时间、中断响应条件 用导线将 (即P3.2)引脚与P1.0引脚相连,即用P1.0引脚输出信号模拟外中断信号。 实验程序如下:,X_TIME DATA 2AH ; 延迟时间参数XY_TIME DATA 2BH ; 延迟时间参数Y;这两个单元确定的延迟时间为tTIME DATA 2CH ; 延迟时间计数器,总的延迟时间为Timet,ORG 0000HLJMP MAINORG 0003H; 外中断入口地址LJMP INTO ORG 0100HPROC MAINMAIN: MOV SP, #4FH; 初始化堆栈指针SP; 初始化外中断SETB IT0 ; 边沿触发 CLR EX0 ; 禁止 中断 SETB EA ; 开中断SETB P1.0; P1.0引脚为高电平CLR P1.0; P1.0引脚为低电平,使P3.2引脚出现下降沿 SETB P1.0; 使P1.0引脚恢复高电平(断点1),MOV TIME, #50MOV X_TIME, #198MOV Y_TIME, #250LCALL DELAYSETB EX0; 允许 中断,断点2NOP; 断点3NOP; 断点4NOPSJMP $END; *通用延迟子程序*; 延迟时间参数在2AH(y)、2BH(x)单元中,总的延迟时间为t; t=(4y+2xy+10)T,其中T是机器周期。当晶振频率为12 MHz时,T=1 s; 典型参数I:x=198,y=250时,延迟时间t=100 010 s,即近似100 ms; 典型参数II:x=7,y=5时,延迟时间t=100 s; 子程序名称:Delay,PROC DelayDelay: PUSH PSW SETB RS0 CLR RS1 ; 使用1区 MOV R7,Y_TIME ; 取延迟时间参数yLOOP1: MOV R6,X_TIME ; 取延迟时间参数xLOOP2: DJNZ R6,LOOP2 DJNZ R7,LOOP1 POP PSW RET END,ORG 1000HPROC INTOINTO: PUSH PSW; 断点5 PUSH Acc ; 不用切换工作寄存器区,因为中断服务程序中没有改写寄存器R7R0 MOV A, #55H NOP POP PSW RETI END,实验步骤: (1) 复位后,观察并记录与中断有关各寄存器,如IE、TCON、IP的值。 (2) 在“断点1”设置断点,然后全速执行,并检查TCON寄存器内容。 (3) 取消断点1,设置断点2,复位后,再全速执行,并检查TCON寄存器内容。 (4) 取消断点1、2,设置断点3,复位后,再全速执行,并检查TCON寄存器内容。 (5) 取消断点1、2、3,设置断点4和5,复位后,全速执行并检测TCON寄存器内容。 (6) 将 触发方式改为电平触发,重复以上操作即可发现,CPU不会自动清除电平触发外中断请求标志IE0。,2. 验证中断优先级 用导线将 (即P3.2)引脚与P1.0引脚、 (P3.3)引脚与P1.1引脚相连,即可用P1.0、P1.1引脚输出信号模拟外中断信号 和 。 实验程序如下:,ORG 0000HLJMP MAINORG 0003H; 外中断入口地址LJMP INTOORG 0013H; 外中断入口地址 LJMP INT1,ORG 0100HPROC MAINMAIN:MOV SP, #4FH; 初始化堆栈指针SP; 初始化外中断SETB IT0 ; 边沿触发 ; 初始化外中断SETB IT1 ; 边沿触发SETB EX0 ; 允许中断SETB EX1 ; 允许中断SETB EA ; 开中断;CLR PX0; 修改中断优先级;SETB PX1MOV P1, #0FFH; 将立即数FF送P1口,使P1.0、P1.1同时为1MOV P1, #00H; 将立即数00送P1口,使P1.0、P1.1同时为0MOV P1, #0FFH; 将立即数FF送P1口,使P1.0、P1.1同时为1SJMP $; 模拟主程序END,ORG 1000HPROC INTOINTO: PUSH PSW CLR RS0 SETB RS1 ; 使用2区 MOV A, #AAH; 断点1 POP PSW RETIEND,ORG 2000HPROC INT1INT1:PUSH PSWSETB RS0SETB RS1; 使用3区MOV A, #55H; 断点2POP PSWRETI END,实验步骤: (1) 先不修改中断优先级控制寄存器IP,设置了断点1、2后,全速执行,将暂停在“断点1”。 复位后,各中断优先级均为0,于是 、 都是低优先级,尽管 、 同时有效,但同级中断CPU查询顺序是优先,因此全速执行后,暂停在断点1,说明同优先级时,CPU先响应 。 (2) 修改中断优先级控制寄存器IP,将IP寄存器的PX1位置1(高),PX0位为0,然后全速执行,程序暂停在“断点2”处。说明当两个中断同时有效时,CPU优先响应高优先级。,3. 中断嵌套实验程序如下:ORG 0000HLJMP MAINORG 0003H; 外中断 入口地址LJMP INTOORG 0013H; 外中断 入口地址LJMP INT1ORG 0100HPROC MAINMAIN: MOV SP, #4FH; 初始化堆栈指针SP; 初始化外中断,SETB IT0 ; 边沿触发; 初始化外中断SETB IT1 ; 边沿触发SETB EX0 ; 允许 中断SETB EX1 ; 允许 中断SETB EA ; 开中断;CLR PX0; 优先级为0(低);SETB PX1; 优先级为1(高)MOV P1, #0FFH; 将立即数FF送P1口,使P1.0、P1.1同时为1CLR P1.0; 外中断 有效SETB P1.0NOPSJMP $; 模拟主程序END,ORG 1000HPROC INTOINTO:PUSH PSWCLR RS0SETB RS1 ; 使用2区CLR P1.1; 外中断 有效SETB P1.1MOV A, #AAHPOP PSWRETI END,ORG 2000HPROC INT1INT1:PUSH PSWSETB RS0SETB RS1; 使用3区MOV A, #55HPOP PSWRETI END,实验步骤: (1) 先不修改中断优先级控制寄存器IP,复位后,单步执行,跟踪程序执行过程将发现:P1.0引脚出现低电平后,将进入外中断中断服务程序,尽管在中断服务程序中有效,但复位后,、都是低优先级,不能中断,因此必须等到中断服务程序运行结束后,才响应,因此不会出现中断嵌套。 (2) 修改中断优先级控制寄存器IP,将IP寄存器的PX1位置1(高),PX0位置0,然后单步执行,跟踪程序执行过程即发现:P1.0引脚出现低电平后,将进入外中断中断服务程序,而在中断服务程序中有效,由于是高优先级,可以中断,有效后立即进入中断服务程序,待中断服务程序运行结束后,又返回 服务程序继续执行,最后返回主程序,因此出现了中断嵌套。,实验五 显示器与定时中断,一、实验目的 (1) 理解LED数码管静态显示驱动电路组成、工作原理及限流电阻R的取值依据。 (2) 掌握中断初始化方法及定时中断服务程序的编写规则。 (3) 掌握LED动态显示驱动电路及驱动程序的编写方法。,二、实验器材 仿真器及附件、直流稳压电源、数字万用表、图附A-1所示实验电路板各一套。,三、实验内容 1. 测试实验电路 在特殊功能寄存器窗口内,将P1口锁存器置为00,如果LED数码显示器显示为“8.”,说明电路连接正确。 用数字万用表分别测出限流电阻R1两端压降VR和电源VCC与LED数码管任一笔段之间的电压(该电压就是LED正向压降VF),然后计算出LED工作电流IF,并与实际值(VR/R)比较。,参考程序ORG 0000HLJMP MAINORG 000BHLJMP CTC0;转入定时器T0中断程序入口地址ORG 100HMAIN:MOV SP,#5FH;初始化堆栈指针MOV A,TMODANL A,#0F0HORL A,#01HMOV TMOD,A;定时器T0工作于方式1,定时MOV TH0,#88HMOV TL0,#00H; 送初值SETB EA; 开中断,SETB ET0; 允许定时器T0产生中断MOV 30H,#00; 初始化显示缓冲区(存放显示数码)MOV R0,#0AH; 初始化显示时间计数器MOV DPTR,#1000H; 初始化数据指针MOV A,30H; 取显示数码MOVC A,A+DPTR; 取笔段代码MOV P1,A; 把笔段代码送P1口SETB TR0; 启动定时器T0Here:SJMP Here; 等待中断,虚拟主程序ORG 0200HCTC0:MOV TH0,#88HMOV TL0,#00H; 重装初值PUSH AccDJNZ R0,OutCTC0,INC 30HMOV A,30H; 取显示数码MOVC A,A+DPTR; 取笔段码MOV P1,A; 显示MOV R0,0AH; 重置计数器MOV A,30HCJNE A,#0FH,CTC0OUTMOV 30H,#00H; 重置显示数码OutCTC0:POP AccRETI; 返回ORG 1000HDB C0,F9,A4,B0,99,92,82,F8,80,90,88,83,C6,A1,86,8E,3. 模拟LED动态显示(即每隔特定时间显示一个笔段,同样可以显示数码“8.”) 为了避免闪烁,笔段(在本实验中用一个笔段模拟动态显示驱动方式中的一位LED)刷新频率取50 Hz,即显示周期为20 ms,每笔段时间为2.5 ms。为此,可利用定时器T0每隔2.5 ms发生一次中断,则定时器初值为:,即FD00H。因此TH0=0FDH,TL0=00H。,参考程序ORG 0000HLJMP MAINORG 000BHLJMP CTC0;转入定时器T0中断程序入口地址ORG 100HMAIN:MOV SP,#5FH;初始化堆栈指针MOV A,TMODANL A,#0F0HORL A,#01HMOV TMOD,A;定时器T0工作于方式1,定时MOV TH0,#0FDHMOV TL0,#00H; 送初值,SETB EA; 开中断SETB ET0; 允许定时器T0产生中断MOV P1,#0FEH; 使P1.0输出低电平,点亮a段SETB TR0; 启动定时器T0Here:SJMP Here; 等待中断,虚拟主程序ORG 0200HCTC0:MOV TH0,#0FDHMOV TL0,#00H; 重装初值PUSH AccMOV A,P1; 读P1口内容RL A; 左循环移位MOV P1,A; 送P1口,显示下一字段POP AccRETI; 返回,4. 测量信号频率 利用定时器T2可编程时钟输出信号(从P1.0引脚输出)作为定时器T0的外部计数脉冲,即用导线将P1.0引脚与P3.4引脚相连,对定时器T2可编程时钟输出信号进行计数,并验证。 5. 测量信号周期 用导线将P1.0引脚与P3.2引脚相连,利用定时器T2可编程时钟输出信号(从P1.0引脚输出)作为定时器T0的计数控制端,利用定时器T0测量定时器T2输出时钟信号周期,并验证。,实验六 串 行 通 信,一、实验目的(1) 理解串行通信概念。(2) 掌握MCS-51串行通信口的初始化方法、步骤。(3) 掌握串行发送、接收程序的编写方法。 (4) 理解串行通信波特率误差范围。,二、实验设备与器材 仿真器及附件、图附A-1所示实验电路板各两套,直流稳压电源一台、导线数条。,三、实验电路 用导线将第一块实验电路板的TXD(发送端)引脚与第二块电路板的RXD(接收端)引脚相连,第一块实验电路板的RXD(接收端)引脚与第二块电路板的TXD(发送端)引脚相连;再用导线将两块电路板地线连在一起,这样就形成了没有联络信号的串行通信方式。 分别插入仿真头,接好电源、地线。,四、实验内容 1. 串行通信格式的约定 波特率(CPS)为4800。晶振频率为3.6864 MHz,使用定时器T1溢出率作为发送、接收波特率,则定时器T1重装初值C=0FEH(不倍增)。 数据位长度为9位,其中b7b0为数据位,b8为奇偶校验位。 采用奇校验,即传送的8位数据中含有奇数个“1”时,校验位为1。, 数据帧格式为:0AAH(起始标志)+发送信息字节数(115)+信息+和校验假设发送的信息内容为007FH。 正确接收后则发送A5作为应答信号。 发送/接收缓冲区在30H3FH单元,40H单元记录发送/接收的字节数(b7作为缓冲数据有效标志)。 发送采用查询方式、接收采用中断。,2. 参考程序; 变量定义区TXDBDATA30H; 发送缓冲区TXDCDATA40H; 发送/接收字节计数器NOONEBIT00H; 帧首标志(接收)CGRXDBIT01H; 接收失败标志RXDSTUBIT02H; 接收状态(1表示在接收应答信号, 0表示空闲; 状态,可以接收对方送来的数据信息)ORG 0000HLJMP MAINORG 0023HLJMP UARTRXD ; 串行口中断入口地址,ORG 0100HMAIN:MOV SP, #80H ; 初始化堆栈指针MOV TXDC, #00H; 复位后,缓冲区数据无效CLR NOONE; 帧首标志清零CLR CGRXDCLR RXDSTU; 处于可以接收信息状态; -初始化定时器T1(串行口发送接收波特率) MOV A, TMOD ANL A, #0FH ORL A, #00100000B ;定时器T1工作在方式2(即自动重装初值),定时状态,由TR1控制 MOV TMOD, A MOV TL1, #0FEH MOV TH1, #0FEH ; 波特率为4800(晶振频率为3.6864 MHz,不倍增) CLR ET1 ; T1用作波特率发生器,禁止T1中断 SETB TR1 ; 启动定时器T1,; -初始化串行通信口 MOV SCON, #11000000B ; 方式3,SM2位为0,以便接收奇偶校验位SETB ES ; 允许串行口中断SETB REN ; 允许接收 SETB EA ; 开中断; 模拟等待LOOP:MOV A, TXDCJNB Acc.7, WAITLCALL TXD; 如果缓冲区数据有效就发送WAIT:SJMP LOOP; 循环等待; -串行发送子程序,PROC TXDTXD:PUSH PSWPUSH AccSETB RS0 ; 使用3区SETB RS1CLR REN; 禁止接收 CLR ES ; 禁止串行中断,即在发送过程中,采用查询方式 CLR T1 ; 清除T1 ; 计算校验和MOV R0, #TXDCMOV A, R0CLR Acc.7MOV R3, A; 取发送字节数MOV R2, A; 把发送字节暂时保存在R2中,CLR A; 清累加器MOV R0, #TXDB; 数据缓冲区首址送R0LOOP1:ADD A, R0INC R0DJNZ R3, LOOP1ANL A, #0FH; 保留检验和的低4位MOV R0, A; 保存检验和,检验和信息保存在数据信息后; 发送帧起始标志 MOV A, #0AAH ; 先发送帧起始标志AA MOV C, PSW.0 ; 取奇偶标志(当A中含奇数个“1”,P为1,即可接收到的数据中 ; 包括校验位在内,肯定含有偶数个“1”,除非错误 MOV TB8, C ; 奇偶标志送TB8 MOV SBUF, A ; 数据送SBUF寄存器,启动发送过程 JNB TI, $ ; 未发送结束等待 CLR TI ; 清除发送结束标志,JNB TI, $ ; 未发送结束等待 CLR TI ; 清除发送结束标志; 发送字节数INC R2; 连同和校验信息,实际发送字节数多1 MOV A, R2 ; 发送字节数送A MOV C, PSW.0 ; 取奇偶标志(当A中含奇数个“1”,P为1,即可接收到的数据中 ; 包括校验位在内,肯定含有偶数个“1”,除非错误 MOV TB8, C ; 奇偶标志送TB8MOV SBUF, A ; 数据送SBUF寄存器,启动发送过程 JNB T1, $ ; 未发送结束等待 CLR T1 ; 清除发送结束标志MOV R0, #TXDB; 发送数据缓冲区首地址送R0,LOOP2: MOV A, R0 ; 取发送数据 MOV C, PSW.0 ; 取奇偶标志 MOV TB8, C ; 奇偶标志送TB8 MOV SBUF, A ; 数据送SBUF寄存器,启动发送过程LOOP3:JNB T1, LOOP3 ; 如果T1不是1就循环,等待发送中断标志有效CLR T1 ; 清除T1,以便发送下一字节 INC R0 ; 数据指针加1,指向缓冲区内下一数据 DJNZ R2, LOOP1; 指定字节数未发送结束,循环 ; 发送结束,准备接收返回码D5H SETB REN ; 允许接收 SETB ES; 允许串行中断,即在接收过程中采用中断方式 SETB RXDSTU ; 进入接收返回码状态POP AccPOP PSW RET ; 返回END,; 串行接收中断服务程序PROC UARTRXDUARTRXD: PUSH PSW ; 保护状态寄存器 PUSH Acc SETB RS0 ; 使用3区SETB RS1;奇偶检验判别 CLR CGRXD ; 清除接收失败标志。 MOV A, SBUF ; 把结果送A JNB PSW.0, NEXT1 ; P=0,转移 JB RB8, NEXT2 ; 原来的P标志为1,对 SETB CGRXD ; 收到的中有奇数个“1”,而发来的P标志为0,错 SJMP RETURN,NEXT1: ; P=0时 JNB RB8, NEXT2 ; 原来的P标志为0,对 SETB CGRXD ; 收到的中有偶数个“1”,而发来的P标志为1,错 SJMP RETURNNEXT2: ; 判断接收状态 JNB RXDSTU, RXDI ; 处于接收返回码状态 MOV A, SBUF XRL A, #0A5H ; 与约定的返回码异或 JZ RIGHT ; 错误 CLR RXDSTU ; 返回命令接收状态,只能重新发送 LJMP RETURN,RIGHT: MOV P1, #0C0H; 返回码接收正确,在P1显示0(0的笔段码为C0)MOV R0, #TXDC; 清除发送缓冲区数据有效标志 MOV R0, #00H CLR RXDSTU ; 返回命令接收状态 LJMP RETURN ; 退出RXDI: XRL A, #0AAH ; 与AAH异或 JZ NO1 ; 如果为0,表明收到是帧的开始JNB NOONE, NO2; 如果帧开始标志为1,则说明是接收的字节数MOV R0, #TXDCMOV R0, SBUF; 接收数据存放到发送/接收字节计数中CLR NOONE; 清楚帧开始标志MOV R3, #00H; 初始化接收字节计数器LJMP RETURN,NO2:MOV A, #TXDB ; 缓冲首地址送A ADD A, R3 ; 加接收的字节数 MOV R0, A MOV R0, SBUF ; 数据送接收缓冲区 MOV A, R3 CLR C SUBB A, TXDC ; 与接收的字节数进行比较 JZ NO3 INC R3 ; 指针加1 LJMP RETURNNO3:; 表明已收完了一帧 ; 判别数据是否正确CLR ADRC R3; R3包含了接收和字节,因此要减1 MOV R0, #TXDB,LOOP1: ADD A, R0 INC R0DJNE R3, LOOP1ANL A, #0FH ; 获取三字节相加的低4位 XRL A, R0 ; 异或 JNZ RETURN ; 不是0,说明和错误,接收无效CLR CGRXD; 缓冲区数据有效MOV P1, #80H; 在P1显示数码“8”(8的笔段为80H) ; 发证实信息给主CPU MOV A, #0A5H LCALL TXDBYTE ; 调用单字节发送子程序,发返回码D5给从CPU SJMP RETURN,NO1: SETB NOONE; 帧开始标志置1RETURN: CLR RI ; 清除接收中断标志 POP PSW POP Acc RETI END,PROC TXDByteTXDByte: CLR ES ; 禁止串行中断,即在发送过程中,采用查询方式 CLR T1 ; 清除T1 MOV C, PSW.0 ; 取奇偶标志(当A中含奇数个“1”,P为1,即可接收到的; 数据中包括校验位在内,肯定含有偶数个“1”,除非错误 MOV TB8, C ; 奇偶标志送TB8 MOV SBUF, A ; 数据送SBUF寄存器,启动发送过程 JNB T1, $ ; 未发送结束等待 CLR T1 ; 清除发送结束标志 SETB ES SETB REN ; 允许接收 RETEND,3. 实验过程 (1) 分别在两台仿真器上输入、汇编上述程序,复位后执行。当甲需要向乙发送数据时,暂停(不是复位)仿真器甲的运行,把发送字节和发送信息分别填入发送字节计数器(同时b7位为1)、发送/接收缓冲区后,继续执行。如果仿真器乙显示“8”,则表明仿真器乙已准确接收了甲发来的信息(数据存放在接收缓冲区内,暂停后观察);同时仿真器甲将显示数码“0”。 (2) 重新设置定时器T1的初值,使两者波特率误差从1%逐渐增大到10%,然后再进行数据传送,看波特率误差范围允许多大? (3) 使用定时器T2溢出率作为串行口波特率,重复上述通信过程。 (4) 选择其他的通信约定,写出相应

    注意事项

    本文(MCS 51单片机实验集合(9个实验)课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开