找回密码
 立即注册

QQ登录

只需一步,快速开始

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

stm8s单片机菜板杀菌仪,原理图,源代码,说明书

[复制链接]
ID:611528 发表于 2019-9-15 23:00 | 显示全部楼层 |阅读模式
菜板杀菌仪功能描述:
一:产品一共有2个按键:KEY1电源键(左,红色LED), KEY2启动键(右,绿色LED)。
二:先按电源键之后,再按启动键,UV灯同时亮起,发热片会加热,风扇会转起来,达到UV杀菌风扇烘干的一个效果。
:工作1.5个小时之后它会自动停止,暂停5个小时后自动开启工作,一直循环工作。
4:电源键-左边电源键轻按就是待机状态,红色LDE亮起,长按电源键就会关机,红色LED关闭。
5:启动键-右边键轻按就是启动工作,蓝色LED亮起,启动后右边启动按键从新按时从新计算半个小时。工作结束后蓝色LED会关闭。只有工作时才会亮起蓝色的LED,红色LED.
6:重点:
1,只要电源开启,左右两侧的UV灯要同时亮起。
2,发热片温度达到70°就要自动断电。(目前使用70°的温度感应SENSOR
3AC 220V(85Vac- 255Vac) FREE VOLTAGE,只要更换电源线在任何一个国家都通用
7LED与蜂鸣器:
1:电源启动:红色LED亮起/蜂鸣器滴滴声音响起。
2:电源关闭:红色LDE关闭/蜂鸣器滴滴声音响起。
3: 启动开始:   蓝色,红色LED亮起/蜂鸣器短叮咚响起。
4: 启动结束蓝色LED关闭/蜂鸣器无声.
5: 待机状态红色LED亮起
6: 循环工作启动时蓝色LED亮起/短叮咚响起。
  1. #include "stm8s_gpio.h"
  2. #include "led.h"
  3. #include "stm8s.h"
  4. #include "key.h"
  5. #include "stm8s_it.h"
  6. #include "beep.h"
  7. #include "stm8s_flash.h"
  8. u8 flags_ll = 0;

  9. void CLK_Configre(u8 clk)
  10. {
  11.   switch(clk)
  12.   {
  13.     case 2:CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV8);break;//2M
  14.     case 4:CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4);break;
  15.     case 8:CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2);break;
  16.     case 16:CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);break;//16M
  17.   }
  18. }

  19. /*void delay_us(void)
  20. {
  21.     asm("nop"); //一个asm("nop")函数经过示波器测试代表100ns
  22.     asm("nop");
  23.     asm("nop");
  24.     asm("nop");
  25. }

  26. void delay_ms(unsigned int time)
  27. {
  28.     unsigned int i;
  29.     while(time--)  
  30.     for(i=900;i>0;i--)
  31.     delay_us();
  32. }*/

  33. void main(void)
  34. {
  35.   u8  step = 0;
  36.   u8 key11 = 0,key22 = 0;
  37.   u16 i = 0;
  38.         
  39.   CLK_Configre(2);   

  40.   GPIO_init();
  41.   Key_Init();
  42.   //TIM1_init();
  43.   Timer4_Init();
  44.   TIM2_init();
  45.   PWM_init();
  46.   enableInterrupts();
  47.   
  48.   GPIO_WriteHigh(GPIOD,GPIO_PIN_5);
  49.   GPIO_WriteHigh(GPIOD,GPIO_PIN_2);
  50.         
  51.   GPIO_WriteLow(GPIOC,GPIO_PIN_6);
  52.   GPIO_WriteLow(GPIOC,GPIO_PIN_5);
  53.   GPIO_WriteLow(GPIOC,GPIO_PIN_4);
  54.   while (1)
  55.   {

  56.     if(flags_1ms)
  57.     {
  58.       key11 = Key1_Scan();
  59.       key22 = Key2_Scan();
  60.           if(flags_ll == 2)
  61.                 {
  62.                           i++;
  63.                           if(i>=500)
  64.                           {
  65.                                 i = 0;
  66.                                 flags_ll=1;
  67.                                 TIM4_Cmd(ENABLE);                                                //开启定时器4
  68.                           }
  69.                 }
  70.       if(alarm >0)
  71.           {
  72.                 //alarm = 1;
  73.                 Beep_alarm();
  74.           }
  75.       flags_1ms = 0;
  76.     }
  77.    

  78.     switch(step)
  79.     {
  80.     case 0:
  81.       {
  82.         if(key11 == 1)                                                                //启动键按下,进入待机模式
  83.         {
  84.                  step = 1;
  85.                  key11 = 0;
  86.                   key22 = 0;
  87.                   alarm = 1;
  88.                  step1 = 0;
  89.          
  90.                 GPIO_WriteLow(GPIOD,GPIO_PIN_5);                        //打开红色指示灯
  91.         
  92.                 GPIO_WriteLow(GPIOC,GPIO_PIN_6);                        //关闭发热丝
  93.                 GPIO_WriteLow(GPIOC,GPIO_PIN_5);                        //关闭风扇
  94.                 GPIO_WriteLow(GPIOC,GPIO_PIN_4);                        //关闭紫外线灯管
  95.         }
  96.       }break;
  97.     case 1:
  98.       {     
  99.          if(key22 == 1)                                                                //自动键被按下,进入自动杀毒模式
  100.          {
  101.            step = 2;
  102.            key22 = 0;        
  103.            alarm = 3;
  104.            step1 = 0;                                                                //清空各个标志位
  105.            
  106.                   cont_min = 0;
  107.                   cont_h = 0;                                                //清空时间指示,重新计时
  108.                         count_5m = 0;
  109.            
  110.                   GPIO_WriteLow(GPIOD,GPIO_PIN_2);                        //打开蓝灯,指示进入自动模式
  111.                 flags_ll = 2;                                                        //此标志位设置为2,则表示开启紫外线灯管                                                        

  112.                   GPIO_WriteHigh(GPIOC,GPIO_PIN_6);                                //打开发热丝
  113.                   GPIO_WriteHigh(GPIOC,GPIO_PIN_5);                                //开启风扇
  114.           //GPIO_WriteHigh(GPIOC,GPIO_PIN_4);
  115.          }
  116.          if(key11 == 1)
  117.          {
  118.                     TIM4_Cmd(DISABLE);                                                //系统被关闭 关闭定时器4
  119.                         flags_ll = 0;                                                        //关闭 紫外线灯管开启标志位
  120.                    step = 0;
  121.                    key11 = 0;
  122.                    alarm = 2;
  123.                    step1 = 0;                                                                //复位各个标志位
  124.             
  125.             GPIO_WriteHigh(GPIOD,GPIO_PIN_5);                //关闭红色指示灯
  126.             
  127.             GPIO_WriteLow(GPIOC,GPIO_PIN_6);                //关闭发热丝
  128.             GPIO_WriteLow(GPIOC,GPIO_PIN_5);                //关闭风扇
  129.             GPIO_WriteLow(GPIOC,GPIO_PIN_4);                //关闭紫外线灯管
  130.          }
  131.       }break;
  132.     case 2:
  133.       {
  134.         if(key11 == 1)                                                                //自动模式下下,开关机键被按下
  135.          {
  136.                     TIM4_Cmd(DISABLE);                                                //关闭定时器4
  137.                         flags_ll = 0;                                                        //紫外线灯管开启的标志位被清空
  138.            step = 0;
  139.            key11 = 0;  
  140.            alarm = 2;
  141.            step1 = 0;                                                                //复位各个标志位
  142.            
  143.             GPIO_WriteHigh(GPIOD,GPIO_PIN_2);                //关闭蓝灯
  144.             GPIO_WriteHigh(GPIOD,GPIO_PIN_5);                //关闭红灯
  145.             
  146.             GPIO_WriteLow(GPIOC,GPIO_PIN_6);                //关闭发热丝
  147.             GPIO_WriteLow(GPIOC,GPIO_PIN_5);                        //风扇关闭
  148.             GPIO_WriteLow(GPIOC,GPIO_PIN_4);                //关闭紫外线灯管
  149.          }
  150.         
  151.          if(key22 == 1)                                                                //自动键在自动模式被按下,则则响起 “叮咚”声
  152.          {
  153.           // step = 2;
  154.           key22 = 0;         
  155.           alarm = 3;
  156.           step1 = 0;
  157.          }
  158.         if(count_5m == 5)                        //自动模式25分钟到了 关闭发热丝
  159.                 {
  160.                   GPIO_WriteLow(GPIOC,GPIO_PIN_6);
  161.                 }
  162.                 if(count_5m == 6)                        //自动模式30分钟到了 打开发热丝
  163.                 {
  164.                   GPIO_WriteHigh(GPIOC,GPIO_PIN_6);
  165.                 }
  166.                 if(count_5m == 11)                        //自动模式30分钟到了 关闭发热丝
  167.                 {
  168.                   GPIO_WriteLow(GPIOC,GPIO_PIN_6);
  169.                 }
  170.                 if(count_5m == 12)                        //自动模式60分钟到了 打开发热丝  关闭UV
  171.                 {
  172.                   GPIO_WriteHigh(GPIOC,GPIO_PIN_6);
  173.                   GPIO_WriteLow(GPIOC,GPIO_PIN_4);
  174.                 }
  175.                 if(count_5m == 17)                        //自动模式85分钟到了 关闭发热丝
  176.                 {
  177.                   GPIO_WriteLow(GPIOC,GPIO_PIN_6);        
  178.                 }
  179.                 if(count_5m == 18)                        //自动模式85分钟到了 关闭发热丝
  180.                 {
  181.                   GPIO_WriteLow(GPIOC,GPIO_PIN_5);
  182.                   GPIO_WriteHigh(GPIOD,GPIO_PIN_2);        
  183.                 }
  184.                 if(count_5m == 78)                        //自动模式85分钟到了 关闭发热丝
  185.                 {
  186.                   count_5m = 0;
  187.                   
  188.           GPIO_WriteLow(GPIOD,GPIO_PIN_2);                        //打开蓝灯,指示进入自动模式
  189.                 flags_ll = 2;                                                        //此标志位设置为2,则表示开启紫外线灯管                                                        
  190.           GPIO_WriteHigh(GPIOC,GPIO_PIN_6);                                //打开发热丝

  191.           GPIO_WriteHigh(GPIOC,GPIO_PIN_5);                                //开启风扇
  192.           //GPIO_WriteHigh(GPIOC,GPIO_PIN_4);
  193.                 }        
  194.                
  195.       }break;
  196.     default:break;
  197.     }
  198.   }
  199.   
  200. }
复制代码


上传资料.rar

2.55 MB, 下载次数: 28, 下载积分: 黑币 -5

原理图,代码,说明书

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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