ImageVerifierCode 换一换
格式:DOCX , 页数:51 ,大小:756.53KB ,
资源ID:13101054      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-13101054.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机原理及应用实验指导书9.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

单片机原理及应用实验指导书9.docx

1、单片机原理及应用实验指导书9MCS51单片机原理及应用实验指导书淮阴师范学院 物理与电子电气工程学院2015.9实 验 要 求1、实验前预习实验内容,理解实验原理。2、按规定时间进入实验室,登记领取实验板和连接线,按操作程序将实验板连接到PC机上,开始实验。2、实验完毕请指导老师确认后,按操作程序拆除实验板,将连接线收拾好,与实验板一起归还指导老师,方可离开实验室。3、按时撰写并上交实验报告。实验报告格式为:(1)实验目的,(2)实验内容,(3)源代码及流程图,(4)结果记录及分析,(5)思考题,(6)体会及设想。实验板原理图51单片机集成开发环境MedWin V2.39简介1. 安装从网站免

2、费下载MedWin V2.39集成开发环境安装程序压缩包,将其释放后,按照默认路径安装到C:PManleyMedWin文件夹。2. 设置(1)每次启动MedWin会出现对话框,询问使用仿真器还是模拟仿真,应点击模拟仿真按钮。(2)设置仿真器 点击设置设置仿真器命令,选择时钟频率为12兆赫兹。(3)设置工作目录MedWin 集成开发环境默认的工作目录为C:MedWin PMedWin,建议根据需要建立自己的工作目录。注意:不得使用长文件名或长目录名!(4)设置编译器 将C语言编译器C51(文件夹)拷贝到C:MedWin文件夹下,点击设置设置编译工具命令,打开“设置编译工具”对话框,使用汇编语言时

3、选择第一行,使用C语言时选择第二行,如下图所示。3. 使用(1)新建项目 点击项目管理新建项目 命令,输入项目名称,点击确定按钮,出现“添加项目文件”对话框,输入源代码文件名,如T1.C(或T1.ASM),单击打开按钮,出现代码窗口,即可开始编程。(2)打开项目 点击项目管理打开项目 命令,点击项目文件名(项目文件后缀为.mpf),点击打开按钮,即可打开上次保存的项目。(3)编译 点击项目管理编译/汇编命令,启动编译器对源文件进行语法检查并编译,在消息窗口中显示编译结果。(3)模拟仿真 当源程序编译无误后,可进行模拟仿真调试。点击项目管理产生代码并装入命令,编译器对源程序进行重新编译并装入。这

4、时,可使用调试菜单中的相关命令进行调试,如设置断点、单步及全速执行等。(4)生成目标代码 点击项目管理输出Binary文件命令,生成BIN文件,用下载工具将其下载到实验板的单片机中执行。STC单片机下载软件STC-ISP的使用该软件界面如下图所示:按照界面上的提示:第一步,设置单片机型号为STC89C52RC。第二步,点击Open File按钮,打开编译生成的BIN文件或HEX文件。第三步,选择串口,设置波特率。如:COM1(具体COM口号在设备管理器中查看),115200。第四步,可按默认值不用设置。第五步,下载程序。在进行第五步之前,一定要保持实验板的USB线与PC机连接良好,并且实验板的

5、电源开关处于关闭状态,然后,点击下载按钮,再打开实验板电源开关,此时,软件将自动完成程序下载,下载完毕,实验板上的单片机立即开始运行。目前,MCS51内核单片机中STC89C5X(宏晶)和AT89S5X(ATMEL)两种芯片支持在线下载功能。实验一 LED流水灯一、实验目的1. 学习单片机并口的使用方法。2. 学习延时子程序的编写和使用。3. 学习集成开发环境MedWin的安装与使用。4. 学习STC单片机在线下载软件STC-ISP的使用。二、实验内容所谓流水灯就是8个发光二极管(LED)轮流点亮,周而复始。实验板上以P1口作输出口,接8只发光二极管LED1-LED8。当单片机的引脚输出为低电

6、平时发光二极管点亮,为高电平时熄灭。编写程序,使8个发光二极管循环点亮,时间间隔约0.5秒。三、实验电路连线实验板上与本实验有关的硬件如下图所示。P1口输出接8个发光二极管,排阻PZ1为限流电阻,以防止电流过大烧坏发光二极管。单片机的主时钟为11.0592MHz。发光二极管电路四、实验说明1、编写一个软件延时子程序,延时时间约0.5秒,采用三重循环实现,汇编语言程序如下:DELAY: MOV R7, #198DEL1: MOV R6, #50DEL2: MOV R5, #23 DJNZ R5, $ DJNZ R6, DEL2 DJNZ R7, DEL1 RET查指令表可知执行MOV指令需用1个

