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

一、原理图分析

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

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

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

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

 二、程序编写

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
}

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();
	}
}
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值