• 实验(三):单片机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,参考图一。

    图一 原理图实例

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

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

    四、实验小结

    esimlab3.c文件:

    1. #include //调用51单片机头文件
    2. void main(){
    3. while(1){
    4. //判断按键是否按下
    5. if(P3_0 == 0)
    6. {
    7. P1_0 = 0;//按键按下,LED灯点亮
    8. }
    9. else
    10. {
    11. P1_0 = 1;//按键松开,LED灯熄灭
    12. }
    13. }
    14. }

    仿真结果:

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

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

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

  • 相关阅读:
    TeamTalk中msg_server初始化工作,如何维护与其他服务器的心跳连接
    微服务系列文章之 Nginx反向代理
    JavaScript算法44- 最小处理时间(leetCode:2895middle)周赛
    简单方法建立个人网站,不用编程
    PHP代码审计DVWASQL注入[SQL Injection]
    softmax函数计算时减去一个最大值的原因
    《21天精通TypeScript-6》-数组类型
    Sulfo-Cy3 羧酸,Sulfo-Cy3 carboxylic acid,水溶性Cy3荧光染料标记羧酸
    恐怖片里,人工智能大开杀戒
    《运营之光3.0》全新上市——跨越时代,自我颠覆的诚意之作
  • 原文地址:https://blog.csdn.net/qq_61228493/article/details/127927426