Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
GPIO
五块74HC595级联用来控制十八个双色led灯
发布于 2019-08-29 09:41:52 浏览:3128
订阅该版
在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.1k
关于作者
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 Studio 环境中为 ART-Pi 2 移植 CherryUSB(以 usb_device 为例)
2
嵌入式ARM RISCV toolchain工具 梳理arm-none-eabi-gcc
3
使用官方BOOT升级,看这一篇就够了?(以STM32F407VGT6为例)
4
可以使用MQTT连接AI大模型吗
5
RT-Thread离线包制作
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
cubemx
ESP8266
WIZnet_W5500
UART
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
GD32
定时器
ADC
flashDB
编译报错
socket
keil_MDK
中断
rt_mq_消息队列_msg_queue
Debug
SFUD
msh
ulog
C++_cpp
at_device
本月问答贡献
聚散无由
7
个答案
6
次被采纳
RTT_逍遥
7
个答案
2
次被采纳
加缪
2
个答案
2
次被采纳
踩姑娘的小蘑菇
6
个答案
1
次被采纳
a1012112796
4
个答案
1
次被采纳
本月文章贡献
wake_mirco
2
篇文章
7
次点赞
mushroom
1
篇文章
8
次点赞
张世争
1
篇文章
7
次点赞
rv666
1
篇文章
4
次点赞
Jack_____
1
篇文章
3
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部