久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2730|回復: 0
收起左側

藍橋杯單片機開發第4屆省賽自動售水機及源代碼

[復制鏈接]
ID:656536 發表于 2020-3-24 18:59 | 顯示全部樓層 |閱讀模式
#include <stc15f2k60s2.h>
#include <I2C.h>

sbit S7 = P3^0;
sbit S6 = P3^1;

unsigned char code LedChar[] = {
  0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,
        0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF,0x7F
};
unsigned char LedBuff[8] = {
  0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
unsigned char dat_rd1;
unsigned char money;
unsigned int shui_L = 0;  //出水量
unsigned int flag_ns = 0;
bit shui = 0;  // 0停止出水  1打開出水

void InitSystem();
void Timer0Init(void);                //1毫秒@12.000MHz
void ConfigSMG();
void ConfigWorking();
void ScanKeys();
void ScanSMG();
extern unsigned char ReadRd1();

void main()
{
        InitSystem();
  Timer0Init();
        while(1)
        {
                ConfigWorking();
          ConfigSMG();
                ScanKeys();
                ScanSMG();
        }
}
/******HC573選擇函數*******/
void SeceltHC573(unsigned char channel)
{
  switch(channel)
        {
          case 4:P2 = (P2&0x1F)|0x80;break;
                case 5:P2 = (P2&0x1F)|0xA0;break;
                case 6:P2 = (P2&0x1F)|0xC0;break;
                case 7:P2 = (P2&0x1F)|0xE0;break;
                case 0:P2 = (P2&0x1F)|0x00;break;
        }
}
/*******關閉LED和蜂鳴器、繼電器******/
void InitSystem()
{
  SeceltHC573(5);
        P0 = 0x00;
        SeceltHC573(4);
        P0 = 0xFF;
        SeceltHC573(0);
}
/******工作模式配置******/
void ConfigWorking()
{
  dat_rd1 = ReadRd1();  //采集光敏電阻電壓
        SeceltHC573(4);
        if(dat_rd1>125)      //判斷LED1亮滅
        {
                P0 = 0xFE;
        }
        else
        {
          P0 = 0xFF;
        }
        SeceltHC573(0);
        shui_L = flag_ns;
        money = shui_L*0.5;
        if(shui_L>=999)
        {
          shui = 0;
                flag_ns = 0;
        }
        if(shui)
        {
                EA = 0;
          SeceltHC573(5);    //打開繼電器
                P0 = 0x10;
                SeceltHC573(0);
                EA = 1;
        }
        else
        {
          EA = 0;
          SeceltHC573(5);    //關閉繼電器
                P0 = 0x00;
                SeceltHC573(0);
                EA = 1;
        }
}
/******數碼管動態顯示*******/
void ConfigSMG()
{
  if(shui)
        {
          LedBuff[0] = 0xFF;
                LedBuff[1] = (LedChar[0]&LedChar[17]);
                LedBuff[2] = LedChar[5];
                LedBuff[3] = LedChar[0];
                LedBuff[4] = LedChar[shui_L/100];
                LedBuff[5] = (LedChar[shui_L/10%10]&LedChar[17]);
                LedBuff[6] = LedChar[shui_L%10];
                LedBuff[7] = LedChar[0];
        }
        else
        {
          LedBuff[0] = 0xFF;
                LedBuff[1] = (LedChar[0]&LedChar[17]);
                LedBuff[2] = LedChar[5];
                LedBuff[3] = LedChar[0];
                LedBuff[4] = LedChar[money/100];
                LedBuff[5] = (LedChar[money/10%10]&LedChar[17]);
                LedBuff[6] = LedChar[money%10];
                LedBuff[7] = LedChar[0];
        }
}
/******按鍵相關函數******/
void Delay1ms()                //@12.000MHz
{
        unsigned char i, j;

        i = 12;
        j = 169;
        do
        {
                while (--j);
        } while (--i);
}
void ScanKeys()
{
  if(S7==0)
        {
                Delay1ms();
          if(S7==0)
                {
                        flag_ns = 0;
                  shui = 1;
                        while(S7==0)
                        {
                                ScanSMG();
                        }
                }
        }
        if(S6==0)
        {
                Delay1ms();
          if(S6==0)
                {
                  shui = 0;
                        while(S6==0)
                        {
                                ScanSMG();
                        }
                }
        }
}

/******數碼管動態刷新*****/
void ScanSMG()
{
  static unsigned char i = 0;
//        P0 = 0xFF;
        SeceltHC573(6);
        P0 = 0x01<<i;
        SeceltHC573(7);
        P0 = LedBuff[i++];
        if(i>=8)
                i = 0;
        SeceltHC573(0);
        P0 = 0xFF;
        Delay1ms();
}
/******配置定時器0******/
void Timer0Init(void)                //1毫秒@12.000MHz
{
        AUXR &= 0x7F;                //定時器時鐘12T模式
        TMOD &= 0xF0;                //設置定時器模式
        TL0 = 0x18;                //設置定時初值
        TH0 = 0xFC;                //設置定時初值
        TF0 = 0;                //清除TF0標志
        TR0 = 1;                //定時器0開始計時
        ET0 = 1;
        EA = 1;
}
void InterruptTimer0()  interrupt 1
{
        static unsigned int cnt = 0;
        if(shui)
        {
                cnt++;
                if(cnt>=1000)
                {
                        cnt = 0;
                        flag_ns++;
                }
  }
        else
        {
                cnt = 0;
        }
}

省賽試題-第4屆-自動售水機.pdf

546.02 KB, 下載次數: 14, 下載積分: 黑幣 -5

第4屆自動售水機_1.rar

43.1 KB, 下載次數: 20, 下載積分: 黑幣 -5

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区四区不卡 | 国产精品第2页 | 国产我和子的乱视频网站 | 一区二区三区国产精品 | 成人欧美一区二区三区视频xxx | 99精品视频一区二区三区 | 国产视频久久久 | 伦理午夜电影免费观看 | 精品综合久久久 | 国产激情在线看 | 日韩欧美电影在线 | 免费视频久久 | 最新av在线网址 | 亚洲国产一区二区视频 | 777777777亚洲妇女 | 玩丰满女领导对白露脸hd | 日韩欧美在线观看视频网站 | 一区二区三区欧美 | 精品亚洲一区二区三区四区五区高 | 91超碰在线 | 国产99久久久国产精品 | 国产成人小视频 | 久久精品视频网站 | 国产精品欧美精品日韩精品 | 99精品国自产在线 | 亚洲三级av| 欧美极品在线播放 | 最近中文字幕在线视频1 | 国产亚洲精品精品国产亚洲综合 | 婷婷综合| 老头搡老女人毛片视频在线看 | 鲁大师一区影视 | 午夜精品久久久久久 | 日本一区二区在线视频 | 国产精品天堂 | 丝袜一区二区三区 | 日韩视频免费 | 97国产精品| 中国一级特黄真人毛片免费观看 | 蜜桃精品噜噜噜成人av | 波多野结衣亚洲 |