极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 122119|回复: 116

Arduino只用一根信号线驱动Usart-GPU串口液晶屏

[复制链接]
发表于 2014-9-14 00:55:28 | 显示全部楼层 |阅读模式
Usart-GPU串口液晶屏自从推出后,由于低廉的价格,迅速得到广大单片机爱好者的青睐,STM32,STC,甚至古老的51系列都没问题;但是最近越来越多用户问Arduino如何使用串口屏,本想Arduino对串口编程非常方便,应该非常简单就可以驱动串口屏,但是实际并非如此,很多用户都卡在这里,于是立即TB下单了几块Arduino开发板,开始研究......
    发现主要难点:
    1、唯一的串口被开发环境占用;
    2、IDE开发环境无法输入中文,使用剪贴板贴入,中文也是UTF8,非串口屏要求的GB2312内码
    3、如何输出浮点数的到串口屏上

Arduino 就一个串口,而且用于和PC上的IDE环境相通信,编译的文件通过串口上传到MCU上,就是说该串口已经被占用了,那如何接串口屏呢?
    经过分析,PC一段主要使用PC(TX)-MCU(RX)这条上行通道;而下行MCU(TX)-PC(RX)这条PC只是接受而已,而串口液晶屏在下行通道的情况下与PC形式一样,因此在接法上出现了前所未有的一根信号线驱动一块液晶屏的现象!

从图上可以看到,单片机板和串口屏只接了3根线,分别是+5V线,GND线,和TX线;


注意:MCU(TX)-串口屏的TX还是RX需要视串口屏的型号而定,由于串口接反只是不起作用而已,因此当不起作用时尝试一下接另外一根线;

---------------------------
制作一个电压表示例:
源程序:

#include"e:\arduino\Udemo\hz.c"
// the setup routine runs once when you press reset:
void setup() {
  Serial.begin(115200);
   while (!Serial) {
    // wait for serial line to be ready
  }
      Serial.print("CLS(0);");
  Serial.print("DS16(20,2,'");Serial.print(hz[1]);Serial.print("',4);");
  Serial.print("DS16(20,22,'");Serial.print(hz[2]);Serial.print("',15);");
  Serial.println("PL(0,40,399,40,1);");Serial.flush();delay(200);

}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  float vol=sensorValue*2.5/1024;
  

  
  Serial.print("DS24(30,100,'");
  Serial.print(hz[0]);
  Serial.print(vol,2);
  Serial.println("V',1);");
  delay(150);        // delay in between reads for stability
}


hz.c:
const char hz[][32]={
"当前电压:",    //0-
"Arduino 电压表演示程序",    //1
"使用Usart GPU串口液晶屏",    //2
};


详细操作请参见WORD文档:
http://pan.baidu.com/share/link?shareid=2873136112&uk=3204894695


以下是串口屏显示的样例:






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-9-14 02:15:28 | 显示全部楼层
有興趣, 請問串口的顯示屏要多少錢?  會比 TFT 更便宜嗎?
我想找一個 3 吋左右的, 可否提供一些資料?
回复 支持 反对

使用道具 举报

发表于 2014-9-14 07:45:33 | 显示全部楼层
果然是,好东西。。{:soso_e102:}
回复 支持 反对

使用道具 举报

发表于 2014-9-14 23:27:51 | 显示全部楼层
不知用softserial是否可以?
回复 支持 反对

使用道具 举报

发表于 2014-9-14 23:52:01 | 显示全部楼层
說明書的測試中說可以支援  2400, 4800 的波特率, 應該沒有問題了.
波特率支持:2400,4800,9600,19200,38400,57600,115200,256000
对应关系:
U0;  //2400
U1;  //4800
U2;  //9600
U3;  //19200
U4;  //38400
U5;  //57600
U6;  //115200
U7;  //256000


而且只是作輸出, 快一點也可以的.
回复 支持 反对

使用道具 举报

发表于 2014-9-15 10:44:01 | 显示全部楼层
显示这么多内容Arduino存的开么? 很神奇的说
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-15 12:48:04 | 显示全部楼层
shihaipeng04 发表于 2014-9-15 10:44
显示这么多内容Arduino存的开么? 很神奇的说


所以才需要串口屏,有批页面的概念,每个页面其实也和arduino一样,分为背景部分(setup 时显示),和 动态部分(LOOP 时显示),而整个背景部分都可以直接存在串口屏的内存中,使用语句SPG(页码)直接显示;
另外,点阵,图片等也都存在串口屏中了,不占用单片机任何信息
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-15 12:53:18 | 显示全部楼层
Super169 发表于 2014-9-14 02:15
有興趣, 請問串口的顯示屏要多少錢?  會比 TFT 更便宜嗎?
我想找一個 3 吋左右的, 可否提供一些資料?

帖子上就是使用的2.8寸的,资料去http://stm32.sinaapp.com 下载
回复 支持 反对

使用道具 举报

发表于 2014-9-15 12:59:40 | 显示全部楼层
感觉很强大,已经下单弄了一块
回复 支持 反对

使用道具 举报

发表于 2014-9-15 20:42:28 | 显示全部楼层
貌似效果不错,头一次听说
回复 支持 反对

使用道具 举报

发表于 2014-9-16 16:08:52 | 显示全部楼层
我买的这种串口屏,用上边的程序显示的还是乱码!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-16 19:48:19 | 显示全部楼层
本帖最后由 apachectl 于 2014-9-16 19:51 编辑
guangliang825 发表于 2014-9-16 16:08
我买的这种串口屏,用上边的程序显示的还是乱码!


请按说明书的一步一步操作,有些地方不要想当然,就一定可以的。

注意,必须使用记事本等编辑器编辑hz.c,要保证这个文件不是utf-8的,不能使用arduino的程序编辑器打开这个文件,否则就是乱码;想一想,为什么要把汉字从主程序中提取出来,就是因为arduino的开发环境不支持GB2312内码,但是avr的gcc编辑器是支持的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-16 19:50:46 | 显示全部楼层
源文件中的2个文件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-9-18 10:30:15 | 显示全部楼层
排针应该打孔才行,买了一块,焊接上可用,但总觉得这样贴在PCB板上焊接很不牢靠
回复 支持 反对

使用道具 举报

发表于 2014-9-18 11:09:07 | 显示全部楼层
只收不发的屏幕肯定是一根信号线。。。囧
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-24 18:33 , Processed in 0.042985 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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