成都理工大学 《单片微机原理及应用》实验报告_第1页
成都理工大学 《单片微机原理及应用》实验报告_第2页
成都理工大学 《单片微机原理及应用》实验报告_第3页
成都理工大学 《单片微机原理及应用》实验报告_第4页
成都理工大学 《单片微机原理及应用》实验报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、成都理工2010级本科单片微机原理及应用实验报告成 都 理 工 大 学核技术与自动化工程学院实验报告课程名称: 单片微机原理及应用实验 姓 名: 何云鹏 学 号: 201006020104 专 业: 核工程与核技术 学 期: 20122013(2)任课教师: 刘易 目录实验一 数据传送及拆字2一、实验要求2二、实验原理2三、程序设计3四、现象及结果6实验二 I/O控制7一、实验要求7二、实验原理8三、程序设计10四、现象及结果13实验三 串口通讯14一、实验要求14二、实验原理15三、程序设计16四、现象及结果17实验四 电机驱动19一、实验要求19二、实验原理19三、程序设计19四、现象与结

2、果23五、问题讨论23实验一 数据传送及拆字实验人员: 何云鹏 指导老师: 刘易 实验地点: 6C701 实验时间:2013.03.04实验内容:片内外数据传送,以及拆字。一、实验要求(1)数据传输1、掌握汇编语设计和调试方法,熟悉键盘操作。2、熟悉使用keil软件。3、将片外ROM空间数据传送到片内RAM 。4、再将片外RAM空间数据传送到片内RAM。(2)拆字程序将片外RAM空间2000H单元的数据拆开,并分别存放在片外2001H和2002H单元。二、实验原理(1)数据传输片外ROM空间数据传送到片内RAM1、先对外部ROM空间2000H到200FH单元置数,即对这个空间采用“DB”伪指令

3、置数。2、然后将ROM空间数据逐一传送到内部RAM空间的40H到4FH单元。片外RAM空间数据传送到片内RAM3、先对外部RAM空间2000H到200FH单元置数,即对这个空间采用“MOVX”指令置数。4、然后将RAM空间数据逐一传送到内部RAM空间的40H到4FH单元。(2)拆字程序1、先对外部RAM空间2000H置数,即对这个空间采用“MOVX”指令置数;2、然后将2000H单元数据高低4位分别放入片外RAM空间的2001H和2002H单元。注意:2000H高低4为需要置不同数三、程序设计(1)数据传输片外ROM数据传送到片内RAMorg 0000hjmp mainorg 0100hmai

4、n:mov r0,#00h ; 赋r0指向00mov r1,#40hmov dptr,#2000h ;赋dptr指向2000loop:movc a,a+dptrmov r1,ainc dptrinc r0inc r1mov a,#00hcjne r0,#10h,loop;比较r0是否等于10,不等就跳向loopsjmp $org 2000hdb 12h,23h,34h,45h,56h,67h,78h,89h,9ahdb 0abh,0bch,0cdh,0deh,0efh,0f1h,0e1hend ;自片外ROM 2000h起置数片外RAM数据传送到片内RAMorg 0000Hjmp mainor

5、g 0100Hmain:mov r0,#00H; 赋r0指向00mov dptr,#2000H; 赋dptr指向2000loop: movx dptr,ainc dptr; dptr增一inc r0inc acjne r0,#10H,loop; 比较r0是否等于10,不等就跳向loopmov r0,#00H; 赋r0指向00mov r1,#40Hmov dptr,#2000H; 赋dptr指向2000lop: movx a,dptrinc dptrinc r0mov r1,ainc r1cjne r0,#10H,lopsjmp $;停指针,短跳,这儿跳到这儿end(2)拆字程序org 0000

