资源描述
一、 实验目得
1、熟悉Proteus软件与Keil软件得使用方法 。
2、熟悉单片机应用电路得设计方法 。
3、掌握单片机并行I/O口得直接应用方法 。
4、掌握单片机应用程序得设计与调试方法。
二、设计要求
1、用Proteus软件画出电路原理图。要求在P1、0至P1、7口线上分别接 LED0至LED7八个发光二极管,在P3、0口线上接一蜂鸣器。
2、编写程序:要求LED0至LED7以秒速率循环右移。
3、编写程序:要求LED0至LED7以秒速率循环左移。
4、编写程序:要求在灯移动得同时,蜂鸣器逐位报警。
三、实验程序流程框图与程序清单
延时程序流程框图:
实验程序流程框图:
汇编程序:
ORG 0000H
MOV A, #11111110B
MOV P3, #0FFH
MAIN : MOV R0, #07H
LOOP1: LCALL DELAY
MOV P3, A
RL A
CLR P2、0
LCALL DELAY
SETB P2、0
DJNZ R0, LOOP1
MOV R0, #07H
LOOP2: LCALL DELAY
MOV P3, A
RR A
CLR P2、0
LCALL DELAY
SETB P2、0
DJNZ R0, LOOP2
LJMP MAIN
DELAY: MOV R7, #17H
DL1: MOV R6, #98H
DL0: MOV R5, #46H
DJNZ R5, $
DJNZ R6, DL0
DJNZ R7, DL1
RET
END
C语言程序:
#include<reg52、h>
#include<intrins、h>
unsigned char temp;
int i;
void delay(void);
sbit speaker=P2^0;
void main()
{ temp=0xfe;
P3=temp;
while(1)
{
for(i=0;i<7;i++)
{
temp=_crol_(temp,1);
speaker=0;
delay();
speaker=1;
delay();
P3=temp;
}
for(i=0;i<7;i++)
{
speaker=0;
temp=_cror_(temp,1);
delay();
speaker=1;
delay();
P3=temp;
}
}
}
void delay(void)
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_;
}
四:电路原理图:
五:实验结果
1、 2、
3、 4、
5、 6、
7、 8、
9、 10、
11、 12、
13、 14、
15、 16、
六、实验总结
通过本次实验,我复习了Proteus软件得使用方法,学习了更多得对KEIL得调试方法,对keil与Proteus得使用更加熟悉了,通过用Proteus软件画图,熟悉了单片机电路基本得设计方法,掌握了单片机并行I/O口得直接应用方法,对子程序得调用左移、右移指令可以灵活得运用,同时对keil产生得HEX型得文件得有了新得认识与应用
七、 思考题
1、编程实现LED0至LED7以十六进制计数规律亮灯 ?
程序设计流程框图如下:
汇编实验程序:
ORG 0000H
MAIN: MOV P3, #256
MOV A, #0FFH
LOOP: MOV P3, A
CLR P2、0
LCALL DELAY
SETB P2、0
LCALL DELAY
DEC A
LJMP LOOP
DELAY: MOV R7, #17H
DL1: MOV R6, #98H
DL0: MOV R5, #46H
DJNZ R5, $
DJNZ R6, DL0
DJNZ R7, DL1
RET
END
C语言程序:
#include<reg52、h>
#include<intrins、h>
unsigned char temp;
int i;
void delay(void);
sbit speaker=P3^1;
void main()
{ P3=0X00;
temp=0xFF;
while(1)
{
for(i=0;i<0XFF;i++)
{speaker=0x00;
delay();
speaker=0x01;
P3=temp ;
temp=temp-1;
}
}
}
void delay(void)
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_;
}
结果如下图所示:
1. 2、
3. 4、
5. 6、
7. 8、
9. 10、
11、 12、
展开阅读全文