蓝桥杯单片机数码管控制

蓝桥杯数码管控制
LED控制
数码管控制
矩阵键盘
EEPROM-AT24C02
AD/DA-PCF8591
时钟DS1302
温度DS18B20
超声波

源代码下载
蓝桥杯的板子资源比较多,但是IO数量少,因此使用译码器和锁存器来拓展IO。P0相当于数据引脚 ,而Y4C,Y5C,Y6C,Y7C决定对那个期间操作。因此程序核心就是yxc()函数 ,通过调用实现led,数码管,蜂鸣器,继电器的操作。

/************************************************************
	-->蓝桥杯单片机设计— CT107_V2 开发板例程,并不支持STC89C52
	-->因开发需要,请将STC头文件加载到Keil5安装目录下,具体操作参考STC-ISP软件中“Keil仿真设置”详细介绍
	-->以下软件延时及对硬件初始化的代码以STC-ISP为参考
	-->开源地址https://github.com/Hao-boyan/CT107
	-->Please open this file in UTF-8 encoding, Edit->Configuration->General Editor Settings->Encoding->Encode in UTF-8
	
	-----------------------硬件设置---------------------------
	-->芯片型号:IAP15F2K61S2
	-->晶振:12MHz
	-->8位共阳数码管
************************************************************/
#include "STC15.H"
#include "intrins.h"
typedef unsigned char uchar;
uchar code wei[]={
     0,0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1};
code uchar duan[]={
     0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};


void yxc(uchar x,d)		//X选择Y4C,Y5C,Y6C,Y7C中那个为操作对象,d为输入的数据即P0。该函数十分重要的!!!
{
     
	x=x<<5;
	XXXX		//此处缺少代码段,请下载源码查看
	P0=d;
	P2 &= 0x1f;
}

void seg(uchar a,uchar b)		//a控制第几位数码管(从右向左),b显示的数字
{
     
	
	P0=0;
	yxc(6,wei[a]);
	P0=0xff;
	yxc(7,duan[b]);
	
}

void Delay1ms()		//@12.000MHz
{
     
	unsigned char i, j;

	i = 12;
	j = 169;
	do
	{
     
		while (--j);
	} while (--i);
}

void Delay10ms()		//@12.000MHz
{
     
	unsigned char i, j;

	i = 117;
	j = 184;
	do
	{
     
		while (--j);
	} while (--i);
}


void display(uchar count)		//可以根据需要改变显位数
{
     
	seg(8,8);
	Delay1ms();
	seg(7,7);
	Delay1ms();
	seg(6,6);
	Delay1ms();
	seg(5,5);
	Delay1ms();	
	seg(4,4);
	Delay1ms();	
	seg(3,3);
	Delay1ms();	
	seg(2,2);
	Delay1ms();	
	seg(1,count);
	Delay1ms();
	
	seg(1,11);
}

void main()
{
     	
	uchar count=1,s;
	yxc(4,0xff);
	while(1) 
	{
     
		display(count);
		Delay10ms();
		
		//秒表部分
		s++;
		if(s>80)
		{
     
			count++;
			s=0;
		}
		if(count>9)
			count=1;	
	}
}

你可能感兴趣的:(蓝桥杯单片机开发,51单片机,C语言)