51单片机教程(九)- 数码管的动态显示

1、项目分析

  • 通过演示数码管动态显示的操作过程。

2、技术准备

1、 数码管动态显示

  • 4个1位数码管和单片机如何连接

    • a、静态显示的连接方式

      • 优点:不需要动态刷新;
      • 缺点:占用IO口线多。

    • b、动态显示的连接方式

      • 连接:所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效;
      • 缺点:需要动态刷新;
      • 优点:占用IO口线少。
        在这里插入图片描述

2、动态扫描的原理

  • 动态显示是多个数码管,交替显示,利用人的视觉暂停作用使人看到多个数码管同时显示的效果(就像看的电影是有一帧一帧的画面显示的,当速度够快的时候看到它就是动态的,当显示数码管的速度够快的时候,也就可以看到它们是同时显示了)
  • 所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
  • 动态显示的亮度比静态显示的亮度低,所以在选择限流电阻时应小于静态显示电路中电阻值。

3、项目实施

1 一位数码管动态显示

  • 实验需求:

    • 第1位数码管从 0 - 9 循环显示

  • 实验分析
    在这里插入图片描述

    • 位选:第1位数码管(P2.4)工作设置为1,其他3个数码管不工作设置为0
    • 段选:需要数码管显示0-9,则可使用数组存储 0-9 的十六进制值。
    • 设置段选,循环中遍历数组中的值,并赋值给段P0。
  • 实验代码

    #include<reg52.h> 
    
    #define pos P2
    
    // 显示数值表0-9
    unsigned char code dofly_table[10] = {
         0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
    
    // 函数声明
    void Delay(unsigned int t); 
    
    void main()
    {
         
        unsigned char i;  
        
        pos = 0x18;
        
        while (1) {
                
            for (i = 0; i < 10; i++) {
          
                P0 = dofly_table[i];  
                Delay(60000);     
            }
        }
    }
    
    /*------------------------------------------------
     延时函数,含有输入参数 unsigned int t,无返回值
     unsigned int 是定义无符号整形变量,其值的范围是0~65535
    ------------------------------------------------*/
    void Delay(unsigned int t)
    {
         
        while (--t);
    }
    

2 数码管左移流动显示

  • 实验需求:
    • 在左数第4位数码管显示4,过1秒,
    • 在左数第3位数码管显示3,过1秒,
    • 在左数第2位数码管显示2,过1秒,
    • 在左数第1位数码管显示1,过1秒,
    • 上述过程不断循环

  • 实验分析
    在这里插入图片描述
    • 位选:循环让4个数码管工作
    • 段选:让对应的位分别显示 4 3 2 1

  • 实验代码
  • 方式1:按位逐一设置显示
    #include <REGX52.H>
    
    #</
要使用Python实现UDP通信,可以使用socket模块提供的函数。以下是使用Python实现UDP通信的一般步骤: 1. 导入socket模块:`from socket import *` 2. 创建UDP套接字:`udp_socket = socket(AF_INET, SOCK_DGRAM)` 3. 设置服务器地址和监听端口:`server_host_port = (&#39;服务器IP地址&#39;, 端口号)` 4. 准备要发送的数据:`data = &#39;要发送的数据&#39;.encode(&#39;utf-8&#39;)` 5. 发送数据:`udp_socket.sendto(data, server_host_port)` 6. 接收服务器返回的数据:`response, server_address = udp_socket.recvfrom(1024)` 7. 关闭套接字:`udp_socket.close()` 需要注意的是,UDP是面向无连接的协议,通信时不需要建立连接。它适用于多点通信和实时的数据业务,如语音广播、视频、文件传输和大型网络游戏。由于UDP是不可靠的协议,发送的数据报并不一定按相同的顺序到达接收方。同时,UDP传输数据时有大小限制,每个数据报的大小必须限定在64KB以内。 以上是用Python实现UDP通信的一般步骤和一些注意事项。根据实际需求,你可以根据这些步骤来编写你的UDP通信程序。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python网络编程—UDP协议](https://blog.youkuaiyun.com/YZL40514131/article/details/120808489)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值