安徽大学历次单片机实验报告_第1页
安徽大学历次单片机实验报告_第2页
安徽大学历次单片机实验报告_第3页
安徽大学历次单片机实验报告_第4页
安徽大学历次单片机实验报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机实验报告学号:_ 姓名:_1、 实验目的:1.实验一的目的:掌握汇编语言设计和调试方法,熟悉键盘操作;2.实验二的目的:掌握汇编语言设计和调试方法;3.实验三的目的:进一步掌握汇编语言设计和调试方法。二、实验设备:装有Keil uVision的计算机1台(本人用的是装有Keil uVision2的 计算机)3、 实验内容:实验一 清零程序1.实验内容:把2000H20FFH的内容清零2. 我的流程图、源程序及调试结果: 流程图(用Edraw Mind Map 7.8制作): 源程序: ORG 0000H LJMP START ORG 0100H START: MOV R0,#0FFH MOV DPTR,#2000H MOV A,#00H MAIN: MOVX DPTR,A INC DPTR DJNZ R0,MAIN SJMP $ END 调试结果: 将源程序中的MOV A,#00H改为MOV A,#0FFH,以便观察上述程序是否能够实现清零 功能。 实验二 拆字程序1.实验内容:把2000H的内容拆开,高位送2001H,低位送2002H,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。2.我的流程图、源程序及调试结果: 流程图(用Edraw Mind Map 7.8制作): 源程序: ORG 0000H LJMP START ORG 0100H START: MOV DPTR,#2000H MOV A,#0A3H ;给累加器A赋一个值 MOVX DPTR,A ;将累加器A中的内容作为2000H的内容 MOV R0,A ANL A,#0F0H SWAP A INC DPTR MOVX DPTR,A MOV A,R0 ANL A,#0FH INC DPTR MOVX DPTR,A SJMP $ END 调试结果: 实验三 拼字程序1.实验内容:把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成一字节。2.我的流程图、源程序及调试结果:流程图(用Edraw Mind Map 7.8制作): 源程序: ORG 0000H LJMP START ORG 0100H START: MOV DPTR,#2000H MOV A,#0B2H ;给累加器A赋一个值 MOVX DPTR,A ;将累加器A中的内容作为2000H的内容 ANL A,#0FH SWAP A MOV R0,A INC DPTR MOV A,#0E5H ;给累加器A赋一个值 MOVX DPTR,A ;将累加器A中的内容作为2001H的内容 ANL A,#0FH ORL A,R0 INC DPTR MOVX DPTR,A SJMP $ END 调试结果: 4、 实验小结此次实验让我基本掌握了MOVX,SWAP这两条从未用过的指令的用法,理解了地址高位与低位的含义,16位地址与8位地址的记法,DPTR作为地址指针的重要作用,并让我注意到了DEC比INC少一种用法,即有INC DPTR,却没有DEC DPTR。第二次单片机实验报告学号:_ 姓名:_一、实验目的: (l)学习P1口的使用方法; (2)学习延时子程序的编写。2、 实验必备知识: (l)Pl口为准双向口,每一位都可独立地定义为输入或输出,在作输入线使用前,必须向锁存器相应位写入“1”,该位才能作为输入。 (2)本实验中延时子程序采用指令循环来实现。3、 实验设备: 装有Keil uVision和STC_ISP的计算机1台 单片机芯片1片 单片机综合实验箱1个 杜邦线若干4、 实验内容: P1口输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。5、 我的电路原理图、流程图及源程序:1.电路原理图: 因为没有用实验室的设备完成实验,所以我用的是自己的计算机和单片机完成实验的。其起作用的部分的电路图如下图用(Proteus 7.8绘制)所示: 2. 流程图(用Edraw Mind Map 7.8制作): 3.源程序:ORG 0000H MOV A,#B JMP START ORG 0100H START: MOV P1,A CALL DEL100ms RR A ;将A中的内容右移一位,相应地,发光二极管中低电平所处位置左移一位 JMP START DEL100ms:MOV R7,#250 DEL1: MOV R6,#200 DEL2: DJNZ R6,DEL2 DJNZ R7,DEL1 RET END 六、思考:1. 改变延时常数,使发光二极管闪亮时间改变。答:如下两图所示,将晶振频率和时钟频率均选为12MHz,则一个机器周期为1us,执行一条DJNZ指令需要两个机器周期,即2us.用R6、R7分别表示其各自存储的立即数,则上述DEL100ms的延时子程序所延长的时间T=2*R6*R7us,故改变R6、R7中存储的立即数即可改变延时子程序延长的时间,从而使发光二极管闪亮时间改变。如:将DEL100ms的延时子程序中的MOV R7,#250改为MOV R7,#125,则DEL100ms的延时子程序延时的时间变为原来100ms的一半,即50ms.但立即数的大小有范围,对于8位单片机而言,其大小不能超过256,所以若想延长更长的时间,需要在延时程序中多加几个循环,或同时调用多个延时子程序。Keil uVision2中的选项对话框 Proteus 7.8中的选项对话框2. 修改程序,使发光二极管闪亮移位方向改变。答:将上述源程序中的 RR A 改为RL A则可将发光灯泡流动的方向由向左改为向右。 第三次单片机实验报告学号:_ 姓名:_一、实验目的:掌握工业顺序控制程序的简单编程,中断的使用。二、实验预备知识:在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些继续生产过程,按某种顺序有规律地完成预定的动作,对这类继续生产过程的控制称顺序控制,象注塑机工艺过程大致按“合模注射延时开模产伸产退”顺序动作,用单片机最易实现。三、实验设备: 装有Keil uVision和STC_ISP的计算机1台 单片机芯片1片 单片机综合实验箱1个 杜邦线若干四、实验内容: 由 P1.01.6控制注塑机的七道工序,现模拟控制七只发光二极的点亮,设定每道工序时间转换为延时,P3.4为开工启动开关,低脉冲有效。INT1为外部故障输入模拟,低电平报警。P1.7为报警声音输出。(可设置声光报警)五、我的电路原理图、流程图及源程序:1.电路原理图: 因为没有用实验室的设备完成实验,所以我用的是自己的计算机和单片机完成实验的。现在根据题意用Proteus 7.8仿真如下,其中,AT89C51的晶振已设置为12MHz,蜂鸣器的驱动电压已改为较低的1V,蜂鸣器的低电平端接红色超亮发光二级光的正极: 图一 原理图 图二 蜂鸣器的参数 2. 流程图(用Edraw Mind Map 7.8制作): 3.源程序:(1)仿真时用的程序,其原理图如图一所示:ORG 0000H JMP STARTORG 0013H JMP INT_1ORG 0100H JMP LIGHTSTART: MOV A,#0FEH MOV R0,#7H SETB IT0 SETB EX1 SETB EA MOV R1,#1H HERE: JB P3.4,HERE ;保证只有开工启动开关按下时才执行后续程序LIGHT: MOV P1,A ;按键按下开始工序 CALL DEL RL A DJNZ R0,LIGHT MOV P1,#0FFH JMP $ ;等待中断INT_1: PUSH PSW ;中断工序并声光报警 PUSH ACC MOV P1,#7FH POP ACC POP PSW RETIDEL: MOV R7,#25 ;延时1sDEL1: MOV R6,#200DEL2: MOV R5,#100DEL3: DJNZ R5,DEL3 DJNZ R6,DEL2 DJNZ R7,DEL1 RET END(2)做实验时用的程序(此程序是在以前写作业和自己训练时编写的程序上改编而成,因而不太简洁),其原理图未画出,但注释中已解释得很明白:ORG 0000H JMP STARTORG 0013H JMP KEY1ORG 0100H JMP MAINSTART: SETB IT0 SETB EX1 SETB EA MOV A,#0FEHHERE: JB P3.4,HERE ;保证只有开工启动开关按下时才执行后续程序 MOV R3,#7HMAIN: MOV R1,#248 ;可与下一条语句及延时程序搭配,使2ms的延时程序变为延时1s的程序 MOV R2,#2LIGHT: MOV P1,A ;按键按下开始工序 CALL DEL DJNZ R1,LIGHT MOV R1,#248 DJNZ R2,LIGHT RL A DJNZ R3,MAIN MOV P1,#0FFH JMP $ ;等待中断KEY1: PUSH PSW PUSH ACC MOV P1,#7FH ;中断工序,光报警,我用的单片机的P1口全都接了发光二极管 CLR P2.3 ;声报警。我用的单片机的P2.3接的是蜂鸣器,低电平有效 POP ACC POP PSW RETIDEL: MOV R7,#25 ;延时2msDEL1: MOV R6,#40 DEL2: DJNZ R6,DEL2 DJNZ R7,DEL1 RET END 6、 思考:若报警解除后,工序需从头开始等待开机信号,如何编程?答:加一个标志来表明是否是刚从中断中退出来,然后设置一个分支程序即可(由于RETI不同于RET,所以没有简单地将RETI换成相应的JMP指令跳转到程序的起始处)。如下(在仿真时用的程序上加了三条指令):ORG 0000H JMP STARTORG 0013H JMP INT_1ORG 0100H JMP LIGHTSTART: MOV A,#0FEH MOV R0,#7H SETB IT0 SETB EX1 SETB EA MOV R1,#1H ;此处为添加的第一条语句 HERE: JB P3.4,HERE LIGHT: MOV P1,A CALL DEL RL A CJNE R1,#1H,START ;此处为添

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论