亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 藍橋杯歷年省賽試題解析,長貼,持續更新 [打印本頁]

作者: 13122031726    時間: 2018-3-5 19:42
標題: 藍橋杯歷年省賽試題解析,長貼,持續更新
【藍橋杯單片機設計與開發】(18)省賽試題解析 2011第三屆 溫度記錄器(上)
從本章開始,我將開始為大家講解歷年的省賽真題的編程思路以及編程原理,通過這種方式讓大家學習邊熟悉這種多模塊協同的綜合題目的編程方式。
2011年第三屆藍橋杯 單片機類 省賽試題是按照任務要求設計一個“溫度監控器”,因為后續內容每個模塊都有較多的代碼,故我們將每一個題目分成兩章來發布。
功能簡述
        “溫度監控器”可以實現環境溫度檢測及報警功能;通過 EEPROM 存儲上下限溫度數值,溫度上下限數值可通過外部按鍵更改。系統硬件電路主要有單片機控制電路、數碼管顯示電路、EEPROM 存儲電路、直流電機驅動電路(設計部分)、鍵控制電路及繼電器組成,系統框圖如圖 1 所示:
        MCS-51 單片機匯編指令集、C51 關鍵字、DS18B20 和 AT24C02 芯片部分驅動、CT107D考試平臺電路原理圖以及本題所涉及到的芯片數據手冊,可參考計算機上的電子文檔。
設計任務要求1.數碼管顯示
通過 8 位共陽數碼管顯示溫度信息,包括設定的溫度上下限數值和當前溫度值,顯示格式如圖 2 所示:
示例代碼:display.c
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監控器***************************/
  5. /*************聯系郵箱:418224424@aliyun.com*****************/
  6. /************************************************************/

  7. #include "stc15f2k60s2.h"
  8. #include "display.h"
  9. #include "at24c02.h"
  10. #include "ds18b20.h"

  11. uchar code tab[] =
  12. {0XC0,0XF9,0XA4,0XB0,0X99,0X92,
  13. 0X82,0XF8,0X80,0X90,0XBF,0XFF};
  14. uchar strtab[8];
  15. uchar temp_value;
  16. uint i;

  17. void display(char max,char min)
  18. {
  19.    strtab[0] = tab[max / 10];
  20.    strtab[1] = tab[max % 10];
  21.    strtab[2] = tab[min / 10];
  22.    strtab[3] = tab[min % 10];
  23.    strtab[4] = tab[11];
  24.    strtab[5] = tab[11];
  25.    strtab[6] = tab[temp_value / 10];
  26.    strtab[7] = tab[temp_value % 10];
  27. }

  28. void Timer0Init(void) //5毫秒@11.0592MHz
  29. {
  30.    AUXR |= 0x80;//定時器時鐘1T模式
  31.    TMOD &= 0xF0;//設置定時器模式
  32.    TL0 = 0x00;//設置定時初值
  33.    TH0 = 0x28;//設置定時初值
  34.    TF0 = 0;//清除TF0標志
  35.    TR0 = 1;//定時器0開始計時
  36. }

  37. void Timer0_int() interrupt 1 using 0
  38. {
  39.    static uchar num;
  40.    TH0 = 0xcd;
  41.    TL0 = 0xd4;

  42.    switch (num)
  43.    {
  44.       case 0: P2 = ((P2&0x1f)|0xc0); P0 = 0x01;
  45.               P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
  46.       case 1: P2 = ((P2&0x1f)|0xc0); P0 = 0x02;
  47.               P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
  48.       case 2: P2 = ((P2&0x1f)|0xc0); P0 = 0x04;
  49.               P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
  50.       case 3: P2 = ((P2&0x1f)|0xc0); P0 = 0x08;
  51.               P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
  52.       case 4: P2 = ((P2&0x1f)|0xc0); P0 = 0x10;
  53.               P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
  54.       case 5: P2 = ((P2&0x1f)|0xc0); P0 = 0x20;
  55.               P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
  56.       case 6: P2 = ((P2&0x1f)|0xc0); P0 = 0x40;
  57.               P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
  58.       case 7: P2 = ((P2&0x1f)|0xc0); P0 = 0x80;
  59.               P2 = ((P2&0x1f)|0xff); P0 = strtab[num]; break;
  60.       default: break;
  61.    }
  62.    num++;
  63.    if (num == 8)
  64.       num = 0;
  65. }

  66. void Timer1Init(void) //5毫秒@11.0592MHz
  67. {
  68.    AUXR |= 0x40; //定時器時鐘1T模式
  69.    TMOD &= 0xF0; //設置定時器模式
  70.    TL1 = 0x00; //設置定時初值
  71.    TH1 = 0x28; //設置定時初值
  72.    TF1 = 0; //清除TF0標志
  73.    TR1 = 1; //定時器0開始計時
  74. }

  75. void Timer1_int() interrupt 3
  76. {
  77.    i++;
  78.    if(i == 400)
  79.    {
  80.       i = 0;
  81.       temp_value = ReadTemp();
  82.    }
  83. }
