硬件之路-串行LCD12864之MSP430简单实现

发布者:EnchantedDream最新更新时间:2019-10-19 来源: eefocus关键字:硬件之路  串行LCD12864  MSP430 手机看文章 扫描二维码
随时随地手机看文章

串行LCD12864引脚接法:

180144_s4QJ_1413857.jpg

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 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);

    }

}


关键字:硬件之路  串行LCD12864  MSP430 引用地址:硬件之路-串行LCD12864之MSP430简单实现

上一篇:TI MSP430 如何使用 DCO 倍频
下一篇:MSP430F5529&LCD1602程序

推荐阅读最新更新时间:2024-11-06 18:25

基于MSP430的车体自动调平系统
随着国防技术的发展,根据任务需求,越来越多的军用武器需要随时变更工作地点。为了保证这些军用武器的机动性能,往往以载车为运输载体,如火箭炮这样的大型武器就被安装在载车上。载车到达目的地后,借助平台快速将武器架设调至水平而后工作,工作完成后平台能够快速地撤收、转移。既保证了武器的工作性能,又提高了机动性。 传统上,主要依靠人工手动完成平台的水平度调节,这需要一部分人员手动调节千斤顶,另外一部分人员观察水平仪的水泡位置。这种调平方式费时费力,且精度低、抗倾覆能力差。随着调平时间和调平精度要求的提高,过去的调平方式已远远不能满足实际情况的需要,所需时间短、精度高、抗倾覆能力强的自动调平控制技术应运而生。 在军用方面,自动调平控制系统
[单片机]
基于<font color='red'>MSP430</font>的车体自动调平系统
MSP430中用位段定义自己的标志
在编写程序中,经常需要自己定义标志(位)。如果每个标志占用一个字节,会占用很大空间,可以用位段来实现,把若干个标志集中在一个存储单元中。 1.位段的定义 关于位段的定义,就不多说了,去查阅任何一本C语言的书都可以查到 2.微处理器中标志位的定义 对于MSP430,是16位处理器,可以一次读取16位的数据,标志位也可定义为16位的。 下面的定义将位段和共用体结合在一起用,因为共用体的长度取决于最长成员的长度,因此,可以在共用体中声明一个int成员,对它清0则可以清除整个标志字(覆盖)。 union FLAG { unsigned int BYTE; struct { unsigned b0:1; u
[单片机]
MSP430-中断事件介绍
MSP430在没有事件发生时进入低功耗模式,事件发生时,通过中断唤醒CPU,事件处理完毕后,CPU再次进入低功耗状态。由于CPU的运算速度和退出低功耗的速度很快,所以在应用中,CPU大部分时间都处于低功耗状态。 MSP430的中断分为3种:系统复位、不可屏蔽中断、可屏蔽中断。 (1)系统复位的中断向量为0xFFFE。 (2)不可屏蔽中断的中断向量为0xFFFC。响应不可屏蔽中断时,硬件自动将OFIE、NMIE、ACCVIE复位。软件首先判断中断源并复位中断标志,接着执行用户代码。退出中断之前需要置位OFIE、NMIE、ACCVIE,以便能够再次响应中断。需要特别注意点:置位OFIE、NMIE、 ACCVIE后,必须立即退出
[单片机]
MSP430单片机控制IO口操作-LED灯闪烁
//******************************************************************************* // D13x Demo - 在上一节基础上改变系统时钟,观察LED灯的闪烁频率 // // 描述:通过改变系统时钟,来改变闪烁频率;通过 P1 异或 来取反 P1.5;软件循环延时 // ACLK= n/a, MCLK= SMCLK= default DCO ~ 800k // // MSP430F13x // ----------------- // /|\| XIN|- // | | | // --|RST XOUT|- // | | // | P1.5|-- L
[单片机]
怎样设计一个基于MSP430单片机的电桥平衡自调节?
本文设计的MSP430F2002单片机和MAX5402数字电位器所构成的电桥平衡自调节电路,具有结构简单、占用空间小、功耗低、可靠性高等特性,完全符合火炮膛压测试仪的要求。 1 电桥平衡自调节原理 在火炮膛压测试仪中,考虑到测试仪壳体结构的限制以及低功耗的要求,采用的电桥为1/4直流源电桥。电桥平衡自调节电路如图1所示。 图1 电桥平衡自调节电路图 左图为电桥平衡自调节电路工作原理。其中,R1为电阻应变计温度补偿片,R2为电阻应变计工作片,R1=R2=R3=R4=120 Ω,Uo为电桥输出电压,Io为恒流源。由电路理论计算可知: 若R2·R3-R1·R4=0,则电桥保持平衡。测量中电桥初始输出值一般不为零,这可能导致传
[单片机]
怎样设计一个基于<font color='red'>MSP430</font>单片机的电桥平衡自调节?
msp430程序跑飞相关总结
=============================================================================================================================== 1.中断或主函数中有死循环,现象是程序停在某处。 2.堆栈溢出。现象是程序跑飞。 解决办法: A.看中断有没有用 _EINT(),引起中断嵌套. B.Project--Options--General Options---Stack/Heap 将Stack size设置大一些。 =================================================
[单片机]
基于MSP430F413的新型智能水表的设计
  针对传统水表落后产生的一系列问题,国家建设部提出了城镇居民住宅“三表出户”的要求。所以目前国内的很多水表生产厂家都在进行产品新型化的探索,大部分采用单片机技术,智能水表系统的实用性研究己成为当前仪表行业的热点之一。本文介绍的就是一种基于MSP430F413单片机的智能水表的设计。   本论文以智能IC卡水表系统为研究对象,重点探讨了基于MSP430F413型超低功耗单片机在低功耗智能仪表上的应用与开发。论文首先提出利用IC卡技术智能水表系统的总体设计方案;设计了系统控制的硬件电路结构和研究了软件控制流程的实现,采用软硬件结合的方法,对系统的低功耗、抗干扰性设计及安全性问题作了一定的分析与研究。    MSP430F413简
[工业控制]
基于<font color='red'>MSP430</font>F413的新型智能水表的设计
MSP430中断c函数模板大全
端口1中断函数 多中断中断源:P1IFG.0~P1IFG7 进入中断后应首先判断中断源,退出中断前应清除中断标志,否则将再次引发中断 ******************************************************************************/ #pragma vector=PORT1_VECTOR __interrupt void Port1() { //以下为参考处理程序,不使用的端口应当删除其对于中断源的判断。 if((P1IFG&BIT0) == BIT0) { //处理P1IN.0中断 P1IFG &= ~BIT
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved