实验一KeilC51集成开发环境的使用练习仿真与调试.docx
- 文档编号:16041534
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:24
- 大小:141.97KB
实验一KeilC51集成开发环境的使用练习仿真与调试.docx
《实验一KeilC51集成开发环境的使用练习仿真与调试.docx》由会员分享,可在线阅读,更多相关《实验一KeilC51集成开发环境的使用练习仿真与调试.docx(24页珍藏版)》请在冰点文库上搜索。
实验一KeilC51集成开发环境的使用练习仿真与调试
实验一KeilC51集成开发环境的使用练习、仿真与调试
、实验目的
1、熟悉KeilC51集成开发环境的使用方法
2、熟悉KeilC51集成开发环境调试功能的使用和DP-51PR0C单片机综合仿真实验仪的使用。
、实验设备及器件
IBMPC机一台
DP-51PR0C单片机综合仿真实验仪一台
、实验内容
1、进行KeilC51集成开发环境的安装和使用练习。
然后按照以下内容建立文件并编译产生HEX文件。
0RG0000H
LJMPMain
0RG00F0H
Main:
M0VR7,#0
Loop:
M0VR6,#0
DJNZR6,$
DJNZR6,$
DJNZR6,$
DJNZR6,$
DJNZ
R7,Loop
CPL
P1.0
;P
1
.0
取反
CPL
P1.1
;P
1
.1
取反
CPL
P1.2
;P
1
.2
取反
CPL
P1.3
;P
1
.3
取反
CPL
P1.4
;P
1
.4
取反
CPL
P1.5
;P
1
.5
取反
CPL
P1.6
;P
1
.6
取反
CPL
P1.7
;P
1
.7
取反
SJMP
Main
END
2、进行KeilC51集成开发环境的仿真调试练习。
然后按照以下内容建立文件并编译仿真调试。
0RG8000H
LJMPMain
0RG80F0H
Main:
M0VR7,#0
Loop:
MOV
R6,#0
DJNZ
R6,$
DJNZ
R6,$
DJNZ
R6,$
DJNZ
R6,$
DJNZ
R7,Loop
CPL
P1.0;
P1
.0取反
CPL
P1.1;
P1
.1取反
CPL
P1.2;
P1
.2取反
CPL
P1.3;
P1
.3取反
CPL
P1.4;
P1
.4取反
CPL
P1.5
J
P1.5取反
CPL
P1.6;
P1
.6取反
CPL
P1.7;
P1
.7取反
SJMP
Main
END
四、实验要求
1、熟练掌握KeilC51集成开发环境的工程建立、编辑与编译功能。
2、熟练掌握结合DP-51PR0C单片机综合仿真实验仪和KeilC51集成开发环境进行仿真调试。
五、实验步骤
(1)用40针排线把DP-51PR0C实验仪上的A1区J76接口和A2区J79接口相连,然后使用排线把A2区的J61接口与D1区的J52接口相连。
如右图所示。
(2)对DP-51PR0C实验仪上电,然后设置
TKSMonitor5仿真器和使用软件DPFLASH把MON51监控程序下载到
TKSMonitor5仿真器。
(3)关闭DPFLASH软件。
把TKSMonitor5仿真器的工作模式选择开关切换到RUN处,然后按一下复位键(RST),
MON51程序就开始运行了。
此时,TKSMonitor5仿真器进入调试状^态。
(4)用户使用KeilC51集成开发环境建立工程、编辑与编译“实验内容”所列的程序。
然后按照(软件调试环境的设置)设置好,然后在编译一次。
(5)此时用户就可以进行仿真调试。
如果用户在退出仿真调试模式后想再进入仿真调试,可以先按一下TKSMonitor5仿真器的复位键(RST)用户可以在仿真调试环境下设置断点,单步,全速运行等。
在调试过程中用户可以看见D1区LED的亮灭是由用户程序来控制的。
六、实验思考题
RAM50H~59H单元清零的程序。
RAM50H~59H单元写入01H的程序。
C51程序呢?
(用户可以把上面的例子改为
实验二蜂鸣器驱动实验
、实验目的
利用单片机的P1口作10口,使用户学会蜂鸣器的使用、实验设备及器件
IBMPC机一台
DP-51PR0C单片机综合仿真实验仪一台
频率计一台
、实验内容
1、编写一段程序,用P1.3口控制(输出3K到4K频率的方波),使B5区的蜂鸣器发出嘹亮的响声。
2、按照例程输入一段程序,用P1.3口控制,使B5区的蜂鸣器发出“生日快乐”的音乐。
四、实验步骤
1、使用导线把A2区的P13与B5区的BUZZ接线柱相连。
2、先编写一个延时程序(120'200uS)。
3、再编写一个循环程序,改变P1.3脚的电平,然后延时。
这样,这个循环就使P1.3口输出一个频率为2.5KHZ-4KHZ的方波。
在DP-51PR0C单片机综合仿真实验仪上运行该程序时,B5区的蜂鸣器将发出嘹亮的响声。
4、按以下例程序输入,然后运行,蜂鸣器发出“生日快乐”的音乐。
五、实验参考程序
ORG
JMP
ORG
JMPORG
MAIN:
MOV
MOV
SETB
SETB
SETB
START0:
SETB
8000HMAIN800BHINTT08100H
SP,#60HTMOD,#01HET0EATR0P1.3
;初始化定时器及其中断;开定时器0中断
;启动定时器0
;从TABLE中读取数据--响声时间
MOV
NEXT:
MOV
MOV
MOVC
MOV
JZ
30H,#00H
A,30HDPTR,#TABLEA,@A+DPTRR2,A
ENDD
ANL
MOV
MOV
A,#0FH
R5,A
A,R2
SWAP
ANLA,#0FH
SING:
D1:
JNZSING
CLRTR0
JMPD1
DECA
MOV22H,A
RLA
MOVDPTR,#TABLE1;从TABLE中读取数据—声调
MOVCA,@A+DPTR
MOVTH0,A
MOV21H,A
MOVA,22H
RLA
INCA
MOVCA,@A+DPTR
MOVTL0,A
MOV20H,A
SETBTR0
CALLDELAY;声音延时
INC30H
JMPNEXT
ENDD:
CLRTR0
JMPSTART0
INTT0:
PUSHPSW
PUSHACC
MOVTL0,20H
MOVTH0,21HCPLP1.3POPACCPOPPSWRETI
DELAY:
MOVR7,#02
DELAY0:
MOVR4,#187
DELAY1:
MOVR3,#248
;定时器0中断服务程序
;R5的值就是声响持续时间
DJNZR3,$
DJNZR4,DELAY1
DJNZR7,DELAY0
DJNZR5,DELAY
RET
TABLE:
DB82H,01H,81H,94H,84H,0B4H,0A4H,04H
DB82H,01H,81H,94H,84H,0C4H,0B4H,04H
DB82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H
DB0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H
DB82H,01H,81H,94H,84H,0B4H,0A4H,04H
DB82H,01H,81H,94H,84H,0C4H,0B4H,04H
DB82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H
DB0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00H
TABLE1:
DW64260,64400,64524,64580,64684,64777,64820,64898
DW64968,65030,65058,65110,65157,65178,65217
END
六、实验思考题
请用户思考,如何通过程序来编写出音乐。
实验三电子琴实验
、实验目的
利用实验仪上提供的按键K1~K7作为电子琴按键,控制蜂鸣器发声,使用户了解计算机发声原理,熟悉定时器和键盘扫描电路的工作原理及编程方法。
、实验设备及器件
IBMPC机一台
DP-51PR0C单片机综合仿真实验仪一台
频率计一台
、实验内容
1、编写一段程序,用P3.3口控制(输出7种音阶标称频率的方波),使B5区的蜂鸣器发出对应的音调。
2、按照歌曲的音调,使用D1区的按键K1~K7,弹奏一首简单的音乐
四、实验步骤
1、用导线将A2区P3.3口(INT1)和B5区的BUZZ接口相连,然后将D1区的J53接口和A2区的J61接口一一对应相连。
如右图所示。
2、编写按键的动态键盘扫描程序,根据不同音阶的频率编写蜂鸣器的音调控制程序,然后完成电子琴的主程序设计。
3、调试编写好的程序,使用频率计校准音阶的频率,然后使用键盘演奏一段好听的音乐。
五、实验参考程序
BUZZ
EQUP3.3
ORG
8000H
LJMP
MAIN
ORG
800BH
LJMP
INT_T0
ORG
8100H
MAIN:
MOV
SP,#60H;初始化堆栈向量
MOV
30H,#00
;定时器初值清零
MOV
31H,#00
MOV
P1,#0FFH
;设置P1口为输入模式
MOV
TMOD,#01H;设置定时器0为工作模式
SETB
ET0
;开定时器0中断
SETB
EA
;开总中断
CLR
TR0
;关闭定时器0
1
START:
MOVR0,P1
CJNER0,#0FFH,KEY1;键盘扫描
CLRTR0
SJMPSTART
KEY1:
CJNER0,#0FEH,KEY2;K1键按下
MOV30H,#0FBH;设置音阶1
MOV31H,#0E9H
LJMPSET_TIMER
KEY2:
CJNER0,#0FDH,KEY3;K2键按下
MOV30H,#0FCH;设置音阶2
MOV31H,#5CH
LJMPSET_TIMER
KEY3:
CJNER0,#0FBH,KEY4;K3键按下
MOV30H,#0FCH;设置音阶3
MOV31H,#0C1H
LJMPSET_TIMER
KEY4:
CJNER0,#0F7H,KEY5;K4键按下
MOV30H,#0FCH;设置音阶4
MOV31H,#0EFH
LJMPSET_TIMER
KEY5:
CJNER0,#0EFH,KEY6;K5键按下
MOV30H,#0FDH;设置音阶5
MOV31H,#045H
LJMPSET_TIMER
KEY6:
CJNER0,#0DFH,KEY7;K6键按下
MOV30H,#0FDH;设置音阶6
MOV31H,#92H
LJMPSET_TIMER
KEY7:
CJNER0,#0BFH,NOKEY;K7键按下
MOV30H,#0FDH;设置音阶7
MOV31H,#0D6H
SET_TIMER:
SETB
TR0
;发声
SJMP
START
NOKEY:
CLR
TR0
;无键按下
SJMP
START
INT_T0:
MOV
MOV
CPL
RETI
;T0中断服务程序
TH0,30H;定时器附初值
TL0,31H
BUZZ;输出方波
END
六、实验思考题结合实验仪上的硬件,设计一个可以任意选曲播放的电子音乐盒
四、
实验四串转并的I/O口实验
实验目的熟悉并掌握串转并的I/O口扩展方法。
实验设备及器件
IBMPC机一台
DP-51PR0C单片机综合仿真实验仪一台
实验内容
1、写程序,通过单片机的P1口控制74HC164的输入端口,实现串并转换。
2、验证串并转换数据的正确性。
实验要求
熟悉串并转换芯片的工作原理,学会使用串并转换芯片扩展单片机的I/O口资源。
实验步骤
1、短接A5区JP10接口,将A5区的CLK164、DINA164、DINB164、CLR164与A2区的P10~013对应相连(CLK对P10等等)。
如下图所示。
2、运行编写好的软件程序,完成一次串并转换。
3、使用C2区的逻辑笔或D1区的LED指示灯测试并行输出数据Q0~Q7数据的正确性。
六、实验参考程序
CLKEQUP1.0
DINAEQUP1.1
DINBEQUP1.2
CLR164EQUP1.3
ORG8000H
LJMPMAIN
ORG8100H
MAIN:
MOV
NOP
CLR
SP,#60H;设置堆栈向量
;设置以下端口初始化
CLK;CLK=0
NOP
CLRCLK
NOP
DJNZR4,SLCHG
SJMP$;程序结束,完成一次串并转换
END
实验五定时器输出PWM实验
一、实验目的利用定时器控制产生占空比可变的PWM波。
二、实验设备及器件
IBMPC机一台DP-51PROC单片机综合仿真实验仪一台频率计一台
三、实验内容
编写好一段程序,用P1.0口输出PWM波,用D1区的按键KEY1和KEY2实现占空比的增加和降低。
用示波器查看P1.0口的输出波形。
四、实验要求学会事业能够单片机的定时器产生250HZ的PWM波。
五、实验步骤
1、用导线连接A2区的P11与D1区的KEY10
2、用导线连接A2区的P12与D1区的KEY2。
3、将示波器的探针连接到A2区的P100
4、用示波器观测P1.0口的PWM波形。
;高电平脉冲的个数
;PWM周期
六、实验参考程序
PWMHDATA30H
PWMDATA31H
COUNTERDATA32H
TEMPDATA33H
ORG
AJMP
ORG
AJMP
8000HMAIN
800BH
INTT0
ORG
8100H
MAIN:
MOV
SP,#60H
;给堆栈指针赋初值
MOV
PWMH,#02H
J
MOV
COUNTER,#01H
MOV
PWM,#15H
MOV
TMOD,#02H
;定时器0在模式2下工作
MOV
TL0,#38H
;定时器每200us产生一次溢出
MOV
TH0,#38H
;自动重装的值
SETB
ET0
;使能定时器0中断
SETB
EA
;使能总中断
SETB
TR0
;开始计时
KSCAN:
JNB
P1.1,K1CHECK
;扫描KEY1,
JNB
P1.2,K2CHECK
;扫描KEY2,如果按下KEY2,跳转到
KEY2处理程序
SJMPKSCAN
K1CHECK:
JBP1.1,K1HANDLE
;去抖动,如果按下KEY1,跳转到KEY1处理程序
SJMPK1CHECK
K1HANDLE:
MOVA,PWMH
CJNEA,PWM,K1H0
SJMPKSCAN
K1H0:
MOVA,PWMH
INCA
CJNEA,PWM,K1H1
CLRTR0
SETBP1.0
SJMPK1H2
K1H1:
CJNEA,#02H,K1H2
SETBTR0
K1H2:
INCPWMH
SJMPKSCAN
;判断是否到达上边界
;是,则不进行任何操作
;如果在加1后到达最大值;定时器停止;P1.0为高电平
;如果加1后到达下边界
;重开定时器
;增加占空比
K2CHECK:
JBP1.2,K2HANDLE
KEY2处理程序
SJMPK2CHECK
K2HANDLE:
MOVA,PWMH
CJNEA,#01H,K2H0
SJMPKSCAN
K2H0:
MOVA,PWMH
MOVTEMP,PWM
DECA
CJNEA,#01H,K2H1
CLRTR0
CLRP1.0
SJMPK2H2
K2H1:
DECTEMP
CJNEA,TEMP,K2H2
SETBTR0
;去抖动,如果按下KEY2,跳转到
;判断是否到达下边界
;是,则不进行任何操作
;如果在减1后到达下边界
;定时器停止
;P1.0为低电平
;如果到达上边界
;启动定时器
K2H2:
DEC
SJMP
PWMH
KSCAN
;降低占空比
INTT0:
PUSH
PSW
;现场保护
PUSH
ACC
INC
COUNTER
;计数值加1
MOV
A,COUNTER
CJNE
A,PWMH,INTT01
;如果等于高电平脉冲数
CLR
P1.0
;P1.0变为低电平
INTT01:
CJNEA,PWM,INTT02;如果等于周期数
MOV
COUNTER,#01H
;计数器复位
SETB
P1.0
;P1.0为高电平
INTT02:
POPACC
;出栈
POP
PSW
RETI
END
七、实验思考题请用另一种方式实现定时器产生PWM波
实验六万年历时钟实验
一、实验目的
进行一次实际开发的经验,提高实际开发的能力。
二、实验设备及器件
IBMPC机一台
DP-51PROC单片机综合仿真实验仪一台
三、实验内容
结合I2C总线控制的实时时钟、ZLG7290键盘LED控制器进行万年历时钟的设计。
四、实验要求
熟练掌握I2C总线的控制,灵活运用I2C主控器软件包,深刻理解实际实时时钟、ZLG7290键盘LED控制的各种功能,并能把它们相结合,组成具有实际功能的万年历时钟。
五、实验步骤
1、用导线连接D5区的SCL、SDA到A2区的P16、P17(SCL~P16、
SDA~P17),连接D5区的RST-L、INT-KEY到A2区的P10、INTO(/RST~P1O、INT-KEY~INTO),短接D5区的JP1跳线。
2、模拟I2C软件包“VIIC-C51.C”文件加入到KeilC51的项目中,开头包含“VIIC-C51.H”头文件。
修改VIIC-C51.C文件中的sbitSDA=P1A7;和sbitSCL=PM6;。
另外还要增加ZLG7290软件包“ZLG7290.C”文件加入到KeilC51的项目中,开头包含“ZLG7290.H”头文件。
3、先编写显示的子函数,可以分别显示日期和显示时间。
用按键来切换显示的内容(初步设计用D5区的S1按键来切换)。
4、然后再进行整体编程,如果还有困难可以先画流程图,再编写程序。
5、显示结果为:
上电运行时,8位数码管显示时间,时分秒;按一下S1切换到显示年月日,再按一下S1又切换回时分秒。
六、实验预习要求
认真阅读PCF8563T、ZLG7290的数据手册和模拟I2C软件包使用手册,理解硬件结构,还可以先把程序编好,然后在KeilC51环境下进行软件仿真。
七、实验参考程序
#include"reg52.h"
#include"VIiC_C51.H"//包含VI2C软件包
//定义器件地址
//定义写单元首地址
//定义读单元首地址
#include"zlg7290.h"
#definePCF85630xA2
#defineWRADDR0x00
#defineRDADDR0x02
sbitKEY_INT=P3A2;
sbitRST=P1A0;
unsignedchardisp_buf[8]={0,0,0,0,0,0,0,0};//显示缓存
unsignedcharKEY;//保存键值
bitswich_date=0;
unsignedchardisplay_time(unsignedchar*sd){
sd[0]=sd[0]&0x7f;//秒屏蔽保留位sd[1]=sd[1]&0x7f;//分屏蔽保留位sd[2]=sd[2]&0x3f;//时屏蔽保留位disp_buf[0]=(sd[0]%16);
disp_buf[1]=(sd[0]/16);
disp_buf[2]=31;
disp_buf[3]=(sd[1]%16);
disp_buf[4]=(sd[1]/16);
disp_buf[5]=31;
disp_buf[6]=(sd[2]%16);disp_buf[7]=(sd[2]/16);
ZLG7290_SendBuf(disp_buf,8);return0;
}
unsignedchardisplay_date(unsignedchar*sd)
{
sd[0]=sd[0]&0x3f;//日屏蔽保留位
sd[2]=sd[2]&0x1f;//月屏蔽保留位disp_buf[0]=(sd[0]%16);
disp_buf[1]=(sd[0]/16);
disp_buf[2]=(sd[2]%16)+0x80;//后面加小数点
disp_buf[3]=(sd[2]/16);
disp_buf[4]=(sd[3]%16)+0x80;//后面加小数点
disp_buf[5]=(sd[3]/16);
disp_buf[6]=0;
disp_buf[7]=2;
ZLG7290_SendBuf(disp_buf,8);
return0;
}
unsignedcharDelayNS(unsignedcharno)
{
unsignedchari,j;//延时参数for(;no>0;no--)for(i=0;i<100;i++)for(j=0;j<100;j++);return0;
}
voidmain()
{
unsignedcharcodetd[9]={0x00,0x12,0x00,0x30,0x12,0x06,0x05,0x02,0x04};//定义初始化字unsignedcharrd[7];//定义接收缓冲区
RST=0;
DelayNS
(1);
RST=1;
ISendStr(PCF8563,WRADDR,td,0x5);
//初始化PCF8563如果需要的话可以不去掉
DelayNS(l);
ISendStr(PCF8563,WRADDR+5,&td[5],0x4);
〃初始化PCF8563如果需要的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 KeilC51 集成 开发 环境 使用 练习 仿真 调试