復制代碼

示例代碼:display.h
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監控器***************************/
  5. /************************************************************/

  6. #ifndef __DISPLAY_H_
  7. #define __DISPLAY_H_

  8. void display(uchar max,uchar min);
  9. void Timer0Init(void);
  10. void Timer1Init(void);

  11. #endif
復制代碼

2.溫度測量單元
通過 DS18B20 數字溫度芯片測量環境溫度。

示例代碼:ds18b20.c
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監控器***************************/

  5. #include "stc15f2k60s2.h"
  6. #include "ds18b20.h"

  7. sbit DQ = P1^4;

  8. //單總線延時函數
  9. void Delay_ds18b20(uint n)
  10. {
  11.    uchar i;
  12.    while (n--)
  13.    {
  14.       for (i = 0;i > 12;i++);
  15.    }
  16. }

  17. //DS18B20芯片初始化
  18. bit Init_DS18B20(void)
  19. {
  20.    bit initflag = 0;
  21.    DQ = 1;
  22.    Delay_ds18b20(12);
  23.    DQ = 0;
  24.    Delay_ds18b20(80);
  25.    DQ = 1;
  26.    Delay_ds18b20(10);
  27.    initflag = DQ;
  28.    Delay_ds18b20(5);

  29.    return initflag;
  30. }

  31. //通過單總線向DS18B20寫一個字節
  32. void Write_DS18B20(uchar dat)
  33. {
  34.    uchar i;
  35.    for (i = 0;i < 8;i++)
  36.    {
  37.       DQ = 0;
  38.       DQ = dat & 0x01;
  39.       Delay_ds18b20(5);
  40.       DQ = 1;
  41.       dat >>= 1;
  42.    }
  43.    Delay_ds18b20(5);
  44. }

  45. //從DS18B20讀取一個字節
  46. uchar Read_DS18B20(void)
  47. {
  48. uchar i;
  49. uchar dat;
  50. for (i = 0;i < 8;i++)
  51. {
  52.       DQ = 0;
  53.       dat >>= 1;
  54.       DQ = 1;
  55.       if (DQ)
  56.       {
  57.          dat |= 0x80;
  58.       }
  59.       Delay_ds18b20(5);
  60.    }
  61.    return dat;
  62. }

  63. /******************溫度讀取********************/
  64. uchar ReadTemp(void)
  65. {
  66.    uchar TL, TH, Temp;

  67.    Init_DS18B20();
  68.    Write_DS18B20(0xcc);
  69.    Write_DS18B20(0x44);

  70.    Init_DS18B20();
  71.    Write_DS18B20(0xcc);
  72.    Write_DS18B20(0xbe);

  73.    TL = Read_DS18B20();
  74.    TH = Read_DS18B20();

  75.    Temp = (TH << 4)|(TL >> 4);

  76.    return Temp;
  77. }
復制代碼
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監控器***************************/
  5. /************************************************************/

  6. #ifndef _DS18B20_H
  7. #define _DS18B20_H

  8. #define OW_SKIP_ROM 0xcc
  9. #define DS18B20_CONVERT 0x44
  10. #define DS18B20_READ 0xbe

  11. void Delay_ds18b20(uint n);
  12. bit Init_DS18B20(void);
  13. void Write_DS18B20(uchar dat);
  14. uchar Read_DS18B20(void);
  15. uchar ReadTemp(void);

  16. #endif
