完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
键值读取部分的驱动程序如下
int8_t Read_Byte(){ uint8_t i=0; uint8_t temp=0x00; Reset(STB); for(i=0;i<8;i++){ Reset(CLK1); temp>>=1; if(Get(DIO)){ temp|=0x80; } Set(CLK1); } return temp; } int8_t Read_Key(){ uint8_t i=0; uint8_t key1=0x00; uint16_t key2=0x00; Write_Cmd(0x42); Set(DIO); //this is obligatory, check the data sheet,GPIO for(i=0;i<4;i++){ key1=Read_Byte(); key2|=(key1<>=1; for(i=0;i<8;i++){ if(0x01< |
|
相关推荐
1个回答
|
|
STM8驱动TM1638无法读取键值的原因可能有以下几点:
1. 接线问题:请检查STM8与TM1638之间的连接线是否正确连接,包括数据线(DIO)、时钟线(CLK)和控制线(STB)。 2. 引脚配置问题:确保STM8的相应引脚已正确配置为输入/输出模式。 3. 驱动程序问题:检查驱动程序中的时序和逻辑是否正确。以下是对您提供的驱动程序的一些建议: ```c int8_t Read_Byte(){ uint8_t i = 0; uint8_t temp = 0x00; Reset(STB); // 确保STB为低电平,准备开始通信 for(i = 0; i < 8; i++){ Reset(CLK1); // 确保CLK为低电平,准备读取数据 temp >>= 1; // 将temp右移一位,为接收新数据做准备 Set(CLK1); // 将CLK设置为高电平,允许TM1638发送数据 if(Read_DIO()){ // 读取DIO线上的数据 temp |= 0x80; // 如果DIO为高电平,将最高位设置为1 } Reset(CLK1); // 将CLK设置为低电平,准备下一次读取 } Set(STB); // 通信结束,将STB设置为高电平 return (int8_t)temp; // 返回读取到的数据 } ``` 4. TM1638模块问题:如果以上步骤都无法解决问题,可能是TM1638模块本身存在问题。尝试使用另一个已知良好的TM1638模块进行测试。 5. 电源问题:确保STM8和TM1638模块的供电电压和电流符合要求。 6. 干扰问题:检查周围是否有可能产生电磁干扰的设备,如手机、无线路由器等。尝试将这些设备远离STM8和TM1638模块。 通过以上步骤,您应该能够找到导致STM8无法读取TM1638键值的原因,并采取相应的解决措施。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1777 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1080 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1678 浏览 2 评论
1937浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
730浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
595浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
553浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:28 , Processed in 0.984402 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号