快捷搜索:  汽车  科技

51单片机数码管显示6位数的程序(4位7段数码管动态显示数字1-9999)

51单片机数码管显示6位数的程序(4位7段数码管动态显示数字1-9999)//C语言一行过长时,使用 \ 结尾作为换行标记,并不会影响语句的编译 u8 a[]={0x3F 0x06 0x5B 0x4F 0x66 0x6D \ 0x7D 0x07 0x7F 0x6F 0x77 0x7C 0x39 0x5E 0x79 0x71};//0-9 A-F2.利用for循环将数组中的值赋值给P2端口,延时一段时间,动态地显示出来利用工具软件可以生成7段数码管的的0-9,a-f的表值共阳极数码管(Common Anode):LED的所有阴极都连接在一起 。7SEG-MPX1-CA思路:1.一个字节(Byte)是8位。P2端口P2^0--P2^7也是8位,P2端口可以控制8个led灯的亮灭

新年快乐,过完年继续学习...

7段数码管由8个LED组成,其中7个细长的LED可以显示数字数字0至9,和字母ABCDEF,另外一个圆形的发光二极管显示小数点

类型可分为共阳极和共阴极。

共阴极(Common Cathode):LED的所有阴极都连接在一起。7SEG-MPX1-CC

共阳极数码管(Common Anode):LED的所有阴极都连接在一起 。7SEG-MPX1-CA

共阴极数码管显示数字和字符

51单片机数码管显示6位数的程序(4位7段数码管动态显示数字1-9999)(1)

思路:

1.一个字节(Byte)是8位。P2端口P2^0--P2^7也是8位,P2端口可以控制8个led灯的亮灭

利用工具软件可以生成7段数码管的的0-9,a-f的表值

//C语言一行过长时,使用 \ 结尾作为换行标记,并不会影响语句的编译 u8 a[]={0x3F 0x06 0x5B 0x4F 0x66 0x6D \ 0x7D 0x07 0x7F 0x6F 0x77 0x7C 0x39 0x5E 0x79 0x71};//0-9 A-F

2.利用for循环将数组中的值赋值给P2端口,延时一段时间,动态地显示出来

size = sizeof(a)/sizeof(a[0]);//计算数组有多少个元素 while(1){ for(num=0;num<size;num ){ led = a[num]; delay(200);//延时200毫秒 } }

51单片机数码管显示6位数的程序(4位7段数码管动态显示数字1-9999)(2)

4位7段共阳极数码管动态显示数字1-9999

思路:

1.1-9999本质由0-9这10个数字组成。4位数码管分别显示千位百位十位个位

2.利用PNP三极管开关来控制4个数码管的显示 只有高电平,数码管才会工作

3.事实上同一时间只有一个数码管是工作的,但是延时10毫秒左右,欺骗人的眼睛,让人感觉4个数码管同时亮

51单片机数码管显示6位数的程序(4位7段数码管动态显示数字1-9999)(3)

#include<reg51.h> #define u8 unsigned char #define u16 unsigned int #define led P0 sbit sw1 = P2^0;//控制开关 sbit sw2 = P2^1; sbit sw3 = P2^2; sbit sw4 = P2^3; u8 a[]={0xc0 0xf9 0xa4 0xb0 0x99 0x92 0x82 0xf8 0x80 0x90};//0-9 void delay(u16 ms);//延时函数 void display(u16 number);//数码管上显示数字 void main() { u16 count=0; while(1){ count ; //从1开始 display(count); if(10000 ==count) count = 0;//计数到10000时置0 } } void display(u16 number) { led = a[number/1000];//千位上的数字 sw1 = 1; delay(9); sw1 = 0; led = a[(number/100)];//百位上的数字 sw2 = 1; delay(9); sw2 = 0; led = a[(number/10)];//十位上的数字 sw3 = 1; delay(9); sw3 = 0; led = a[number];//个位上的数字 sw4 = 1; delay(9); sw4 = 0; } void delay(u16 ms) { u16 x y; for(x=0;x<ms;x ) { for(y=0;y<333;y ); } }

#自学打卡 #51单片机

猜您喜欢: