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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)+DAC0832數(shù)模轉(zhuǎn)化芯片使用例程與仿真

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:268717 發(fā)表于 2018-7-27 07:19 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
DAC0832數(shù)模轉(zhuǎn)化芯片使用例程 程序+仿真 注釋非常詳細(xì)

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:

  1. /***********************************************************
  2. **程序功能:通過DAC0832芯片顯示電壓值
  3. **程序說明:通過增加電阻值來改變某個值 即顯示可變電阻的值
  4. **通信格式:無
  5. *************************************************************/

  6. #include <reg52.h>
  7. #define uchar unsigned char
  8. #define uint unsigned  int
  9. sbit CS=P1^0;       //片選信號      
  10. sbit CLK=P1^1;      //時鐘接口
  11. sbit DI=P1^2;       //數(shù)據(jù)接口

  12. sbit CS1=P2^5;            //片選信號1
  13. sbit CLK1=P2^6;     //時鐘接口1
  14. sbit DI1=P2^7;      //數(shù)據(jù)接口1
  15.   
  16. sbit RS = P2^0;            //LCD數(shù)據(jù)/命令選擇端(H/L)位聲明
  17. sbit RW = P2^1;            //LCD讀寫控制,寫為0,讀為1
  18. sbit EN = P2^2;            //LCD使能信號端位聲明

  19. uchar code table[2]={0xDF,0x43};  //顯示溫度符號的函數(shù)

  20. uchar data disdata[7];           //定義兩個用于儲存數(shù)據(jù)的數(shù)組
  21. uchar data  data1[7];

  22. void delay(uint i)         //延時子程序
  23. {
  24.         uint j;
  25.         while(i--)
  26.         for(j=0;j<110;j++);  
  27. }

  28. /*************************lcd1602程序**************************/


  29. void wr_com(uchar com)     //寫指令
  30. {
  31.    delay(1);
  32.    RS=0;
  33.    RW=0;
  34.    EN=0;
  35.    P0=com;
  36.    delay(1);
  37.    EN=1;
  38.    delay(1);
  39.    EN=0;
  40. }

  41. void wr_dat(uchar dat)     //寫數(shù)據(jù)
  42. {  
  43.    delay(1);
  44.    RS=1;
  45.    RW=0;
  46.    EN=0;
  47.    P0=dat;
  48.    delay(1);
  49.    EN=1;
  50.    delay(1);
  51.    EN=0;
  52. }

  53. void wr_new()              //寫新字符
  54. {
  55.         uchar i;
  56.         for(i=0;i<2;i++)
  57.         {
  58.                 wr_dat(table[i]);
  59.                 }
  60. }

  61. void lcd_init()           //初始化設(shè)置
  62. {      
  63.         delay(15);
  64.         wr_com(0x38);delay(5);
  65.         wr_com(0x08);delay(5);
  66.         wr_com(0x06);delay(5);
  67.         wr_com(0x0c);delay(5);      
  68.         
  69. }

  70. uchar GetAD0832(uint Channel)
  71. {
  72.         uchar i=0, Data1 =0, Data2 = 0;
  73.         CLK=0;             //時鐘置低平
  74.         DI=1;              //開始信號為高電平
  75.         CS=0;              //片選信號置低,啟動AD轉(zhuǎn)換芯片
  76.     CLK=1;             //輸入開始信號(構(gòu)成一個正脈沖),時鐘上升沿,輸入開始信號
  77.         CLK=0;             //時鐘下降沿
  78.                            
  79.         DI=1;                            //模擬信號輸入模式選擇(1:單模信號,0:雙模差分信號)
  80.         CLK=1;             //時鐘上升沿,輸入開始信號
  81.         CLK=0;             //時鐘下降沿
  82.        
  83.         DI=Channel ;       //模擬信號輸入通道選擇(1:通道CH1,0:通道CH0)
  84.         CLK=1;             //時鐘上升沿,輸入開始信號
  85.         CLK=0;             //時鐘下降沿
  86.        
  87.         DI=1 ;             //數(shù)據(jù)線置高,準(zhǔn)備接收數(shù)據(jù)
  88.     for(i=0;i<8;i++)   //從高位移入數(shù)據(jù)
  89.   {
  90.     CLK=1;
  91.     CLK=0;             //時鐘下降沿,AD0832輸出數(shù)據(jù),高位(MSB)先
  92.     Data1=Data1<<1;
  93.     if(DI==1)
  94.     {Data1=Data1 | 0x01;}     //數(shù)據(jù)左移位,補0 ,如果數(shù)據(jù)為“1”,移入1, 如果數(shù)據(jù)為“0”,移入0,
  95.    }

  96. for(i=0;i<8;i++)              //從低位移入數(shù)據(jù)
  97.    {
  98.         Data2=Data2>>1;
  99.         if(DI==1)
  100.         {  Data2=Data2 | 0x80;}   //數(shù)據(jù)右移位,補0,如果數(shù)據(jù)為“1”,移入1如果數(shù)據(jù)為“0”,移入0,
  101.            CLK=1 ;
  102.            CLK=0;                 //時鐘下降沿,AD0832輸出數(shù)據(jù),高位(MSB)先
  103.    }                                    

  104.                 CLK=1;                           //數(shù)據(jù)線置高,釋放總線,完成一次轉(zhuǎn)換
  105.                 DI=1;
  106.                 CS=1;
  107.                
  108. return (Data1==Data2)?Data1:0;  //   如果相等輸出data1  or  0
  109.    }

  110. uchar GetAD08321(uint Channel)
  111. {
  112.         uchar i=0, Data1 =0, Data2 = 0;
  113.         CLK1=0;             //時鐘置低平
  114.         DI1=1;              //開始信號為高電平
  115.         CS1=0;              //片選信號置低,啟動AD轉(zhuǎn)換芯片
  116.         CLK1=1;             //輸入開始信號(構(gòu)成一個正脈沖),時鐘上升沿,輸入開始信號
  117.         CLK1=0;             //時鐘下降沿
  118.                            
  119.         DI1=1;                             //模擬信號輸入模式選擇(1:單模信號,0:雙模差分信號)
  120.         CLK1=1;             //時鐘上升沿,輸入開始信號
  121.         CLK1=0;             //時鐘下降沿
  122.        
  123.         DI1=Channel ;       //模擬信號輸入通道選擇(1:通道CH1,0:通道CH0)
  124.         CLK1=1;             //時鐘上升沿,輸入開始信號
  125.         CLK1=0;             //時鐘下降沿
  126.        
  127.         DI1=1;              //數(shù)據(jù)線置高,準(zhǔn)備接收數(shù)據(jù)
  128.     for(i=0;i<8;i++)    //從高位移入數(shù)據(jù)
  129.   {
  130.     CLK1=1;
  131.     CLK1=0;             //時鐘下降沿,AD0832輸出數(shù)據(jù),高位(MSB)先
  132.     Data1=Data1<<1;
  133.     if(DI1==1)
  134.         {Data1 = Data1 | 0x01;}  //數(shù)據(jù)左移位,補0 ,如果數(shù)據(jù)為“1”,移入1, 如果數(shù)據(jù)為“0”,移入0,
  135.    }

  136. for(i=0;i<8;i++)                 //從低位移入數(shù)據(jù)
  137.    {
  138.         Data2=Data2>>1;
  139.         if(DI1==1)
  140.         {  Data2=Data2 | 0x80;}      //數(shù)據(jù)右移位,補0;如果數(shù)據(jù)為“1”,移入1;如果數(shù)據(jù)為“0”,移入0,
  141.            CLK1=1 ;
  142.            CLK1=0 ;                  //時鐘下降沿,AD0832輸出數(shù)據(jù),高位(MSB)先
  143.                      }                                    

  144.                 CLK1=1;                          //數(shù)據(jù)線置高,釋放總線,完成一次轉(zhuǎn)換
  145.                 DI1=1;
  146.                 CS1=1;
  147.                
  148. return (Data1==Data2)?Data1:0;  //   如果相等輸出data1  or  0
  149.    }


  150.      void main()
  151. {

  152.         uchar AD_val1;               //儲存A/D轉(zhuǎn)換后的值
  153.         uchar AD_val2;
  154.         uchar AD_val3;               
  155.         uchar AD_val4;
  156.         delay(1);
  157.         lcd_init();                  //初始化LCD
  158.         delay(1);         

  159.          
  160.       while(1)
  161.       {
  162.                
  163.          
  164.                    AD_val1= GetAD0832(0);            //進(jìn)行A/D轉(zhuǎn)換
  165.            if(AD_val1!=0)
  166.                         {
  167.                        
  168.                     disdata[1]=AD_val1/100+0x30;     //?位數(shù)                                        
  169.                     disdata[2]=AD_val1%100/10+0x30;  //?位數(shù)               
  170.                     disdata[3]=AD_val1%10/1+0x30;    //?數(shù)位
  171.                        
  172.                         delay(5);
  173.                         wr_com(0x83);
  174.             wr_dat(disdata[1]);              
  175.                         delay(5);
  176.                         wr_dat(disdata[2]);
  177.                         delay(5);                        //延時1ms
  178.                         wr_dat(disdata[3]);
  179.                         wr_new();
  180.                          }


  181.                         AD_val2= GetAD0832(1);           //進(jìn)行A/D轉(zhuǎn)換
  182.            if(AD_val2!=0)
  183.                         {
  184.                        
  185.                     disdata[4]=AD_val2/100+0x30;     //?位數(shù)                                        
  186.                     disdata[5]=AD_val2%100/10+0x30;  //?位數(shù)                                        
  187.                     disdata[6]=AD_val2%10/1+0x30;    //?數(shù)位

  188.                         delay(5);
  189.                         wr_com(0x89);
  190.             wr_dat(disdata[4]);              
  191.                         delay(5);
  192.                         wr_dat(disdata[5]);                                                                          
  193.                         delay(5);                        //延時5ms
  194.                         wr_dat(disdata[6]);
  195.                         wr_new();
  196.                           }


  197.                          AD_val3= GetAD08321(0);         //進(jìn)行A/D轉(zhuǎn)換
  198.                         if(AD_val3!=0)
  199.                         {
  200.                        
  201.                     disdata[1]=AD_val3/100+0x30;     //?位數(shù)                                        
  202.                     disdata[2]=AD_val3%100/10+0x30;  //?位數(shù)               
  203.                     disdata[3]=AD_val3%10/1+0x30;    //?數(shù)位

  204.                         delay(5);
  205.                         wr_com(0xc3);
  206.             wr_dat(disdata[1]);            
  207.                         delay(5);
  208.                         wr_dat(disdata[2]);
  209.                         delay(5);                        //延時5ms
  210.                         wr_dat(disdata[3]);
  211.                         wr_new();
  212.                          }


  213.                          AD_val4= GetAD08321(1);         //進(jìn)行A/D轉(zhuǎn)換
  214.                          if(AD_val4!=0)
  215.                         {
  216.                        
  217.                     disdata[4]=AD_val4/100+0x30;     //?位數(shù)                                        
  218.                     disdata[5]=AD_val4%100/10+0x30;  //?位數(shù)               
  219.                     disdata[6]=AD_val4%10/1+0x30;    //?數(shù)位

  220.                         delay(5);
  221.                         wr_com(0xc9);
  222.             wr_dat(disdata[4]);              
  223.                         delay(5);
  224.                         wr_dat(disdata[5]);
  225.                         delay(5);                        //延時5ms
  226.                         wr_dat(disdata[6]);
  227.                         wr_new();
  228.                          }
  229.        }
  230. }
