文档章节

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

爱吃橙子的小石头
 爱吃橙子的小石头
发布于 2014/08/13 18:04
字数 749
阅读 115
收藏 0


串行LCD12864引脚接法:

实现代码(MSP430):

/*
 * 12864.c
 *  Created on: 2014-7-15
 *      Author: bazingagain
 */
#include <msp430.h>
#include "12864.h"

/**
 * 函数名:delay
 * 功能:延时函数,延时时间为100us * x
 * 参数:x
 * 返回值:无
 */
void delay(uint x)
{
	uint i,j;
	for(j=0;j<x;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<<i) & 0x80)
		{
			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 <reg51.h>

/*
 * 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<x;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<<i) & 0x80)
        {
            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);
    }
}


© 著作权归作者所有

爱吃橙子的小石头
粉丝 0
博文 35
码字总数 12623
作品 0
沙坪坝
程序员
私信 提问
WuSiYu/BadApplePi

树莓派+Lcd12864播放Badapple 本项目实现在LCD12864显示屏(st7920控制器)上播放黑白动漫影绘视频:Badapple 在树莓派B+和2B上均能达到30fps(原视频帧数) 适用硬件 树莓派(Raspberry Pi):支...

WuSiYu
2015/08/26
0
0
利用Python做毕业设计,基于python的智能化门禁系统,远程控制!

社会发展的很快,人们的生活水平大幅度提高的同时,安全问题也愈受关注。 进小区要刷卡,公司刷卡,进学校宿舍刷卡,各种各样的刷卡安全系统在我们的生活里出现。简称为:门禁系统或出去管理...

柯西带你学编程
2018/06/07
0
0
LCD12864 cubie驱动显示

操作系统: 使用的是官方网站上的ubuntu sd card 1.1 1. 安装python的库和cubie的gpio库 sudo apt-get install python-dev wget http://dl.linux-sunxi.org/users/tom/pySUNXI-0.1.12.tar.gz......

cubieboard
2014/08/15
118
0
MSP430FG439上实现IO模拟UART以及移植要点解析

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 最近要做MSP430上的开发,一上手就要做IO模拟UART这种难度的玩意,幸好网上已经有很多现成的MSP430的软串口实现例子,本文代码...

晨曦之光
2012/03/14
274
0
SPI (Serial Peripheral Interface)串行外设接口 协议详解+实例

SPI (Serial Peripheral Interface)串行外设接口 协议详解+实例 一、协议简介 SPI协议简介(转) (2008-04-26 16:24) 分类:单片机及硬件相关技术 来自:http://blog.chinaunix.net/space...

FreeBlues
2012/07/16
19.7K
1

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
6
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部