AT89C52 流水灯实验报告

AT89C52 流水灯实验报告

Djx-Ybelove

实验要求

  • 使用 Proteus 进行电路绘画和模拟仿真。
  • 基于单片机的嵌入式系统控制,实现对八颗 LED 的流水灯效果。

实验器材

  • Keil_v5ProteusPZ-ISPCH340
  • 单片机开发板(AT89C52),数据线,电脑,开发原理图。

实验过程

  1. 首先根据开发板原理图使用 Proteus 绘制出单片机以及发光二极管电路,可以参考 Proteus 绘图仿真 。如若未下载 Proteus  Download ,下载更适合中国宝宝的 Proteus ,下载流程参考 Proteus 8.9 安装教程 。根据图一 LED 模块原理图,可以绘制出图二。

    2025_03_05_00_40_51.png
    图一    LED 模块原理图
    2025_03_05_00_52_35.png
    图二    Proteus 绘图
  2. 根据实验要求使用 Keil_v5 编写程序,并且将 RunLed.c 文件编译成 .hex 文件(注意新项目最好新创建一个新文件夹,新项目默认不会生成 .hex 文件。点击 options for target ,然后选择 output 勾选生成 .hex 文件。)

    2025_03_05_01_38_00.png
    图三    生成 .hex 文件

    RunLed_Code

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #include <reg52.h>

    sbit led_0 = P2^0; // 赋值P20引脚为led_0
    sbit led_1 = P2^1; // P21引脚,P2^1表示的就是P21
    sbit led_2 = P2^2;
    sbit led_3 = P2^3;
    sbit led_4 = P2^4;
    sbit led_5 = P2^5;
    sbit led_6 = P2^6;
    sbit led_7 = P2^7;

    // 延迟函数
    void delay(unsigned char ms){
    unsigned char i,j;
    for (i=1; i<=ms; i++){
    for (j=1; j<=2*ms; j++);
    }
    }

    // 程序入口
    void main(){
    unsigned char k;
    while(1){
    for(k=0; k<=7; k++){ // 循坏每一引脚
    led_0 = 1; // 初始值1,表示P20引脚为高电位
    led_1 = 1;
    led_2 = 1;
    led_3 = 1;
    led_4 = 1;
    led_5 = 1;
    led_6 = 1;
    led_7 = 1;

    switch (k) { // 选择引脚,并设置状态
    case 0: led_0 = 0; delay(100); break;
    case 1: led_1 = 0; delay(100); break;
    case 2: led_2 = 0; delay(100); break;
    case 3: led_3 = 0; delay(100); break;
    case 4: led_4 = 0; delay(100); break;
    case 5: led_5 = 0; delay(100); break;
    case 6: led_6 = 0; delay(100); break;
    case 7: led_7 = 0; delay(100); break;
    }
    }
    }
    }
  3. 将编译完成的 .hex 文件导入到 Proteus 中,观察是否符合实验结果,如若达到目标效果,则将 .hex 文件烧制到单片机内。

    2025-03-05 015328.gif
    图四     Proteus 效果图
  4. 使用 PZ-ISP 烧制程序进入单片机,观察实验现象。(注意烧制时选择合适的单片机型号和串口并开启单片机。)

    2025_03_05_07_29_58.png
    图五     C52 烧制

通过本实验实现八个 LED 流水灯,成功地利用单片机控制了 LED 的点亮和熄灭顺序。通过调节延时函数的参数,可以调节流水灯的速度,从而满足不同的需求。最后恭喜同学完成第一次单片机全流程实操🎉🎉🎉。

  • Title: AT89C52 流水灯实验报告
  • Author: Djx-Ybelove
  • Created at : 2025-03-05 08:11:34
  • Updated at : 2025-03-21 18:50:07
  • Link: https://blog.djx-ybelove.pp.ua/posts/1cab381b/
  • License: This work is licensed under CC BY-NC-SA 4.0.
On this page
AT89C52 流水灯实验报告