m0_73661462 2023-05-20 14:32 采纳率: 100%
浏览 85
已结题

stc89c58rd程序

在Keil软件中,先使LED灯依次点亮,再使LED点阵按9 8 7 6 5 4 3 2 1 0的顺序呈现。

img


img

  • 写回答

4条回答 默认 最新

  • qllaoda 2023-05-20 15:47
    关注

    点亮LED简单,

    
    #include <reg51.h> 
    void delay(unsigned int t) // 延时函数  
    {  
        unsigned int i, j;  
        for(i=0; i<t; i++)  
            for(j=0; j<125; j++);  
    }  
      
    void main()  
    {    
        char i;
        while(1)  
        {  
            for(i = 0; i< 8; i++){
                P0 = ~(1 << i);
                delay(500);   
            }
        }  
    }
    
    

    点阵屏,这个就是AI生成的了,我可没那个功夫写,自己整理一下吧,

    #include <reg51.h>
    
    // 数字0-9的编码模式
    unsigned char code digitPatterns[10][8] = {
        {0x3C, 0x42, 0x81, 0x81, 0x81, 0x81, 0x42, 0x3C},  // 0
        {0x00, 0x10, 0x20, 0xFF, 0x00, 0x00, 0x00, 0x00},  // 1
        {0x22, 0x41, 0x81, 0x81, 0x81, 0x81, 0x5E, 0x00},  // 2
        {0x22, 0x41, 0x81, 0x89, 0x89, 0x89, 0x76, 0x00},  // 3
        {0x18, 0x28, 0x48, 0xFF, 0x08, 0x08, 0x1F, 0x00},  // 4
        {0xF2, 0x89, 0x89, 0x89, 0x89, 0x89, 0x8E, 0x00},  // 5
        {0x3C, 0x66, 0x83, 0x81, 0x81, 0x81, 0x42, 0x00},  // 6
        {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0x00},  // 7
        {0x36, 0x49, 0x89, 0x89, 0x89, 0x89, 0x76, 0x00},  // 8
        {0x26, 0x49, 0x89, 0x89, 0x89, 0x89, 0x7E, 0x00}   // 9
    };
    
    // 延时函数
    void delay(unsigned int time) {
        unsigned int i, j;
        for (i = 0; i < time; i++)
            for (j = 0; j < 1000; j++);
    }
    
    void main() {
        unsigned char i, digit, row;
        
        while (1) {
            for (digit = 0; digit < 10; digit++) {
                for (row = 0; row < 8; row++) {
                    // 设置P0口的数据线,发送当前行的数据
                    P0 = digitPatterns[digit][row];
                    
                    // 设置P2口的译码器控制信号,选择要显示的公共端
                    P2 = ~(1 << (row % 3));
                    
                    delay(1);  // 持续时间,调整
                // 关闭所有公共端
                P2 = 0xFF;
                
                // 短暂延时,创建多行扫描效果
                delay(1);
            }
        }
    }
    
    
    

    这段代码中,使用了一个二维数组digitPatterns,其中存储了数字0-9的每一行数据。在循环中,通过依次设置P0口的数据线和P2口的译码器控制信号,实现逐行显示数字的效果。同时,通过短暂的延时和多行扫描,可以提高显示效果和亮度稳定性。

    需要根据实际的硬件连线和点阵LED屏的型号,适当调整代码中的延时和亮度参数,以达到最佳显示效果。

    请注意,以上代码仅提供了一个基本的示例,具体的实现可能会因硬件平台和点阵LED屏的不同而有所变化。确保根据您的实际硬件连接和点阵LED屏的规格进行相应的修改。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月22日
  • 已采纳回答 5月22日
  • 创建了问题 5月20日