#include <UTFT.h> UTFT myGLCD(YYROBOT_TFT144,A2,A1,A5,A4,A3); // Remember to change the model parameter to suit your display module! //YYROBOT_TFT144 屏幕型号,不用修改 //SDA----A2 //SCL----A1 //CS-----A5 //RST----A4 //RS----A3 //LED---A0 UTFT库里面设定的,如果需要修改需要修改库文件 extern uint8_t SmallFont[];//原始文件在库文件的DefaultFonts.c中 extern uint8_t BigFont[];//原始文件在库文件的DefaultFonts.c中 extern uint8_t SevenSegNumFont[];//原始文件在库文件的DefaultFonts.c中 const uint8_t tfont16[] = { 0x10,0x04,0x1F,0xFC,0x10,0x84,0x10,0x80,0x10,0x80,0x10,0x80,0x0F,0x00,0x00,0x00,/*"P",0*/ 0x10,0x04,0x1F,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x1F,0xFC,0x10,0x04,0x00,0x00,/*"M",1*/ 0x00,0x00,0x0E,0x0C,0x10,0x14,0x10,0x24,0x10,0x44,0x11,0x84,0x0E,0x0C,0x00,0x00,/*"2",2*/ 0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*".",3*/ 0x00,0x00,0x1F,0x98,0x10,0x84,0x11,0x04,0x11,0x04,0x10,0x88,0x10,0x70,0x00,0x00,/*"5",4*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/ 0x08,0x20,0x06,0x20,0x40,0x7E,0x31,0x80,0x04,0x20,0x18,0x40,0x10,0x80,0x13,0xFF, 0x1C,0x02,0xF3,0x84,0x10,0x60,0x10,0x50,0x14,0x88,0x19,0x04,0x00,0x02,0x00,0x00,/*"浓",6*/ 0x00,0x02,0x00,0x0C,0x3F,0xF1,0x24,0x01,0x24,0x21,0x24,0x32,0x3F,0xAA,0xA4,0xA4, 0x64,0xA4,0x24,0xA4,0x3F,0xAA,0x24,0x32,0x24,0x01,0x24,0x01,0x20,0x01,0x00,0x00,/*"度",7*/ }; #define PM2_5Serial Serial1 //用于接收PM2.5数据 //本例程使用MEGA2560,有Serial1,若使用UNO,请将这里修改为Serial //并且把DebugSerial.begin(9600);修改为DebugSerial.begin(2400); //串口界面通过2400波特率观看数据 #define DebugSerial Serial //用于把数据通过串口界面返回 byte buffer[7] = { }; int count = 0; bool bufferComplete = false; void setup() { PM2_5Serial.begin(2400); DebugSerial.begin(9600); randomSeed(analogRead(0)); // Setup the LCD myGLCD.InitLCD();//初始化液晶 myGLCD.InitLCD();//初始化两次有利于系统稳定 myGLCD.InitLCD(PORTRAIT); myGLCD.setFont(SmallFont);//设置字体为SmallFont格式 //ChineseFont Test 16*16自定义汉字测试 myGLCD.clrScr(); myGLCD.setFont(SmallFont); myGLCD.print("ug/m3", RIGHT, 100); //打印 Show_CH_Font16(0,10,0); Show_CH_Font16(16,10,1); Show_CH_Font16(32,10,2); Show_CH_Font16(48,10,3); Show_CH_Font16(64,10,4); //SegNum Test myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(0, 0, 0); } void loop() { int ppm; int count_sum = 0; long sum = 0; while (count_sum < 10) { while (PM2_5Serial.available() > 0) { char inChar = (char)PM2_5Serial.read(); buffer[count] = (byte)inChar; // DebugSerial.print("count="); // DebugSerial.println(count); // // DebugSerial.print("buffer[count]="); // DebugSerial.println(buffer[count],HEX); if (buffer[count] == 0xAA) { count = 0; // DebugSerial.println("start"); } else if (buffer[count] == 0xFF && buffer[0] == 0xAA) { bufferComplete = true; // DebugSerial.println("bufferComplete = true;"); } count++; if (count >= 7) { count = 0; } } //把接收到的数据转发出来 if (bufferComplete == true) { bufferComplete = false; for (int i = 0 ; i < 7 ; i++) { DebugSerial.print(buffer[i], HEX); DebugSerial.print(","); } DebugSerial.println(""); //处理数据 float v_out = 0; v_out = (float)((buffer[1] * 256) + buffer[2]) * 5 / 1024; DebugSerial.print("v_out = "); DebugSerial.println(v_out); int ppm = v_out * 1000 * 0.5; //单位为ug/m3 DebugSerial.print("ppm = "); DebugSerial.print(ppm); DebugSerial.println("ug/m3"); if(ppm >= 0) { count_sum++; sum += ppm; } } } sum /= 10; DebugSerial.println("***********"); DebugSerial.print("sum = "); DebugSerial.print(sum); DebugSerial.println("ug/m3"); DebugSerial.println("***********"); myGLCD.setFont(SevenSegNumFont); myGLCD.printNumI(sum, 0, 40, 4, '0');//显示数值是i,位置x=0,y=40,长度4,空位置填充字符0 delay(500); } void Show_CH_Font16(int x,int y,int FontPos) { char temp,t,t1,k; int y0=y; int HZnum; for(t=0;t<32;t++)//每个16*16的汉字点阵 有32个字节 { temp=tfont16[t+32*FontPos]; for(t1=0;t1<8;t1++) { if(temp&0x80) { myGLCD.setColor(255, 255, 255);//FontColor myGLCD.drawPixel(x,y); } else { myGLCD.setColor(0, 0, 0);//BackColor myGLCD.drawPixel(x,y); } temp<<=1; y++; if((y-y0)==16) { y=y0; x++; break; } } } } |
求分享 |
yjx189 发表于 2016-4-30 16:07 你好,求打包 |
dadangjia 发表于 2016-6-4 01:38 说的什么啊? |
可以用,我用了10个pcf8574 iic模块1602可以正常使用,很简单的。我采用的是ds1302代码,库文件可以在网上找,大多类似。 |
楼上的先生,再仔细一看你上传的程序,是一个采用1302的时钟源代码啊! |
dadangjia 发表于 2016-5-1 16:34 谢谢,但是I2C的板子很难伺候,我网购了2块I2C转接板,用时一周,把网上能搜到,能问到的所有办法都试过了,结果是1602屏不能正常显示,,最后又返回来使用四线式连接,才解决的问题!!去他地吧I2C!! |
|
本帖最后由 yjx189 于 2016-4-30 16:50 编辑 下一步打算用手头就有的89C2051单片机,加上1602显示屏,使用坛友送我的SP200S编程器写程序,做一个能测量电感,电容的单片机LC表!这样的LC表还是有一定的使用价值的! |
yjx189 发表于 2016-4-30 16:07 谢谢版主先生的在此加分, |
admin 发表于 2016-4-16 22:08 谢谢版主!但他那个似乎是51单片机的,而我用的是ATMEGA328P的单片机芯片,需要的是Arduino的源程序! |