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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4294|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

第七屆藍(lán)橋杯_溫度記錄器 單片機(jī)源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
自己寫(xiě)的,用的是德飛萊的開(kāi)發(fā)板。


單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #include "delay.h"
  3. #include "ds1302.h"
  4. #include"display.h"
  5. #include"18b20.h"
  6. #include"keyboard.h"

  7. extern bit ReadTimeFlag;//定義讀時(shí)間標(biāo)志
  8. extern bit ReadFlag;        //讀時(shí)間標(biāo)志位 “1s”
  9. sbit led = P1^1;                //led定義
  10. extern bit ReadTempFlag;//定義讀溫度標(biāo)志
  11. extern unsigned char dofly_DuanMa[10];
  12. extern unsigned char dofly_WeiMa[8];
  13. extern unsigned char TempData[9]; //存儲(chǔ)顯示值的全局變量
  14. unsigned int temps[10];                //用來(lái)存放采集到的溫度
  15. void model_1 ();                        //模式一間隔時(shí)間選擇
  16. void model_2 ();                        //模式二時(shí)鐘顯示


  17. unsigned char out = 1;                //用來(lái)累計(jì)采取時(shí)間的
  18. unsigned char s = 1;                //時(shí)間間隔的選擇位
  19. bit m,a,y,w,z,k;

  20. void main()
  21. {
  22.                 unsigned char key,temp_1,j;                        //按鍵,數(shù)組的變量
  23.                 unsigned int TempH,TempL,temp;                //溫度的轉(zhuǎn)換
  24.                 static unsigned char time = 0;
  25.                 Init_Timer0();                                                //定時(shí)器0的初始化
  26.                 Ds1302_Init();                                                //時(shí)鐘的初始化
  27.                 Ds1302_Write_Time();                                //重新寫(xiě)入
  28.                 while(1)
  29.                 {
  30.                         key = KeyScan();                        //鍵盤(pán)掃面
  31.                         if(key == 4 && m == 0)                //key4、key7按下,進(jìn)入選擇時(shí)間間隔
  32.                                 {
  33.                                         z = 1;                        //表示key4和key7不同的模式
  34.                                         model_1 ();                //時(shí)間間隔
  35.                                         s++;                        
  36.                                         if(s == 4)                //時(shí)間間隔的四種選擇
  37.                                                 s = 0;               
  38.                                 }        
  39.                         if(key == 5)                        //確認(rèn)采集間隔時(shí)間
  40.                                         m = 1;
  41.                         if(m == 1 && ReadTimeFlag && k == 0)
  42.                                 {
  43.                                         ReadTimeFlag=0;
  44.                                         Ds1302_Read_Time();
  45.                                         model_2 ();                                //顯示時(shí)鐘
  46.                                         if(ReadTempFlag == 1)        //讀取溫度標(biāo)志位
  47.                                         {
  48.                                                 ReadTempFlag = 0;
  49.                                                 time++;
  50.                                                 if(out == time)        //到達(dá)指定采集間隔
  51.                                                         {
  52.                                                                 time = 0;
  53.                                                                 temp=ReadTemperature();                //讀取溫度
  54.                                                                 if(j<10 || (out == time))                //每一次到達(dá)指定時(shí)間讀取,不是一次到達(dá)讀取十次
  55.                                                                 {
  56.                                                                         temps[j++] = temp;                        //依次存入數(shù)組中
  57.                                                                         if(j == 10)
  58.                                                                                 {
  59.                                                                                         j = 0;
  60.                                                                                         led = 0;                        //溫度采集完點(diǎn)亮led
  61.                                                                                 }
  62.                                                                 }        
  63.                                                          }
  64.                                          }                                                
  65.                                 }
  66.                         if(led == 0)
  67.                                 k = 1;                        //k表示key = 6的情況
  68.                         if(key == 6 && k == 1)
  69.                         {
  70.                                 led = 1;               
  71.                                 m = 0;
  72.                                 z = 0;
  73.                                 if(temp_1 < 10)
  74.                                 {
  75.                                         temp_1++;
  76.                                         if(temp_1 == 9)
  77.                                                 y = 1;
  78.                                 }
  79.                         }
  80.                         if(k == 1)                        //依次顯示索引和采集的溫度
  81.                         {
  82.                                 if(temp_1<10)
  83.                                 {
  84.                                         TempData[0] = 0x40;
  85.                                         TempData[1] = dofly_DuanMa[(temp_1)/10];                //索引
  86.                                         TempData[2] = dofly_DuanMa[(temp_1)%10];
  87.                                         TempH=temps[temp_1]>>4;
  88.                                         TempL=temps[temp_1]&0x0F;
  89.                                         TempL=TempL*5/10;//小數(shù)近似處理
  90.                                         TempData[5]=0x40;
  91.                                         TempData[6]=dofly_DuanMa[(TempH%100)/10]; //十位溫度
  92.                                         TempData[7]=dofly_DuanMa[(TempH%100)%10]; //個(gè)位溫度,帶小數(shù)點(diǎn)
  93.                                         TempData[3] = 0;
  94.                                         TempData[4] = 0;
  95.                                 }
  96.                         }
  97.                         if(key == 7 && y == 1 && z == 0)                //進(jìn)入?yún)?shù)設(shè)置界面,進(jìn)行下一次的溫度采集工作
  98.                                 {
  99.                                         TempData[0]=0;                        //固定顯示
  100.                                         TempData[1]=0;
  101.                                         TempData[2]=0;
  102.                                         TempData[3]=0;
  103.                                         TempData[4]=0;
  104.                                         TempData[5]=0x40;
  105.                                         TempData[6]=dofly_DuanMa[0];
  106.                                         TempData[7]=dofly_DuanMa[1];
  107.                                         k = 0;
  108.                                         y = 0;
  109.                                         s = 1;
  110.                                         temp_1 = 0;
  111.                                 }
  112.                 }
  113. }
  114. void model_1 ()                        //模式一間隔時(shí)間選擇
  115. {
  116.                                 
  117.                                 TempData[0]=0;                        //固定顯示
  118.                                 TempData[1]=0;
  119.                                 TempData[2]=0;
  120.                                 TempData[3]=0;
  121.                                 TempData[4]=0;
  122.                                 TempData[5]=0x40;
  123.                                 switch(s)
  124.                                 {
  125.                                  case 1:
  126.                                          TempData[6]=dofly_DuanMa[0];
  127.                                          TempData[7]=dofly_DuanMa[5];
  128.                                          out = 5;
  129.                                  break;
  130.                                  case 2:
  131.                                          TempData[6]=dofly_DuanMa[3];
  132.                                          TempData[7]=dofly_DuanMa[0];
  133.                                          out = 30;
  134.                                  break;
  135.                                  case 3:
  136.                                          TempData[6]=dofly_DuanMa[6];//秒
  137.                                          TempData[7]=dofly_DuanMa[0];
  138.                                          out = 60;
  139.                                  break;
  140.                                  case 0:
  141.                                          TempData[6]=dofly_DuanMa[0];
  142.                                          TempData[7]=dofly_DuanMa[1];
  143.                                          out = 1;
  144.                                  break;
  145.                                 }
  146. }        


  147.         /*------------------------------------------------
  148.            讀取1302的值        默認(rèn) RTC 時(shí)間: 23 時(shí) 59 分 50 秒
  149.                 模式二 :時(shí)鐘顯示
  150.         ------------------------------------------------*/
  151. void model_2 ()                                
  152. {
  153.                 TempData[0]=dofly_DuanMa[time_buf1[0]/10];//時(shí)        //數(shù)據(jù)的轉(zhuǎn)換,
  154.                 TempData[1]=dofly_DuanMa[time_buf1[0]%10];//因我們采用數(shù)碼管0~9的顯示,將數(shù)據(jù)分開(kāi)
  155.                 if(ReadFlag)
  156.                         TempData[2]=0x40;                                                            //加入"-"
  157.                 else
  158.                         TempData[2] = 0;
  159.                 TempData[3]=dofly_DuanMa[time_buf1[1]/10];//分
  160.                 TempData[4]=dofly_DuanMa[time_buf1[1]%10];
  161.                 if(ReadFlag)
  162.                                 TempData[5]=0x40;
  163.                 else
  164.                         TempData[5] = 0;
  165.                         ReadFlag = 0;
  166.                 TempData[6]=dofly_DuanMa[time_buf1[2]/10];//秒
  167.                 TempData[7]=dofly_DuanMa[time_buf1[2]%10];        
  168. }
