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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 22449|回復: 6
打印 上一主題 下一主題
收起左側

藍橋杯歷年省賽試題解析,長貼,持續(xù)更新

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

  9. #include "stc15f2k60s2.h"
  10. #include "display.h"
  11. #include "at24c02.h"
  12. #include "ds18b20.h"

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

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

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

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

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

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

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

示例代碼:display.h
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監(jiān)控器***************************/
  5. /*******************聯系QQ:1149809374***********************/
  6. /*************聯系郵箱:418224424@aliyun.com*****************/
  7. /*****************官方博客:www.bkoak.com********************/
  8. /************************************************************/

  9. #ifndef __DISPLAY_H_
  10. #define __DISPLAY_H_

  11. void display(uchar max,uchar min);
  12. void Timer0Init(void);
  13. void Timer1Init(void);

  14. #endif
復制代碼

2.溫度測量單元
通過 DS18B20 數字溫度芯片測量環(huán)境溫度。

示例代碼:ds18b20.c
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監(jiān)控器***************************/
  5. /*******************聯系QQ:1149809374***********************/
  6. /*************聯系郵箱:418224424@aliyun.com*****************/
  7. /*****************官方博客:www.bkoak.com********************/
  8. /************************************************************/

  9. #include "stc15f2k60s2.h"
  10. #include "ds18b20.h"

  11. sbit DQ = P1^4;

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

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

  33.    return initflag;
  34. }

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

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

  67. /******************溫度讀取********************/
  68. uchar ReadTemp(void)
  69. {
  70.    uchar TL, TH, Temp;

  71.    Init_DS18B20();
  72.    Write_DS18B20(0xcc);
  73.    Write_DS18B20(0x44);

  74.    Init_DS18B20();
  75.    Write_DS18B20(0xcc);
  76.    Write_DS18B20(0xbe);

  77.    TL = Read_DS18B20();
  78.    TH = Read_DS18B20();

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

  80.    return Temp;
  81. }
復制代碼
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監(jiān)控器***************************/
  5. /*******************聯系QQ:1149809374***********************/
  6. /*************聯系郵箱:418224424@aliyun.com*****************/
  7. /*****************官方博客:www.bkoak.com********************/
  8. /************************************************************/

  9. #ifndef _DS18B20_H
  10. #define _DS18B20_H

  11. #define OW_SKIP_ROM 0xcc
  12. #define DS18B20_CONVERT 0x44
  13. #define DS18B20_READ 0xbe

  14. void Delay_ds18b20(uint n);
  15. bit Init_DS18B20(void);
  16. void Write_DS18B20(uchar dat);
  17. uchar Read_DS18B20(void);
  18. uchar ReadTemp(void);

  19. #endif
復制代碼

程序中需要用到的延時函數:delay.c  &  delay.h
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監(jiān)控器***************************/
  5. /*******************聯系QQ:1149809374***********************/
  6. /*************聯系郵箱:418224424@aliyun.com*****************/
  7. /*****************官方博客:www.bkoak.com********************/
  8. /************************************************************/

  9. #ifndef __DELAY_H_
  10. #define __DELAY_H_

  11. void Delay5us();
  12. void Delay10ms();
  13. void Delay500us();

  14. #endif
復制代碼
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監(jiān)控器***************************/
  5. /*******************聯系QQ:1149809374***********************/
  6. /*************聯系郵箱:418224424@aliyun.com*****************/
  7. /*****************官方博客:www.bkoak.com********************/
  8. /************************************************************/
  9. #include "delay.h"
  10. #include "intrins.h"

  11. void Delay5us() //@11.0592MHz
  12. {
  13. unsigned char i;

  14. _nop_();
  15. i = 11;
  16. while (--i);
  17. }

  18. void Delay10ms() //@11.0592MHz
  19. {
  20.    unsigned char i, j;

  21.    i = 108;
  22.    j = 145;
  23.    do
  24.    {
  25.       while (--j);
  26.    } while (--i);
  27. }

  28. void Delay500us() //@11.0592MHz
  29. {
  30.    unsigned char i, j;

  31.    _nop_();
  32.    _nop_();
  33.    i = 6;
  34.    j = 93;
  35.    do
  36.    {
  37.       while (--j);
  38.    } while (--i);
  39. }
復制代碼

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

本文采用 「CC BY-NC-SA 4.0」創(chuàng)作共享協議,轉載請標注以下信息:
原文出處:Bkoak’s blog  http://www.bkoak.com

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


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復

使用道具 舉報

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

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

  24. //總線停止條件
  25. void IIC_Stop(void)
  26. {
  27.    SDA = 0;
  28.    SCL = 1;
  29.    Delay5us();
  30.    SDA = 1;
  31. }

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

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

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

  90. //從I2C總線上接收數據
  91. uchar IIC_RecByte(void)
  92. {
  93.    uchar da;
  94.    uchar i;

  95.    for(i=0;i<8;i++)
  96.    {
  97.       SCL = 1;
  98.       Delay5us();
  99.       da <<= 1;
  100.       if(SDA)
  101.          da |= 0x01;
  102.       SCL = 0;
  103.       Delay5us();
  104.    }
  105.    return da;
  106. }

  107. void WriteByte_AT24C02(uchar add,uchar date)
  108. {
  109.    IIC_Start();
  110.    IIC_SendByte(0xa0);//發(fā)方式字1010 0000
  111.    IIC_WaitAck();
  112.    IIC_SendByte(add);
  113.    IIC_WaitAck();
  114.    IIC_SendByte(date);
  115.    IIC_WaitAck();
  116.    IIC_Stop();
  117.    Delay10ms();
  118. }

  119. uchar ReadByte_AT24C02(uchar add)
  120. {
  121.    uchar date;

  122.    IIC_Start();
  123.    IIC_SendByte(0xa0);//發(fā)方式字1010 0000
  124.    IIC_WaitAck();
  125.    IIC_SendByte(add);
  126.    IIC_WaitAck();

  127.    IIC_Start();
  128.    IIC_SendByte(0xa1);//發(fā)方式字1010 0001
  129.    IIC_WaitAck();
  130.    date = IIC_RecByte();
  131.    IIC_Ack(0);
  132.    IIC_Stop();
  133.    return date;
  134. }
