完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
目标
使用单片机89C51的P0和P2口显示“52H-1314”。 Proteus连线 过程 1、首先定义好数码管的字符码,我习惯采用共阳极的(使用共阴极的数码管直接取反就行了) uchar code display[]={ 0x0C0,//"0" 0x0F9,//"1" 0x0A4,//"2" 0x0B0,//"3" 0x99, //"4" 0x92, //"5" 0x82, //"6" 0x0F8,//"7" 0x80, //"8" 0x90, //"9" 0x88, //"A"(10) 0x83, //"b"(11) 0x0C6,//"C"(12) 0x0A1,//"d"(13) 0x86, //"E"(14) 0x8E, //"F"(15) 0x90, //"G"(16) 0x89, //"H"(17) 0x8C, //"P"(18) 0xA1, //"U"(19) 0xBF//"-" (20) };//共阴极 2、定义好要显示的字符码数组,然后就循循循循循循循环。 int main() { uint shuma[8]={5,2,17,20,1,3,1,4};//"5,2,H,-,1,3,1,4" while(1) { xianshi(shuma); } } 3、通过函数显示数码: void xianshi(uint *shuma) { uint i=0,p0=0xff,p2=0x01; for(i=0;i<8;i++) { P2=p2;//位选 P0=display[shuma];//段选 Delay(3); p2=_crol_(p2,1);//段选左移刷屏 } } 4、各位只需要在前面补充一个Delay()函数用来延时就可以啦,记得延时不要太久哦,否则容易出现数码管闪烁或者直接无法同时显示所有字符哦。 换个字符串的话比如像这样: 或者像这样: 还有这样: 以上都是因为延时时间过长导致的结果。 所以刷屏的频率一定要足够高,以确保我们的人眼无法捕捉到屏幕的刷屏过程,利用视觉停留作用,就可以让这些数字看起来同时停留在数码管上啦! |
|
|
|
只有小组成员才能发言,加入小组>>
3323 浏览 9 评论
3000 浏览 16 评论
3498 浏览 1 评论
9073 浏览 16 评论
4093 浏览 18 评论
1193浏览 3评论
613浏览 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-29 16:06 , Processed in 1.221200 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号