本文关于蓝桥杯单片机应用开发的设计:
资料硬件
开发板是蓝桥杯专用开发板:CT107D开发板
芯片是STC15F2K61S2
软件:keil5+ISP
不多说直接上代码:
#include <STC15F2K60S2.H>
#define uchar unsigned char //简写需要
#define uint unsigned int
//定义138译码器驱动端口
sbit HC138_A= P2^5;
sbit HC138_B= P2^6;
sbit HC138_C= P2^7;
//共阳极数码管段选(给低电平亮):10:F, 11:E, 12:C, 13:U
uchar duan_sm[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x8e,0x86,0xc6,0xc1};
//共阳极数码管位选(给高电平亮)位置清除+位置1~8
uchar wei_sm[]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void sm_show(uchar Location,Number);//驱动数码管显示
void Open_HC138(uchar x);//138译码器的驱动函数
void Delay(uint xms);//延时函数
void main()
{
while(1)
{
sm_show(1,10);
sm_show(2,1);
sm_show(3,2);
sm_show(4,3);
sm_show(5,4);
sm_show(6,5);
sm_show(7,6);
sm_show(8,7);//开发板上数码管显示:F1234567
}
}
void sm_show(uchar Location,Number)
{
Open_HC138(7);//打开数码管位选
switch(Location)
{
case 0:P0=wei_sm[0];break;//清零
case 1:P0=wei_sm[1];break;
case 2:P0=wei_sm[2];break;
case 3:P0=wei_sm[3];break;
case 4:P0=wei_sm[4];break;
case 5:P0=wei_sm[5];break;
case 6:P0=wei_sm[6];break;
case 7:P0=wei_sm[7];break;
case 8:P0=wei_sm[8];break;
}
Open_HC138(8);//打开数码管段选
P0 = duan_sm[Number];
Delay(6);//延时6ms,消影
}
void Open_HC138(uchar x)
{
switch(x)
{
case 1: HC138_C=0;HC138_B=0;HC138_A=0;break;
case 2: HC138_C=0;HC138_B=0;HC138_A=1;break;
case 3: HC138_C=0;HC138_B=1;HC138_A=0;break;
case 4: HC138_C=0;HC138_B=1;HC138_A=1;break;
case 5: HC138_C=1;HC138_B=0;HC138_A=0;break;//控制LED模块573驱动,使能
case 6: HC138_C=1;HC138_B=0;HC138_A=1;break;//控制ULN2003模块573驱动,使能
case 7: HC138_C=1;HC138_B=1;HC138_A=0;break;//控制数码管位选573,使能
case 8: HC138_C=1;HC138_B=1;HC138_A=1;break;//控制数码管段选573,使能
}
}
void Delay(unsigned int xms)
{
uchar i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}

本程序仅仅是对数码管进行一些基础的调试,可以将代中的几个函数进行分文件模块化。
#include <STC15F2K60S2.H>
#include "SHUMA.H"
#include "Delay.H"
void main()
{
while(1)
{
Show_shuma(1,10);
Show_shuma(2,1);
Show_shuma(3,1);
Show_shuma(4,1);
Show_shuma(5,1);
Show_shuma(6,1);
Show_shuma(7,1);
Show_shuma(8,10);
}
}