串行LCD12864引脚接法:
180144_s4QJ_1413857.jpg
实现代码(MSP430):
/*
* 12864.c
* Created on: 2014-7-15
* Author: bazingagain
*/
#include #include "12864.h" /** * 函数名:delay * 功能:延时函数,延时时间为100us * x * 参数:x * 返回值:无 */ void delay(uint x) { uint i,j; for(j=0;j } /** * 函数名:sendByte * 功能:向LCD12864串行发送1BYET数据 * 参数:command * 返回值:无 */ void sendByte(uchar command) { uchar i; for(i=0;i<8;i++) { if((command< { P2OUT |= BIT1; //sid=1; } else { P2OUT &= (~BIT1); //sid=0; } P2OUT &= (~BIT2); //SCLK=0 P2OUT |= BIT2; //SCLK=1 } } /** * 函数名:writeCom * 功能:向LCD1264写指令函数 * 参数:command * 返回值:无 */ void writeCom(unsigned char command) { // P2OUT |= BIT0; //CS =P20 CS=1 sendByte(0xf8); //传送指令 sendByte(command & 0xf0); sendByte((command << 4) & 0xf0); delay(2); } /** * 函数名:writeData * 功能:向LCD1286写数据函数 * 参数:data * 返回值:无 */ void writeData(unsigned char data) { // P2OUT |= BIT0; //CS=1; sendByte(0xfa); sendByte(data & 0xf0); sendByte((data << 4) & 0xf0); delay(2); } /** * 函数名:lcd_init * 功能:初始化LCD12864函数 * 参数:无 * 返回值:无 */ void lcd_init(void) { P2DIR |= BIT1 + BIT2; //SID , SCLK /*delay(20000); writeCom(0x30); //设置8位数据接口,基本指令模式 delay(50); writeCom(0x0c); //整体显示开,游标关,反白关 delay(50);*/ writeCom(0x30); //设置8位数据接口,基本指令模式 writeCom(0x20); //清DDRAM writeCom(0x06); //游标及显示右移一位 writeCom(0x0c); //整体显示开,游标关,反白关 writeCom(0x01); //写入空格清屏 writeCom(0x80); //设置首次显示位置 } /** * 函数名:displayOn12864 * 功能:LCD12864显示字符函数 * 参数:*s, addr * 返回值:无 */ void displayOn12864(char *s, unsigned char addr) { writeCom(addr); while(*s>0) { writeData(*s); s++; delay(50); } } 51 mcu 写法: #include /* * 12864.c * Created on: 2015-3-31 * Author: bazingagain */ #include "12864.h" sbit RW = P1^0; sbit EN = P1^1; /** * 函数名:delay * 功能:延时函数,延时时间为100us * x * 参数:x * 返回值:无 */ void delay(uint x) { uint i,j; for(j=0;j } /** * 函数名:sendByte * 功能:向LCD12864串行发送1BYET数据 * 参数:command * 返回值:无 */ void sendByte(uchar command) { uchar i; for(i=0;i<8;i++) { if((command< { RW = 1; //sid=1; } else { RW = 0; //sid=0; } EN = 0; //SCLK=0 EN = 1; //SCLK=1 } } /** * 函数名:writeCom * 功能:向LCD1264写指令函数 * 参数:command * 返回值:无 */ void writeCom(unsigned char command) { RW = 1; sendByte(0xf8); //传送指令 sendByte(command & 0xf0); sendByte((command << 4) & 0xf0); delay(2); } /** * 函数名:writeData * 功能:向LCD1286写数据函数 * 参数:data * 返回值:无 */ void writeData(unsigned char ddata) { RW = 1; sendByte(0xfa); sendByte(ddata & 0xf0); sendByte((ddata << 4) & 0xf0); delay(2); } /** * 函数名:lcd_init * 功能:初始化LCD12864函数 * 参数:无 * 返回值:无 */ void lcd_init(void) { /*delay(20000); writeCom(0x30); //设置8位数据接口,基本指令模式 delay(50); writeCom(0x0c); //整体显示开,游标关,反白关 delay(50);*/ writeCom(0x30); //设置8位数据接口,基本指令模式 writeCom(0x20); //清DDRAM writeCom(0x06); //游标及显示右移一位 writeCom(0x0c); //整体显示开,游标关,反白关 writeCom(0x01); //写入空格清屏 writeCom(0x80); //设置首次显示位置 } /** * 函数名:displayOn12864 * 功能:LCD12864显示字符函数 * 参数:*s, addr * 返回值:无 */ void displayOn12864(char *s, unsigned char addr) { writeCom(addr); while(*s>0) { writeData(*s); s++; delay(50); } }
上一篇:TI MSP430 如何使用 DCO 倍频
下一篇:MSP430F5529&LCD1602程序
推荐阅读最新更新时间:2024-11-06 18:25
设计资源 培训 开发板 精华推荐
- LT3587 的典型应用 - 高压单片式逆变器和双路升压
- DC905A、LT3491ESC8 演示板固定频率升压电流模式 DC-DC 转换器
- AM1DR-0505SZ 5V 1 瓦 DC-DC 转换器的典型应用
- 使用 Richtek Technology Corporation 的 RT8172A 的参考设计
- TS488 120mW 立体声耳机放大器典型应用
- 使用 LTC2367IMS-16、16 位、500ksps SAR ADC 的典型应用
- 用于视频/成像的 ±5V 模拟放大
- as5600-16mm
- 使用 Infineon Technologies AG 的 IRU3137 的参考设计
- LTC6995 TimerBlox 的典型应用:长定时器、低频振荡器