7、机器周期,DJNZ指令需用2个机器周期,在11.0592MHz晶振时,一个机器周期时间长度为1.085s,所以该段程序执行时间为:1(1223)501981.085s 500mS2、若使用C语言,可用for循环实现延时,下面的程序延时约500mS。void delay(void) int i,j; for(i=0;i1000;i+) for(j=0;j50;j+) _nop_(); _nop_();3、流水灯的主程序(汇编语言)为:ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV A,#0FEHLOP: MOV P1,A LCALL DELAY RL A SJMP

8、LOP END4、流水灯的C语言主程序为:#include #include #include void main (void) unsigned char a,c; a=0xfe; while (1) P1=a; c=a&0x80; a=a1; a=a|(c=0x80); delay(); 五、思考题1. 如何使点亮的LED从下往上移动?2. 如何使点亮的LED从两边往中间移动?、实验二 用一位数码管循环显示数字09一、实验目的1. 学习单片机并口的使用方法。2. 学习延时子程序的编写和使用。3. 学习LED数码管的驱动、编码。二、实验内容实验板上有6个LED数码管,编写程序,使最右边的一个

9、LED数码管循环显示09十个数字。时间间隔约0.5秒,其余LED数码管关闭。三、实验电路连线实验板上与本实验有关的硬件如下图所示。6个共阴的LED数码管上同名的引脚连接在一起,由单片机P0口通过锁存器74HC573进行控制。锁存器U2的11脚接单片机的P26,用于控制数码管上显示的数字与字母(P26为段选);锁存器U3的11脚接单片机的P27,用于控制6个数码管中的哪个进行显示。单片机的主时钟为11.0592MHz。数码管电路 实验板上所用数码管为共阴极数码管,其显示原理如下图所示。共阴极数码管显示原理四、实验说明1、下表为驱动LED数码管的段代码表,1-代表对应的笔段亮,0-代表对应的笔段不

10、亮。数字dpgfedcba十六进制P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0共阴0001111113F100000110062010110115B3010011114F401100110665011011016D6011111017D700000111078011111117F9011011116FA0111011177B011111007CC0011100139D010111105EE0111100179F1111000171 2、下表为驱动LED数码管的位代码表,实验板上数码管从右向左依次表示为S0、S1、S2、S3、S4、S5。数码管P0.7P0.6P0.5P0.4

11、P0.3P0.2P0.1P0.0十六进制S011011111DFS111101111EFS211110111F7S311111011FBS411111101FDS511111110FE因此,若需要在最右边数码管(S0)上显示数字“5”,只要从段代码表中查得6DH写入P0口,置P2.6为高,将6DH锁存在锁存器U2的输出端,再置P2.6为低;然后从位代码表中查得0DFH写入P0口,置P2.7为高,将0DFH锁存在锁存器U3的输出端,再置P2.7为低即可。3、实现最右边的一个LED数码管循环显示09十个数字的汇编语言程序如下:ORG 0000H LJMP MAIN ORG 0100HMAIN: M

12、OV R1,#00HLOOP: MOV A,R1 MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A MOV P2,#40H MOV P2,#00H MOV P0,#0DFH MOV P2,#80H MOV P2,#00H LCALL DELAY INC R1 MOV A,R1 CJNE A,#10,LOOP CLR A MOV R1,A SJMP LOOP DELAY: MOV R7,#198DEL1: MOV R6,#50DEL2: MOV R5,#23 DJNZ R5,$ DJNZ R6,DEL2 DJNZ R7,DEL1 RETTAB: DB 3fH,06H,5b

13、H,4fH,66H,6dH,7dH,07H,7fH,6fH END五、思考题1. 分别写出 六个字母(用于显示十六进制数)的段代码,编写程序,在最右边数码管上实现0-F的循环显示。2. 能否交替点亮点6个LED数码管?实验三 LED数码管的动态驱动一、实验目的1. 学习LED数码管的动态驱动编程。2. 学习使用定时/计数器、中断。3学习汇编语言的有关运算。二、实验内容编写程序,使实验板上的6个LED数码管稳定显示6个不同的数字,并使这四位数从000000开始,每0.5秒钟加1。三、实验电路连线本实验有关的硬件见实验二。四、实验说明1. 在实验二中,我们已经能够让某一个LED数码管显示需要的数字

