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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11965|回復: 8
收起左側

數字溫度計原理圖與PCB(AD畫的) 源程序 單片機課程設計資料下載

  [復制鏈接]
ID:199549 發表于 2017-5-11 14:51 | 顯示全部樓層 |閱讀模式
這是基于單片機的數字溫度計課程設計實驗資料:

原理圖與pcb都是用ad軟件畫的。

(1)打開PCB文件后,圖中有些器件屬性為“Locked”,這些器件的位置不要改變。
(2)布線寬度不能小于0.5mm,最好在0.8mm以上
(3)焊盤尺寸:圓形直徑不小于1.8mm
(4)電路板的外形、尺寸不要做出改變
(5)顯示器件(比如LED數碼管)要放在合適的位置(比如電路板某一端的中間)

ad畫的原理圖與pcb圖:
0.png 0.png

0.png 0.png 0.png

數字溫度計元器件清單
序號 耗材名稱 規格型號 數量
1 4.7K 5
2 510 8
3 6.8K 1
4 獨石電容 30PF 2
5 電解電容 10UF 1
6 石英晶振 12MHZ 1
7 數碼管 4位一體,共陽極 1,暫時不發
8 三極管 9012 4
9 單排3腳插座 腳距2.54mm 1
10 集成塊插座 DIP20,腳距2.54mm 1
11 集成電路 AT89C2051 暫時不發
12 MICRO USB 1
13 溫度傳感器 DS18B20 暫時不發
14 數碼管插座 單排6腳  *2
14 自封帶 大小:10cm * 15cm 1
15 單面覆銅板 15cm * 10cm 1