6、hajmp mainorg 0100hmain:mov dptr,#2000hmov a,#64hmovx dptr,aanl a,#0f0hswap ainc dptrmovx dptr,amov dptr,#2000hmovx a,dptranl a,#0fhmov dptr,#2002hmovx dptr,asjmp $end四、现象及结果(1)数据传输片内RAM 0h至4Fh依次置数:12h,23h,34h,45h,56h,67h,78h,89h,9ah0abh,0bch,0cdh,0deh,0efh,0f1h,0e1h图 1.1 片外ROM数据传送到片内RAM实验结果片内RAM 0h

7、至4Fh依次置数:01h,02h,03h,04h,05h,06h,07h,08h,09h,0ah,0bh,0ch,0dh,0eh,0fh图1.2 片外RAM数据传送到片内RAM实验结果(2)拆字程序片外RAM 2000h单元置数0064h,其高四位60h存于2001h单元,低四位04h存于2002h单元。图1.3 拆字实验结果实验二 I/O控制实验人员:何云鹏 指导老师: 刘易 实验地点: 6C701 实验时间:2013.03.18实验内容:外部中断的使用,以及Timer定时器的使用一、实验要求(1)外部中断的使用1、使用外部中断0(INT0)或者使用外部中断1(INT1);2、控制P1口流水

8、灯。(2)Timer定时器的使用1、采用Timer定时器定时1秒钟;2、控制P1口流水灯二、实验原理(1)外部中断的使用MCS-51单片机有五个中断源,分别是INT0(入口地址0003H)、INT1(入口地址0013H)、TF0(入口地址000BH)、TF1(入口地址001BH)、串口中断(入口地址0023H),这5个中断源由TCON和SCON两个特殊功能寄存器进行控制IE0和IE1:外部中断的中断请求标志IT0和IT1:外部中断触发方式控制,为1时属边沿触发,为0时属电平触发TI:串行口的发送中断标志RI:串行口接受中断标志MCS-51单片机对中断的开放和屏蔽是由IE控制实现的EA:中断总控

9、制位,=1,CPU开放中断;=0,CPU禁止所有中断ES:串行口中断控制位,=1:允许串行口中断,=0:屏蔽串行口中断ET0和ET1:定时器中断控制位,=1:允许T0、T1中断,=0:禁止T0、T1中断EX0和EX1:外部中断控制位,=1:允许外部中断,=0:不允许外部中断 CPU在每个机器周期的S5P2期间,会自动查询各个中断申请标志位,若查到某标志位被置位,将启动中断机制。在CPU已经开放了外部中断允许的前提下:在INT0/INT1引脚输入一个负脉冲或低电平, TCON寄存器中的IE0/IE1标志位自动变“1”,检测到IE0/IE1变“1”后,将产生指令:LCALL 0003H(/0013

10、H)执行中断服务程序,并将IE0/IE1标志位自动清“0”,以备下次申请。(2)Timer定时器的使用1、定时/计数器1只能工作于工作方式2,但不能使用中断方式,此时定时/计数器1通常作为串行口的波特率发生器使用2、初始化包括确定工作方式,即对TMOD寄存器进行赋值计算计数初值,并写入寄存器TH0、TL0或TH1、TL1中根据要求,置位ET0或ET1置位EA开总中断置位TR0或TR1启动定时器工作3、定时器T0由特殊功能寄存器TL0(低八位)和TH0(高八位)构成,定时器T1由特殊功能寄存器TL1(低八位)和TH1(高八位)构成.特殊功能寄存器TMOD控制定时/计数器的工作方式。TCON 则用

11、于控制定时/计数器的启动和停止计数,同时管理T0和T1的溢出标志位.4、定时/计数器的方式控制寄存器TMOD:字节地址为89H,定时器控制寄存器TCON。字节地址为88H5、工作方式2具有自动重装载功能,在这种工作方式中,16位寄存器分作两部分,以TL为计数器,TH为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再像方式0和1那样需要人工干预,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL重新装载程序运行时(等在亮和灭的过程中),由于程序运行比较快,我们按键时,键不平稳,一直在抖动,故可能导致每按一次键,有多个灯亮或者灭。同时,如果灯亮的时间过短,我