復制代碼

程序中需要用到的延時函數:delay.c  &  delay.h
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監控器***************************/

  5. #ifndef __DELAY_H_
  6. #define __DELAY_H_

  7. void Delay5us();
  8. void Delay10ms();
  9. void Delay500us();

  10. #endif
復制代碼
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監控器***************************/
  5. #include "delay.h"
  6. #include "intrins.h"

  7. void Delay5us() //@11.0592MHz
  8. {
  9. unsigned char i;

  10. _nop_();
  11. i = 11;
  12. while (--i);
  13. }

  14. void Delay10ms() //@11.0592MHz
  15. {
  16.    unsigned char i, j;

  17.    i = 108;
  18.    j = 145;
  19.    do
  20.    {
  21.       while (--j);
  22.    } while (--i);
  23. }

  24. void Delay500us() //@11.0592MHz
  25. {
  26.    unsigned char i, j;

  27.    _nop_();
  28.    _nop_();
  29.    i = 6;
  30.    j = 93;
  31.    do
  32.    {
  33.       while (--j);
  34.    } while (--i);
  35. }
復制代碼

本章內容到這里就先結束了,剩下的程序和文檔將在下一部分一同發出,希望大家先對這一部分內容進行加深理解,只有將每一部分都了解透徹才能更好地完成比賽的要求。

本文采用 「CC BY-NC-SA 4.0」創作共享協議,轉載請標注以下信息:
原文出處:Bkoak’s blog

聯系博主
郵箱:wjf418224424@aliyun.com
更多資訊關注公眾號:智術靈慧(zslh_dyh)
QQ交流群:693211073



作者: 13122031726    時間: 2018-3-6 17:23
【藍橋杯單片機設計與開發】(19)省賽試題解析 2011第三屆 溫度記錄器(下)
從本章我們繼續上一章的內容,我將開始為大家講解歷年的省賽真題的編程思路以及編程原理,通過這種方式讓大家學習邊熟悉這種多模塊協同的綜合題目的編程方式。
2011年第三屆藍橋杯 單片機類 省賽試題是按照任務要求設計一個“溫度監控器”第二章。
功能簡述
        “溫度監控器”可以實現環境溫度檢測及報警功能;通過 EEPROM 存儲上下限溫度數值,溫度上下限數值可通過外部按鍵更改。系統硬件電路主要有單片機控制電路、數碼管顯示電路、EEPROM 存儲電路、直流電機驅動電路(設計部分)、鍵控制電路及繼電器組成,系統框圖如圖 1 所示:
        MCS-51 單片機匯編指令集、C51 關鍵字、DS18B20 和 AT24C02 芯片部分驅動、CT107D考試平臺電路原理圖以及本題所涉及到的芯片數據手冊,可參考計算機上的電子文檔。