14、,比如选让第一个LED显示“1”,隔一较短的时间(如2.5毫秒)后关闭第一个LED,让第二个LED显示“2”,如此周而复始,让6个LED依次显1、2、3、4、5、6,我们就能看到6个LED上稳定地显示6个不同的数字。当然,每个瞬间只有一个LED被点亮,大家亮的时间相同,均为2.5毫秒,6个LED数码管点亮一遍需要15毫秒,一秒钟各亮66次,所以看上去不会有闪烁感,但亮度只是实验二中LED亮度的六分之一。要实现每隔再隔2.5毫秒变换一个LED,最好的方法是使用定时器中断。2. 汇编语言参考程序为: DSEG ORG 10H DISP_BUF: DS 6 ;显示缓冲区SCN_INX: DS 1 ;

15、扫描指针SCN_COD: DS 1 ;扫描码CNT: DS 1 ;中断计数,每2.5ms加1 CSEG ORG 00H LJMP MAIN ;主程序入口,转初始化程序 ORG 0BH ;定时中断0入口 LJMP INTP0 ;每2.5ms中断一次,用于刷新显示 ORG 30HMAIN: MOV SP,#50H ;初始化堆栈指针 CLR RS0 ;选用第0组通用寄存器 CLR RS1 CLR A MOV CNT,A MOV R1,#6 MOV R0,#DISP_BUFLOOP1: MOV R0,A ;显示缓冲区清零 INC R0 DJNZ R1,LOOP1 MOV SCN_INX,A ;扫描指针

16、置0 MOV TMOD,#01H ;定时器0,方式1 MOV TH0,#0F7H ;计数初值,每次2.5ms(11.0592MHz晶振) MOV TL0,#000H ;65536-(2.5ms/1.085s)=63232=0F700H SETB TR0 ;启动定时器0 SETB EA ;中断总允许 SETB ET0 ;允许定时器0中断 SJMP $ ;主程序在此循环 ;-定时器0中断服务程序,间隔2.5ms-INTP0: PUSH ACC PUSH PSW MOV TH0,#0F7H ;置计数初值 MOV TL0,#00H SETB RS0 ;选用第1组通用寄存器 CLR RS1 MOV A,

17、SCN_INX ;取扫描指针 CJNE A,#06H,LOOP2 MOV A,#00H MOV SCN_INX,#00HLOOP2: MOV R3,A ADD A,#DISP_BUF ;加显示缓冲区首地址 MOV R1,A MOV A,R1 MOV DPTR,#CODE_TAB ;DPTR指向笔画代码表 ANL A,#0FH MOVC A,A+DPTR ;取笔画代码 MOV P0,A MOV P2,#40H ;段选信号P2.6置高 MOV P2,#00H MOV A,R3 MOV DPTR,#TAB1 ;DPTR指向位代码表 MOVC A,A+DPTR MOV P0,A MOV P2,#80H

18、 ;位选信号P2.7置高 MOV P2,#00H INC SCN_INX ;扫描指针加1 INC CNT MOV A,CNT CJNE A,#200,EN MOV CNT,#0 INC DISP_BUF+0 ;个位加1 MOV A,DISP_BUF+0 CJNE A,#10,EN ;不进位转移 MOV DISP_BUF+0,#0 ;进位则个位清零 INC DISP_BUF+1 MOV A,DISP_BUF+1 CJNE A,#10,EN MOV DISP_BUF+1,#0 INC DISP_BUF+2 MOV A,DISP_BUF+2 CJNE A,#10,EN MOV DISP_BUF+2,

19、#0 INC DISP_BUF+3 MOV A,DISP_BUF+3 CJNE A,#10,EN MOV DISP_BUF+3,#0 INC DISP_BUF+4 MOV A,DISP_BUF+4 CJNE A,#10,EN MOV DISP_BUF+4,#0 INC DISP_BUF+5 MOV A,DISP_BUF+5 CJNE A,#10,EN MOV DISP_BUF+5,#0 EN: POP PSW POP ACC RETI;-段选代码表-CODE_TAB:DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH;-位选代码表-TAB1: DB 0DFH,

