




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告01_排序程序实验目的1. 熟悉MCS-51指令系统,掌握程序设计方法。2. 掌握控制转移指令的功能,以及冒泡排序法原理。3. 熟悉51单片机汇编语言编程环境。实验要求设30H开始的10个存储单元中,存放的是无符号数,编写程序实现:将它们排序,并存放到50H开始的单元中。实验原理冒泡算法的思想为,每次取相邻单元的两个数比较,判断是否需要交换数据的位置。第一次循环,比较N-1次,取到数据表的最大值;第二次循环,比较N-2次,取到次大值;第N-1次循环,比较一次,排序结束。流程框图开始R4外循环次数R3内循环次数 R0缓冲区首地址R0缓冲区首地址B(R0)A(R0)+1)(A)(B)?(R0) (R0)+1)R0(R0)+1(R3)-1=0?(R4)-1=0?结束实验程序及调试仿真:实验程序如下:N EQU 10TAB EQU 30HTAC EQU 50H ORG 0000HSORT: MOV R4,#N-1LOOP1: MOV A,R4 MOV R3,AMOV R0,#TABLOOP2: MOV A,R0 MOV B,AINC R0MOV A,R0CLR CSUBB A,BJNC UNEXCH MOV A,R0DEC R0XCH A,R0INC R0MOV R0,AUNEXCH: DJNZ R3,LOOP2 DJNZ R4,LOOP1MOV R1,#TABMOV R7,#NMOV R0,#TACAGAIN: MOV A,R1 MOV R0,AINC R1INC R0DJNZ R7,AGAINSJMP $END程序调试及运行结果实验结论通过本实验,我对冒泡排序法的原理有了更深入的理解,同时在掌握此算法思想的基础上能够用汇编语言进行编程,并学会在Keil Version4调试界面的Memory窗口中查看内存地址的内容,从而验证设计的源程序的正确性,提高了自己解决问题的能力。实验报告02_ 外部中断实验实验目的学会使用Keil Version4和Proteus软件进行单片机汇编语言和C语言程序设计与开发;了解和掌握MCS-51单片机的中断组成、中断控制工作原理、中断处理过程、外部中断的中断触发方式,掌握中断功能的编程方法。实验要求单片机的P1.0引脚连接LED指示灯D0;单片机的P3.2引脚(INT0)连接按键开关K,作为中断源,每次按键都会触发INT0中断;在INT0中断服务程序中将P1.0端口的信号取反,使LED指示灯D0在点亮和熄灭两种状态间切换,产生LED指示灯按键开关K控制的效果。实验原理本实验采用外部中断0。中断请求信号由按键BUTTON来实现,由引脚INT0(P3.2)引入;通过按键可以控制P1.0所接的LED灯的点亮熄灭。其中中断请求信号设置为边沿触发方式。当按键按下,INT0出现负跳变,发出中断请求信号。CPU响应中断,停止其他工作,跳转到INT0中断入口地址0003H单元,转入EX_INT0执行中断服务程序,当执行到中断返回指令RETI时,使CPU返回断点处,继续处理其他工作。中断处理流程图示:INT0中断入口计数加一保护现场恢复现场中断返回开始设置有关中断控制寄存器开外中断INT0、INT1设置P10 3初始状态显示循环等待中断 主程序框图 INT0中断处理程序框图 实验电路原理图实验程序及调试仿真ORG 0000HAJMP MAINORG 0003HAJMP EX_INT0ORG 0100HMAIN: MOV SP,#40H SETB IT0 SETB EA SETB EX0HERE: SJMP HERE ORG 0200HEX_INT0: CPL P1.0 RETI ENDProteus仿真按键为按下时:按键按下后实验结论本实验通过Keil Version4的中断程序汇编语言设计和Proteus软件的仿真,成功实现了按键对信号灯的熄灭点亮控制。通过实验,也加深了我对51单片机中断系统的认识。实验03_定时器实验实验目的了解MCS-51单片机中定时器、计数器的基本结构、工作原理和工作方式,掌握工作在定时器模式下的编程方法。实验要求设单片机的晶振频率fosc=12MHZ, 使用T0定时100ms, 在P1.2引脚产生周期为200ms的方波信号,并通过示波器观察P1.2输出的波形。实验原理定时器/计数器是单片机应用系统中经常使用的部件之一。根据工作要求及实际需要,选择合适的工作方式。如果有定时要求,就选择定时功能;如果要求检测外部脉冲信号个数,就选择计数功能。对定时器工作方式选择一般考虑定时时间和计数值的长度。若定时时间长则选用方式1,;若定时时间短则选择方式2.门控选择主要考虑是否要求外部信号来控制定时器/计数器的启动。要实现更长时间的定时,一般有两种方式:一是采用两个定时/计数器串联使用,一个定时并输出定时脉冲,另一个计数定时脉冲;二是采用一个定时/计数器定时工作,再加一个软件计数器记录溢出的次数。实验设计 按定时要求,可选择T0为定时功能并工作在方式1,用定时器T0定时100ms, 则计数初值X计算如下:X=216-(t * fosc)/12=216-(100 *103 * 12* 106)/12=10000H-100000由于X小于0,说明定时时间过长,因此需要采用实验原理中所述的两种方法之一实现实验要求。本实验采用方法二,即采用一个定时/计数器定时工作,再加一个软件计数器记录溢出的次数。具体实现为:用T0定时50ms,工作在工作方式1,然后在定时器中断服务子程序中由软件计数器(寄存器R2)对定时中断的次数进行统计,达到2次即输出周期为200ms的方波,此时模式字是01H。程序框图实验程序:ORG 0000H AJMP START ORG 000BH AJMP INT_T0 ORG 0100HSTART: MOV SP,#60H MOV TMOD,#01HMOV TL0,#0B0HMOV TH0,#3CHMOV R2,#02HSETB ET0SETB EASETB TR0HERE:SJMP HERE ORG 0200HINT_T0: MOV TL0,#0B0H MOV TH0,#3CHDJNZ R2,LOOPMOV R2,#02HCPL P1.2LOOP: RETI ENDProteus仿真电路示波器显示周期为200ms的方波:实验结论通过本实验,我对51单片机中定时器、计数器的基本结构、工作方式以及工作原理有了更深入的认识,同时发现可以运用定时器和计数器来产生方波。不仅如此,本实验的给定参数还使我意识到当定时时间过长使初值为负超出范围时,需要使用计数器来帮助实现功能。本实验巩固了我所学的理论知识,在设计实验时又使我注意到了许多细节,增强了我设计实验、排查错误的能力。实验04_两个单片机之间双向通信实验实验目的了解MCS-51单片机串行口(UART)的结构、工作方式,了解串行通信的原理和数据交换过程,掌握单片机之间进行串行通信的编程方法。实验要求将甲、乙两台MCS-51单片机串行口连接,即甲机的TXD与乙机的RXD相连;甲机的RXD与乙机的TXD相连;并实现双机共地。整个系统实现双向通信。具体是:(1) 甲机的K1按键可通过串行口分别控制乙机的LED1点亮;LED2点亮;LED1和LED2全亮或全灭。(2) 乙机的K2按键可通过串行口向甲机发送数字,甲机将接收到的数字显示在其P0端口的LED数码管显示器上。实验原理CPU与外界的信息交换称为通信。当数据的各位同时传送时,称为并行通信;当数据一位接一位顺序传送时,则称为串行通信。其中,串行数据通信分为同步通信和异步通信两种形式。MCS-51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF), 这两个在物理上独立的接受发送器,既可以接受数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器只能写入不能读出,它们的地址为99H。串行通信控制寄存器(SCON)是一个8位的专用寄存器,用于串行数据的通信控制,电源管理寄存器PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,可以设置波特率。串行工作口有四种工作方式,分别为工作方式0,工作方式1,工作方式2,工作方式3。串行通信只使用方式1、2、3。发送数据时,TI位置0,发送完毕时TI置位。接收数据时,RI位置0,接收完毕时置位RI。实验设计题(1):按键接甲机P1.1口,通过计数按键次数发送不同指令。乙机的P1.0,P1.1分别接两盏灯,接受甲机的指令从而实现乙机的灯的亮暗。甲机的按键接地,因此按下时P1.1应赋值为0。没按下一次,计数值加1,因为题目中两灯共出现四种情况,四种状态可设置分别为01,02,03,04,通过在四种状态下分别给乙机P1.0和P1.1口置1或置0(通过SETB和CLR实现),可以实现甲机对乙机灯的控制。本实验可采用查询方式也可采用中断方式。题(2):按键接乙机的P3.2口,即INT0口,LED数码管接甲机的P0端口,程序采用中断方式。乙机发送指令,通过按键次数控制甲机数码管上显示的数字,具体控制情况为,乙机按键按一次,甲机数码管显示“1”,按键按两下,数码管显示“2”,按键按三下,数码管显示“3”,按键按四下,数码管显示“4”。只需通过计数按键按下次数,没按下一次,计数值加1,同时启动一次发送即可。甲机没启动一次接受,子程序中就将需要显示的数字所对应的相应值传送给P0端口的数码管即可。程序框图NYYN返 回清标志位RI、TI取数并显示串行口中断按键松开?按键次数加一,计算编号按键按下?关中断,发编号开中断 开 始实验程序题(1)采用查询方式:甲机(按键控制)ORG 0000HLJMP MAINORG 0030HMAIN:MOV SCON, #40HMOV PCON, #00HMOV TMOD, #20HMOV TL1,#0F4HMOV TH1,#0F4HSETB TR1NEXT:JNB P1.1,L1SJMP NEXTNEXT1:JNB P1.1,L2SJMP NEXT1NEXT2:JNB P1.1,L3SJMP NEXT2NEXT3:JNB P1.1,L4SJMP NEXT3L1:MOV A,#00HMOV SBUF,AWAIT1:JBC TI,NEXT1SJMP WAIT1L2:MOV A,#01HMOV SBUF,AWAIT2:JBC TI,NEXT2SJMP WAIT2L3:MOV A,#02HMOV SBUF,AWAIT3:JBC TI,NEXT3SJMP WAIT3L4:MOV A,#03HMOV SBUF,AWAIT4:JBC TI,NEXTSJMP WAIT4END乙机(接受程序,实现灯的亮暗)ORG 0000HLJMP MAINORG 0080HMAIN:MOV SCON, #50HMOV PCON, #00HMOV TMOD, #20HMOV TL1,#0F4HMOV TH1,#0F4HSETB TR1WAIT:JBC RI,NEXTSJMP WAITNEXT:MOV A,SBUFCJNE A,#00H,L2SETB P1.0CLR P1.1SJMP WAITL2:CJNE A,#01H,L3SETB P1.1CLR P1.0SJMP WAITL3:CJNE A,#02H,L4SETB P1.0SETB P1.1SJMP WAITL4:CJNE A,#03H,WAITCLR P1.0CLR P1.1SJMP WAITEND题(1)采用中断方式甲机(按键控制)ORG 0000HLJMP MAINORG 0003HLJMP L1ORG 0030HMAIN: MOV SCON, #40H MOV PCON, #00H MOV TMOD, #20H MOV TH1, #0F4H MOV TL1, #0F4H SETB TR1 MOV SP, #40H SETB IT0 SETB EA SETB EX0L2: SJMP L2 ORG 0200HL1: MOV A, P1 MOV SBUF, AWAIT: JBC TI, NEXT SJMP WAITNEXT: RETIEND乙机(接受程序,实现灯的亮暗)ORG 0000HLJMP MAINORG 0030HMAIN: MOV SCON, #50H MOV PCON, #00H MOV TMOD, #20H MOV TH1, #0F4H MOV TL1, #0F4H SETB TR1 MOV R1, #00H MOV P1, #0FFHWAIT: JBC RI, NEXT SJMP WAITNEXT: MOV A, SBUF INC R1 SJMP L1L1: MOV A,R1 SUBB A, #01H JZ L2 MOV A, R1 SUBB A, #02H JZ L3 MOV A, R1 SUBB A, #03H JZ L4 MOV A ,R1 SUBB A, #04H JZ L5L2: CLR P1.0 SETB P1.1 CLR RI SJMP WAITL3: CLR P1.1 SETB P1.0 CLR RI SJMP WAITL4: CLR P1.0 CLR P1.1 CLR RI SJMP WAITL5: SETB P1.0 SETB P1.1 CLR RI MOV R1, #00H SJMP WAITENDProteus仿真电路题(1)采用查询程序的仿真甲机P1.1口按键按下第一次,亮灯全亮甲机按键按下第二次,两灯全灭:甲机按键按下第三次,D1灯灭,D2灯亮:甲机按键按下第四次,D1灯亮,D2灯灭:可以看出,甲机通过按键实现了对乙机所接的两灯亮灭的控制。题(2)采用中断程序设计的程序乙机按键控制甲机数码管程序(采用中断方式)org 0000hajmp sendorg 0003hajmp e_intorg 0023hajmp traniorg 0030hsend:mov scon,#090h mov pcon,#80h setb ea setb es setb ex0 setb it0 mov a,#0fh add a,#01h mov c,p mov tb8,c mov sbuf,a sjmp $ trani:jbc ti,loop2 jbc ri,loop3loop3:mov a,sbuf cjne a,#10h,loop5 mov r0,#00hloop5:cjne a,#11h,loop6 mov r0,#01hloop6:cjne a,#12h,loop7 mov r0,#02hloop7:cjne a,#13h,loop4 mov r0,#03hloop4: mov P1,r0 retie_int:cjne a,#13h,loop1 mov a,#0fhloop1: add a,#01h mov c,p mov tb8,c mov sbuf,a loop2: reti end甲机接收程序org 0000hajmp sendorg 0003hajmp e_intorg 0023hajmp tranisend: mov scon,#090h mov pcon,#80h mov p0,#0ffh mov p2,#01h setb ea setb es setb ex0 setb it0 mov a,#0fh add a,#01h mov c,p mov tb8,c mov sbuf,aloop4: mov p0,r0 sjmp loop4trani:jbc ti,loop2 jbc ri,loop3loop3:mov a,sbuf cjne a,#10h,loop5 mov r0,#0f9hloop5:cjne a,#11h,loop6 mov r0,#0a4hloop6:cjne a,#12h,loop7 mov r0,#0b0hloop7:cjne a,#13h,loop8 mov r0,#099hloop8: retie_int:cjne a,#13h,loop1 mov a,#0fh loop1: add a,#01h mov c,p mov tb8,c mov sbuf,a loop2:reti end题(2)仿真结果按下按键第一次,甲机数码管显示1按下按键第二次,数码管显示2按键按下第三次,数码管显示3按键按下第四次,数码管显示4可以看出,乙机通过按键实现了对甲机LED数码管上数字的控制。实验结论本实验通过对甲、乙两台51单片机的发送、接收程序的汇编语言编写,以及在Proteus中电路仿真,将甲、乙机的串行口相连,并进行电路的连接,最终仿真实现了双机的串口通信,即甲机通过按键实现了对乙机两端口所接LED灯亮暗的控制,而乙机通过按键实现了对甲机LED数码管显示数字的控制。通过本实验,我学会了串口通信发送、接受程序的编写,并且掌握了查询、中断方式编写改程序的不同思路,加深了对理论内容的学习。实验05_数码管显示4x4键盘矩阵按键实验实验目的熟悉和掌握矩阵式键盘的工作原理、电路设计和软件编程方法;熟悉和掌握矩阵式键盘的行扫描法和行反转法两种键盘扫描识别方法;掌握键盘延时消抖的软件方法;掌握LED静态扫描显示方式。实验要求4x4键盘矩阵的行线连接单片机的P1.0P1.3端口,列线连接P1.4P1.7端口;一位LED数码管连接单片机的P0口。编程实现:当按下任意一个按键时,LED数码管显示它在4x4键盘矩阵上的序号0F。实验原理矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是44个。这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。确定矩阵式键盘上何键被按下主要有两种方法,分别为行扫描法和行反转法。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,介绍过程如下:1、判断键盘中有无键按下 将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。2、判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。另一种方法是高低电平翻转法。过程如下:首先让P1口高四位为1,低四位为0,。若有按键按下,则高四位中会有一个1翻转为0,低四位不会变,此时即可确定被按下的键的行位置;然后让P1口高四位为0,低四位为1,。若有按键按下,则低四位中会有一个1翻转为0,高四位不会变,此时即可确定被按下的键的列位置。最后将上述两者进行或运算即可确定被按下的键的位置。实验流程图键盘扫描开始有键闭合?软件延时10mS有键闭合?确定按键位置闭合键释放?A按键值结束实验程序ORG 0000HLJMP STARTORG 0100HSTART: MOV SP,#60HKEY0: MOV P1,#0EFH JNB P1.0,K0 JNB P1.1,K4 JNB P1.2,K8 JB P1.3,NEXT1 LJMP K12NEXT1: MOV P1,#0DFH JNB P1.0,K1 JNB P1.1,K5 JNB P1.2,K9 JB P1.3,NEXT2 LJMP K13NEXT2: MOV P1,#0BFH JNB P1.0,K2 JNB P1.1,K6 JNB P1.2,K10 JB P1.3,NEXT3 LJMP K14NEXT3: MOV P1,#07FH JNB P1.0,K3 JNB P1.1,K7 JNB P1.2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数字化营销文化差异-洞察及研究
- 部队大型车辆驾驶课件
- 部队修军车的验收课件
- 部队休息时间管理
- 2024-2025学年河南省南阳市内乡县八年级(下)期末道德与法治试卷(含答案)
- 糖料种植行业风险管理与应对策略分析-洞察及研究
- 顶体反应生物标志物-洞察及研究
- 黄金期货避险属性研究-洞察及研究
- 基于拓扑优化的凸镰片轻量化与抗冲击性协同提升路径
- 基于AI的蒽醌类化合物绿色合成路径动态优化与能耗平衡模型构建
- 小学硬笔书法课教案(1-30节)
- optimact540技术参考手册
- 周口市医疗保障门诊特定药品保险申请表
- 光伏电站组件清洗周边除草治理方案
- 建筑面积测绘报告范本
- 校园物业考评表
- 药品生产质量管理工程完整版课件
- 爆破作业人员培训考核题库
- 2019版外研社高中英语选择性必修三单词默写表
- 核质保监查员考试复习题(答案)
- 墙体喷射混凝土加固工程方案一
评论
0/150
提交评论