這個是課設:
多通道.doc
(41 KB, 下載次數: 108)
2017-7-13 23:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -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 串行數據輸入、輸出端 P0.6
- const uint32 CS = (1<<9); //P0.9
- unsigned char IC_DAT1[] = "多通道數據采集系統";
- /*************************************************************
- * 名稱:delay()
- * 功能:延時程序
- **************************************************************/
- void delay(uint32 dly)
- {
- uint32 i;
-
- for ( ; dly>0; dly--)
- for (i=0; i<10; i++);
- }
-
- /******************************************************************
- * 名稱:SeddByte()
- * 功能:發送1字節數據
- *******************************************************************/
- 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字節數據
- *******************************************************************/
- 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發送命令
- ****************************************************************/
- void SendCMD(uint8 data)
- {
- SendByte(0xF8);
- SendByte(data&0xF0);
- SendByte((data&0x0F)<<4);
- }
-
- /*************************************************************
- * 名稱:SendData()
- * 功能:向LCD12864發送數據
- **************************************************************/
- 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); //功能設置,一次送8位數據,基本指令集
- SendCMD(0x0C); //0000,1100 整體顯示,游標off,游標位置off
- SendCMD(0x01); //0000,0001 清DDRAM
- SendCMD(0x02); //0000,0010 DDRAM地址歸位
- SendCMD(0x80); //1000,0000 設定DDRAM 7位地址000,0000到地址計數器AC
- }
- int main (void)
- {
- PINSEL0=0x00000000;
- PINSEL1=0X00000000;
- PINSEL2&=~(0x00000006); //設置所有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
- /* 進行ADC模塊設置 */
- AD0CR = (1 << 3) | // SEL=8,選擇通道3
- ((Fpclk / 1000000 - 1) << 8) | // CLKDIV=Fpclk/1000000-1,轉換時鐘為1MHz
- (0 << 16) | // BURST=0,軟件控制轉換操作
- (0 << 17) | // CLKS=0, 使用11clock轉換
- (1 << 21) | // PDN=1,正常工作模式
- (0 << 22) | // TEST1:0=00,正常工作模式
- (1 << 24) | // START=1,直接啟動ADC轉換
- (0 << 27); // 直接啟動ADC轉換時,此位無效
- delay(1000);
- ADC_Data = AD0DR; // 讀取ADC結果,并清除DONE標志位
-
- while (1)
- {
- AD0CR |= 1 << 24; // 進行第一次轉換
- while ((ADDR & 0x80000000) == 0); // 等待轉換結束
- AD0CR |= 1 << 24; // 再次啟動轉換
- while ((AD0DR & 0x80000000) == 0); // 等待轉換結束
- ADC_Data = AD0DR; // 讀取ADC結果
- ADC_Data = (ADC_Data >> 6) & 0x3ff;
- ADC_Data = ADC_Data * 2480; // 參考電壓經過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
- ********************************************************************************************************/
復制代碼
|