20、0EFH,0F7H,0FBH,0FDH,0FEH END 五、思考题如何让8个LED数码管从00-00-00开始,每秒钟自动加1,前两位代表时,中间两位代表分,后两位代表秒?实验四 用单片机自动演奏乐曲一、实验目的1. 进一步熟悉89C51定时器/计数器的功能及应用;2. 掌握其初始化与中断服务程序的编程方法;3. 掌握用定时器/计数器发出不同音调的编程方法。二、实验内容用单片机的定时器/计数器0作定时器使用,工作于模式1,中断产生方波发声,根据各个的频率,计算对应的定时时间常数,定时器中断后按此常数赋初值,从而发出对应的音调。将歌曲的音调和节拍编成一个表,用音调作为定时器的初值,用节拍控制发

21、音时间, 就可以实现自动演奏。三、实验电路连线本实验有关的硬件如下图所示,FM为蜂鸣器控制端,在使用蜂鸣器时,需要用杜邦线将P2.0引脚与FM引脚进行短接。蜂鸣器电路四、实验说明声单定时初值常数计算方法:根据下表的音阶频率,计算对应的音阶周期T,用T/2计算定时周期数(晶振11.0592MHz),填入下表中。定时器的计数初值为65536定时周期数,在程序计算产生。定时周期数增加1倍,音阶降低八度,定时周期数降低1倍,音阶升高八度。音阶(C调)1234567频率(Hz)256288320341384427480周期(s)3906347231252932260423422083定时周期数36003

22、20028802702240021581920自动演奏东方红乐曲的C语言程序为:#include #define uchar unsigned char#define uint unsigned intsbit P20=P20;code uint cyc=3600,3200,2880,2702,2400,2158,1920;/音阶1-7对应的计数周期数code uchar tone=15,15,16,12,11,11,06,12,15,15,16,21,16,15,11,11, 06,12,15,12,11, 7, 6, 5,15,12,13,12,11,11, 6,12, 13,12,11,

23、12,11, 7, 6, 5, 0;/乐曲东方红的简谱表code uchar time= 8, 4, 4,16, 8, 4, 4,16, 8, 8, 4, 4, 4, 4, 8, 4, 4,16, 8, 8, 8, 4, 4, 8, 8, 8, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,16, 0;/节拍表(8为1拍,约570mS)uchar H0,L0,cnt;void cntint0(void) interrupt 1 /定时器0中断用于产生音调 TH0=H0; TL0=L0; P20=P20; /P2.0是音乐信号输出脚void cntint1(void

24、) interrupt 3 /定时器1中断用于产生节拍 cnt+; /定时器的计数初值为0,所以不用赋值void main(void) uchar i,a,t; uint b;next: TMOD=0x11; EA=1; ET0=1; ET1=1; cnt=0; TR1=1; i=0; while(1) t=tonei; /读音调 if(t=0) break; /是0,则结束 b=cyct%10-1; if(t20) b=b/2; b=b/2; H0=(65536-b)/256; L0=(65536-b)%256; cnt=0; a=timei; /读节拍 if(a!=255) TR0=1;

25、/255是休止符 while(acnt); TR0=0; i+; for(b=0;b1000;b+); P20=1; /关闭喇叭 goto next; /重放一遍五、思考题 参考东方红乐曲的演奏程序,编写康定情歌乐曲的演奏程序。康定情歌的乐谱如下:康定情歌13,15,16,16,15,16,13,12,12, 13,15,16,16,15,16, 13, 13, 13,15,16,16,15,8, 8, 8, 4, 4, 8, 8,12, 4, 8, 8, 8, 4, 4, 8, 16, 8, 8, 8, 8, 4, 4,16, 13, 12, 12, 15,13,12,13,12,11, 1

26、2, 6, 6, 12,8, 8, 12, 4, 8, 8, 4, 4, 4, 4, 8, 24, 8, 24,15,13, 12, 6, 16,15,13,12,13,12,11,12, 6, 5, 68,24, 8,16, 8, 8, 8, 4, 4, 4, 4, 8,16, 8, 32附:自动演奏乐曲八月桂花启遍地开的汇编语言参考程序。ORG 0000HLJMP START ORG 000BH INC 20H ;中断服务,中断计数器加1 MOV TH0,#0DCH MOV TL0,#00H ;11.0592MHz晶振,形成10毫秒中断 RETISTART: MOV SP,#50H MOV TH0,#0DCH MOV TL0,#00H MOV TMOD,#01H MOV IE,#82HMUSIC0: NOP MOV DPTR,#DAT ;表头地址送DPTR MOV 20H,#00H ;中断计数器清0MUSIC1: NOP CL

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2