欢迎来到天天文库
浏览记录
ID:36056543
大小:1.78 MB
页数:51页
时间:2019-05-02
《单片机原理与应用实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、北航单片机原理及其应用实验报告班级:110323姓名:赵敏杰学号:11031064同组者:郑硕学号:1103110551实验一单片机开发环境以及I/O使用实验一.实验目的1.熟悉MCS-51系列单片机开发软件的使用2.掌握单片机I/O口的使用3.学习延时子程序的编写和使用二.实验内容1.验证性实验(1)实验内容:I/O口做输出口,I/O口接一个LED发光二极管,使其闪烁。有关说明:根据LED的单向导通性,可以用单片机的P1.0(也可以是其他I/O口)作为LED的控制端。当P1.0输出为低电平时,LED灭,反之,LED亮。本实验系统晶振为11.0592MHz,则一个机器周期为12/11.059
2、2us=1.085us,为方便编写延时函数,认为一个机器周期为1us。硬件连接:用导线将试验箱中的P1.0与L1相连。程序:C语言程序#include//89S52寄存器定义头文件/*---延时子程序(有参函数),t=n*10ms---*/voiddelay(unsignedcharn){unsignedchari,j,k;for(i=0;i3、延时子程序,t=100*10msP1_0=1;//P1.0赋值为1,LED亮delay(100);}}汇编语言程序ORG00HAJMPSTART;在首地址处放置跳转指令;以免主程序占用中断入口地址ORG30HSTART:CLRP1.0;P1.0赋值为0,LED灭MOVR0,#100;R0的值决定延时时间长短t=R0*10msLCALLDELAY;调用延时函数SETBP1.0;P1.0赋值为1,LED亮MOVR0,#1003LCALLDELAY;调用延时函数AJMPSTART;无条件跳转至START,继续循环执行/*---延时子程序,t=R0*10ms---*/DELAY:D1:MOVR1,#4、20D2:MOVR2,#248DJNZR2,$DJNZR1,D2DJNZR0,D1RETEND实验现象:可以看到LED1大致亮1s后灭1s,如此循环。(2)实验内容:51I/O口做输入口,一个I/O口接一个拨动开关,另一个I/O口接一个LED发光二极管,单片机读取开关的状态并通过LED显示出来。有关说明:P0口是一组漏极开路型双向I/O口,也即地址/数据总线复用口。对端口写“1”可作为高阻抗输入端用。硬件连接:用导线将试验箱中的P1.0与LED发光二极管L1相连,P0.0与拨动开关K1相连。程序:C语言程序#include//89S52寄存器定义头文件voidmain(5、){while(1){P0=0xff;//对端口写"1",作为高阻抗输入端用if(P0_0)//判断P0.0是否为高电平{P1_0=0;}else//如果P0.0不是高电平,则执行后面的语句{P1_0=1;}}}汇编语言参考程序ORG00HLJMPMAINORG30HMAIN:JBP0.0,DEL;识别按键是否闭合SETBP1.0LJMPMAINDEL:CLRP1.0LJMPMAINEND实验现象:可以看到LED1的状态和开关1的状态一致。512.设计性实验实验内容:模拟舞台灯光控制实验具体要求:P0.0和P0.1口连接两路拨动开关,P1口连接8路LED。不同的开光状态控制LED进行流水灯、6、闪烁等,从而达到模拟舞台炫耀灯光控制的目的。当P0.1和P0.0的状态为00时,8路LED从右至左流水点亮,具体循环顺序为:L1?L2?L3?L4?L5?L6?L7?L8?L1,如此重复循环;当P0.1和P0.0的状态为01时,8路LED从左至右流水点亮,具体循环顺序为:L8?L7?L6?L5?L4?L3?L2?L1?L8,如此重复循环;当P0.1和P0.0的状态为10时,8路LED交替闪烁,具体循环顺序为:L1、L3、L5、L7?L2、L4、L6、L8?L1、L3、L5、L7,如此重复循环下去;当P0.0和P0.1的状态为11时,8路LED一起闪烁,具体循环顺序为:全灭?全亮?全灭,如此重7、复下去。硬件连接:用导线将实验箱中的P0.0与开关K1相连,P0.1与开关K2相连,P1.0~P1.7分别与LED发光二极管L1~L8相连。程序:C语言程序#include//89S52寄存器定义头文件voiddelay(unsignedcharn){unsignedchari,j,k;for(i=0;i
3、延时子程序,t=100*10msP1_0=1;//P1.0赋值为1,LED亮delay(100);}}汇编语言程序ORG00HAJMPSTART;在首地址处放置跳转指令;以免主程序占用中断入口地址ORG30HSTART:CLRP1.0;P1.0赋值为0,LED灭MOVR0,#100;R0的值决定延时时间长短t=R0*10msLCALLDELAY;调用延时函数SETBP1.0;P1.0赋值为1,LED亮MOVR0,#1003LCALLDELAY;调用延时函数AJMPSTART;无条件跳转至START,继续循环执行/*---延时子程序,t=R0*10ms---*/DELAY:D1:MOVR1,#
4、20D2:MOVR2,#248DJNZR2,$DJNZR1,D2DJNZR0,D1RETEND实验现象:可以看到LED1大致亮1s后灭1s,如此循环。(2)实验内容:51I/O口做输入口,一个I/O口接一个拨动开关,另一个I/O口接一个LED发光二极管,单片机读取开关的状态并通过LED显示出来。有关说明:P0口是一组漏极开路型双向I/O口,也即地址/数据总线复用口。对端口写“1”可作为高阻抗输入端用。硬件连接:用导线将试验箱中的P1.0与LED发光二极管L1相连,P0.0与拨动开关K1相连。程序:C语言程序#include//89S52寄存器定义头文件voidmain(
5、){while(1){P0=0xff;//对端口写"1",作为高阻抗输入端用if(P0_0)//判断P0.0是否为高电平{P1_0=0;}else//如果P0.0不是高电平,则执行后面的语句{P1_0=1;}}}汇编语言参考程序ORG00HLJMPMAINORG30HMAIN:JBP0.0,DEL;识别按键是否闭合SETBP1.0LJMPMAINDEL:CLRP1.0LJMPMAINEND实验现象:可以看到LED1的状态和开关1的状态一致。512.设计性实验实验内容:模拟舞台灯光控制实验具体要求:P0.0和P0.1口连接两路拨动开关,P1口连接8路LED。不同的开光状态控制LED进行流水灯、
6、闪烁等,从而达到模拟舞台炫耀灯光控制的目的。当P0.1和P0.0的状态为00时,8路LED从右至左流水点亮,具体循环顺序为:L1?L2?L3?L4?L5?L6?L7?L8?L1,如此重复循环;当P0.1和P0.0的状态为01时,8路LED从左至右流水点亮,具体循环顺序为:L8?L7?L6?L5?L4?L3?L2?L1?L8,如此重复循环;当P0.1和P0.0的状态为10时,8路LED交替闪烁,具体循环顺序为:L1、L3、L5、L7?L2、L4、L6、L8?L1、L3、L5、L7,如此重复循环下去;当P0.0和P0.1的状态为11时,8路LED一起闪烁,具体循环顺序为:全灭?全亮?全灭,如此重
7、复下去。硬件连接:用导线将实验箱中的P0.0与开关K1相连,P0.1与开关K2相连,P1.0~P1.7分别与LED发光二极管L1~L8相连。程序:C语言程序#include//89S52寄存器定义头文件voiddelay(unsignedcharn){unsignedchari,j,k;for(i=0;i
此文档下载收益归作者所有