標(biāo)題:
LPC2148的ADC多通道數(shù)據(jù)采集程序
[打印本頁]
作者:
菱亂成風(fēng)
時間:
2017-7-14 00:00
標(biāo)題:
LPC2148的ADC多通道數(shù)據(jù)采集程序
這個是課設(shè):
多通道.doc
(41 KB, 下載次數(shù): 108)
2017-7-13 23:59 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
#include "config.h"
#include "stdio.h"
#define GPIOSET(PIN) IO0SET = PIN // 方便修改置位端口
#define GPIOCLR(PIN) IO0CLR = PIN // 方便修改清位端口
#define LCD_CON 0x00000250 // 液晶顯示控制字
#define E_CLK (1<<4) //clock input 同步時鐘輸入端 P0.4
const uint32 RW_SID= (1<<6); //data input/output 串行數(shù)據(jù)輸入、輸出端 P0.6
const uint32 CS = (1<<9); //P0.9
unsigned char IC_DAT1[] = "多通道數(shù)據(jù)采集系統(tǒng)";
/*************************************************************
* 名稱:delay()
* 功能:延時程序
**************************************************************/
void delay(uint32 dly)
{
uint32 i;
for ( ; dly>0; dly--)
for (i=0; i<10; i++);
}
/******************************************************************
* 名稱:SeddByte()
* 功能:發(fā)送1字節(jié)數(shù)據(jù)
*******************************************************************/
void SendByte(uint8 data)
{
uint8 i;
IO0SET=CS;
for(i=0;i<8;i++)
{
IO0CLR=E_CLK ;delay(5);
if(data&0x80)
{
IO0SET=RW_SID;delay(5);
}
else IO0CLR=RW_SID;
{
IO0SET=E_CLK;delay(5);
}
data=data<<1;
}
IO0CLR=CS;
}
/******************************************************************
* 名稱:ReceieveByte()
* 功能:接收1字節(jié)數(shù)據(jù)
*******************************************************************/
unsigned char ReceieveByte(void)
{
uint8 i,d1,d2;
for(i=0;i<8;i++)
{
IO0CLR=E_CLK;delay(5);
IO0SET=E_CLK;delay(5);
if(RW_SID)d1++;
d1=d1<<1;
}
for(i=0;i<8;i++)
{
IO0CLR=E_CLK;delay(5);
IO0SET=E_CLK;delay(5);
if(RW_SID)d2++;
d2=d2<<1;
}
return (d1&0xF0+d2&0x0F);
}
/***************************************************************
* 名稱:SendCMD()
* 功能:向LCD12864發(fā)送命令
****************************************************************/
void SendCMD(uint8 data)
{
SendByte(0xF8);
SendByte(data&0xF0);
SendByte((data&0x0F)<<4);
}
/*************************************************************
* 名稱:SendData()
* 功能:向LCD12864發(fā)送數(shù)據(jù)
**************************************************************/
void SendData(uint8 data)
{
SendByte(0xFA);
SendByte(data&0xF0);
SendByte((data&0x0F)<<4);
}
/****************************************************************
* 名稱:lcd_mesg()
* 功能:在LCD12864上顯示漢字
*****************************************************************/
void lcd_mesg(uint8 x_add, unsigned char * word)
{
SendCMD(x_add);
while(*word)
{
SendData(*(word++));
}
}
/*************************************************************
* 名稱:initinal()
* 功能:LCD12864字庫初始化
**************************************************************/
void initlcm(void)
{
delay(200);
SendCMD(0x30); //功能設(shè)置,一次送8位數(shù)據(jù),基本指令集
SendCMD(0x0C); //0000,1100 整體顯示,游標(biāo)off,游標(biāo)位置off
SendCMD(0x01); //0000,0001 清DDRAM
SendCMD(0x02); //0000,0010 DDRAM地址歸位
SendCMD(0x80); //1000,0000 設(shè)定DDRAM 7位地址000,0000到地址計(jì)數(shù)器AC
}
int main (void)
{
PINSEL0=0x00000000;
PINSEL1=0X00000000;
PINSEL2&=~(0x00000006); //設(shè)置所有I/O口為GPIO口
IO0DIR =LCD_CON;
initlcm(); //12864初始化程序
lcd_mesg(0x80,IC_DAT1);
delay(100);
uint32 ADC_Data;
char str[20];
PINSEL0 = 0x00000005; // 管腳連接串口
PINSEL1 = 1 << 28; // P0.30連接到AD0.3
/* 進(jìn)行ADC模塊設(shè)置 */
AD0CR = (1 << 3) | // SEL=8,選擇通道3
((Fpclk / 1000000 - 1) << 8) | // CLKDIV=Fpclk/1000000-1,轉(zhuǎn)換時鐘為1MHz
(0 << 16) | // BURST=0,軟件控制轉(zhuǎn)換操作
(0 << 17) | // CLKS=0, 使用11clock轉(zhuǎn)換
(1 << 21) | // PDN=1,正常工作模式
(0 << 22) | // TEST1:0=00,正常工作模式
(1 << 24) | // START=1,直接啟動ADC轉(zhuǎn)換
(0 << 27); // 直接啟動ADC轉(zhuǎn)換時,此位無效
delay(1000);
ADC_Data = AD0DR; // 讀取ADC結(jié)果,并清除DONE標(biāo)志位
while (1)
{
AD0CR |= 1 << 24; // 進(jìn)行第一次轉(zhuǎn)換
while ((ADDR & 0x80000000) == 0); // 等待轉(zhuǎn)換結(jié)束
AD0CR |= 1 << 24; // 再次啟動轉(zhuǎn)換
while ((AD0DR & 0x80000000) == 0); // 等待轉(zhuǎn)換結(jié)束
ADC_Data = AD0DR; // 讀取ADC結(jié)果
ADC_Data = (ADC_Data >> 6) & 0x3ff;
ADC_Data = ADC_Data * 2480; // 參考電壓經(jīng)過3/4分壓
ADC_Data = ADC_Data / 1024;
sprintf(str, "%4d mV VIN3", ADC_Data);
unsigned char IC_DAT2[] ;
char IC_DAT2[]=str[20];
initlcm(); //12864初始化程序
lcd_mesg(0x80,IC_DAT1);
}
return 0;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1