Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
GPIO
五块74HC595级联用来控制十八个双色led灯
发布于 2019-08-29 09:41:52 浏览:3161
订阅该版
在rt-thread上的驱动74HC595的芯片程序已经写好,可以发送数据来控制十八个led,但是有一个问题,就是我不知道发送什么样格式的数据才能控制这些灯一个一个的亮。 附上我写的接收程序。 > //2019.8.29 ¶ÁÈ¡NƬ74HC595µÄÊäÈëÊý¾Ý //ChipNum:Óû§Ê¹ÓõÄ595¶Ë¿ÚÉÏÁ¬½ÓµÄоƬ¸öÊý //ÔÚStm32µ¥Æ¬»úÖÐʹÓà int ch595_led_write(int num,unsigned char ChipNum ,unsigned char * data) { unsigned char i = 0; unsigned char DataBufTmp = 0; CH595_LED_RCLK1(0); CH595_LED_SCLK1(0); hardware_delay_us(100); for(; ChipNum>0; ChipNum--) { DataBufTmp = *data; rt_kprintf("ch595_led_write = %x
",*data); for(i= 0;i< 8;i++) { if(DataBufTmp&0x80) { CH595_LED_SER1(1); } else { CH595_LED_SER1(0); } hardware_delay_us(10); CH595_LED_SCLK1(1); hardware_delay_us(10); CH595_LED_SCLK1(0); DataBufTmp<<=1; } data++; } CH595_LED_RCLK1(1); hardware_delay_us(100); CH595_LED_RCLK1(0); return 0; } 以及发送测试程序 > static void ch595_led_write_entry(void *parameter) { int Led=0; int chn; unsigned char buff[5] ={0x00,0x00,0x00,0x00,0x00}; // ch595_led_write(0,0xff); while(Led < 10000) { ch595_led_write(0,5,buff); for(Led = 0;Led < 5;Led ++) buff[Led]++; rt_thread_delay(100); } } 和芯片原理图 
查看更多
8
个回答
默认排序
按发布时间排序
hanlin
2019-08-29
这家伙很懒,什么也没写!
测试程序中的unsigned char buff[5] ={0x00,0x00,0x00,0x00,0x00};分别对应5个595,buff[0]对应的就是最远端的595芯片U5,以此类推buff[1]就是U4。每个byte数据中的每个bit对应着相对应的595上的每个引脚,bit0~8 分别控制着QH~QA。 例: 控制L1的四种情况 灭:buff[4] = 0x3 绿亮:buff[4] = 0x2 黄亮:buff[4] = 0x1 黄绿都亮:buff[4] = 0x0 嗯应该是这样吧,萌新一枚。有错请指教
kuailedeluojie
2019-08-29
这家伙很懒,什么也没写!
>测试程序中的unsigned char buff[5] ={0x00,0x00,0x00,0x00,0x00};分别对应5个595,buff[0]对应的就是最远 ... --- 现在能控制32个灯来让他们分别亮红灯,绿灯和熄灭,但是有两盏灯就是控制不了。 有兴趣的话加个联系方式聊一下,如果可以的话。
zhs_sky
2019-08-30
这家伙很懒,什么也没写!
74HC595能用好的最重要部分不是控制,而是硬件设计。
Charlie-Han
2019-08-31
这家伙很懒,什么也没写!
[i=s] 本帖最后由 Charlie-Han 于 2019-8-31 20:19 编辑 [/i] int ch595_led_write(int num, unsigned char ChipNum, unsigned char * data) { //num变量你在这里没有使用到,ChipNum表示芯片个数,data数组指针 unsigned char i = 0; unsigned char DataBufTmp = 0; CH595_LED_RCLK1(0); CH595_LED_SCLK1(0); hardware_delay_us(100); for(; ChipNum > 0; ChipNum--) //上面传来5个 { DataBufTmp = *data; rt_kprintf("ch595_led_write = %x\n",*data); for(i= 0; i< 8; i++) { if(DataBufTmp & 0x 80) { CH595_LED_SER1(1); } else { CH595_LED_SER1(0); } hardware_delay_us(10); CH595_LED_SCLK1(1); hardware_delay_us(10); CH595_LED_SCLK1(0); DataBufTmp <<= 1; } data++; } CH595_LED_RCLK1(1); hardware_delay_us(100); CH595_LED_RCLK1(0); return 0; } static void ch595_led_write_entry(void *parameter) { int Led=0; int chn; unsigned char buff[5] ={0x00,0x00,0x00,0x00,0x00}; //5个字节 // ch595_led_write(0,0xff); while(Led < 10000) { ch595_led_write(0, 5, buff); //芯片5个,数组首地址传给 ch595_led_write,执行结束所有小灯点亮,低电平。ok的 for(Led = 0; Led < 5; Led ++) buff[Led]++; // buff[0]++,循环10000次????看不懂 rt_thread_delay(100); } }
Charlie-Han
2019-08-31
这家伙很懒,什么也没写!
如果ch595_led_write这个函数执行完都可以让小灯点亮,你的 ch595_led_write_entry 函数始有问题的。
kuailedeluojie
2019-09-02
这家伙很懒,什么也没写!
>如果ch595_led_write这个函数执行完都可以让小灯点亮,你的 ch595_led_write_entry 函数始有问题的。 ... --- 嗯嗯,现在还是遇到一个问题,就是我现在用三个595芯片级联,我想让最后一个管脚无论什么情况都是低电平,就是控制其他管脚的时候这个管脚不受影响,但是就是不能控制
Charlie-Han
2019-09-02
这家伙很懒,什么也没写!
>嗯嗯,现在还是遇到一个问题,就是我现在用三个595芯片级联,我想让最后一个管脚无论什么情况都是低电平 ... --- 1. 最后一个管脚状态,应该是你第一次先写入的0或者1,这样才能通过不断的移位,移位到最后一级芯片的最后一个引脚。 2. 你想让最后一个引脚为低电平,那么第一次就写入0,最后移位成为: 11111111 - 11111111 - 11111110 那么写入的数据顺序就是(低位优先),0xFE,0xFF,0xFF 如果你想让最后一个引脚无论如何都是低电平,那么就把xxx随机值 & 0xFE,保证最低位为0就好, 至于移位次数还是24次。 3.595芯片,引脚没有设置数值,默认高电平还是低电平?
kuailedeluojie
2019-09-07
这家伙很懒,什么也没写!
>1. 最后一个管脚状态,应该是你第一次先写入的0或者1,这样才能通过不断的移位,移位到最后一级芯片的最 ... --- 对595的驱动程序真的是有点模糊,就是不知道怎么控制这些引脚,现在还是卡在这里。
撰写答案
登录
注册新账号
关注者
0
被浏览
3.2k
关于作者
kuailedeluojie
这家伙很懒,什么也没写!
提问
44
回答
135
被采纳
0
关注TA
发私信
相关问题
1
drivers- pin
2
bsp 里面的drivers/gpio.c 少了一个功能
3
stm32f407移植RTT中gpio设备驱动问题
4
config PB4(NJTRST) to GPIO
5
RT-Thread的GPIO设备驱动问题
6
关于pin.c文件中语句可能出现的bug
7
RT-Thread学习笔记--线程创建与官方Pin设备驱动调用
8
【应用笔记】小白也能玩转RT-Thread之通用GPIO设备【官方出品
9
串口引脚定义中的GPIO_Pin_sources是社么意思?
10
RTT -GPIO 使用例程
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
基于RT-Thread的STM32F4开发第五讲——软件模拟I2C
2
关于vscode env gcc工具链下,使用其他下载器(cmsis-dap)的launch.json编写
3
新版OneNet的星火1号开发板例程适配(一)
4
rtthread设备驱动学习笔记与做artpi2的can设备驱动修改
5
基于RT-Thread的STM32F4开发第四讲——硬件定时器更新中断(缺失补齐教程)
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
I2C_IIC
cubemx
UART
ESP8266
WIZnet_W5500
BSP
ota在线升级
PWM
flash
packages_软件包
freemodbus
潘多拉开发板_Pandora
ADC
GD32
定时器
编译报错
flashDB
keil_MDK
socket
中断
rt_mq_消息队列_msg_queue
Debug
ulog
SFUD
msh
C++_cpp
at_device
本月问答贡献
出出啊
1524
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
821
个答案
179
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
Pai同学
7
篇文章
10
次点赞
RTT_逍遥
1
篇文章
6
次点赞
加缪
1
篇文章
1
次点赞
WenShan
1
篇文章
1
次点赞
Rick98
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部