復制代碼

示例代碼:at24c02.h
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監(jiān)控器***************************/
  5. /*******************聯系QQ:1149809374***********************/
  6. /*************聯系郵箱:418224424@aliyun.com*****************/
  7. /*****************官方博客:www.bkoak.com********************/
  8. /************************************************************/

  9. #ifndef __AT24C02_H_
  10. #define __AT24C02_H_

  11. #define SlaveAddrW 0xA0
  12. #define SlaveAddrR 0xA1

  13. void IIC_Start(void);
  14. void IIC_Stop(void);
  15. void IIC_Ack(unsigned char ackbit);
  16. bit IIC_WaitAck(void);
  17. void IIC_SendByte(unsigned char byt);
  18. unsigned char IIC_RecByte(void);
  19. void WriteByte_AT24C02(uchar add,uchar date);
  20. uchar ReadByte_AT24C02(uchar add);

  21. #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.系統初始狀態(tài)說明(見main.c)
上、下限溫度值需要設定在 0℃到 99℃范圍內,下限值不大于上限值。系統上電后,從 EEPROM 中讀取溫度上、下限數值,并實時顯示當前溫度。
示例代碼:main.c
  1. /************************************************************/
  2. /************************智術靈慧****************************/
  3. /******************藍橋杯2011年省賽試題**********************/
  4. /***********************溫度監(jiān)控器***************************/
  5. /*******************聯系QQ:1149809374***********************/
  6. /*************聯系郵箱:418224424@aliyun.com*****************/
  7. /*****************官方博客:www.bkoak.com********************/
  8. /************************************************************/
  9. #include "stc15f2k60s2.h"
  10. #include "display.h"
  11. #include "at24c02.h"
  12. #include "ds18b20.h"
  13. #include "delay.h"

  14. sbit KEY7 = P3^0;
  15. sbit KEY6 = P3^1;
  16. sbit KEY5 = P3^2;
  17. sbit KEY4 = P3^3;
  18. sbit PWM = P3^4;

  19. uchar Value, t;

  20. void Timer2Init(void);

  21. void main()
  22. {
  23.    char maxvalue,minvalue;

  24.    P2 = ((P2&0x1f)|0xa0);
  25.    P0 = 0x00;

  26.    Timer0Init();
  27.    Timer1Init();
  28.    Timer2Init();
  29.    ET0 = 1;
  30.    ET1 = 1;
  31.    EA = 1;

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

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

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

  83.       WriteByte_AT24C02(0x00,maxvalue);
  84.       WriteByte_AT24C02(0x01,minvalue);

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

  105.          P2 = ((P2&0x1f)|0xa0);
  106.          P0 = 0x00;
  107.       }
  108.    }
  109. }

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

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


本文采用 「CC BY-NC-SA 4.0」創(chuàng)作共享協議,轉載請標注以下信息:
原文出處:Bkoak’s blog  http://www.bkoak.com

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


第三屆 溫度記錄器.rar

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

回復

使用道具 舉報

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


本文采用 「CC BY-NC-SA 4.0」創(chuàng)作共享協議,轉載請標注以下信息:
原文出處:Bkoak’s blog  http://www.bkoak.com

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




第四屆 自動售水機.rar

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

回復

使用道具 舉報

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


本文采用 「CC BY-NC-SA 4.0」創(chuàng)作共享協議,轉載請標注以下信息:
原文出處:Bkoak’s blog  http://www.bkoak.com

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




第四屆 自動售水機.rar

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

回復

使用道具 舉報

5#
ID:404878 發(fā)表于 2019-3-20 17:24 | 只看該作者
樓主停更了么?
回復

使用道具 舉報

6#
ID:328200 發(fā)表于 2019-6-12 10:50 | 只看該作者
期待更新,點贊
回復

使用道具 舉報

7#
ID:557774 發(fā)表于 2019-6-12 13:17 來自手機 | 只看該作者
怎么不用lcd12864當顯示呢?學習不來
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91综合在线观看 | 日韩视频在线免费观看 | 亚洲www啪成人一区二区 | 国产综合久久久 | 国产传媒 | 九九热在线免费观看 | 成人免费在线视频 | 国产精品国产三级国产aⅴ原创 | 国产视频在线观看一区二区三区 | 97精品国产97久久久久久免费 | 国内精品视频 | 色视频网站免费 | 日日草夜夜草 | 狠狠爱视频 | 国产综合精品一区二区三区 | 国产精品国产馆在线真实露脸 | 成人精品鲁一区一区二区 | 午夜影院在线观看 | 久久精品网 | 秋霞电影一区二区三区 | 99久久精品免费看国产四区 | 日韩二 | 国产精品区二区三区日本 | 国产激情视频在线观看 | 91视频在线看 | 国产精品久久久久久久岛一牛影视 | 日韩中文字幕在线观看 | 免费久久网 | 一区二区三区精品视频 | 97视频网站 | av激情在线 | 黄视频欧美 | 成年免费在线观看 | 久久免费香蕉视频 | 精品九九| 992人人草 | 久久久久欧美 | 日本黄色不卡视频 | 亚洲一级淫片 | 天天综合日日夜夜 | 久久com |