復(fù)制代碼

所有資料51hei提供下載:
溫度記錄器.zip (64.09 KB, 下載次數(shù): 43)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久亚洲春色中文字幕久久久 | 免费av直接看 | 精品一区二区久久久久久久网站 | 北条麻妃av一区二区三区 | 亚洲免费成人 | 亚洲欧美视频 | 红色av社区 | 永久av | 久久久久网站 | 国产xxx在线观看 | 狠狠综合久久av一区二区老牛 | 在线成人一区 | 日韩高清成人 | 日韩视频精品在线 | 天天插天天操 | 精品中文字幕久久 | 欧美成年网站 | 草草视频在线免费观看 | 精品一区二区三区中文字幕 | 亚洲成av人片在线观看无码 | 亚洲传媒在线 | 超碰在线人人 | 国产成人自拍av | 国产98色在线 | 日韩 | 一级片在线免费播放 | 久久精品综合 | www.国产精品 | 久久久久久亚洲精品 | 一区二区三区在线播放视频 | 男人天堂网址 | 亚洲视频第一页 | 欧美一区二区三区日韩 | 中文字幕在线播放不卡 | 国产精品久久久久久久久婷婷 | 久久久精品一区 | 亚洲视频免费在线看 | 青青青伊人 | 久久精品视频亚洲 | 精品在线一区 | 国产精品久久久久久久久 | 自拍第一页 |