《单片机原理及应用》实验报告
- 格式:doc
- 大小:614.50 KB
- 文档页数:39
《单片机原理及应用》实验报告
《单片机原理及应用》实验报告
2017/2018 学年 第 1 学期
系 别 计算机学院
专 业 软件工程
班 级 17软件工程班
姓 名 XXXXXX
学 号 8888888888
授课老师 ******
《单片机原理及应用》实验报告
实验一:流水灯实验
1.实验目的
(1)学习编译和仿真环境使用
(2)学习P3口的使用方法
(3)学习延时子程序的编写
2实验内容
(1)通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的接口;
(2)通过改变并行口输出电平控制LED灯的点亮与否,通过延时程序控制亮灯时间。
3.实验运行结果图
4.源代码
//流水灯实验
#include
sfr x=0xb0; //P3口在存储器中的地址是b0H, 通过sfr可定义8051内核单片机
//的所有内部8位特殊功能寄存器,对地址x的操作也就是对P《单片机原理及应用》实验报告
1口的操作
/****************************************
函数功能:延时一段时间
*****************************************/
void delay(void)
{
unsigned char i,j;
ﻩ for(i=0;i<255i++)
ﻩ for(j=0;j<255j++) ﻩ
ﻩﻩ ; //利用循环等待若干机器周期,从而延时一段时间
}
/*****************************************
函数功能:主函数
******************************************/
void main(void)
{
while(1)
{
x=0xfe; //第一个灯亮
ﻩ ﻩdelay(); //调用延时函数
x=0xfd; //第二个灯亮
ﻩ ﻩdelay(); //调用延时函数
x=0xfb; //第三个灯亮
delay(); //调用延时函数
ﻩ x=0xf7; //第四个灯亮
ﻩ delay(); //调用延时函数
ﻩ x=0xef; //第五个灯亮
delay(); //调用延时函数
ﻩﻩ x=0xdf; //第六个灯亮 《单片机原理及应用》实验报告
ﻩ delay(); //调用延时函数
ﻩ x=0xbf; //第七个灯亮
ﻩ ﻩdelay(); //调用延时函数
x=0x7f; //第八个灯亮
delay(); //调用延时函数
}
}
《单片机原理及应用》实验报告
实验二:中断实验
1.实验目的
(1)熟悉51单片机中断初始化编程方法。
(2)掌握51单片机外部中断源的设计使用。
(3)中断处理应用程序的设计与调试技巧。
2.实验内容
通过对P3.2、P3.3引脚的电平控制,实现外部中断处理,从而控制输出口P1的输出效果变化。
3.实验运行结果图
4.源代码
/用外中断0的中断方式进行数据采集和处理
#include //包含51单片机寄存器定义的头文件
sbit S=P3^2; //将S位定义为P3.2,
/*******************************************
函数功能:主函数
******************************************/ﻩ
void main(void)
{
EA=1; //开放总中断
EX0=1; //允许使用外中断
IT0=1; //选择负跳变来触发外中断
ﻩP1=0xff;
ﻩwhile(1)
; //无限循环, 防止程序跑飞 《单片机原理及应用》实验报告
}
/**************************************************************
函数功能:外中断T0的中断服务程序
**************************************************************/
void int0(void) interrupt 0 using 0 //外中断0的中断编号为0
{
P1=~P1; //每产生一次中断请求,P1取反一次。
}
//用外中断0的中断方式进行数据采集和处理
#include //包含51单片机寄存器定义的头文件
#define uchar unsigned char
void Delay(unsigned int i)
{
uchar j;
ﻩfor(;i>0;i--)
for(j=0;j<125;j++)
{;}
}
//sbit S=P3^2; //将S位定义为P3.2,
/*******************************************
函数功能:主函数
******************************************/
void main(void)
{
uchar display[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned int a;
while(1){
ﻩEA=1; //开放总中断
ﻩﻩEX0=1; //允许使用外中断
ﻩEX1=1;
IT0=1; //选择负跳变来触发外中断
ﻩIT1=1;
ﻩIP=0;
for(a=0;a<9;a++){
ﻩﻩﻩDelay(500);
ﻩ P1=display[a];
ﻩ }
ﻩ} 《单片机原理及应用》实验报告
}
/**************************************************************
函数功能:外中断T0的中断服务程序
**************************************************************/
void int0_isr(void) interrupt 0 using 1 //外中断0的中断编号为1
{
uchar n;
for(n=0;n<10;n++){
ﻩp1=0x0f;
ﻩDelay(500);
P1=0xf0;
Delay(500);
}
}
void int1_isr (void) interrupt 2 using 2{
uchar n;
ﻩfor(n=0;n<10;n++){
ﻩp1=0xff;
ﻩﻩDelay(500);
ﻩ P1=0;
ﻩﻩDelay(500);
ﻩ}
}《单片机原理及应用》实验报告
实验三:定时器/计数器实验
1.实验目的
(1)熟悉51单片机中断初始化编程方法
(2)熟悉51单片机定时计数器的初始化编程方法
(3)掌握定时计数器的应用
2.实验内容
通过使用定时器T0的中断来控制P2.0引脚的的LED的灯闪烁,要求闪烁时间2S,既亮1 S,灭1 S。
3.实验运行结果图
M1M2ABCDX1CRYSTALC11uFXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51R1330RR2330RM1M2VCCC233PC333PR310kD1LED-YELLOWD2LED-YELLOW
《单片机原理及应用》实验报告
4.源代码
#include // 包含51单片机寄存器定义的头文件
sbit D1=P1^4; //将D1位定义为P1.4引脚
unsigned char Countor; //设置全局变量,储存定时器T0中断次数
/**************************************************************
函数功能:主函数
*****************************************************