完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
注意:本实验采用清翔电子51单片机开发板(同样的51单片机开发板,不同型号,内部设计会有一定差异,程序不一定适用) 每段程序都有现象图,同型号单片机保证能用。 给我点个赞,谢谢! 1、数码管知识
a图为一个数码管每段对应的字母 b图为共阴极数码管(他们的阴极都相连) c图为共阳极数码管(他们的阳极都相连) 数码管分为共阳和共阴两种,共阴数码管就是 8 只 LED 小灯的阴极是连接在一起的,阴极是公共端,由阳极来控制单个小灯的亮灭…… 这是这块开发板对应数码管部分的原理图,我简短解说一下,手打有点吃不消。 这里使用了两个74HC573,这个叫锁存器,它可以把数据输入端与输出端进行隔离或连接。 输出口Q要想输出高低电平OE脚必须接GND。 LE脚为高时,输出端Q随输入端D的数据而变化。 LE脚为低时,输出端Q数据保持不变,输入端D数据变化不会改变Q的数据。 由图可见,OE端直接与地相连,而LE端分别与单片机的P2.6和P2.7相连,所以这款单片机是用P2.6和 P2.7来控制数码管的。 P2.7叫做位控,控制哪一位(总共有八位) P2.6叫做段控,控制数码管哪几段显示(一段段组成数字) 2、数码管静态显示 LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。 #include #define uint unsigned int //定义无符号整型的写法 #define uchar unsigned char //定义无符号字符型的写法 ***it DU = P2^6; ***it WE = P2^7; void main() { WE = 1; //打开位控 P0 = 0XFE; //1111 1110 根据原理图顺序,为左边第一个数码管 WE = 0; //关闭位控 DU = 1; //打开段控 P0 = 0X66; //0110 0110 对应数字4 DU = 0; //关闭段控 while(1); } 现象图: 3、数码管动态显示 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。 所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。 #include #define uchar unsigned char #define uint unsigned int ***it DU = P2^6; ***it WE = P2^7; uchar code table[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};//0-9,这里用code是把它放到ROM区,节省RAM区 void delay(uint z)//约1ms延时 { uint x,y; for(x = z; x > 0; x--) for(y = 114; y > 0 ; y--); } void display(uint i)//显示程序 { uchar bai,shi,ge; bai = i/100; //521/100=5 shi = i%100/10; //521%100/10=2 ge = i%10; //521%10=1 //第一位数码管 P0 = 0xFF; //清除断码 WE = 1; //打开位选锁存器 P0 = 0xFE; //1111 1110 WE = 0; //锁存位选数据 DU = 1; //打开段选锁存器 P0 = table[bai]; DU = 0; //锁存位选数据 delay(5); //第二位数码管 P0 = 0xFF; //清除断码 WE = 1; //打开位选锁存器 P0 = 0xFD; //1111 1101 WE = 0; //锁存位选数据 DU = 1; //打开段选锁存器 P0 = table[shi]; DU = 0; //锁存位选数据 delay(5); //第三位数码管 P0 = 0xFF; //清除断码 WE = 1; //打开位选锁存器 P0 = 0xFB; //1111 1011 WE = 0; //锁存位选数据 DU = 1; //打开段选锁存器 P0 = table[ge]; DU = 0; //锁存位选数据 delay(5); } void main() { while(1) { display(521);//调用上面的显示函数 } } 现象图: 大家自己在编写这块程序要注意一个问题,uchar 范围为0-255 uint 为0-65535,这个错误我一开始也犯了。搞得我超范围的数显示不出来。 |
|
|
|
很优质的帖子,看了以后很清楚,如果把MCU那一部分也能够一起画出来就更好了
|
|
|
|
感谢分享,学习中,谢谢楼主
|
|
|
|
只有小组成员才能发言,加入小组>>
2514 浏览 0 评论
1088浏览 2评论
701浏览 1评论
454浏览 0评论
196浏览 0评论
335浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 18:08 , Processed in 1.293716 second(s), Total 83, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号