实验(三):单片机I/O口实验-模拟开关灯

一、实验目的与任务

        实验目的:

                1.掌握单片机I/O口输入输出使用;

                2.掌握单片机I/O口位操作的编程。

        任务:

                1.根据要求编写程序,并写出原理性注释;

                2.  检查程序运行的结果,分析一下是否正确;

                3. 完成所建工程的仿真及调试。

二、实验内容

        1.设计一个模拟开关灯系统,将单片机P3.0引脚接开关,P1.0引脚接发光二极管,利用开关控制二极管的亮和灭;

        2.利用Keil进行编程和调试;

        3.利用Proteus建立仿真模型,完成所建工程的仿真及调试。

三、实验步骤

(1)软件实现:

实验步骤:

        1.运行Keil uVision5 开发环境,按照“模块化单片机教学实验平台配套的实验指导书1.2.3 节”介绍的方法建立程esimlab3. uvproj,CPU 为AT89S51,包含启动文件STARTUP.A51。

        2.输入源程序,在Keil uVision5 开发环境中,建立源程序esimlab3.c,将上述程序加入该程序文件。并将该文件加入工程esimlab3.uvproj。

        3.设置工程esimlab3. uvproj 属性,将其晶振频率设置为12MHz,选择输出可执行文件(HEX 文件),仿真方式为“Use Simulator”。

        4.构造(Build)工程esimlab3.uvproj。如果输入有误进行修改,直至构造正确,生成可执行程序 esimlab3.hex 为止。

(2)Proteus仿真:

实验步骤:

        1.运行Proteus 开发环境,建立工程,新建原理图设计文件esimlab3. Pdsprj,参考图一。

实验(三):单片机I/O口实验-模拟开关灯_第1张图片

图一 原理图实例

        2.设置单片机属性,将其晶振频率设置为12MHz,载入KEIL生成的文件esimlab3.hex。

        3.运行仿真并观察结果。

四、实验小结

esimlab3.c文件:

#include //调用51单片机头文件

void main(){
	
	while(1){
		//判断按键是否按下
		if(P3_0 == 0)
		{
			P1_0 = 0;//按键按下,LED灯点亮
		}
		else
		{
			P1_0 = 1;//按键松开,LED灯熄灭
		}
	}
}

仿真结果:

实验(三):单片机I/O口实验-模拟开关灯_第2张图片

        通过本次实验,掌握单片机I/O口输入输出使用掌握单片机I/O口位操作的编程

        P1口属于弱上拉模式,如果端口引脚为低电平,能使灌电流从单片机的外部流入内部,则将大大增加流过的灌电流值,因此给P1口低电平就可以驱动LED点亮。

        被检测的开关一端接到I/O端口的引脚上,另一端接地,开关处于闭合状态还是打开状态可通过读入I/O口的电平来实现。

你可能感兴趣的:(单片机,实验报告,单片机,嵌入式硬件,proteus,51单片机)