历史上的今天
返回首页

历史上的今天

今天是:2024年10月19日(星期六)

正在发生

2019年10月19日 | 硬件之路-串行LCD12864之MSP430简单实现

2019-10-19 来源:eefocus

串行LCD12864引脚接法:

180144_s4QJ_1413857.jpg?imageView2/2/w/550

180144_s4QJ_1413857.jpg?imageView2/2/w/550


实现代码(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 for(i=0;i<10;i++);

}

/**

 * 函数名: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        for(i=0;i<10;i++);

}

/**

 * 函数名: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);

    }

}


推荐阅读

史海拾趣

ELM [ELM Electronics]公司的发展小趣事

ELM Electronics成立于XXXX年,由一群富有创新精神和电子技术专长的工程师创立。初创时期,公司专注于设计和生产高质量的电子元器件,以满足日益增长的电子产品市场需求。通过不断的技术创新和严格的质量控制,ELM逐渐在电子行业中树立了良好的口碑。

AverLogic公司的发展小趣事

AverLogic公司深知人才是企业发展的核心竞争力。因此,公司一直致力于人才培养和团队建设。通过定期的培训和学习,公司不断提升员工的技能和素质,打造了一支高效、专业的团队。这支团队在产品研发、市场拓展等方面都发挥了重要作用,为公司的持续发展提供了有力的保障。

Altus Technology Inc公司的发展小趣事

Altus深知人才是企业发展的根本。因此,公司一直注重人才培养和引进工作。通过建立完善的培训体系和激励机制,Altus吸引了大量优秀人才加入公司,并为他们提供了广阔的发展空间和职业晋升机会。这些人才在公司的各个岗位上发挥着重要作用,推动了公司的技术创新和市场拓展。同时,Altus还注重员工的福利待遇和文化建设,营造了积极向上、团结和谐的工作氛围。

HBControls公司的发展小趣事
确认冰箱电源是否正常,显示屏是否有背光。
Communications & Power Industries公司的发展小趣事

随着环保意识的日益增强,CPI积极响应国家号召,将绿色环保理念融入公司的经营发展中。公司加大了对环保技术的研发投入,推出了一系列低能耗、低排放的通信设备和电源产品。同时,CPI还加强了对生产过程的环保管理,通过引进先进的环保设备和技术,实现了生产废弃物的减量化、资源化和无害化处理。这些举措不仅提升了CPI的社会形象,也为公司的可持续发展注入了新的动力。

Freeport Resources Enterprises Corp公司的发展小趣事

随着全球对环保和可持续发展的重视,Freeport Resources将这一理念融入到公司的发展战略中。公司投入大量资金进行环保设施建设和生产技术改造,致力于减少开采和加工过程中的环境污染和资源浪费。同时,Freeport Resources还积极参与社会公益活动,推动矿业与社区的和谐共生。这些举措不仅提升了公司的社会形象,也为其在电子材料市场的长期发展奠定了坚实的基础。

问答坊 | AI 解惑

wince 启动拍照功能实现问题

各位,小弟想请教一下, 在wince 5.0 或6.0 中怎么启动拍照功能, 最好是用C# 的,请各位帮忙,谢谢!…

查看全部问答>

在CE6.0下,用6410平台去实现KITL功能怎么老是成功不了?三星手册是已经实现了的.

在CE6.0下,用6410平台去实现KITL功能怎么老是成功不了?三星手册是已经实现了的.…

查看全部问答>

如何进行ARM+Linux的学习?

我是一个初学者,计划学习的是基于ARM处理器的嵌入式开发,具体做一个GPS导航系统 现在是有ARM9实验箱。 现在刚刚学习,有些迷茫,现阶段是不是要详细理解s3c2410处理器的各个架构,然后再学习OS呢? 如何进行系统的学习呢? 请高手给予指点, ...…

查看全部问答>

刚来提点建议!

刚来论坛,看了看这里的资料非常多哈,建议版主分个板块专门用来放资料,技术交流的放一个板块!这样讨论问题和下载资料都会非常方便!…

查看全部问答>

关于NXP1768CAN模块的库函数

有哪位高手做过NXP1768CAN模块的库参数??求教!!!…

查看全部问答>

请高手解决 RS485 通信问题

请高手解决 RS485 通信问题,一台主机,两台从机,用作动作控制和数据获取。 开发平台都是 C8051F020, KEIL C,点对点通信均正常,联合调试动作几次后通信故障,不能从从设备获取数据。请有 RS485 网通信开发的技术人员帮助解决问题;有意者请于201 ...…

查看全部问答>

ZigBee与西门子200PLC通信?

有人用ZigBee与西门子200PLC实现通信的吗?小弟刚接触  希望各位指点一下~~~~~~~~…

查看全部问答>

430AD转换精度问题

大家好,我用430F149 AD转换后的误差在0.3V,这个在430的误差范围内吗,有真么大? 另外在中间加电压跟随会提高精度么…

查看全部问答>