蓝桥杯单片机设计开发1.0-数码管调试

文章展示了使用STC15F2K61S2单片机,通过keil5和ISP软件进行蓝桥杯专用开发板CT107D的数码管驱动程序设计。代码中定义了138译码器的驱动函数和数码管段选、位选,以及延时函数,实现数码管显示数字1到10。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文关于蓝桥杯单片机应用开发的设计:

  • 资料硬件

  1. 开发板是蓝桥杯专用开发板:CT107D开发板

原理图文件

  1. 芯片是STC15F2K61S2

  1. 软件: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);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值