单片机实验.docx
- 文档编号:6102158
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:73
- 大小:1.51MB
单片机实验.docx
《单片机实验.docx》由会员分享,可在线阅读,更多相关《单片机实验.docx(73页珍藏版)》请在冰点文库上搜索。
单片机实验
一、实验目的和要求
1、掌握定时器/计数器定时功能的使用方法。
2、掌握定时器/计数器的中断、查询使用方法。
3、掌握Proteus软件与Keil软件的使用方法。
4、掌握单片机系统的硬件和软件设计方法。
二、实验内容或原理
1、利用单片机的定时器/计数器以查询方式在单片机口线上产生连续周期性矩形波。
2、利用单片机的定时器/计数器以中断方式在单片机口线上产生连续周期性矩形波。
三、设计要求
1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,在P1.0口线上产生周期为200μS的连续方波,在P1.0口线上接示波器观察波形。
2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,在P1.1口线上产生周期为240μS的连续方波,在P1.1口线上接示波器观察波形。
四、电路原理图
五、
程序清单及流程图
1、产生200us的方波
汇编
ORG0000H
LJMPMAIN
MAIN:
MOVTMOD,#02H
MOVTH0,#9CH
MOVTL0,#9CH
SETBTR0
LOOP:
JBCTF0,LOOP1
AJMPLOOP
LOOP1:
MOVTH0,#9CH
MOVTL0,#9CH
CPLP1.0
AJMPLOOP
END
C程序
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitf1=P1^0;
voidmain()
{TMOD=0x01;
TH0=0xff;
TL0=0x9c;
TR0=1;
while
(1)
{while(TF0)
{f1=!
f1;
TH0=0xFF;
TL0=0x9C;
TF0=0;
}
}
}
2、产生240us的方波
汇编
ORG0000H
LJMPMAIN
ORG001BH
AJMPTC1
MAIN:
MOVSP,#60H
MOVIE,#88h
MOVTMOD,#20H
MOVTH1,#88H
MOVTL1,#88H
SETBTR1
LOOP:
LJMPLOOP
TC1:
CPLP1.1
RETI
END
C程序
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitf1=P1^1;
voidmain()
{SP=0x60;
EA=1;
ET1=1;
TMOD=0x10;
TH0=0xff;
TL0=0x88;
TR1=1;
while
(1);
}
voidTC1()interrupt3
{f1=!
f1;
TH1=0xFF;
TL1=0x88;
}
3、思考题
在P1.0口线上产生周期为500微秒,占空比为2:
5的连续矩形波。
汇编程序
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVTMOD,#01H
LOOP:
MOVTH0,#0FFH
MOVTL0,#38H
SETBTR0
LOOP1:
JBCTF0,LOOP2
LJMPLOOP1
LOOP2:
MOVTH0,#0FEH
MOVTL0,#0D4H
CPLP1.0
LOOP3:
JBCTF0,LOOP4
AJMPLOOP3
LOOP4:
MOVTH0,#0FFH
MOVTL0,#38H
CPLP1.0
LJMPLOOP1
END
C程序
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitf1=P1^1;
voidmain()
{
SP=0x60;
EA=1;
ET0=1;
TMOD=0x01;
TH0=0xff;
TL0=0x0b0;
TR0=1;
while
(1);
}
voidTC0()interrupt1
{
staticuchara=0;
a++;
if(a==2)
f1=~f1;
if(a==5)
{
f1=~f1;
a=0;
}
TH0=0xFF;
TL0=0x0b0;
}
仿真波形
200us的方波
240us仿真波形
500us占空比为2:
5的仿真波形
实际波形图
200us波形
240us波形
500us占空比2:
5波形
一、实验目的和要求
1、掌握定时器/计数器计数功能的使用方法。
2、掌握定时器/计数器的中断、查询使用方法。
3、掌握Proteus软件与Keil软件的使用方法。
4、掌握单片机系统的硬件和软件设计方法。
二、实验内容或原理
1、利用单片机的定时器/计数器以查询方式计数外
部连续周期性矩形波并在单片机口线上产生某一
频率的连续周期性矩形波。
2、利用单片机的定时器/计数器以中断方式计数外
部连续周期性矩形波并在单片机口线上产生某一
频率的连续周期性矩形波。
三、设计要求
1、用Proteus软件画出电路原理图,单片机的定时
器/计数器以查询方式工作,设定计数功能,对
外部连续周期性脉冲信号进行计数,每计满100
个脉冲,则取反P1.0口线状态,在P1.0口线上
接示波器观察波形。
2、用Proteus软件画出电路原理图,单片机的定时
器/计数器以中断方式工作,设定计数功能,对
外部连续周期性脉冲信号进行计数,每计满200
个脉冲,则取反P1.0口线状态,在P1.0口线上
接示波器观察波形。
四、实验原理图
五、程序清单及流程图
1、查询方式工作,每计100个脉冲取反P1.0口线
汇编程序:
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVIE,#00H
MOVTMOD,#06H
MOVTH0,#9CH
MOVTL0,#9CH
SETBTR0
LOOP:
JBCTF0,LOOP1
AJMPLOOP
LOOP1:
CPLP1.0
AJMPLOOP
END
C程序:
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitP10=P1^0;
voidmain()
{TMOD=0x06;
TH0=0x9c;
TL0=0x9c;
TR0=1;
while
(1)
{while(TF0)
{P10=!
P10;
TF0=0;
}
}
}
2、中断方式工作,每计数200个脉冲取反P1.0口线
汇编程序:
ORG0000H
LJMPMAIN
ORG000BH
AJMPRNT1
MAIN:
MOVSP,#60H
MOVIE,#82H
MOVTMOD,#06H
MOVTH0,#38H
MOVTL0,#38H
SETBTR0
LOOP:
LJMPLOOP
RNT1:
CPLP1.0
RETI
END
C程序:
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitP10=P1^0;
voidmain()
{SP=0x60;
EA=1;
IE=0x82;
TMOD=0x06;
TH0=0x38;
TL0=0x38;
TR0=1;
while
(1);
}
voidITPO()interrupt1
{
P10=!
P10;
}
五、思考题
1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P1.1口线上接示器观察波形。
汇编程序:
ORG0000H
LJMPMAIN
ORG001BH
LJMPITPO
ORG0100H
MAIN:
MOVSP,#60H
MOVTMOD,#62H
MOVTH0,#9CH
MOVTL0,#9CH
MOVTH1,#0CEH
MOVTL1,#0CEH
MOVIE,#88H
SETBTR0
SETBTR1
SETBP1.0
LOOP:
JNBTF0,LOOP
CPLP1.0
CLRTF0
LJMPLOOP
ITPO:
CPLP1.1
RETI
END
C程序:
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitP10=P1^0;
sbitP11=P1^1;
voidmain()
{SP=0x60;
EA=1;
IE=0x88;
TMOD=0x62;
TH0=0x9C;
TL0=0x9C;
TH1=0xCE;
TL1=0xCE;
TR0=1;
TR1=1;
while
(1)
{
while(TF0)
{
P10=!
P10;
TF0=0;
}
}
}
voidITPO()interrupt3
{
P11=!
P11;
}
仿真波形:
每100个脉冲取反口线波形
每200个脉冲取反口线波形
思考题每50个脉冲取反口线波形
一、实验目的和要求
1、掌握中断系统外部中断源的使用方法。
2、掌握延时程序的编程及使用方法。
3、掌握Proteus软件与Keil软件的使用方法。
4、掌握单片机系统的硬件和软件设计方法。
二、实验内容或原理
1、在单片机口线上产生某一频率的连续周期性矩形波。
2、以按键K0作为外部中断源0开启波形。
3、以按键K1作为外部中断源1关闭波形。
三、设计要求
1、用Proteus软件画出电路原理图,在单片机的P1.0口线上接按键K0,作为外部中断源0使用,用于开启波形,在单片机的P1.1口线上接按键K1,作为外部中断源1使用,用于关闭波形。
2、在单片机的P1.2口线上产生周期50mS的连续方波,在P1.2口线上接示波器观察波形。
四、实验原理图
五、程序清单及流程图
1、在单片机的P1.2口线上产生周期50mS的连续方波
汇编程序;
ORG0000H
LJMPMAIN
ORG0003H
LJMPEXTER0
ORG000BH
LJMPIPTO
ORG00013H
LJMPEXTER1
MAIN:
MOVSP,#60H
MOVTMOD,#11H
MOVIE,#87H
MOVIP,#02H
MOVTH0,#9EH
MOVTL0,#58H
MOVTH1,#0D8H
MOVTL1,#0F0H
HERE:
LJMPHERE
DELAY:
SETBTR1
HEREY:
JNBTF1,HEREY
CLRTR1
CLRTF1
MOVTH1,#0D8H
MOVTL1,#0F0H
RET
EXTER0:
LCALLDELAY
JBP1.0,LOOP0
HERE0:
JNBP1.0,HERE0
SETBTR0
LOOP0:
RETI
EXTER1:
LCALLDELAY
JBP1.1,LOOP1
HERE1:
JNBP1.1,HERE1
CLRTR0
LOOP1:
RETI
IPTO:
CPLP1.2
MOVTH0,#9EH
MOVTL0,#58H
RETI
END
C程序
#include
sbitP12=P1^2;
voidmain()
{SP=0X60;
IE=0X87;
IP=0X07;
TMOD=0X01;
TH0=0X9E;
TL0=0X58;
while
(1);
}
voidTTC1()interrupt1
{P12=~P12;
TH0=0X9E;
TL0=0X58;
}
voidEXINT0()interrupt0
{TR0=1;
}
voidEXINT1()interrupt2
{TR0=0;
}
五、思考题
1、在P1.2口线上产生周期为100mS,占空比为2:
5的连续矩形波,要求只采用按键K0来控制其开启和关闭。
汇编程序:
ORG0000H
LJMPMAIN
ORG0003H
LJMPEXTER0
ORG000BH
LJMPIPTO
MAIN:
MOVSP,#60H
MOVTMOD,#11H
MOVIE,#83H
MOVIP,#02H
MOVTH0,#0B1H
MOVTL0,#0E0H
MOVTH1,#0D8H
MOVTL1,#0F0H
MOVR1,#02H
HERE:
LJMPHERE
DELAY:
SETBTR1
HEREY:
JNBTF1,HEREY
CLRTR1
CLRTF1
MOVTH1,#0D8H
MOVTL1,#0F0H
RET
EXTER0:
LCALLDELAY
JBP1.0,LOOP0
HERE0:
JNBP1.0,HERE0
CPLTR0
LOOP0:
RETI
IPTO:
DJNZR1,LOOP
CPLP1.2
CPL00H
JNB00H,LOOP2
MOVR1,#03H
LJMPLOOP
LOOP2:
MOVR1,#02H
LOOP:
MOVTH0,#0B1H
MOVTL0,#0E0H
RETI
END
C程序:
#include
sbitP12=P1^2;
voidmain()
{SP=0X60;
IE=0X81;
TR0=1;
TMOD=0X01;
TH0=0X63;
TL0=0XC0;
while
(1)
{while(!
TF0);
P12=~P12;
TF0=0;
TH0=0X63;
TL0=0XC0;
while(!
TF0);
P12=~P12;
TF0=0;
TH0=0X15;
TL0=0XA0;
}
}
voidEXINT0()interrupt0
{TR0=!
TR0;
}
仿真波形
周期50ms连续方波
思考题,周期100ms的连续方波
一、实验目的和要求
1、掌握单片机与可编程并行接口芯片8255的接口设计方法。
2、掌握Proteus软件与Keil软件的使用方法。
3、熟悉可编程并行接口芯片8255初始化程序的设计方法。
二、实验内容或原理
1、在可编程并行接口芯片8255的PA口或PB口的某一口线上产生连续周期性矩形波。
2、在可编程并行接口芯片8255的PC口的PC0-PC3上接4个按键作输入,PC4-PC7上接4个发光二极管作输出,编程实现发光二极管正确指示按键的状态。
三、设计要求
1、用Proteus软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与8255接口。
2、在8255PA口或PB口的某一口线上产生周期为500μS的连续方波,接示波器观察波形。
3、在8255PC口的PC0-PC3上接4个按键作输入,PC4-PC7上接4个发光二极管作输出,编程实现发光二极管正确指示按键的状态
四、实验原理图
思考题原理图
五、程序清单及流程图
1、500us方波程序
汇编程序:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#60H
MOVIE,#00H
MOVTMOD,#20H
MOVDPTR,#0003H
MOVA,#80H
MOVX@DPTR,A
MOVB,#0FFH
MOVTH1,#06H
MOVTL1,#06H
SETBTR1
LOOP:
JBCTF1,LOOP1
LJMPLOOP
LOOP1:
MOVDPTR,#0000H
CPLB.0
MOVA,B
MOVX@DPTR,A
LJMPLOOP
END
C程序:
#include
#include
#defineMOC8255XBYTE[0X0003]
#definePA8255XBYTE[0X0000]
#definePC8255XBYTE[0X0002]
#defineucharunsignedchar
voidmain()
{ucharA,DPTR;
SP=0X80;
TMOD=0X02;
IE=0X82;
TH0=0X06;
TL0=0X06;
DPTR=0X0003;
MOC8255=0X80;
TR0=1;
while
(1);
}
voidttc1()interrupt1
{ucharDPTR,A;
DPTR=0X0000;
A=0XFF;
A=!
A;
PA8255=A;
}
2、四个按键控制四个发光二极管输出
汇编程序:
ORG0000H
LJMPMAIN
ORG0040H
MAIN:
MOVDPTR,#0003H
MOVA,#81H
MOVX@DPTR,A
LOOP:
MOVDPTR,#0002H
MOVXA,@DPTR
SWAPA
MOVX@DPTR,A
LJMPLOOP
END
C程序:
#include
#include
#defineMOC8255XBYTE[0X0003]
#definePA8255XBYTE[0X0000]
#definePC8255XBYTE[0X0002]
#defineucharunsignedchar
voidmain()
{uchari,j,dptr;
dptr=0x0003;
MOC8255=0x81;
while
(1)
{dptr=0x0002;
j=PC8255;
for(i=0;i<4;i++)
{
j=j<<1;
}
PC8255=j;
}
}
五、思考题
1、在8255PC口上外接8个发光二极管,利用8255PC口的置位/复位控制字控制其按某种规律变化。
汇编程序:
ORG0000H
LJMPMAIN
MAIN:
MOVDPTR,#0003H
LOOP:
MOVA,#00H
LOOP1:
MOVX@DPTR,A
LCALLDELAY
INCA
MOVR0,#10H
DJNZR0,LOOP1
LJMPLOOP
DELAY:
MOVR7,#13H
DL1:
MOVR6,#14H
DL0:
MOVR5,#82H
DJNZR5,$
DJNZR6,DL0
DJNZR7,DL1
RET
END
C程序:
#include
#include
#defineMOC8255XBYTE[0X0003]
#definePA8255XBYTE[0X0000]
#definePC8255XBYTE[0X0002]
#defineucharunsignedchar
voiddelay()
{
unsignedchara,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
}
voidmain()
{ucha
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验