图案能自己运行但不能利用按键控制,如何利用按键控制LED显示特定的图案
1条回答 默认 最新
关注 - 文章: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) } } }
注释:
- P0控制阴极,我们从左到右进行扫描,依次给每一列阴极低电平。
- 当列阴极是低电平时,我们就响应给以列提供预设号的状态。
- 把延时函数加大,你将看到led灯从左边第一列依次向右亮起。
- 这就是消除拖影的操作。 很简单,不多说了。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥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测量血氧,找不到相关的代码。