完善资料让更多小伙伴认识你,还能领取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; } |
|
|
|
|
|
|
|
|
|
|
|
每个段位单独控制,需要把段数据里的每一位单独赋值给对应的引脚
|
|
|
|
|
|
这个问题很天真啊
|
|
|
|
|
|
楼主想必也是很天真的孩子
|
|
|
|
|
|
不够就用别的口呀,
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2797 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2403 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2276 浏览 0 评论
2388 浏览 1 评论
1637 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 23:39 , Processed in 1.044272 second(s), Total 94, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3113