标题: 单片机用3642BH四位数码管显示数据的方法详解 附源程序 [打印本页]

作者: zxwdown    时间: 2019-7-9 06:52
标题: 单片机用3642BH四位数码管显示数据的方法详解 附源程序
    在单片机学习开发中,经常要显示一些实验数据,常用的显示设备是1602,但是1602接口复杂,编程有一定难度,对很多初学者并不好掌握,而且1602适于显示字符,对整数显示不方便,不如数码管简单,因此本人特地在网上买了两个四位数码管。由于有过单数码管的使用经验,拿到四位数码管后便用下载器的5V电源和地线对引脚一对对进行测试,想探明引脚定义。结果发现大部分不亮,部分可亮,有时还亮好几段,进行无数资测试也无法弄清引脚定义,只好看看标注型号到网上查看引脚定义,发现型号为3642BH,引脚定义如下:
    按查询结果进行验证测试,发现有一个四位数码管不知是质量问题还是本人在测试时直接用5V电源进行测试烧了数码管,已经坏啦,另一个数码管个位无法按引脚定义方式点亮,但在显示其他3位是却经常跟着亮,到现在唯一可用的数码管个位仍无法有效利用,只能利用十百千三位数码管,好在一般使用中只要显示8位数据就行,所以就只利用千位和百位管。将千位管段阴极ABCDEFG接P1的1234567针,阳极接P1的8针,百位管的阳极接P3的2针,用以下程序进行测试,效果还算满意。

单片机源程序如下:

#include<reg52.h>

sbit D1=P1^7;
sbit D2=P3^2;
sbit D3=P3^3;

int vcode[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0xf8,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};
void delay(int ii){int i,j;for(i=0;i<ii;i++)for(j=0;j<120;j++); }

void showdata(unsigned char c)
{int k;
for(k=0;k<40;k++){P1=vcode[c/16];D1=1;D2=0;D3=0;delay(10);
                   P1=vcode[c%16];D1=0;D2=1;D3=0;delay(10);
                   //P1=vc[k/5];D1=0;D2=0;D3=1;delay(10);
                   }
P1=0xff;
}
main()
{unsigned char a,c;
int i,j;
while(1){showdata(i);i++;if(i>64)i=0;}
}
下面是程序运行效果:






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1