最近也做了个OLED的温度计,方案是
ZLG Easy ARM1138+18B20+2.4OLED双色屏+LT3465
本来想等CP2102的USB转串口做完,可以在电脑上记录分析温度以后才传方案,
现在既然楼主先贴了,那我也来凑凑热闹吧。
(原文件名:Photo_0001.jpg)
(原文件名:Photo_0003.jpg)
几个比较关键的代码:
OLED屏幕定义,完全根据ZLG的TFT驱动来搞,没有更改,RS接A0的位置,其他都能对上号。
/*********************************************************************************************************
硬件相关接口定义
*********************************************************************************************************/
#define LCD_PERI SYSCTL_PERIPH_GPIOA | SYSCTL_PERIPH_GPIOB
#define LCD_RS_BASE GPIO_PORTB_BASE /* RS - PB0 */
#define LCD_RS_PIN GPIO_PIN_0
#define LCD_CS_BASE GPIO_PORTB_BASE /* CS - PB1 */
#define LCD_CS_PIN GPIO_PIN_1
#define LCD_WR_BASE GPIO_PORTB_BASE /* WR - PB2 */
#define LCD_WR_PIN GPIO_PIN_2
#define LCD_RD_BASE GPIO_PORTB_BASE /* RD - PB3 */
#define LCD_RD_PIN GPIO_PIN_3
#define LCD_RST_BASE GPIO_PORTB_BASE /* RST - PB4 */
#define LCD_RST_PIN GPIO_PIN_4
#define DATA_PORT_BASE GPIO_PORTA_BASE /* DATA[7:0] - PA[7:0] */
#define DATA_PORT_PIN 0xFF
/*********************************************************************************************************
硬件相关的定义
*********************************************************************************************************/
#define LCD_CS_BASE_PIN LCD_CS_BASE,LCD_CS_PIN
#define LCD_WR_BASE_PIN LCD_WR_BASE,LCD_WR_PIN
#define LCD_RS_BASE_PIN LCD_RS_BASE,LCD_RS_PIN
#define LCD_RD_BASE_PIN LCD_RD_BASE,LCD_RD_PIN
#define LCD_RST_BASE_PIN LCD_RST_BASE,LCD_RST_PIN
#define DATA_PORT_BASE_PIN DATA_PORT_BASE,DATA_PORT_PIN
/*********************************************************************************************************
硬件相关的位操作定义
*********************************************************************************************************/
#define LCD_RS HWREG(LCD_RS_BASE + (GPIO_O_DATA + (LCD_RS_PIN << 2)))
#define LCD_CS HWREG(LCD_CS_BASE + (GPIO_O_DATA + (LCD_CS_PIN << 2)))
#define LCD_WR HWREG(LCD_WR_BASE + (GPIO_O_DATA + (LCD_WR_PIN << 2)))
#define LCD_RD HWREG(LCD_RD_BASE + (GPIO_O_DATA + (LCD_RD_PIN << 2)))
#define LCD_RST HWREG(LCD_RST_BASE + (GPIO_O_DATA + (LCD_RST_PIN << 2)))
#define DATA_PORT HWREG(DATA_PORT_BASE + (GPIO_O_DATA + (DATA_PORT_PIN << 2)))
#define DATA_PROT_INPUT_SET() HWREG(DATA_PORT_BASE + GPIO_O_DIR) = 0 /* 设置数据口为输入方向 */
#define DATA_PROT_OUTPUT_SET() HWREG(DATA_PORT_BASE + GPIO_O_DIR) = 0xFF
/* 设置数据口为输出方向 */
/*********************************************************************************************************
** 函数名称: __writeData8
** 功能描述: (向当前地址的寄存器)写8位数据
** 输 入: ucData 要写入液晶的8位数据
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
** 返 回:无
** 作 者:
** 日 期:
**------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void __writeData8(INT8U ucData) /* 写8位数据函数 */
{
LCD_RS = 0xFF; /* 拉高RS */
LCD_CS = 0x00; /* 拉低CS */
LCD_WR = 0x00; /* 拉低WR */
DATA_PORT = ucData;