找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2662|回复: 0
收起左侧

单片机矩阵按键设置自由设置占空比程序

[复制链接]
ID:663010 发表于 2020-7-5 08:46 | 显示全部楼层 |阅读模式
基本功能
1)按下FUN键后,进入占空比设置,按下ENT键,确认占空比并显示;
2)按0-9号按键设置具体占空比比值,先按下的数字为十位数,后按下的为个位,如果继续按下数字键,个位的数字移到十位,最后按下的是个位数;
3)占空比值显示在数码管上,在FUN按键按下,设置占空比时,数码管闪烁显示;
4)P2.0口输出波形。

仿真图:

按键控制占空比.png
程序:
//-------------------头文件------------------
//-------------------头文件------------------
#include<reg51.h>
//-----------------I/O口定义-----------------//-----------------I/O口定义-----------------sbit duan=P2^6;
sbit]sbit]sbit PWM=P2^0;
//------------------函数声明----------------
//------------------函数声明----------------
void anjian();
void]void]void xianshi();
void]void]void T_int();
void]void]//------------------变量定义----------------
char]char]bit flag=0,flag_c=0,flag_xs=0;
unsigned]unsigned]unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
unsigned]unsigned]//------------------主函数------------------
void]void]{
        while(1)
                msxz();
                xianshi();
}
//-------------定时器T0初始化
//-------------定时器T0初始化
void T_int()
{{        PWM=1;
        TMOD=0x12;


        TR0=1;
        TH0=256-200;

        ET1=1;
        TL1=35535%256;
}
}
//-----------T0中断占空比-----------
void]void]{
        {
                PWM=~PWM;
                        temp=10-zkb/10;
                        temp=zkb/10;
}
//---------T1中断闪烁显示---------
//---------T1中断闪烁显示---------
void T1_ser() interrupt 3
{
{
        TH1=35536/256;
]]        if(++ss>=10)
                ss=0;
        }
}
}
//-------------模式选择函数---------
void]void]{
        {
                c_temp=0;          //修改占空比暂值
                TR1=1;                  //闪烁显示
        else if(key_v==11&&flag)        //ENT按下确认占空比,必须得先进入设置占空比之后
                flag=0;                  
                TR1=0;
        if(flag&&flag_c)                   //进入设置占空比且按键在0~9之间
                c_temp=(c_temp*10+key_v)%100;
                flag_c=0;
}
//-------------按键函数-------------
//-------------按键函数-------------
void anjian()
{
{
        P3=0x0f;
        {
                if(P3!=0x0f)
                        jianhao();
                        flag_c=1;
        }      
}
}
//----------------键号识别函数----------------
void]void]{
                                                                0xb7,0xbb,0xbd,0xbe,0x77,0x7b,0x7d,0x7e};      
        for(i=0;i<4;i++)
                P3=~hs;
                for(j=i;j<=16;j++)
                        if(jianma==jianhao[j])
                                key_v=j;
                                break;
                }
        }
}
}
//------------------显示函数------------------
void]void]{
        if(flag&&flag_xs)
                        a[0]=10;
                }
                {
                        a[1]=zkb/10;      
                temp=0x02;
                {
                        wei=1;
               
                        duan=1;
                        delay_nms(5);
                }
}
}
//-------------延时函数------------
void]void]{
        while(x--)
                for(y=0;y<125;y++);
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表