找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2160|回复: 5
打印 上一主题 下一主题
收起左侧

STC8G1K08-SOP8单片机制作定时控制程序与PCB文件

  [复制链接]
跳转到指定楼层
楼主
ID:235691 发表于 2023-2-23 17:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
制作出来的实物图如下:


电路原理图如下:


protel99画的PCB图如下:(51hei附件中可下载工程文件)

/*------------------------程序说明----------------------------*/
/*---本程序运行在STC8G1K08中----------------------------------*/
/*---时间设置步长为一分钟-------------------------------------*/
/*---可以根据需要更改变量K的判断值修改时间步长----------------*/
/*---上电后先循环点亮数码管、发光管,检测完成初始化-----------*/
/*---每按一下按键,则定时时间增加不同时间步长-----------------*/
/*---充电过程中红色指示灯闪烁表示正在充电---------------------*/
/*---充电完成关闭红色指示灯表示充电完成-----------------------*/
/*---充电中或完成后可以重新通过按键设置定时时间-------------------*/
/*---延时上电和延时断电选择功能,按下Key1再通电实现延时上电功能设置---*/
//#include "STC8xxxx.H"//<STC8G.h>
#include "Config.H"
#define uchar unsigned char
#define uint unsigned int

sbit JDQ=P5^4;           //继电器(高电平充电,低电平不充电)

sbit KEY1 = P3^0;        
sbit KEY2 = P3^1;

sbit RED_flash=P5^5;          //充电中指示灯闪烁

enum {OFF = 1, ON = 0};
enum {JDQ_OFF = 0, JDQ_ON = 1};

void key();

bit delay_OnOff=1;                   //延时上电和延时断电选择位,开机检查Key1设置此位,0表示延时上电,1表示延时断电。

uchar i;
uint t = 0;                   //按键计数变量
uint k = 0;                   //计时计数变量
uint m = 0;                   //闪烁计数变量

uint T0_flag = 0;                   //定时器运行后不为0

void LED_Init()    //状态指示灯检测 初始化
{   
   RED_flash=ON;
   Delay_ms(300);
   RED_flash=OFF;   
}

/******定时器0初始化,12T自动重装模式,定时60毫秒******/
void InitTimer0()                   //60ms定时器
{
    TMOD = 0x01;
    TH0=(65536-60000)/256;
        TL0=(65536-60000)%256;
    EA = 1;                   //开 总中断
    ET0 = 1;           //开 定时器T0中断
//    TR0 = 1;           //开启 定时器T0
}   

/*--------------------------主函数------------------------------*/
void main()
{         
        P3M0 = 0x00;
    P3M1 = 0x00;
        P5M0 = 0x00;
    P5M1 = 0x00;

        delay_OnOff=KEY1;  //延时断电或延时上电选择。0:延时上电,1:延时断电。先长按KEY1不松再通电有效
    JDQ = JDQ_OFF;        //关闭继电器,等待开始充电。        

    LED_Init();                 //状态指示灯检测 初始化

        Light_Level_Set(4);        //设置亮度等级1-8级
    for(i=0;i<10;i++)        //测试显示屏
                {
                   AiP650_DisPlay(1,i);
                   AiP650_DisPlay(2,i);
                   AiP650_DisPlay(3,i);
                   AiP650_DisPlay(4,i);
                   Delay_ms(400);
                }        
//        i=0;
        AiP650_CLR();
        Delay_ms(500);

        InitTimer0();           //定时器初始化

        TR0 = 0;           //关闭 定时器T0
        t=0;                     //上电默认充电时间
        

        while(1)
        {
         
          key();                                //循环按键函数
          AiP650_DisPlayFourNum(t);         //显示数字

      if(delay_OnOff==1)                //延时断电模式,定时充电未启动
                   {                  
                         if(t==0)
                           {
                             JDQ = JDQ_OFF;          //断开继电器,停止充电
                         TR0 = 0;            //停止定时器
                             RED_flash=OFF;        
                           }                           
                 else
                              {
                                 TR0 = 1;        //启动定时器
                                 JDQ = JDQ_ON;                          
                           }
                  }
          if(delay_OnOff==0)                //延时通电模式,定时充电未启动
                   {        
                     if(t==0&&T0_flag==0)
                             {  
                                 JDQ = JDQ_OFF;          //
                             TR0 = 0;                //停止定时器
                                 RED_flash=ON;                                   
                  }
                 else if(t!=0)
                      {
                                  TR0 = 1;        //启动定时器
                              JDQ = JDQ_OFF;                          
                          }
                         else
                          {
                                  TR0 = 0;        //停止定时器
                                    JDQ = JDQ_ON;
                          }
                   }
          if(k>=1000)                        //按键设定时间增量   30000半小时时间   60000一小时           1000一分钟
       {
           k = 0;
                   t-=1;                        //减去一分钟
                                    

       }
           Delay_ms(25);
        }   
}

/*---定时器T0中断函数---*/
void Timer0() interrupt 1
{
        
        TH0=(65536-60000)/256;        //赋初值
        TL0=(65536-60000)%256;
        k++;                                        //
        m++;                                        //
        T0_flag++;

         if(T0_flag > 1000)                //
          {                                
                  T0_flag = 1;
          }
        /*---充电过程中指示灯闪烁---*/
          if(m > 8)                //每480ms充电指示灯闪烁一次
          {                                
                  m = 0;
                  RED_flash = ~RED_flash;        //取反实现闪烁
          }
}


void key()        //按键操作
{         
          if(KEY1==0)                        //有键按下
          {  
                Delay_ms(150);                  
            t+=30;                        
                if(t>600)               
                t = 0;        
          }               

        if(KEY2==0)                        //按下按键加一        
        {
                Delay_ms(150);        
                t+=1;        
                if(t>600)                        
                t = 1;
        }        
}                 


Keil5程序.7z

46.36 KB, 下载次数: 64, 下载积分: 黑币 -5

protel PCB文件.7z

26.94 KB, 下载次数: 53, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏13 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:292518 发表于 2023-3-30 15:33 | 只看该作者
楼主你好,能不能改成用编码器调节,时间默认定时8小时???像这个
回复

使用道具 举报

板凳
ID:102702 发表于 2023-4-9 12:08 | 只看该作者
请问楼主用的是共阴还是共阳的数码管?
回复

使用道具 举报

地板
ID:235691 发表于 2023-5-4 14:10 | 只看该作者
1650驱动共阴数码管
回复

使用道具 举报

5#
ID:72649 发表于 2023-11-22 09:44 来自手机 | 只看该作者
把代码发给我,我帮你修改一下。
回复

使用道具 举报

6#
ID:102702 发表于 2024-3-20 17:11 | 只看该作者
请问一下楼主电路图上J2和J3有什么用的?分别是接什么的?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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