程序员

蓝桥杯单片机----数码管的基本控制

作者:admin 2021-06-30 我要评论

? ? ? ? 这篇主要带大家了解一下如何对蓝桥杯单片机开发板的数码管进行基本操作大家可以看一下电路图这里不再对74HC138译码器和74HC573锁存器做讲解可以参考 蓝...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

? ? ? ? 这篇主要带大家了解一下如何对蓝桥杯单片机开发板的数码管进行基本操作,大家可以看一下电路图,这里不再对74HC138译码器和74HC573锁存器做讲解,可以参考蓝桥杯单片机----LED指示灯的基本控制里面的内容。

设计内容:

? ? ? ? 1.数码管从左到右依次点亮;

? ? ? ? 2.数码管全部点亮后,从左到右依次熄灭。

#include<stc15f2k60s2.h>

#define uchar unsigned char   //定义无符号字符类型uchar
#define uint unsigned int     //定义无符号整型类型uint

uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//数字0~9,“-”,“关”
uchar yi,er,san,si,wu,liu,qi,ba;   //定义字符型变量yi,er,san,si,wu,liu,qi,ba,当作数码管显示控制变量

void delayms(int ms);          //延时函数
void allinit();                //初始化函数
void display1(uchar yi,uchar er);   //第一、二段数码管函数
void display2(uchar san,uchar si);  //第三、四段数码管函数
void display3(uchar wu,uchar liu);  //第五、六段数码管函数
void display4(uchar qi,uchar ba);   //第七、八段数码管函数
void SMG_init();               //数码管显示程序
	
void main()//主函数
{
	allinit();                  //初始化函数
	yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=11;ba=11;//上电让数码全部熄灭
	while(1)
	{
		SMG_init();
		display1(yi,er);          //第一、二段数码管函数
		display2(san,si);         //第三、四段数码管函数
		display3(wu,liu);         //第五、六段数码管函数
		display4(qi,ba);          //第七、八段数码管函数
	}
}
void SMG_init()               //数码管显示程序
{
	uchar k;                    //定义无符号字符型变量k
	for(k=0;k<8;k++)
	{
		P2=0XC0;P0=~(0XFE<<k);P2=0XFF;P0=0X00;delayms(500);   //段选全部点亮状态下,让数码管位选移位选中,延时0.5秒
	}
	for(k=0;k<8;k++)
	{
		P2=0XC0;P0=(0XFE<<k);P2=0XFF;P0=0X00;delayms(500);    //段选全部点亮状态下,让数码管位选移位关闭,延时0.5秒
	}
}
void delayms(int ms)//延时函数
{
	uint i,j;
	for(i=ms;i>0;i--)
		for(j=845;j>0;j--);
}
void allinit()//初始化函数
{
	P2=0XA0;P0=0X00;      //关闭蜂鸣器继电器
	P2=0X80;P0=0XFF;      //关闭所有LED灯
	
	P2=0XC0;P0=0XFF;      //选中所有数码管段选
	P2=0XFF;P0=0XFF;      //关闭所有数码管
}
void display1(uchar yi,uchar er)//第一、二段数码管函数
{
	P2=0XC0;P0=0X01;               //选中第一个数码管段选
	P2=0XFF;P0=tab[yi];            //让第一个数码管显示yi指向的值
	delayms(1);                    //延时1ms
	
	P2=0XC0;P0=0X02;               //选中第二个数码管段选
	P2=0XFF;P0=tab[er];            //让第一个数码管显示er指向的值
	delayms(1);	                   //延时1ms
}
void display2(uchar san,uchar si)//第三、四段数码管函数
{
	P2=0XC0;P0=0X04;               //选中第s三个数码管段选
	P2=0XFF;P0=tab[san];           //让第一个数码管显示san指向的值
	delayms(1);                    //延时1ms
	
	P2=0XC0;P0=0X08;               //选中第四个数码管段选
	P2=0XFF;P0=tab[si];            //让第一个数码管显示si指向的值
	delayms(1);	                   //延时1ms
}
void display3(uchar wu,uchar liu)//第五、六段数码管函数
{
	P2=0XC0;P0=0X10;               //选中第五个数码管段选
	P2=0XFF;P0=tab[wu];            //让第一个数码管显示wu指向的值
	delayms(1);                    //延时1ms
	
	P2=0XC0;P0=0X20;               //选中第六个数码管段选
	P2=0XFF;P0=tab[liu];           //让第一个数码管显示liu指向的值
	delayms(1);	                   //延时1ms
}
void display4(uchar qi,uchar ba)//第七、八段数码管函数
{
	P2=0XC0;P0=0X40;               //选中第七个数码管段选
	P2=0XFF;P0=tab[qi];            //让第一个数码管显示qi指向的值
	delayms(1);                    //延时1ms
	
	P2=0XC0;P0=0X80;               //选中第八个数码管段选
	P2=0XFF;P0=tab[ba];            //让第一个数码管显示ba指向的值
	delayms(1);                    //延时1ms
	P2=0XC0;P0=0X80;               //选中第八个数码管段选
	P2=0XFF;P0=0XFF;               // 熄灭数码管
}

数码管的基本操作

?

;原文链接:https://blog.csdn.net/qq_45385706/article/details/115531945

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 蓝桥杯单片机----数码管的基本控制

    蓝桥杯单片机----数码管的基本控制

  • 蓝桥杯单片机省赛 第四届模拟智能灌溉

    蓝桥杯单片机省赛 第四届模拟智能灌溉

  • 电子设计大赛应该准备什么

    电子设计大赛应该准备什么

  • 第七届工程训练大赛垃圾分类

    第七届工程训练大赛垃圾分类

腾讯云代理商
海外云服务器