被支配的大学生 2023-04-19 20:00 采纳率: 100%
浏览 43
已结题

51单片机利用独立按键控制8*8LED矩阵显示图案

图案能自己运行但不能利用按键控制,如何利用按键控制LED显示特定的图案

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-19 22:18
    关注
    • 文章:8个独立按键控制LED 中也许有你想要的答案,请看下吧
    • 除此之外, 这篇博客: 51单片机 之 8*8 LED点阵(解决程序烧录没反应、显示拖影问题、取字模软件)中的 三、显示复杂的数字 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • //显示一个零
      #include<reg51.h>
      #include<intrins.h>
      
      typedef unsigned char u8;
      typedef unsigned int u16;
      
      sbit SRCLK = P3^6; 
      sbit RCLK = P3^5;  
      sbit SER = P3^4;
      
      u16 led_x[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
      u8 led_y[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00};
      
      void delay(u16 i)
      {
      	while(i--);
      }
      
      void hc595sendbyte(u8 a) 
      {	 
      	u16 i ;
      	SRCLK = 0;
      	RCLK = 0;
      	for (i = 0; i < 8; i++) {
      		SER = a >> 7;  
      		a <<= 1;    
      		SRCLK = 1;
      		_nop_();
      		_nop_();
      		SRCLK = 0;
      	}
      	RCLK = 1;  
      	_nop_();
      	_nop_();
      	RCLK = 0;
      }
      
      void main() 
      {	u16 i;
      	while(1){
      	for (i = 0; i < 8; i++){
      		P0=led_x[i]; //(1)
      		hc595sendbyte(led_y[i]); //(2)
      		delay(100);  //(3)
      		hc595sendbyte(0x00);  // (4)
      	}
      	}
      }
      

      注释:

      1. P0控制阴极,我们从左到右进行扫描,依次给每一列阴极低电平。
      2. 当列阴极是低电平时,我们就响应给以列提供预设号的状态。
      3. 把延时函数加大,你将看到led灯从左边第一列依次向右亮起。
      4. 这就是消除拖影的操作。 很简单,不多说了。
        在这里插入图片描述
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月28日
  • 已采纳回答 4月20日
  • 创建了问题 4月19日

悬赏问题

  • ¥15 帮我调试idea基于spring boot项目
  • ¥15 es 7.17.20版本生成时间戳
  • ¥15 wpf dategrid表头排序图标自定义
  • ¥15 分析下图所示同步时序逻辑电路的逻辑功能。
  • ¥15 halcon联合c#遇到了问题不能解决
  • ¥15 xshell无法连接提示ssh服务器拒绝密码
  • ¥15 AT89C52单片机C语言关于串口通信的位操作
  • ¥20 需要步骤截图(标签-服务器|关键词-map)
  • ¥50 gki vendor hook
  • ¥15 灰狼算法和蚁群算法如何结合