蓝桥杯工程之静态数码管显示

说明:为使博文看起来简单,以下程序中没有的函数都在前面已经出现过,如果需要,请自行查阅。

实验现象: 程序下载到开发板会从左到右依次显示0-7的数字

程序:

SMG.h

#ifndef _SMG_H
#define _SMG_H

void SMG_Num_Display();  //1位数码管显示16个数字
void SMG_Circle_Display();  // 8个数码管循环显示8个数字

void SMG_Meanwhile_Display(); //  数码管8位同时显示,显示同1个数字

void Key_Scan();
#endif

SMG.c

#include "All.h"


sbit key = P3^0;
uchar count =0;
//共阳数码管  无小数点
uchar code DuanBuffer[16]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

// 共阳极数码管位选
uchar code WeiBuffer[8] = {
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

 共阳数码管  有小数点
//uchar code DuanBuffer[16]={
//0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78, 0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};

/*  数码管位选排列
0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80                 
实际排列    0000 0000
P0引脚       0123 4567
*/


/* 数码管1位显示,循环16个数字*/
void SMG_Num_Display()
{
  uchar  i ;
  for(i=0;i<8;i++)   // 一个数码管循环显示16个数
	{
	   HC138_Enable_CS(7);  // 打开段选
		P0 = DuanBuffer[i] ;
		
	    HC138_Enable_CS(6);  // 打开位选
		P0 = WeiBuffer[i];
		Delay_ms(20);   // 每2s换下一个数字
	}
}
/* 数码管循环显示  每一位都显示1个数字*/
void SMG_Circle_Display()
{
    uchar  i ;
   for(i=0;i<8;i++)   // 一个数码管循环显示16个数
	{
	   HC138_Enable_CS(7);  // 打开段选
		P0 = DuanBuffer[i] ;
		
	    HC138_Enable_CS(6);  // 打开位选
		P0 = WeiBuffer[i];
		Delay_ms(2000);   // 每2s换下一个数字
	}
}


/* 数码管同时显示8位*/
void SMG_Meanwhile_Display()
{ 
	    HC138_Enable_CS(7);  // 打开段选
		P0 = DuanBuffer[count];  // 显示数字6
		HC138_Enable_CS(6);  // 打开位选
		P0 = 0xff;   // 数码管全部使能   
}

void Key_Scan()
{
   uchar i;
	if(key == 0)
	{
	   i = 20;
		while(i--);
		if(key ==0)
		{
		  count ++;
			if(count == 15)
				count =0;
		}
	}
	while(!key);
}

main.c

#include "All.h"

/* 主函数 */
void main()
{
	/* 屏蔽蜂鸣器*/
    HC138_Enable_CS(5);
    P0 = 0x00;   // 全是0  ,经过反相器
    while(1)
	{
        SMG_Num_Display();
		//SMG_Circle_Display();
		//SMG_Meanwhile_Display();  // 8位数码管同时显示一个数字
	    Key_Scan();   // 独立按键扫描    改变要显示的数字,每次都自加1
	}
}



效果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值