找回密码
 立即注册

QQ登录

只需一步,快速开始

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

stm8 制作抽水系统

[复制链接]
跳转到指定楼层
楼主
ID:215767 发表于 2017-6-29 20:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/* MAIN.C file
*
* Copyright (c) 2002-2005 STMicroelectronics
*/

#include <stm8s_conf.h>

#define WATCHDOG_OPEN

#define uint unsigned int

#define uchar unsigned char
void delay_1ms( uchar time);
//void delay_10us(uchar //void init_tim4(void);
//void iwdg_init(void);
void adc1_init1(void);
void adc1_init2(void);
void adc1_init3(void);
void adc1_init4(void);
//void adc1_init3(void);
extern uchar time_count;
uchar count;
uint adc1_value;
uint adc2_value;
uint adc3_value;
uint adc4_value;
uchar ZT;
#define LED1_OFF  GPIO_WriteHigh(GPIOC,GPIO_PIN_3)
#define LED1_ON  GPIO_WriteLow(GPIOC,GPIO_PIN_3)
#define RED_OFF  GPIO_WriteHigh(GPIOA,GPIO_PIN_1)//红灯闪开
#define RED_ON   GPIO_WriteLow(GPIOA,GPIO_PIN_1)//红灯闪关
#define LED2_OFF  GPIO_WriteHigh(GPIOC,GPIO_PIN_5)
#define LED2_ON   GPIO_WriteLow(GPIOC,GPIO_PIN_5)
#define LED3_OFF  GPIO_WriteHigh(GPIOC,GPIO_PIN_6)
#define LED3_ON   GPIO_WriteLow(GPIOC,GPIO_PIN_6)
#define LED4_OFF  GPIO_WriteHigh(GPIOC,GPIO_PIN_7)
#define LED4_ON  GPIO_WriteLow(GPIOC,GPIO_PIN_7)//水位状态
/*#define SW_ON  GPIO_WriteHigh(GPIOA,GPIO_PIN_3)
#define SW_OFF   GPIO_WriteLow(GPIOA,GPIO_PIN_3)*/
#define LEDGZ_OFF  GPIO_WriteHigh(GPIOB,GPIO_PIN_4)
#define LEDGZ_ON  GPIO_WriteLow(GPIOB,GPIO_PIN_4)
#define LED_EE GPIO_ReadInputPin(GPIOB, GPIO_PIN_5)
void delay_1ms(unsigned char time)
{
        unsigned char i;
        for(i=0;i<time;i++)
                {
                        time_count=0;
                        while(1)
                        {
                                if(time_count>10)
                                        break;
                        }
                         WATCHDOG_OPEN
                        IWDG_ReloadCounter();
                }
}
delay(unsigned int time)
{
        unsigned char i,j;
        while(time--)
                {
                        for(i=0;i<200;i++)
                                {
                                        for(j=0;j<20;j++)
                                                {;}
                                }
                }
}
//GPIO_ReadInputPin(GPIOD, GPIO_PIN_6)
//MOS管必须5V以上才能驱动
//-----------5v------------
//10.8v  543
//12.5v  630
//13.2v  664
//13.8v  695
//14.4v  725
//14.6v  733
//16.5v  830
//-------------------------
main()
{
//红灯

//GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_SLOW);
GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_SLOW);
//MOS管控制
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_OD_HIZ_SLOW);
//继电器控制

GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_SLOW);
GPIO_Init(GPIOA, GPIO_PIN_1, GPIO_MODE_OUT_PP_HIGH_SLOW);
//水位灯一
GPIO_Init(GPIOC, GPIO_PIN_5, GPIO_MODE_OUT_PP_HIGH_SLOW);
//水位灯二
GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_OUT_PP_HIGH_SLOW);
//水位灯三
GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_OUT_PP_HIGH_SLOW);

//水位灯四
GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_IN_FL_NO_IT);
//测水管脚一
GPIO_Init(GPIOD, GPIO_PIN_5, GPIO_MODE_IN_FL_NO_IT);
//测水管脚二
GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);
//测水管脚三
GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_IN_FL_NO_IT);

GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_IN_FL_NO_IT);
//自动手动读入
//adc1_init();
  count=0;
        ZT=0;//红灯状态
        RED_ON;
