51单片机 | 您所在的位置:网站首页 › 15024金封管引脚图 › 51单片机 |
51单片机-8段四位数码管
8段数码管工作原理8段四位数码管工作方式下面是本人自写的四位数码管模板程序模板程序应用方法
8段数码管工作原理
其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。 8段四位数码管工作方式
(现在是仅适用于51单片) //共阳极显示 unsigned char led[16]={0xc0,0xf9,0xa4,0xb0,\ 0x99,0x92,0x82,0xf8,\ 0x80,0x90,0x88,0x83,\ 0xc6,0xa1,0x86,0x8e}; unsigned char led[16]={0x3f,0x06,0x5b,0x4f,\ 0x66,0x6d,0x7d,0x07,\ 0x7f,0x6f,0x77,0x7c,\ 0x39,0x5e,0x79,0x71}; 模板程序 /** * 这是一个关于数码管显示的程序 * @param first 第一个数码管的示数 * @param second 第二个数码管的示数 * @param third 第三个数码管的示数 * @param four 第四个数码管的示数 * @param dot 所加小数点的位置 * @param delayms() 延时函数指针 * @return NONE */ #define wbicPort P2 //位选端口(控制哪个数码管显示) #define DataPort P0 //段选端口(控制显示的字母和数字) #define HIGH_WBIC //如果位选接在了高八位就用该宏 //#define LOW_WBIC //如果位选接在了低八位就用该宏 #define COMMON_POS //选择4位7段数码管共阳 //#define COMMON_NEG //选择4位7段数码管共阴 //填写4位7段数码管的位选引脚 #ifdef HIGH_WBIC #define W1 0x7f #define W2 0xbf #define W3 0xdf #define W4 0xef #endif #ifdef LOW_WBIC #define W1 0xf7 #define W2 0xfb #define W3 0xfd #define W4 0xfe #endif #ifdef COMMON_POS unsigned char led[16]={0xc0,0xf9,0xa4,0xb0,\ // 0,1,2,3, 0x99,0x92,0x82,0xf8,\ // 4,5,6,7, 0x80,0x90,0x88,0x83,\ // 8,9,A,B, 0xc6,0xa1,0x86,0x8e}; // C,D,E,F #endif #ifdef COMMON_NEG unsigned char led[16]={0x3f,0x06,0x5b,0x4f,\ // 0,1,2,3, 0x66,0x6d,0x7d,0x07,\ // 4,5,6,7, 0x7f,0x6f,0x77,0x7c,\ // 8,9,A,B, 0x39,0x5e,0x79,0x71}; // C,D,E,F #endif void Tube_Light(unsigned char first,unsigned char second,unsigned char third,unsigned char four,unsigned char dot,void (*delayms)()){ #ifdef HIGH_WBIC wbicPort = 0xf0|wbicPort; #endif #ifdef LOW_WBIC wbicPort = 0x0f|wbicPort; #endif wbicPort = W1; if (dot==1) DataPort = led[first]&0x7f; else DataPort = led[first]; delayms(); wbicPort = W2; if (dot==2)DataPort = led[second]&0x7f; else DataPort = led[second]; delayms(); wbicPort = W3; if (dot==3)DataPort = led[third]&0x7f; else DataPort = led[third]; delayms(); wbicPort = W4; if (dot==4)DataPort = led[four]&0x7f; else DataPort = led[four]; delayms(); } 应用方法 #include #include "模板程序.h" //添加模板程序 void delaysm(){ /* 自己实现延时函数程序,如果想要延时程序, 看我的另一篇。(有可能还未写呢[^v^]) ~~~^v^~~ 语法问题自己搞定(一般百度就能搞定了) */ } void (*p)(void); //定义一个延时函数的指针 void main(){ p = delayms; //为指针赋值; while(1){ Tube_Light(1,2,3,4,1,p); } } |
CopyRight 2018-2019 实验室设备网 版权所有 |