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

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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。