while(1)
                        {
                                                if(GPIO_ReadInputPin(GPIOB, GPIO_PIN_5))//
                                        {
                                                                adc1_init1();                       //
                                                                delay(5);                           //
                                                                adc1_value=ADC1_GetConversionValue();//
                                                                delay(5);                            //
                                                                if(ZT==1)                            //
                                                                {
                                                                        RED_OFF;                           //
                                                                        delay(5);                          //
                                                                        RED_ON;
                                                                }
                                                                else
                                                                        RED_ON;
                                                                if(adc1_value<578)
                                                                {
                                                                        LED1_ON;//灯亮
                                                                }
                                                                else
                                                                {
                                                                        LED1_OFF;
                                                                        GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_SLOW);
                                                                        ZT=1;//红灯闪状态
                                                                        delay(100);
                                                                        count++;
                                                                        if(count==45)
                                                                        {
                                                                                count=0;
                                                                                while(adc1_value>578)
                                                                                        {
                                                                                                if(GPIO_ReadInputPin(GPIOB, GPIO_PIN_5)==0)
                                                                                                break;                                                                                               
                                                                                                GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_OD_HIZ_SLOW);
                                                                                                ZT=0;
                                                                                                adc1_value=ADC1_GetConversionValue();
                                                                                                LEDGZ_OFF;
                                                                                                delay(10);
                                                                                                LEDGZ_ON;
                                                                                        }
                                                                                        RED_ON;                           
                                                                                        GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_SLOW);
                                                                                        ZT=1;
                                                                        }
                                                                }
                                                                adc1_init2();
                                                                delay(10);
                                                                adc2_value=ADC1_GetConversionValue();
                                                                delay(10);
                                                                if(adc2_value<578)
                                                                {
                                                                        LED2_ON;       
                                                                }       
                                                                else
                                                                {
                                                                        LED2_OFF;
                                                                }
                                                                adc1_init3();
                                                                delay(10);
                                                                adc3_value=ADC1_GetConversionValue();
                                                                delay(10);
                                                                if(adc3_value<578)
                                                                {
                                                                        LED3_ON;
                                                                }
                                                                else
                                                                {
                                                                        LED3_OFF;
                                                                }
                                                               
                                                                adc1_init4();
                                                                delay(10);
                                                                adc4_value=ADC1_GetConversionValue();
                                                                delay(10);
                                                                if(adc4_value<578)
                                                                {
                                                                        LED4_ON;
                                                                        delay(600);
                                                                        GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_OD_HIZ_SLOW);
                                                                        ZT=0;
                                                                }
                                                                else
                                                                {
                                                                        LED4_OFF;
                                                                }
                                                                LEDGZ_OFF;
                                                                delay(5);
                                                                LEDGZ_ON;
                                         }
                                         else
                                 {
                                                                LEDGZ_OFF;
                                                                GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_OD_HIZ_SLOW);
                                                                RED_ON;
                                                                adc1_init1();
                                                                delay(5);
                                                                adc1_value=ADC1_GetConversionValue();
                                                                delay(5);
                                                                if(adc1_value<578)
                                                                {
                                                                        LED1_ON;//灯亮
                                                                }
                                                                else
                                                                {
                                                                        LED1_OFF;
                                                                }
                                                                adc1_init2();
                                                                delay(5);
                                                                adc2_value=ADC1_GetConversionValue();
                                                                delay(5);
                                                                if(adc2_value<578)
                                                                {
                                                                        LED2_ON;       
                                                                }       
                                                                else
                                                                {
                                                                        LED2_OFF;
                                                                }
                                                                adc1_init3();
                                                                delay(5);
                                                                adc3_value=ADC1_GetConversionValue();
                                                                delay(5);
                                                                if(adc3_value<578)
                                                                {
                                                                        LED3_ON;
                                                                }
                                                                else
                                                                {
                                                                        LED3_OFF;
                                                                }
                                                               
                                                                adc1_init4();
                                                                delay(5);
                                                                adc4_value=ADC1_GetConversionValue();
                                                                delay(5);
                                                                if(adc4_value<578)
                                                                {
                                                                        LED4_ON;
                                                                }
                                                                else
                                                                {
                                                                        LED4_OFF;
                                                                }
                                 }
                        }
}  
        /*adc1_init2();
        adc1_value=ADC1_GetConversionValue();
        delay(250);
        adc1_init3();
        adc1_value=ADC1_GetConversionValue();
        delay_10us(250);*/



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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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