单片机实验报告含仿真设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机原理及应用课程
实验报告
专业:
班级:
姓名:
学号:
实验一、keilC51及proteus软件的使用
一、实验目的:
1、掌握keil和proteus软件的基本操作
2、通过具体实例掌握keil和proteus软件的使用。
二、实验原理: keil使用步骤,proteus使用步骤
三、程序:
四、实验结果分析:
五、总结:学会了使用keil和proteus软件,掌握了利用keil和proteus
软件进行仿真的步骤。
实验二、并行输入/输出接口实验
一、实验目的:
1、进一步熟悉keil仿真软件、proteus仿真软件的使用。
2、了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。
3、掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。
二、实验原理:
MCS 51单片机的串行口在实际使用中通常用于三种情况:利用方式0 扩展并行i/0 接口:利用方式1 实现点对点的双机通信;利用方式2 或方式3 实现多机通信。利用方式0 扩展并行i/0 接口MCS 5 1 单片机的串行口在方式0 时,若外接一个串入并出的移位寄存器,就可以扩展并行输出口;若外接一个并入串出的移位寄存器,就可以扩展并行输入口。
三、程序:
#include
sbit P1_0=P1^0;
void main()
{
unsigned char i;
unsigned int j;
SCON=0x00;
i=0x01;
for(;;)
{
P1_0=0;
SBUF=I;
while(!TI) {i}
P1_0=1;TI=0;
for(j=0;j<=254;j++){;}
i=i*2;
if(i==0x00) i=0x01;
}
}
四、实验结果分析:
五、总结:进一步熟悉了keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和LED灯的电路结构,学会了构建简单的流水灯电路。掌握了C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。
实验三、定时器/计数器实验(1)—查询方式产生500us的方波
一、实验目的:
1、熟悉keil仿真软件、proteus的使用和C51定时程序的编写;
2、了解51单片机中定时、计数的概念,熟悉51单片机内部定时/计数器的结构与工作原理;
3、掌握查询方式处理定时/计数的工作过程,
4、掌握定时/计数器在C51中的设置与程序的书写格式以及使用方法。
二、实验原理:
通常利用定时/ 计数器来产生周期性的波形。利用定时/ 计数器产生周期性波形的基本思想是:利用定时/ 计数器产生周期性的定时,定时时间到则对输出端进行相应的处理。例如产生周期性的方波只需定时时间到对输出端取反一次即可。不同的方式定时的最大值不同,如定时的时间很短,则选择方式2 。方式2 形成周期性的定时不需重置初值;如定时比较长,则选择方式0 或方式1 ;如时间很长,则一个定时/ 计数器不够用,这时可用两个定时/ 计数器或一个定时/ 计数器加软件计数的方法。
三、程序:
#include
sbit P1_0=P1^0;
void main()
{
TMOD=0x02;
TH0=0x06;TL0=0x06;
TR0=1;
for(;;)
{
if(TF0){TF0=0;P1_0=!P1_0;}
}
}
四、实验结果分析:
五、总结:熟悉了keil仿真软件、proteus的使用和C51定时程序的编写;了解51单片机中定时、计数的概念,熟悉了51单片机内部定时/计数器的结构与工作原理;掌握了查询方式处理定时/计数的工作过程,掌握了定时/计数器在C51中的设置与程序的书写格式以及使用方法。
实验四、定时器/计数器实验(2)—中断方式产生500us的方波
一、实验目的:
1、熟悉keil仿真软件、proteus的使用和C51定时程序的编写;
2、进一步熟悉51单片机内部定时/计数器的结构与工作原理;
3、掌握中断方式处理定时/计数的工作过程。
二、实验原理
从P 1.0 输出周期为500 us 的方波,只需P 1.0 每250 us 取反后一次即可。当系统时钟为12MHz 时,定时/ 计数器TO 工作于方式2 时,最大的定时时间为256 us ,满足250us 的定时要求,方式控制字应没定为000000 1 0B (02H )。系统时钟为12Mhz ,定时250us,计数值N 为250 ,初值X = 256 -250 =6 ,则THO = TLO =06 H 。
:
三、程序:
#include
sbit P1_0=P1^0;
void main()
{
TMOD=0x02;
TH0=0x06;TL0=0x06;
EA=1;ET0=1;
TR0=1;
while(1);
}
void time0_int(void) interrupt 1
{
P1_0=!P1_0;
}