復(fù)制代碼

所有資料51hei提供下載:
20161111144-李作鑫-DAC0832.rar (110.17 KB, 下載次數(shù): 25)


評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:212262 發(fā)表于 2018-7-29 10:47 | 只看該作者
你這是adc0832吧,不是dac0832
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久久久冷 | 欧美日韩高清 | 黄a网站| 久久久久一区 | 国产精品午夜电影 | 中文字幕人成乱码在线观看 | 国产九九精品 | 亚洲一区二区三区乱码aⅴ 四虎在线视频 | 成人二区 | 午夜久久久 | 欧美精品一区二区三区蜜桃视频 | 九九热视频这里只有精品 | 日韩视频一区二区 | 久久精品视频在线观看 | 国产天天操 | 成人午夜激情 | 祝你幸福电影在线观看 | 国产欧美日韩在线播放 | 国产综合在线视频 | 亚洲午夜精品一区二区三区他趣 | 最新国产精品视频 | 在线看黄免费 | 成人在线日韩 | 日韩一区二区三区在线观看 | 久久黄网| 欧美在线视频一区二区 | 色五月激情五月 | 精品九九 | 亚洲一级在线 | 欧美久久久网站 | 久草视频网站 | 四虎永久免费地址 | 久久亚洲春色中文字幕久久久 | 人人爽人人草 | 一级看片免费视频囗交动图 | 黄色免费网站在线看 | 99视频免费在线 | 欧美精品一二三区 | 久久88| 亚洲福利在线观看 | 中国黄色在线视频 |