蓝桥杯单片机——数码管的静态显示(3)

一、原理图分析

蓝桥杯单片机——数码管的静态显示(3)

电阻R15~R22起到限流作用,防止烧坏数码管;com1~com8为数码管的8个公共端,用于控制哪个数码管显示;a1~g1为数码管的7个段,显示0~F,dp1为小数点。

Y7C控制数码管的段码,即控制数码管显示0~F的数值;Y6C控制数码管的公共端,即选择使用哪一个数码管。

在此,数码管为共阳数码管F3461BH,低电平点亮,原理如下图:

蓝桥杯单片机——数码管的静态显示(3)

 0~9的编码值可直接从提供的资源包中查找

蓝桥杯单片机——数码管的静态显示(3)蓝桥杯单片机——数码管的静态显示(3)

 二、程序编写

1、选择从左往右数的第一个数码管显示数字2:

#include<reg51.h>
unsigned char code duanma[16]=
{	0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//用数组保存0~F的16个数值的编码
void main()
{  P2=0xA0;P0=0x00;P2=0x80;P0=0xFF;	 //关闭蜂鸣器、继电器等外设
   P2=0xC0;P0=0x01;P2=0xE0;P0=0xa4;	 //开Y6C,选择从左往右数的第一个数码管亮;开Y7C,显示数字2
}

蓝桥杯单片机——数码管的静态显示(3)

2、实现功能:8个数码管分别依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此反复。

#include<reg51.h>
unsigned char i,j;
unsigned	char code duanma[16]=
{	0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//用数组保存0~F的16个数值的编码,方便通过调用数组使用其值

void delay()//延时函数
{
	int i,j;
	for(i=0;i<500;i++)
	for(j=0;j<600;j++);
}
void main()
{  P2=0xA0;P0=0x00;P2=0x80;P0=0xFF;	 //关闭蜂鸣器、继电器等外设
	for(i=0;i<8;i++)
	{
	for(j=0;j<10;j++)//8个数码管分别依次显示0~9的值
   {	P2=0xC0;P0=0x01<<i;//依次左移i位,从左往右依次选择数码管显示
		P2=0xE0;P0=duanma[j];//每个数码管显示0~9的数字后轮到下一个数码管依次显示	 
		delay();delay();
	}
	for(i=0;i<16;i++)//8个数码管同时显示0~F的值
	{
	  P2=0xC0;P0=0xff;
	  P2=0xE0;P0=duanma[i]; 
	  delay();delay();
	}
}
}

上一篇:ArrayList初始化


下一篇:TiDB统计信息