查看: 2311|回复: 0

[原创] LPC824基于mbed系统的设计

[复制链接]

该用户从未签到

2

主题

8

帖子

0

注册会员

Rank: 2

积分
59
最后登录
2018-11-25
发表于 2017-4-26 22:15:20 | 显示全部楼层 |阅读模式
           很久没有发帖了,现在展示下我用LPC824lite的运用。
           我从2015年8月分接触mbed平台,开始不觉得怎么样,现在觉得利用mbed平台进行原理开发确实很方便。usb插上电脑,在论坛上找到lPC824LITE的驱动,就可以把从mbed编译好的bin文件直接拖到lpc824lite模拟好的U盘中去,复位后就可以运行新的程序了。
        mbed是arm在线编译平台,支持的开发板并不是很多,但支持lpc824lite。
       注意:刚收到的lpc824lite u盘只有20K左右,需要更新固件U盘显示64k大小左右。
       编译后的bin固件32K左右,可以下载到板子中。

  1. <P> </P>
复制代码

#include "mbed.h"
DigitalIn button(P0_1, PullUp);
//adc采集电压函数
float meas;   
long ADC_VALUE[3];
AnalogIn ADC_MQ2(P0_6);       //ADC1,MQ2空气质量检测
AnalogIn ADC_MQ3(P0_14);      //ADC2,MQ2空气质量检测
AnalogIn analog_value(P0_23); // ADC3,可调电位器
void adc_data()
{
        meas = ADC_MQ2.read();
        ADC_VALUE[0] = (long)(meas * 3300);      
        meas = ADC_MQ3.read();
        ADC_VALUE[1] = (long)(meas * 3300);
        meas = analog_value.read();
        ADC_VALUE[2] = (long)(meas * 3300);      
}
//oled显示函数
#include "CriusOLED.h"
DigitalOut myled1(P0_27);
DigitalOut myled2(P0_13);
Ticker ticker;
float sampleTime = 1.0;
long times;
char buffer1[33];
#define  bufferclear  "                "
void am2320_dat();
void bme280_dat();
void oled_ticker()
{
        //每隔一秒显示一次
        myled1=!myled1;
        adc_data();
        sendStrXY(bufferclear,1,0);  
        snprintf(buffer1,sizeof(buffer1), "%ds %dmV %dmV %dmV",times++,ADC_VALUE[0],ADC_VALUE[1],ADC_VALUE[2]);
        sendStrXY(buffer1,0,0);  
        am2320_dat();
        bme280_dat();
         
}
void oled_init()
{
    i2c.frequency(400000);
    init_OLED();
    displayOn();
    reset_display();
    ticker.attach(&oled_ticker, sampleTime);  
}
//AM2320初始化
#include  "AM2320.h"
AM2320 am2320(i2c);
int h;
int t;
void am2320_dat()
{
    h = am2320.humidity();
    t = am2320.temperature();
    snprintf(buffer1,sizeof(buffer1), "%2d.%dc %2d.%d%%",t/10,t%10,h/10,h%10);
    sendStrXY(buffer1,4,0);
}
#include "BME280.h"
BME280 sensor(I2C_SDA, I2C_SCL);
void bme280_dat()
{
  snprintf(buffer1,sizeof(buffer1), "%2.2fC %6.0fPa",sensor.getTemperature(), sensor.getPressure()*100);
  sendStrXY(buffer1,5,0);
}
Serial pc(P0_4,P0_0,921600);
//w5500初始化函数
#include "WIZnetInterface.h"
#define USE_DHCP    1
#define LOOPBACKPORT    80
const char * IP_Addr    = "192.168.0.194";
const char * IP_Subnet  = "255.255.255.0";
const char * IP_Gateway = "192.168.0.1";
unsigned char MAC_Addr[6] = {0x00,0x08,0xDC,0x12,0x34,0x56};
SPI spi(P0_26,P0_25,P0_24);
WIZnetInterface ethernet(&spi,P0_16,P0_5);
void W5500_init()
{
        #if USE_DHCP
        int ret = ethernet.init(MAC_Addr);
        #else
        int ret = ethernet.init(MAC_Addr,IP_Addr,IP_Subnet,IP_Gateway);
        #endif
        myled2=1;
        if (!ret) {
            pc.printf("Initialized, MAC: %s\r\n", ethernet.getMACAddress());
            ret = ethernet.connect();
            if (!ret) {
                pc.printf("IP: %s, MASK: %s, GW: %s\r\n",
                          ethernet.getIPAddress(), ethernet.getNetworkMask(), ethernet.getGateway());
                sendStrXY("IP:",2,0);
                sendStrXY(ethernet.getIPAddress(),2,3);            
            } else {
                pc.printf("Error ethernet.connect() - ret = %d\r\n", ret);
                exit(0);
            }
        } else {
            pc.printf("Error ethernet.init() - ret = %d\r\n", ret);
            exit(0);
        }      
}
int main() {
   
    pc.printf("Start\r\n");
    char buffer[256];
    oled_init();
    wait(5);
    while(1)
    {
        W5500_init();
        TCPSocketServer server;
        server.bind(LOOPBACKPORT);
        server.listen();
        while (1) {
            pc.printf("\nWait for new connection...\r\n");
            TCPSocketConnection client;
            server.accept(client);
            client.set_blocking(false, 0);
            pc.printf("Connection from: %s\r\n", client.get_address());
            sendStrXY("C:",3,0);  
            sendStrXY(client.get_address(),3,3);
            while (client.is_connected() == true) {
                myled2=0;  
                int n = client.receive(buffer, sizeof(buffer));
                if(n > 0)
                    client.send_all(buffer, n);
                if(client.is_fin_received())
                    client.close();
            }
            pc.printf("Disconnected.\r\n");
            sendStrXY(bufferclear,3,0);
            myled2=1;
        }
    }
}



回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-25 08:51 , Processed in 0.076538 second(s), 19 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表