完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
比如,char []={0x3f,......}
P0=char[0]; P0口接数码管段选 假如一组IO口不足八位,段选接在不同组的IO,该如何驱动? |
|
相关推荐
13个回答
|
|
那有什么问题吗,先关掉位选信号,再输出段信号,最后再开位信号
|
|
|
|
比如,像STM8S003 一组IO没有八个,段选接在不同的组的IO口,该如何操作?
|
|
|
|
哈哈,还是先输出段信号,再输出位信号,不在同一IO组无非就是一个Byte不能解决的问题
|
|
|
|
原理都一样...
|
|
|
|
你的方法巳找了好几个师傅,他们试了一会都说不行,能给个实例吗?
|
|
|
|
数码管刷新一般是放在中断里的,假如数码管有3个,定义个3字节的数组做buff,然后在1ms中断里逐个对IO赋值就行了,第一次进中断把buff[0]逐位赋给IO,第二次进用buff[1],依次循环
|
|
|
|
更好看点的可以这样
typedef union { unsigned char bytes; struct {6 unsigned char bit0:1; unsigned char bit1:1; ... unsigned char bit7:1; }bits; }BITS_STRUCT; BITS_STRUCT bits_buff[3]; 使用: bits_buff[0].bytes=0x55; led0= bits_buff[0].bits.bit0; led1= bits_buff[0].bits.bit1; ... led7= bits_buff[0].bits.bit7; 呼。。。手机打字真累。。。 |
|
|
|
***it SEG1 = P2^3;
***it SEG2 = P2^4; ***it SEG3 = P2^5; ***it SEG4 = P2^6; ***it SEG5 = P1^3; ***it SEG6 = P1^6; sibt SEG7 = P1^7; ***it SEG8 = P0^5; void Set_SEG(unsigned char dat) { SEG1 = dat & 0x01; dat >>= 1; SEG2 = dat & 0x01; dat >>= 1; SEG3 = dat & 0x01; dat >>= 1; SEG4 = dat & 0x01; dat >>= 1; SEG5 = dat & 0x01; dat >>= 1; SEG6 = dat & 0x01; dat >>= 1; SEG7 = dat & 0x01; dat >>= 1; SEG8 = dat & 0x01; } |
|
|
|
|
|
|
|
每个段位单独控制,需要把段数据里的每一位单独赋值给对应的引脚
|
|
|
|
这个问题很天真啊
|
|
|
|
楼主想必也是很天真的孩子
|
|
|
|
不够就用别的口呀,
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2234 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2053 浏览 3 评论
4664 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2197 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2734 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 12:01 , Processed in 0.891138 second(s), Total 97, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号