設計任務要求3.EEPROM 記錄單元
系統通過 AT24C02 存儲溫度信息,AT24C02 內部存儲地址 0x00 和 0x01 分別存儲
溫度上下限數據信息;溫度上下限數據可通過外部按鍵進行修改,并通過數碼管實時顯
示。數據存儲格式如圖 3 所示:
示例代碼:at24c02.c
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監控器***************************/

  5. #include "stc15f2k60s2.h"
  6. #include "at24c02.h"
  7. #include "delay.h"
  8. sbit SCL = P2^0;
  9. sbit SDA = P2^1;
  10. //總線啟動條件
  11. void IIC_Start(void)
  12. {
  13.    SDA = 1;
  14.    SCL = 1;
  15.    Delay5us();
  16.    SDA = 0;
  17.    Delay5us();
  18.    SCL = 0;
  19. }

  20. //總線停止條件
  21. void IIC_Stop(void)
  22. {
  23.    SDA = 0;
  24.    SCL = 1;
  25.    Delay5us();
  26.    SDA = 1;
  27. }

  28. //應答位控制
  29. void IIC_Ack(uchar ackbit)
  30. {
  31.    if (ackbit)
  32.    {
  33.       SDA = 0;
  34.    }
  35.    else
  36.    {
  37.       SDA = 1;
  38.    }
  39.    Delay5us();
  40.    SCL = 1;
  41.    Delay5us();
  42.    SCL = 0;
  43.    SDA = 1;
  44.    Delay5us();
  45. }

  46. //等待應答
  47. bit IIC_WaitAck(void)
  48. {
  49.    SDA = 1;
  50.    Delay5us();
  51.    SCL = 1;
  52.    Delay5us();
  53.    if (SDA)
  54.    {
  55.       SCL = 0;
  56.       IIC_Stop();
  57.       return 0;
  58.    }
  59.    else
  60.    {
  61.       SCL = 0;
  62.       return 1;
  63.    }
  64. }

  65. //通過I2C總線發送數據
  66. void IIC_SendByte(uchar byt)
  67. {
  68.    uchar i;
  69.    for (i = 0;i < 8;i++)
  70.    {
  71.       if (byt & 0x80)
  72.       {
  73.          SDA = 1;
  74.       }
  75.       else;
  76.       {
  77.          SDA = 0;
  78.       }
  79.       Delay5us();
  80.       SCL = 1;
  81.       byt <<= 1;
  82.       Delay5us();
  83.       SCL = 0;
  84.    }
  85. }

  86. //從I2C總線上接收數據
  87. uchar IIC_RecByte(void)
  88. {
  89.    uchar da;
  90.    uchar i;

  91.    for(i=0;i<8;i++)
  92.    {
  93.       SCL = 1;
  94.       Delay5us();
  95.       da <<= 1;
  96.       if(SDA)
  97.          da |= 0x01;
  98.       SCL = 0;
  99.       Delay5us();
  100.    }
  101.    return da;
  102. }

  103. void WriteByte_AT24C02(uchar add,uchar date)
  104. {
  105.    IIC_Start();
  106.    IIC_SendByte(0xa0);//發方式字1010 0000
  107.    IIC_WaitAck();
  108.    IIC_SendByte(add);
  109.    IIC_WaitAck();
  110.    IIC_SendByte(date);
  111.    IIC_WaitAck();
  112.    IIC_Stop();
  113.    Delay10ms();
  114. }

  115. uchar ReadByte_AT24C02(uchar add)
  116. {
  117.    uchar date;

  118.    IIC_Start();
  119.    IIC_SendByte(0xa0);//發方式字1010 0000
  120.    IIC_WaitAck();
  121.    IIC_SendByte(add);
  122.    IIC_WaitAck();

  123.    IIC_Start();
  124.    IIC_SendByte(0xa1);//發方式字1010 0001
  125.    IIC_WaitAck();
  126.    date = IIC_RecByte();
  127.    IIC_Ack(0);
  128.    IIC_Stop();
  129.    return date;
  130. }
復制代碼

示例代碼:at24c02.h
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監控器***************************/

  5. #ifndef __AT24C02_H_
  6. #define __AT24C02_H_

  7. #define SlaveAddrW 0xA0
  8. #define SlaveAddrR 0xA1

  9. void IIC_Start(void);
  10. void IIC_Stop(void);
  11. void IIC_Ack(unsigned char ackbit);
  12. bit IIC_WaitAck(void);
  13. void IIC_SendByte(unsigned char byt);
  14. unsigned char IIC_RecByte(void);
  15. void WriteByte_AT24C02(uchar add,uchar date);
  16. uchar ReadByte_AT24C02(uchar add);

  17. #endif
復制代碼