12、们人眼感觉不到,故程序中必须调用延时程序,即采用Timer定时器三、程序设计(1)外部中断的使用#include<reg52.h>#include<intrins.h>void main()/unsigned int i=0;unsigned char temp=0xfe;P2=0x00;TMOD=0x01; /*T0工作在定时器方式1*/ TH0=(15536/256); /*预置计数初值*/ TL0=(15536%256); EA=1; /*CPU开中断*/ ET0=1; /*T0开中断*/ TR0=1; /*启动T0*/ do if(P2=0x14)P2=0x00

13、; P1=temp; temp=_crol_(temp,1);while(1);void timer0(void)interrupt 1 using 0 P2+=1;TH0=(15536/256); TL0=(15536%256); (2)Timer定时器的使用#include <REG51.H>int temp=0x01;unsigned char scount;void timer0_isr(void) interrupt 1 using 0TR0=0;TH0=0x4c;TL0=0x19;TF0=0;scount-;if(!scount)P1=temp;temp<<

14、=1;if(!P1)temp=0x01;if(scount>0)TR0=1;/else /TR0=0;main(void)TMOD=0x01;TH0=0x4c;TL0=0x19;/50msscount=20;/50ms*20=1sEA=1;ET0=1;TR0=1;while(1)if(!scount)/T=1sTH0=0x4c;TL0=0x19;/reloadscount=20;/re-1sTR0=1;四、现象及结果(1)外部中断的使用注:下图为程序运行过程中的一个状态,由仿真软件模拟得到。LED灯从上至下依次点亮后熄灭,然后重复。图2.1 外部中断实验结果(2)Timer定时器的使用L

15、ED灯从上至下依次熄灭后点亮,然后重复。图2.2 Timer定时器实验结果实验三 串口通讯实验人员: 何云鹏 指导老师: 刘易 实验地点: 6C701 实验时间:2013.03.25 实验内容:单片机与PC机通讯方法一、实验要求1、深刻理解芯片作用,学会使用单片机的串行口,了解单片机之间的串行通讯。2、PC机发送任意个字符,由单片机接收后马上上传(单片机发送)至PC机。二、实验原理1、单片机可以通过内部串行口寄存器实现与PC机间的数据传输(包括接受和发送)。数据的接受控制为是REN,其为1时才允许 接收数据,使用串行口通信时需要对其进行初始化,设置产生波特率的TI定时器,例如,T1的工作方式为

16、2,波特率为2400bps,晶振频率为11.0592MHZ,通过查串行口常用波特率得TMOD为20H,TH1为0F4H,TL1为0F4H。并对TR1置1。SCON为50H,对EA,ES,置1,以便于串行口中断。2、SBUF为串行口的收发缓冲器,为一个专用寄存器,其中包含了接受寄存器和发送寄存器,可以实现全双工通信,这两个寄存器具有同一个地址(99H)。MCS-51单片机的串行数据传输很简单,只要向发送缓冲器写入数据即可发送数据,而从接受缓冲期读出数据即可接受数据。3、串行口通信控制寄存器:SCON控制寄存器是一个可位寻址的专用寄存器,用于串行数据的通信控制,单元地址98H。其结构中 SM0 S

17、M1串行口工作方式选择位 SM2:多机通信控制位REN:允许接收位,=1:允许接收 =0:禁止接收TB8:发送数据位 =0为数据,=1为地址RB8:发送数据位。在方式2和3中,RB8存放接收到的第九位数据,用以识别接收到的数据特征。TI:发送中断标志位,=1表示帧发送结束 TI由软件清零RI:接收中断标志位。在接收到停止位时,该位由硬件置位。=1表示帧接收完成4、PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址87H。在CHMOS型单片机中,除SMOD位外,其它位均为虚设的,SMOD是串行口波特率倍增位。当SMOD=1,串行口波特率加倍。系统复位默认为SMOD=0。5、

