找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5201|回复: 0
收起左侧

单片机用3642BH四位数码管显示数据的方法详解 附源程序

[复制链接]
ID:404797 发表于 2019-7-9 06:52 | 显示全部楼层 |阅读模式
    在单片机学习开发中,经常要显示一些实验数据,常用的显示设备是1602,但是1602接口复杂,编程有一定难度,对很多初学者并不好掌握,而且1602适于显示字符,对整数显示不方便,不如数码管简单,因此本人特地在网上买了两个四位数码管。由于有过单数码管的使用经验,拿到四位数码管后便用下载器的5V电源和地线对引脚一对对进行测试,想探明引脚定义。结果发现大部分不亮,部分可亮,有时还亮好几段,进行无数资测试也无法弄清引脚定义,只好看看标注型号到网上查看引脚定义,发现型号为3642BH,引脚定义如下:
3642bhB.jpg
3642bhA.jpg
    按查询结果进行验证测试,发现有一个四位数码管不知是质量问题还是本人在测试时直接用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;}
}
下面是程序运行效果:
3642bhC.jpg

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表