4.按鍵控制單元(見main.c)
獨立按鍵 S4 設定為“加上限”按鍵;每按下一次,溫度上限值增加 1℃;
獨立按鍵 S5 設定為“加下限”按鍵;每按下一次,溫度下限值增加 1℃;
獨立按鍵 S6 設定為“減上限”按鍵;每按下一次,溫度上限值減少 1℃;
獨立按鍵 S7 設定為“減下限”按鍵;每按下一次,溫度下限值減少 1℃。
5.按直流電機驅動電路設計(見main.c)
設計一個直流電機驅動電路與單片機 P34 引腳連接。
6.溫控單元(見main.c)
若當前溫度數值超過 EEPROM 中存儲的溫度上限數據,通過單片機 P34 口產生周期為 1KHz 占空比為 30%的 PWM 信號驅動直流電機工作。待溫度恢復到上下限閾值內時,P34 口輸出高電平,直流電機停止工作。
若當前溫度低于 EEPROM 中存儲的溫度下限數據,繼電器打開,當溫度恢復到上
3下限閾值內時,繼電器自動關閉。
7.系統初始狀態說明(見main.c)
上、下限溫度值需要設定在 0℃到 99℃范圍內,下限值不大于上限值。系統上電后,從 EEPROM 中讀取溫度上、下限數值,并實時顯示當前溫度。
示例代碼:main.c
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監控器***************************/
  5. #include "stc15f2k60s2.h"
  6. #include "display.h"
  7. #include "at24c02.h"
  8. #include "ds18b20.h"
  9. #include "delay.h"

  10. sbit KEY7 = P3^0;
  11. sbit KEY6 = P3^1;
  12. sbit KEY5 = P3^2;
  13. sbit KEY4 = P3^3;
  14. sbit PWM = P3^4;

  15. uchar Value, t;

  16. void Timer2Init(void);

  17. void main()
  18. {
  19.    char maxvalue,minvalue;

  20.    P2 = ((P2&0x1f)|0xa0);
  21.    P0 = 0x00;

  22.    Timer0Init();
  23.    Timer1Init();
  24.    Timer2Init();
  25.    ET0 = 1;
  26.    ET1 = 1;
  27.    EA = 1;

  28. //   WriteByte_AT24C02(0x00,30); //第一次燒錄時使用,再次燒錄注釋即可
  29. //   WriteByte_AT24C02(0x01,23);
  30.    maxvalue = ReadByte_AT24C02(0x00);
  31.    minvalue = ReadByte_AT24C02(0x01);

  32.    while (1)
  33.    {
  34.       display(maxvalue,minvalue);
  35.       if (KEY7 == 0)
  36.       {
  37.          Delay10ms();
  38.          if (KEY7 == 0)
  39.          {
  40.             minvalue--;
  41.             while (!KEY7);
  42.          }
  43.       }
  44.       if (KEY5 == 0)
  45.       {
  46.          Delay10ms();
  47.          if (KEY5 == 0)
  48.          {
  49.             minvalue++;
  50.             while (!KEY5);
  51.          }
  52.       }

  53.       if (KEY6 == 0)
  54.       {
  55.          Delay10ms();
  56.          if (KEY6 == 0)
  57.          {
  58.             maxvalue--;
  59.             while (!KEY6);
  60.          }
  61.       }
  62.       if (KEY7 == 0)
  63.       {
  64.          Delay10ms();
  65.          if (KEY4 == 0)
  66.          {
  67.             maxvalue++;
  68.             while (!KEY4);
  69.          }
  70.       }
  71.       if (minvalue < 0)
  72.          minvalue = 0;
  73.       else if (minvalue > 99)
  74.          minvalue = 99;
  75.       if (maxvalue < 0)
  76.          maxvalue = 0;
  77.       else if (maxvalue > 99)
  78.          maxvalue = 99;

  79.       WriteByte_AT24C02(0x00,maxvalue);
  80.       WriteByte_AT24C02(0x01,minvalue);

  81.       if (Value < minvalue)
  82.       {
  83.          P2 = ((P2&0x1f)|0xa0);
  84.          P0 = 0x10;
  85.          
  86.          PWM = 1;
  87.       }
  88.       else if (Value > minvalue || Value < maxvalue)
  89.       {
  90.          P2 = ((P2&0x1f)|0xa0);
  91.          P0 = 0x00;
  92.    
  93.          PWM = 0;
  94.       }
  95.       else if (Value > maxvalue)
  96.       {
  97.          PWM = 0;
  98.          Delay500us();
  99.          PWM = 1;
  100.          Delay500us();

  101.          P2 = ((P2&0x1f)|0xa0);
  102.          P0 = 0x00;
  103.       }
  104.    }
  105. }

  106. void Timer2Init(void) //5毫秒@11.0592MHz
  107. {
  108.    T2L = 0x00;
  109.    T2H = 0x28;
  110.    
  111.    t++;
  112.    if(t == 200)
  113.    {
  114.       t = 0;
  115.       Value = ReadTemp();
  116.    }
  117. }
