完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
前面我们介绍过数码,七段数码管的本质是7个LED灯,也就是说和流水灯的操作方法没有两样,一般来说单数码管的使用仅仅是出学者学习过程中的一个测试性的程序,实用性并不大,但可以锻炼我们对字节数组的理解,以及单片机多管脚组合输出的理解。
这里我们使用的是ATMEGA16,外加了一个排阻。我们看到,PB7没有信号的变化,那是因为我们在设定字节数组是的编码决定了这我们没有给这个管脚输出过高电平。 我们可以把代码中的十六进制换成二进制,那样更加明显,如下代码 十六进制编码: #include #include #include #include #include unsigned char cseg[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//0x77,0x7c,?0x39,0x5e,0x79,0x71 int main() { unsigned char i=0; DDRB=0xFF; // Write your code here while (1) { PORTB=cseg; i=(i+1)%10; _delay_ms(400); } return 0; } 二进制编码: unsigned char cseg[10]={0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101,0b01111101,0b00000111,0b01111111,0b01101111}; int main() { unsigned char i=0; DDRB=0xFF; // Write your code here while (1) { PORTB=cseg; i=(i+1)%10; _delay_ms(400); } return 0; } 从二进制的编码我们更容易看到哪个管脚输出的是高电平,点亮的是七段数码管的哪一段。 |
|
|
|
只有小组成员才能发言,加入小组>>
3320 浏览 9 评论
3000 浏览 16 评论
3497 浏览 1 评论
9069 浏览 16 评论
4090 浏览 18 评论
1190浏览 3评论
612浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
603浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2341浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1899浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 01:46 , Processed in 1.214693 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号