预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共42页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《单片机原理及应用》实验报告 D 实验一:流水灯实验 1.实验目的 (1)学习编译和仿真环境使用 (2)学习P3口的使用方法 (3)学习延时子程序的编写 2实验内容 (1)通过对P3口地址的操作控制8位LED流水点亮,从而认识单片机的接口; (2)通过改变并行口输出电平控制LED灯的点亮与否,通过延时程序控制亮灯 时间。 3.实验运行结果图 4.源代码 //流水灯实验 #include<reg51.h>//包含单片机寄存器的头文件 sfrx=0xb0;//P3口在存储器中的地址是b0H,通过sfr可定义8051内核 单片机 //的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口 的操作 /**************************************** 函数功能:延时一段时间 *****************************************/ voiddelay(void) { unsignedchari,j; for(i=0;i<255i++) for(j=0;j<255j++) ;//利用循环等待若干机器周期,从而延时一段时间 } /***************************************** 函数功能:主函数 ******************************************/ voidmain(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<reg51.h>//包含51单片机寄存器定义的头文件 sbitS=P3^2;//将S位定义为P3.2, /******************************************* 函数功能:主函数 ******************************************/ voidmain(void) { EA=1;//开放总中断 EX0=1;//允许使用外中断 IT0=1;//选择负跳变来触发外中断 P1=0xff; while(1) ;//无限循环,防止程序跑飞 } /************************************************************** 函数功能:外中断T0的中断服务程序 **************************************************************/ voidint0(void)interrupt0using0//外中断0的中断编号为0 { P1=~P1;//每产生一次中断请求,P1取反一次。 } //用外中断0的中断方式进行数据采集和处理 #include<reg51.h>//包含51单片机寄存器定义的头文件 #defineucharunsignedchar voidDelay(unsignedinti) { ucharj; for(;i>0;i--) for(j=0;j<125;j++) {;} } //sbitS=P3^2;//将S位定义为P3.2, /******************************************* 函数功能:主函数 ******************************************/ voidmain(void) { uchardisplay[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsignedinta; while(1){ EA=1;//开放总中断 EX0=1;//允许使用外