復制代碼

本章資料下載地址
本章關于2011年省賽試題“溫度監控器”的講解到這里就結束了,如果有不理解的可以加群,找我或者群里的朋友交流。


本文采用 「CC BY-NC-SA 4.0」創作共享協議,轉載請標注以下信息:
原文出處:Bkoak’s blog

聯系博主
郵箱:wjf418224424@aliyun.com
更多資訊關注公眾號:智術靈慧(zslh_dyh)
QQ交流群:693211073


第三屆 溫度記錄器.rar

207.56 KB, 下載次數: 40, 下載積分: 黑幣 -5


作者: 13122031726    時間: 2018-3-9 14:46
【藍橋杯單片機設計與開發】(20)省賽模擬題解析 2012第四屆 自動售水機(簡析)“自動售水機”設計任務書功能簡述
通過競賽硬件平臺模擬小區自動售水機的工作流程:通過按鍵控制售水機水流出和停止;通過數碼管顯示費率、出水量及總費用;通過光敏電阻檢測環境亮度,在亮度過低的情況下,自動開燈。系統硬件電路主要由單片機控制電路、數碼管顯示電路、A/D 轉換電路及功能按鍵組成。系統框圖如圖 1 所示:
單總線驅動程序、CT107D 單片機考試平臺電路原理圖以及本題所涉及到的芯片數據手冊,可參考計算機上的電子文檔。程序流程圖及相關工程文件請以考生號命名,并保存在計算機上的考生文件夾中(文件夾名為考生準考證號,文件夾位于 windows 桌面上)。
設計任務及要1. 溫度檢測
溫度檢測采用 DS18B20 溫度傳感器,數據經過單片機處理后,與用戶設定的溫度上限(T MAX )和溫度下限(T MIN )比較,確定當前溫度所處的區間,數碼管溫度顯示格式如圖 2 所示:
關于溫度區間的說明 :
溫度區間 0:當前溫度<T MIN
溫度區間 1:T MIN ≤當前溫度≤T MAX
溫度區間 2:當前溫度>T MAX
可設定的最大溫度區間:0℃~99℃
2. 用戶輸入-3 ×4 矩陣鍵盤
通過矩陣鍵盤設定系統的工作參數,各個按鍵的功能定義如圖 3 所示:
“設置”按鍵按下后,進入工作參數設定界面,如圖 4 所示,依次按下設定的數值,再次按下“設置”按鍵,保存當前輸入的數據,并退出工作參數設定界面。
3. 執行機構
執行機構由指示燈 L1 和繼電器組成,用于報警和連接外部高低溫執行機構。
3.1 實時溫度處在溫度區間 0,繼電器關閉,指示燈 L1 以 0.8 秒為間隔閃爍;
3.2 實時溫度處在溫度區間 1,繼電器關閉,指示燈 L1 以 0.4 秒為間隔閃爍;
3.3 實時溫度處在溫度區間 2,繼電器打開,指示燈 L1 以 0.2 秒為間隔閃爍。
4. 初始化狀態說明
系統默認的溫度上限為 30℃(T MAX ),溫度下限為 20℃(T MIN ),可以通過矩陣鍵盤修改。
5. 電路原理圖設計
假定一個光敏電阻,在光線充足的狀態下,阻值為 5KΩ,擋光狀態下阻值≥45 KΩ,使用簡單阻容元件、晶體管、運算放大器等設計一個光敏電路開關電路,擋光狀態下電路驅動 5V繼電器 K1 吸合,反之,繼電器斷開。設計過程中,請考慮信號抖動等因素,簡述電路的工作原理與設計思路,并繪制出電路原理圖。
本章資料下載地址無黑幣見原文,有的直接這里就行。
本章關于2012年省賽模擬試題“自動售水機”的源碼請各位下載查看,不懂得地方留言或者加群交流。


本文采用 「CC BY-NC-SA 4.0」創作共享協議,轉載請標注以下信息:
原文出處:Bkoak’s blog  

