LPC2148的ADC多通道数据采集程序

2019-11-30来源: 51hei关键字:LPC2148  ADC  多通道  数据采集

#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] [2]
关键字:LPC2148  ADC  多通道  数据采集 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic481610.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:LPC1768 MP3录音和循环播放源码
下一篇:LPC1768 GPIO中断实验 八个LED轮流点亮100毫秒

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

Cortex-M3学习LPC1768 - DAC实验
终于逮了个忙里偷闲的机会,就再学一下LPC1768的外围功能吧,循序渐进是学习的基本规则,也许LPC1768的DAC与8位单片机16位单片机里面集成的DAC操作类似,但是既然这是懒猫的学习日志,就顺便把DAC再好好复习一下了,或许能品出个什么味来^_^DAC是Digital to Analog Converter的缩写,中文名就是数模转换器,D/A转换器一般由数码寄存器、模拟电子开关电路、解码网络、求和电路及基准电压等几部分组成。如下图所示:图1-1 DAC原理框图数字量以串行或并行方式输入,存储于数码寄存器中,数码寄存器输出的名位数码分别控制对应的模拟开关,使数码为1的位在位权网络上产生与其值成正比的电流值或电压值,再由求和电路
发表于 2019-12-02
Cortex-M3学习LPC1768 - DAC实验
Cortex-M3学习LPC1768 - TFT实验
自己用的LPC1768的开板带有一块2.4寸的TFT彩色液晶屏,虽然自己工作中还用不过显示屏,但是晚上闲着也是闲着,于是继续玩咱的LPC1768吧。我的开发板上的液晶屏的用的是SPI接口,当然你也可以把它设计成并行口,其接口电路如下所示:话说这个液晶屏的驱动芯片是ILI9325,在网上下载了该芯片的数据手册,好家伙有111页,全是E文呀,没办法,谁让咱是小电工呢,就慢慢啃吧。ILI9325这个芯片的寄存器比较多,不过没关系,我们暂时用到的不是太多,这里只要简要的总结,剩下的还是日后用到了再好好研究吧。1、寄存器03H(Entry Mode),该寄存器主要设置图像的显示模式,包括屏幕的扫描方式(水平扫描或垂直扫描),这直接影响
发表于 2019-12-02
Cortex-M3学习LPC1768 - TFT实验
LPC11XX驱动1602程序_12MHz
LCD.c文件:#include "LPC11XX.h"#include "gpio.h"#include "main.h"#include "Delay.h"#include "LCD.h"/*-----------设置D0-D7为输出口-------------*/void Set_GPIO_Output(void){        LPC_GPIO2->DIR |= (0x1<<0);            
发表于 2019-11-30
LPC1768 GPIO中断实验 八个LED轮流点亮100毫秒
路虎LPC1768开发板 GPIO实验这个例程是将路虎开发板上的八个LED轮流点亮100毫秒,采用SYStick 定时器中断方式做延时  系统时钟设置在100MHZ使用时,短路JP8跳线使能LED。单片机源程序如下:/**************************************************************************//*** @file     main.c* @brief    CMSIS Cortex-M3 GPIO example*           a LED using
发表于 2019-11-30
LPC1768 MP3录音和循环播放源码
LPC1768  2个程序,一个实现录音 一个实现循环播放** 实验名:MP3** KEIL MDK-ARM Standard Version:4.6** 使用外设: 3.2寸LCD**********************************************************************************//**********************************************************************************测试说明:    此程序为MP3测试例程将MP3文件拷入到2G内存卡后,插上3.2寸液晶屏
发表于 2019-11-30
单片机+ADC0832简易数字电压表proteus仿真与程序源码
ADC0832电压表仿真原理图如下单片机电压表源程序如下:#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char        sbit CS =P3^4;              //片选使能端sbit DI =P1^1;               //数据信号输入端,选择通道
发表于 2019-12-05
单片机+ADC0832简易数字电压表proteus仿真与程序源码
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved