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

QQ登錄

只需一步,快速開始

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

LPC2148的ADC多通道數(shù)據(jù)采集程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:219534 發(fā)表于 2017-7-14 00:00 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
這個(gè)是課設(shè):
多通道.doc (41 KB, 下載次數(shù): 108)

  1. #include "config.h"
  2. #include "stdio.h"
  3. #define   GPIOSET(PIN)  IO0SET = PIN    // 方便修改置位端口
  4. #define   GPIOCLR(PIN)        IO0CLR = PIN    // 方便修改清位端口
  5. #define   LCD_CON           0x00000250           // 液晶顯示控制字
  6. #define  E_CLK  (1<<4)                    //clock input   同步時(shí)鐘輸入端         P0.4
  7. const uint32  RW_SID=  (1<<6);         //data input/output 串行數(shù)據(jù)輸入、輸出端        P0.6      
  8. const uint32  CS =     (1<<9);                  //P0.9
  9. unsigned char IC_DAT1[] = "多通道數(shù)據(jù)采集系統(tǒng)";

  10. /*************************************************************
  11. *  名稱:delay()
  12. *  功能:延時(shí)程序
  13. **************************************************************/
  14. void delay(uint32 dly)
  15. {
  16.         uint32 i;
  17.        
  18.         for ( ; dly>0; dly--)
  19.                 for (i=0; i<10; i++);
  20. }
  21.   
  22. /******************************************************************
  23. *  名稱:SeddByte()
  24. *  功能:發(fā)送1字節(jié)數(shù)據(jù)
  25. *******************************************************************/
  26. void     SendByte(uint8    data)   
  27.     {   
  28.       uint8   i;
  29.       IO0SET=CS;  
  30.       for(i=0;i<8;i++)   
  31.        {  
  32.                         IO0CLR=E_CLK ;delay(5);
  33.                         if(data&0x80)
  34.                         {
  35.                                 IO0SET=RW_SID;delay(5);
  36.                         }
  37.                         else IO0CLR=RW_SID;   
  38.                         {
  39.                                 IO0SET=E_CLK;delay(5);
  40.                         }
  41.                         data=data<<1;   
  42.        }
  43.        IO0CLR=CS;  
  44.     }
  45.   
  46. /******************************************************************
  47. *  名稱:ReceieveByte()
  48. *  功能:接收1字節(jié)數(shù)據(jù)
  49. *******************************************************************/   
  50. unsigned char ReceieveByte(void)   
  51.   {   
  52.           uint8     i,d1,d2;   
  53.     for(i=0;i<8;i++)   
  54.         {   
  55.                 IO0CLR=E_CLK;delay(5);  
  56.                 IO0SET=E_CLK;delay(5);
  57.                 if(RW_SID)d1++;   
  58.                 d1=d1<<1;   
  59.         }   
  60.     for(i=0;i<8;i++)   
  61.         {   
  62.                 IO0CLR=E_CLK;delay(5);  
  63.                 IO0SET=E_CLK;delay(5);  
  64.                 if(RW_SID)d2++;   
  65.                 d2=d2<<1;   
  66.         }   
  67.      return     (d1&0xF0+d2&0x0F);   
  68.     }
  69.   
  70. /***************************************************************
  71. *  名稱:SendCMD()
  72. *  功能:向LCD12864發(fā)送命令
  73. ****************************************************************/  
  74. void     SendCMD(uint8     data)   
  75.     {
  76.         SendByte(0xF8);                                         
  77.         SendByte(data&0xF0);                                        
  78.                 SendByte((data&0x0F)<<4);                    
  79.         }
  80.   
  81. /*************************************************************
  82. * 名稱:SendData()
  83. * 功能:向LCD12864發(fā)送數(shù)據(jù)
  84. **************************************************************/  
  85. void     SendData(uint8     data)   
  86.     {
  87.         SendByte(0xFA);                                         
  88.         SendByte(data&0xF0);                                       
  89.                  SendByte((data&0x0F)<<4);                    
  90.         }
  91.        
  92. /****************************************************************
  93. * 名稱:lcd_mesg()
  94. * 功能:在LCD12864上顯示漢字
  95. *****************************************************************/
  96.    
  97. void     lcd_mesg(uint8     x_add, unsigned char * word)   
  98.     {   
  99.          SendCMD(x_add);                               
  100.               while(*word)
  101.               {
  102.                  SendData(*(word++));             
  103.               }
  104.     }
  105. /*************************************************************
  106. *  名稱:initinal()
  107. *  功能:LCD12864字庫初始化
  108. **************************************************************/
  109.    
  110. void     initlcm(void)   
  111.     {   
  112.          delay(200);     
  113.          SendCMD(0x30);                //功能設(shè)置,一次送8位數(shù)據(jù),基本指令集   
  114.          SendCMD(0x0C);                //0000,1100     整體顯示,游標(biāo)off,游標(biāo)位置off   
  115.          SendCMD(0x01);                //0000,0001     清DDRAM   
  116.          SendCMD(0x02);                //0000,0010     DDRAM地址歸位   
  117.          SendCMD(0x80);                //1000,0000     設(shè)定DDRAM 7位地址000,0000到地址計(jì)數(shù)器AC   
  118. }

  119. int main (void)
  120. {
  121.         PINSEL0=0x00000000;
  122. PINSEL1=0X00000000;
  123. PINSEL2&=~(0x00000006);    //設(shè)置所有I/O口為GPIO口
  124. IO0DIR =LCD_CON;
  125. initlcm();                             //12864初始化程序            
  126.         lcd_mesg(0x80,IC_DAT1);
  127.         delay(100);
  128.         uint32 ADC_Data;
  129.         char str[20];
  130.         PINSEL0 = 0x00000005;        // 管腳連接串口
  131.         PINSEL1 = 1 << 28;                // P0.30連接到AD0.3       
  132.         /* 進(jìn)行ADC模塊設(shè)置 */
  133.         AD0CR = (1 << 3)                                                |        // SEL=8,選擇通道3
  134.                         ((Fpclk / 1000000 - 1) << 8)        |        // CLKDIV=Fpclk/1000000-1,轉(zhuǎn)換時(shí)鐘為1MHz
  135.                         (0 << 16)                                                |        // BURST=0,軟件控制轉(zhuǎn)換操作
  136.                         (0 << 17)                                                |        // CLKS=0, 使用11clock轉(zhuǎn)換
  137.                         (1 << 21)                                                |          // PDN=1,正常工作模式
  138.                         (0 << 22)                                                |          // TEST1:0=00,正常工作模式
  139.                         (1 << 24)                                                |        // START=1,直接啟動(dòng)ADC轉(zhuǎn)換
  140.                         (0 << 27);                                                         // 直接啟動(dòng)ADC轉(zhuǎn)換時(shí),此位無效
  141.         delay(1000);
  142.         ADC_Data = AD0DR;                // 讀取ADC結(jié)果,并清除DONE標(biāo)志位
  143.        
  144.         while (1)
  145.         {
  146.                 AD0CR |= 1 << 24;                                        // 進(jìn)行第一次轉(zhuǎn)換
  147.                 while ((ADDR & 0x80000000) == 0);        // 等待轉(zhuǎn)換結(jié)束
  148.                 AD0CR |= 1 << 24;                                        // 再次啟動(dòng)轉(zhuǎn)換
  149.                 while ((AD0DR & 0x80000000) == 0);        // 等待轉(zhuǎn)換結(jié)束
  150.                 ADC_Data = AD0DR;                                        // 讀取ADC結(jié)果
  151.                 ADC_Data = (ADC_Data >> 6) & 0x3ff;
  152.                 ADC_Data = ADC_Data * 2480;                        // 參考電壓經(jīng)過3/4分壓
  153.                 ADC_Data = ADC_Data / 1024;
  154.                 sprintf(str, "%4d mV VIN3", ADC_Data);
  155.                 unsigned char IC_DAT2[] ;
  156.                 char IC_DAT2[]=str[20];
  157.         initlcm();                             //12864初始化程序            
  158.                 lcd_mesg(0x80,IC_DAT1);
  159.         }
  160.         return 0;               
  161. }
  162. /*********************************************************************************************************
  163. **                            End Of File
  164. ********************************************************************************************************/

復(fù)制代碼


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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表