聯系博主
郵箱:wjf418224424@aliyun.com
更多資訊關注公眾號:智術靈慧(zslh_dyh)
QQ交流群:693211073




第4屆 自動售水機程序.rar

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


作者: 13122031726    時間: 2018-3-9 16:15
【藍橋杯單片機設計與開發】(20)省賽模擬題解析 2012第四屆 自動售水機(簡析)“自動售水機”設計任務書功能簡述
通過競賽硬件平臺模擬小區自動售水機的工作流程:通過按鍵控制售水機水流出和停止;通過數碼管顯示費率、出水量及總費用;通過光敏電阻檢測環境亮度,在亮度過低的情況下,自動開燈。系統硬件電路主要由單片機控制電路、數碼管顯示電路、A/D 轉換電路及功能按鍵組成。系統框圖如圖 1 所示:
單總線驅動程序、CT107D 單片機考試平臺電路原理圖以及本題所涉及到的芯片數據手冊,可參考計算機上的電子文檔。程序流程圖及相關工程文件請以考生號命名,并保存在計算機上的考生文件夾中(文件夾名為考生準考證號,文件夾位于 windows 桌面上)。
設計任務及要1. 溫度檢測
溫度檢測采用 DS18B20 溫度傳感器,數據經過單片機處理后,與用戶設定的溫度上限(T MAX )和溫度下限(T MIN )比較,確定當前溫度所處的區間,數碼管溫度顯示格式如圖 2 所示:
關于溫度區間的說明 :
溫度區間 0:當前溫度<T MIN
溫度區間 1:T MIN ≤當前溫度≤T MAX
溫度區間 2:當前溫度>T MAX
可設定的最大溫度區間:0℃~99℃
2. 用戶輸入-3 ×4 矩陣鍵盤
通過矩陣鍵盤設定系統的工作參數,各個按鍵的功能定義如圖 3 所示:
“設置”按鍵按下后,進入工作參數設定界面,如圖 4 所示,依次按下設定的數值,再次按下“設置”按鍵,保存當前輸入的數據,并退出工作參數設定界面。
3. 執行機構
執行機構由指示燈 L1 和繼電器組成,用于報警和連接外部高低溫執行機構。
3.1 實時溫度處在溫度區間 0,繼電器關閉,指示燈 L1 以 0.8 秒為間隔閃爍;
3.2 實時溫度處在溫度區間 1,繼電器關閉,指示燈 L1 以 0.4 秒為間隔閃爍;
3.3 實時溫度處在溫度區間 2,繼電器打開,指示燈 L1 以 0.2 秒為間隔閃爍。
4. 初始化狀態說明
系統默認的溫度上限為 30℃(T MAX ),溫度下限為 20℃(T MIN ),可以通過矩陣鍵盤修改。
5. 電路原理圖設計
假定一個光敏電阻,在光線充足的狀態下,阻值為 5KΩ,擋光狀態下阻值≥45 KΩ,使用簡單阻容元件、晶體管、運算放大器等設計一個光敏電路開關電路,擋光狀態下電路驅動 5V繼電器 K1 吸合,反之,繼電器斷開。設計過程中,請考慮信號抖動等因素,簡述電路的工作原理與設計思路,并繪制出電路原理圖。
本章資料下載地址無黑幣見原文,有的直接這里就行。
本章關于2012年省賽模擬試題“自動售水機”的源碼請各位下載查看,不懂得地方留言或者加群交流。


本文采用 「CC BY-NC-SA 4.0」創作共享協議,轉載請標注以下信息:
原文出處:Bkoak’s blog

聯系博主
郵箱:wjf418224424@aliyun.com
更多資訊關注公眾號:智術靈慧(zslh_dyh)


第4屆 自動售水機.7z

536.31 KB, 下載次數: 28, 下載積分: 黑幣 -5


作者: lzDestiny    時間: 2019-3-20 17:24
樓主停更了么?
作者: hfj2011    時間: 2019-6-12 10:50
期待更新,點贊
作者: abc111111    時間: 2019-6-12 13:17
怎么不用lcd12864當顯示呢?學習不來




歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1