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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2151|回復: 1
打印 上一主題 下一主題
收起左側(cè)

單片機數(shù)碼管顯示萬年歷 日期 時間 NTC溫度顯示ADC0832 程序仿真

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:622274 發(fā)表于 2022-12-11 21:14 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


花了兩天時間弄出來的,希望能幫到你們

單片機源程序如下:

  1. #include<reg52.h>  //  包含51單片機寄存器定義的頭文件;
  2. #include <intrins.h>
  3. #include <math.h>
  4. sbit P20=P2^0;
  5. sbit P21=P2^1;
  6. sbit P22=P2^2;
  7. sbit P23=P2^3;
  8. sbit P24=P2^4;
  9. sbit P25=P2^5;
  10. sbit P26=P2^6;
  11. sbit P27=P2^7;
  12. sbit P30=P3^0;
  13. sbit P31=P3^1;
  14. sbit P32=P3^2;
  15. sbit P33=P3^3;
  16. sbit P34=P3^4;
  17. sbit P35=P3^5;

  18. sbit hoursetting=P1^1;
  19. sbit minsetting=P1^2;
  20. sbit monthsetting=P1^3;
  21. sbit yearsetting=P1^4;
  22. sbit CS   = P3^6;//ADC0832 PIN1
  23. sbit Clk = P1^7;//ADC0832 PIN7
  24. sbit DATI = P3^7;//ADC0832 PIN5
  25. sbit DATO = P3^7;//ADC0832 PIN6
  26. unsigned int  Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰數(shù)碼管顯示0~9的段碼表
  27. //unsigned int  Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽數(shù)碼管顯示0~9的段碼表
  28. /*******************************共陰LED段碼表*******************************/

  29. unsigned char code temptab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  30. /*******************************定義全局變量********************************/
  31. unsigned char dat = 0x00;      //AD值
  32. unsigned char count = 0x00;      //定時器計數(shù)
  33. unsigned char CH;       //通道變量
  34. unsigned char dis[4];       //顯示數(shù)值
  35. unsigned int sum=0;

  36. unsigned int sec_time;        //記錄中斷次數(shù)
  37. unsigned char second,min,hour,year,month,day;        //儲存秒


  38. //數(shù)組下標就是對應溫度
  39. code unsigned char Temp_adc[]={
  40. 196,        194,        191,        189,        186,        184,        181,        179,        176,        173,        170,        168,       
  41. 165,        162,        159,        157,        154,        151,        148,        145,        142,        139,        136,        132,       
  42. 129,        126,        123,        117,        114,        113,        112,        110,        109,        106,        104,        101,       
  43. 99,        96,        94,        91,        89,        87,        84,        82,        80,        78,        76,        74,        71,        70,        68,        66,        64,        62,       
  44. 60,        59,        57,        55,        54,        52,        51,        49,        48,        47,        45,        44,        43,        41,        40,        39,        38,        37,       
  45. 36,        35,        34,        33,        32,        31,        30,        29,        28,        27,        27,        26,        25,        24,        24,        23,        22,        22,       
  46. 21,        21,        20,        20,        19,        18,        18,        17,        17,        16,        16, 15,        15,        14,        14, 13,        13,        12,
  47. 12,        11,        11,        10,        10,        9,        9,        8, 8,        7,        7,        6,        6, 5,        5,        4,        4,        3,        3,
  48. 2,        2,        1,        1};


  49. //查找相近值,并返回下標
  50. unsigned char Find_data(unsigned char *a,unsigned char x,unsigned char len)
  51. {
  52.         unsigned char i,min,r=0;
  53.        
  54.         min=abs(*a-x);
  55.         for(i=0;i<len;i++)
  56.         {
  57.                 if(abs(a[i]-x)<min)
  58.                 {
  59.                         min=abs(a[i]-x);
  60.                         r=i;
  61.                 }
  62.         }
  63.        
  64.         return r;
  65. }
  66. /****************************************************************************
  67. 函數(shù)功能:AD轉(zhuǎn)換子程序
  68. 入口參數(shù):CH
  69. 出口參數(shù):dat
  70. ****************************************************************************/
  71. unsigned char adc0832(unsigned char CH)
  72. {
  73.       unsigned char i,test,adval;
  74.            unsigned char m;  
  75.      adval = 0x00;
  76.      test = 0x00;
  77.      Clk = 0;       //初始化
  78.      DATI = 1;
  79.     _nop_();
  80.     CS = 0;
  81.     _nop_();
  82.     Clk = 1;
  83.    _nop_();


  84.    if ( CH == 0x00 )      //通道選擇
  85.    {
  86.        Clk = 0;
  87.        DATI = 1;      //通道0的第一位
  88.        _nop_();
  89.       Clk = 1;
  90.         _nop_();
  91.         Clk = 0;
  92.       DATI = 0;      //通道0的第二位
  93.       _nop_();
  94.       Clk = 1;
  95.       _nop_();
  96.     }
  97.     else
  98.     {
  99.        Clk = 0;
  100.     DATI = 1;      //通道1的第一位
  101.       _nop_();
  102.       Clk = 1;
  103.       _nop_();
  104.       Clk = 0;
  105.       DATI = 1;      //通道1的第二位
  106.     _nop_();
  107.      Clk = 1;
  108.      _nop_();
  109.    }

  110.       Clk = 0;
  111.       DATI = 1;
  112.     for( i = 0;i < 8;i++ )      //讀取前8位的值
  113.     {
  114.        _nop_();
  115.        adval <<= 1;
  116.        Clk = 1;
  117.        _nop_();
  118.        Clk = 0;
  119.        if (DATO)
  120.           adval |= 0x01;
  121.       else
  122.           adval |= 0x00;
  123.     }
  124.       for (i = 0; i < 8; i++)      //讀取后8位的值
  125.       {
  126.            test >>= 1;
  127.            if (DATO)
  128.               test |= 0x80;
  129.            else
  130.               test |= 0x00;
  131.           _nop_();
  132.           Clk = 1;
  133.           _nop_();
  134.           Clk = 0;
  135.       }
  136.       if (adval == test)      //比較前8位與后8位的值,如果不相同舍去。若一直出現(xiàn)顯示為零,請將該行去掉
  137.        dat = test;
  138.        nop_();
  139.        CS = 1;        //釋放ADC0832
  140.        DATO = 1;
  141.        Clk = 1;
  142.                        
  143.        return dat;
  144.                
  145. }

  146. /***********************************************************************
  147. 函數(shù)功能:快速動態(tài)掃描延時,延時約0.6毫秒
  148. ************************************************************************/
  149. void delay(void)
  150. {
  151.   unsigned int i;
  152.   for(i=0;i<80;i++)
  153.         ;
  154. }


  155. /******************************************************************
  156. 函數(shù)功能:顯示計數(shù)次數(shù)的子程序
  157. 入口參數(shù):x
  158. ********************************************************************/
  159.   void Display(second,min,hour,year,month,day,unsigned char temperature)
  160. {   
  161. P0=temptab[temperature%100/10];      
  162.    
  163.     if(temperature>9)
  164.     {P34=0;  }           
  165. ……………………

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

Keil代碼與Proteus仿真下載:
數(shù)碼管顯示萬年歷_時間_日期_NTC溫度221211.7z (127.47 KB, 下載次數(shù): 46)


評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:297903 發(fā)表于 2022-12-15 08:34 | 只看該作者
好資料,謝謝分享!!
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品男人的天堂 | 欧美a区| 久久高清亚洲 | 亚洲视频不卡 | 欧美一级片 | 亚洲精选一区二区 | 亚洲国产成人av | 国产精品一区在线观看 | 欧美日韩国产一区二区三区不卡 | 国产精品一区二区在线播放 | 日本三级全黄三级三级三级口周 | 国产午夜视频 | 激情欧美一区二区三区中文字幕 | 91视频一88av | 精品一区二区在线观看 | 亚洲一二三视频 | 狠狠操狠狠干 | 亚洲精品国产一区 | 一区二区在线 | 91在线看片 | 中文字幕在线视频一区二区三区 | 久久国产精品久久久久久久久久 | 伊人网伊人网 | 精品视频国产 | 成人av一区 | 婷婷久久网 | 中国一级特黄真人毛片 | 一区二区播放 | 在线观看国产视频 | 国产成人精品免高潮在线观看 | 自拍亚洲 | 久久精品99| 91精品国产乱码久久久久久 | 国产乱码高清区二区三区在线 | 天天干天天玩天天操 | 精品欧美乱码久久久久久 | 国产视频一视频二 | 一级毛片免费 | 亚洲精品久久久久国产 | 国产jizz女人多喷水99 | av黄色在线|