18、串行口的工作方式由SCON中的SM0和SM1来定义的,其中SM0 SM1=01,即工作方式1最常用。工作方式1为波特率可变的8位异步通信接口方式,发送或接收一帧信息共10位,包括一个起始位0,8个数据位和1个停止位。a、数据发送:当CPU执行一条指令将数据写入发送缓冲SBUF时就启动发送,串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI;b、数据接收:在REN=1时,允许接收。只有当RI=0且停止位为1或者SM2=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI,否则信息丢失。所以在方式1下接收时,应先用软件清零RI和SM2标志。三、程序设计ORG 0

19、000HAJMP MAIN ORG 0023H AJMP INTORG 0030HMAIN:MOV TMOD,#20H /* 定时/计数器1只能工作于工作方式2,但不能使用中断方式,此时定时/计数器1通常作为串行口的波特率发生器使用*/ MOV TH1,#0F4H MOV TL1,#0F4H MOV SCON,#50H SETB EA /*中断总控制位*/ SETB ES /*串行口中断控制位*/ SETB TR1 AJMP $OUT: RETIINT: CLR RI MOV A,SBUFMOV SBUF,A JNB TI, $ CLR TI AJMP OUT END四、现象及结果在串行口窗口

20、里输入一串字符,按回车,此串字符被原样发送到显示串口里。将程序通过monitor传输到DPFLASH中,打开DPFLASH串口调试器,把波特率改为2400bps,在处理字符串对话框中输入“asdb”,点击发送,则在接受窗口中出现所发送的字符串,如图:图3.1 串口通讯实验结果实验四 电机驱动实验人员:何云鹏 指导老师: 刘易 实验地点: 6C701 实验时间:2013.04.01一、实验要求1、了解步进电机工作原理。2、C语言或者汇编程序,要求用开关K1,K2控制四项步进电机的正转、反转。二、实验原理步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就

21、驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。三、程序设计MOV 20H,#00H ;20H单元置初值,电机正转位置指针MOV 21H,#00H ;21H单元置初值,电机反转位置指针MOV P1,#0C0H ;P1口置初值,防止电机上电短路MOV TMOD,#60H ;T1计数器置初值,开中断MOV TL1,#0FFHMOV TH1,#0FFHSETB ET1SETB EASETB TR1SJMP $;*计数器1中断程序*IT1P: JB P3.7,FA

22、N ;电机正、反转指针;*电机正转*JB 00H,LOOP0JB 01H,LOOP1JB 02H,LOOP2JB 03H,LOOP3JB 04H,LOOP4JB 05H,LOOP5JB 06H,LOOP6JB 07H,LOOP7LOOP0: MOV P1,#0D0HMOV 20H,#02HMOV 21H,#40HAJMP QUITLOOP1: MOV P1,#090HMOV 20H,#04HMOV 21H,#20HAJMP QUITLOOP2: MOV P1,#0B0HMOV 20H,#08HMOV 21H,#10HAJMP QUITLOOP3: MOV P1,#030HMOV 20H,#10

23、HMOV 21H,#08HAJMP QUITLOOP4: MOV P1,#070HMOV 20H,#20HMOV 21H,#04HAJMP QUITLOOP5: MOV P1,#060HMOV 20H,#40HMOV 21H,#02HAJMP QUITLOOP6: MOV P1,#0E0HMOV 20H,#80HMOV 21H,#01HAJMP QUITLOOP7: MOV P1,#0C0HMOV ; 20H,#01HMOV 21H,#80HAJMP QUIT;*电机反转*FAN: JB 08H,LOOQ0JB 09H,LOOQ1JB 0AH,LOOQ2JB 0BH,LOOQ3JB 0CH,LOOQ4JB 0DH,LOOQ5JB 0EH,LOOQ6JB 0FH,LOOQ7LOOQ0: MOV P1,#0A0HMOV 21H,#02HMOV 20H,#40HAJMP QUITLOOQ1: MOV P1,#0E0HMOV 21H,#04HMOV 20H,#20HAJMP QUITLOOQ2: MOV P1,#0C0HMOV 21H

温馨提示

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

评论

0/150

提交评论