在线时间9 小时
UID3115671
注册时间2015-9-18
NXP金币0
该用户从未签到
注册会员

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