單片機源程序如下:
  1. ////////////////////////////////////////////////////////////////////
  2. //
  3. //                                        可正確處理溫度范圍為-55~+99.99,溫度大于0時顯示   XX.XX
  4. //                                                                                                                                                                        溫度小于0時顯示  -XX.X
  5. ///////////////////////////////////////////////////////////////////
  6. #include<reg51.h>
  7. #include<intrins.h>
  8. #define  NOP  _nop_()
  9. unsigned char data  temp_data[2]={0x00,0x00};               // 讀出溫度暫放
  10. unsigned char data  display[5]={0x00,0x00,0x00,0x00};//顯示單元數據,共4個數據,一個運算暫存用
  11. unsigned int temperature=0;
  12. unsigned char n=0;
  13. sbit DQ=P3^7;
  14. sbit vcc1=P3^0;
  15. sbit vcc2=P3^1;
  16. sbit vcc3=P3^2;
  17. sbit vcc4=P3^3;
  18. sbit a=P1^0;
  19. sbit b=P1^1;
  20. sbit c=P1^2;
  21. sbit d=P1^3;
  22. sbit e=P1^4;
  23. sbit f=P1^5;
  24. sbit g=P1^6;
  25. sbit dp=P1^7;
  26. //
  27. /***********11微秒延時函數**********/
  28. //
  29. void delay(unsigned int t)
  30. {
  31.         for(;t>0;t--);
  32. }
  33. ///////////////////
  34. /***********18B20復位函數**********/
  35. void ow_reset(void)
  36. {
  37.         char presence=1;
  38.         while(presence)
  39.         {
  40.                 while(presence)
  41.                   {
  42.                         DQ=1;
  43.                         NOP;
  44.                         NOP;
  45.                         DQ=0;    //
  46.                         delay(50); // 550us
  47.                         DQ=1;    //
  48.                         delay(6);  // 66us
  49.                         presence=DQ; // presence=0繼續下一步
  50.                    }
  51.                 delay(45);    //延時500us
  52.                 presence = ~DQ;
  53.         }
  54.         DQ=1;
  55. }
  56. //
  57. /**********18B20寫命令函數*********/
  58. //向 1-WIRE 總線上寫一個字節
  59. void write_byte(unsigned char val)
  60. {
  61.         unsigned char i;
  62.         for (i=8; i>0; i--) //
  63.         {
  64.                 DQ=1;
  65.                 NOP;
  66.                 NOP;
  67.                 DQ = 0;//5us
  68.                 NOP;
  69.                 NOP;
  70.                 NOP;
  71.                 NOP;
  72.                 NOP;
  73.                 DQ = val&0x01;      //最低位移出
  74.                 delay(6);           //66us
  75.                 val=val/2;          //右移一位
  76.         }
  77.         DQ = 1;
  78.         delay(1);  
  79. }
  80. //
  81. /*********18B20讀1個字節函數********/
  82. //從總線上讀取一個字節
  83. unsigned char read_byte(void)
  84. {
  85.         unsigned char i;
  86.         unsigned char value = 0;
  87.         for (i=8;i>0;i--)
  88.         {
  89.                 DQ=1;
  90.                 NOP;
  91.                 NOP;
  92.                 value>>=1;
  93.                 DQ = 0;             //                          
  94.                 NOP;//4us
  95.                 NOP;
  96.                 NOP;
  97.                 NOP;
  98.                 DQ = 1;
  99.                 NOP;//4us
  100.                 NOP;
  101.                 NOP;
  102.                 NOP;               
  103.                 if(DQ)
  104.                         value|=0x80;
  105.                 delay(6);           //66us
  106.         }
  107.         DQ=1;
  108.         return(value);
  109. }
  110. //
  111. /***********讀出溫度函數**********/
  112. //
  113. void read_temp(void)
  114. {
  115.         ow_reset();       //總線復位
  116.         write_byte(0xCC); // 發Skip ROM命令
  117.         write_byte(0xBE); //  發讀命令
  118.         temp_data[0]=read_byte();  //溫度低8位
  119.         temp_data[1]=read_byte();  //溫度高8位
  120.         ow_reset();
  121.         write_byte(0xCC); // Skip ROM
  122.         write_byte(0x44); // 發轉換命令
  123. }
  124. //
  125. /***********溫度數據處理函數**********/
  126. void work_temp(void)
  127. {
  128.         unsigned long temp32;     //
  129.         temperature=(unsigned int)temp_data[1];
  130.         temperature=temperature<<8;
  131.         temperature=temperature+(unsigned int)temp_data[0];
  132.         if(temperature>32767)  //如果溫度小于0
  133.                 {
  134.                         n=1;
  135.                         temperature=65536-temperature;
  136.                 }
  137.         else
  138.                 n=0;
  139.         temp32=(unsigned long)temperature;
  140.         temp32=temp32*100;  //溫度放大10000倍
  141.         temp32=temp32>>4;        //溫度放大100倍
  142.         if(n==0)    //如果溫度大于0,正常溫度在100之內,顯示XX.XX
  143.                 {
  144.                         display[3]=(unsigned char)(temp32/1000);
  145.                         display[2]=(unsigned char)((temp32%1000)/100);
  146.                         display[1]=(unsigned char)((temp32%100)/10);
  147.                         display[0]=(unsigned char)(temp32%10);
  148.                 }
  149.         else      //溫度小于0時,顯示  -XX.X
  150.                 {
  151.                         display[3]=0x0b;
  152.                         display[2]=(unsigned char)(temp32/1000);
  153.                         display[1]=(unsigned char)((temp32%1000)/100);
  154.                         display[0]=(unsigned char)((temp32%100)/10);
  155.                 }
  156. }
  157. //
  158. ///////////////////////////////
  159. //
  160. //    顯示段碼輸出函數,由于數碼管硬件電路連接錯誤,必須用此方法實現正常顯示
  161. void segment(unsigned char m)
  162. {
  163.         switch(m)
  164.         {
  165.                 case 0 :
  166.                         {
  167.                                 a=0;
  168.                                 b=0;
  169.                                 c=0;
  170.                                 d=0;
  171.                                 e=0;
  172.                                 f=0;
  173.                                 g=1;
  174.                         }
  175.                         break;
  176.                 case 1 :
  177.                         {
  178.                                 a=1;
  179.                                 b=0;
  180.                                 c=0;
  181.                                 d=1;
  182.                                 e=1;
  183.                                 f=1;
  184.                                 g=1;
  185.                         }
  186.                         break;
  187.                 case 2 :
  188.                         {
  189.                                 a=0;
  190.                                 b=0;
  191.                                 c=1;
  192.                                 d=0;
  193.                                 e=0;
  194.                                 f=1;
  195.                                 g=0;
  196.                         }
  197.                         break;
  198.                 case 3 :
  199.                         {
  200.                                 a=0;
  201.                                 b=0;
  202.                                 c=0;
  203.                                 d=0;
  204.                                 e=1;
  205.                                 f=1;
  206.                                 g=0;
  207.                         }
  208.                         break;
  209.                 case 4 :
  210.                         {
  211.                                 a=1;
  212.                                 b=0;
  213.                                 c=0;
  214.                                 d=1;
  215.                                 e=1;
  216.                                 f=0;
  217.                                 g=0;
  218.                         }
  219.                         break;
  220.                 case 5 :
  221.                         {
  222.                                 a=0;
  223.                                 b=1;
  224.                                 c=0;
  225.                                 d=0;
  226.                                 e=1;
  227.                                 f=0;
  228.                                 g=0;
  229.                         }
  230.                         break;
  231.                 case 6 :
  232.                         {
  233.                                 a=0;
  234.                                 b=1;
  235.                                 c=0;
  236.                                 d=0;
  237.                                 e=0;
  238.                                 f=0;
  239.                                 g=0;
  240.                         }
  241.                         break;
  242.                 case 7 :
  243.                         {
  244.                                 a=0;
  245.                                 b=0;
  246.                                 c=0;
  247.                                 d=1;
  248.                                 e=1;
  249.                                 f=1;
  250.                                 g=1;
  251.                         }
  252.                         break;
  253.                 case 8 :
  254.                         {
  255.                                 a=0;
  256.                                 b=0;
  257.                                 c=0;
  258.                                 d=0;
  259.                                 e=0;
  260.                                 f=0;
  261.                                 g=0;
  262.                         }
  263.                         break;
  264.                 case 9 :
  265.                         {
  266.                                 a=0;
  267.                                 b=0;
  268.                                 c=0;
  269.                                 d=0;
  270.                                 e=1;
  271.                                 f=0;
  272.                                 g=0;
  273.                         }
  274.                         break;
  275.                 case 10 :
  276.                         {
  277.                                 a=1;
  278.                                 b=1;
  279.                                 c=1;
  280.                                 d=1;
  281.                                 e=1;
  282.                                 f=1;
  283.                                 g=1;
  284.                         }
  285.                         break;
  286.                 case 11 :
  287.                         {
  288.                                 a=1;
  289.                                 b=1;
  290.                                 c=1;
  291.                                 d=1;
  292.                                 e=1;
  293.                                 f=1;
  294.                                 g=0;
  295.                         }
  296.                         break;
  297.                 default :
  298.                         {
  299.                                 a=1;
  300.                                 b=1;
  301.                                 c=1;
  302.                                 d=1;
  303.                                 e=1;
  304.                                 f=1;
  305.                                 g=1;
  306.                         }
  307.                       break;
  308.         }
  309. }                       
  310. //    顯示函數
  311. //
  312. void show(void)
  313. {
  314.         vcc1=1;
  315.         vcc2=1;
  316.         vcc3=1;
  317.         vcc4=0;
  318.         dp=1;
  319.         segment(display[0]);   //最低位
  320.         delay(200);
  321.         vcc1=1;
  322.         vcc2=1;
  323.         vcc3=1;
  324.         vcc4=1;
  325.         segment(display[1]);
  326.         vcc1=1;
  327.         vcc2=1;
  328.         vcc3=0;
  329.         vcc4=1;
  330.         if(n)   //如果溫度小于0,則顯示  -XX.X
  331.                 dp=0;
  332.         else
  333.                 dp=1;
  334.         delay(200);
  335.         vcc1=1;
  336.         vcc2=1;
  337.         vcc3=1;
  338.         vcc4=1;
  339.         dp=1;
  340.         segment(display[2]);
  341.         vcc1=1;
  342.         vcc2=0;
  343.         vcc3=1;
  344.         vcc4=1;
  345. ……………………

  346. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
單片機課程設計.rar (2.61 MB, 下載次數: 152)
回復

使用道具 舉報

ID:1 發表于 2017-5-12 18:42 | 顯示全部樓層
好資料,51黑有你更精彩
回復

使用道具 舉報

ID:169021 發表于 2017-6-3 03:21 | 顯示全部樓層
好家伙,這個設計幫了我的大忙,謝謝樓主啊
回復

使用道具 舉報

ID:336235 發表于 2018-5-23 08:52 | 顯示全部樓層
感謝樓主的辛苦努力!
回復

使用道具 舉報

ID:359236 發表于 2018-6-27 15:43 | 顯示全部樓層
好資料,51黑有你更精彩
回復

使用道具 舉報

ID:450654 發表于 2018-12-20 15:30 | 顯示全部樓層
多謝大佬
回復

使用道具 舉報

ID:458818 發表于 2018-12-30 23:41 | 顯示全部樓層
這也太強了,不過這個做出來有點大,樓主有精簡版的方案么
回復

使用道具 舉報

ID:501045 發表于 2019-3-30 10:44 | 顯示全部樓層
真棒是個好樓主
回復

使用道具 舉報

ID:542270 發表于 2019-5-20 14:54 | 顯示全部樓層
感謝感謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品日韩精品国产精品 | 久久久男人的天堂 | 亚洲视频免费在线 | 精品欧美一区免费观看α√ | av在线免费不卡 | 九九久久这里只有精品 | aaaa日韩 | 一区二区在线不卡 | 欧美一级片在线播放 | 日韩一区二区三区视频 | 精品成人在线视频 | 亚洲巨乳自拍在线视频 | 午夜爽爽男女免费观看hd | 99久久电影 | 日韩高清中文字幕 | 亚洲导航深夜福利涩涩屋 | 两性午夜视频 | 精品二区 | 欧美极品视频在线观看 | 精品久久九九 | 天天爽天天干 | 日韩精品一区二区三区视频播放 | 亚洲电影免费 | 在线观看第一区 | 成人区一区二区三区 | 中文字幕在线网 | av网址在线播放 | 免费观看一级视频 | 色888www视频在线观看 | 黄网站色大毛片 | 国产成人高清视频 | 国产91久久久久蜜臀青青天草二 | 成人在线视频网站 | 日韩电影免费在线观看中文字幕 | 国产精品久久久久久久久久久久久久 | 国产精品一区久久久 | 欧美成人h版在线观看 | www.日日干 | 亚洲国产免费 | 高清色| 99综合|