专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
大虾能给个MSP430G2553驱动12864的代码不
2019-03-24 11:49
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
9043
9
1126
求一个12864的代码
此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
jia55
2019-03-24 16:06
#include <msp430g2553.h>
#define uint unsigned int
#define uchar unsigned char
#define PSB BIT0
#define E BIT1
#define SID BIT2
#define CS BIT3
#define PORT P1OUT
void writebyte_12864(unsigned char byte) //发送一个字节
{
unsigned char i,a;
for(i=0;i<8;i++)
{
a = byte&0x80; //取出最高位
if(a == 0x80)
{
PORT |= SID;
}
else
{
PORT &=~ SID;
}
PORT |= E;
PORT &=~ E;
byte<<=1; //左移
}
}
void write_12864(uchar start, unsigned char date) //start=0写指令,start=1写数据
{
unsigned char com,hdate,ldate;
if(start == 1)
com=0xfa; //写数据
else
com=0xf8; //写指令
hdate=date&0xf0; //取高四位
ldate=(date<<4)&0xf0; //取低四位
writebyte_12864(com); //发送起始信号/发数据或命令
//__delay_cycles(5000);
writebyte_12864(hdate); //发送高四位
//__delay_cycles(5000);
writebyte_12864(ldate); //发送低四位
//__delay_cycles(5000);
}
void init_12864(void) //初始化LCD
{
__delay_cycles(20000); //等待进入状态
PORT &=~ PSB; //串口驱动模式
PORT |= CS; //片选 RS高电平有效 单片LCD使用时可固定高电平
write_12864(0,0x30); //8 位介面,基本指令集
__delay_cycles(5000);
write_12864(0,0x02); //清DDRAM
__delay_cycles(5000);
write_12864(0,0x06); //清屏,将DDRAM的地址计数器归零
__delay_cycles(5000);
write_12864(0,0x0c); //显示打开,光标关,反白关
__delay_cycles(5000);
write_12864(0,0x01);//写入空格清屏幕
}
void displaystr_12864(uchar x,uchar y,uchar *str) //写入字符串
{
write_12864(0,0x80+(x/2+(x-1)%2)*8+y-1); //x行,y列
while(*str!=' ')
{
write_12864(1,*str);
str++;
}
}
void displaychar_12864(uchar x,uchar y,uchar z) //写入字符
{
write_12864(0,0x80+(x/2+(x-1)%2)*8+y-1); //x行,y列
write_12864(1,z);
}
void main(void) {
WDTCTL = WDTPW + WDTHOLD;
P1DIR = 0xff;
init_12864();
P1OUT |= BIT4;
P1OUT |= BIT5;
while(1)
{
displaystr_12864(1,1,"一江之水可以望月");
displaystr_12864(2,1,"一江之水可以望月");
displaystr_12864(3,1,"一江之水可以望月");
displaystr_12864(4,1,"一江之水可以望月");
}
}
加载中...
查看其它9个回答
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#define uint unsigned int
#define uchar unsigned char
#define PSB BIT0
#define E BIT1
#define SID BIT2
#define CS BIT3
#define PORT P1OUT
void writebyte_12864(unsigned char byte) //发送一个字节
{
unsigned char i,a;
for(i=0;i<8;i++)
{
a = byte&0x80; //取出最高位
if(a == 0x80)
{
PORT |= SID;
}
else
{
PORT &=~ SID;
}
PORT |= E;
PORT &=~ E;
byte<<=1; //左移
}
}
void write_12864(uchar start, unsigned char date) //start=0写指令,start=1写数据
{
unsigned char com,hdate,ldate;
if(start == 1)
com=0xfa; //写数据
else
com=0xf8; //写指令
hdate=date&0xf0; //取高四位
ldate=(date<<4)&0xf0; //取低四位
writebyte_12864(com); //发送起始信号/发数据或命令
//__delay_cycles(5000);
writebyte_12864(hdate); //发送高四位
//__delay_cycles(5000);
writebyte_12864(ldate); //发送低四位
//__delay_cycles(5000);
}
void init_12864(void) //初始化LCD
{
__delay_cycles(20000); //等待进入状态
PORT &=~ PSB; //串口驱动模式
PORT |= CS; //片选 RS高电平有效 单片LCD使用时可固定高电平
write_12864(0,0x30); //8 位介面,基本指令集
__delay_cycles(5000);
write_12864(0,0x02); //清DDRAM
__delay_cycles(5000);
write_12864(0,0x06); //清屏,将DDRAM的地址计数器归零
__delay_cycles(5000);
write_12864(0,0x0c); //显示打开,光标关,反白关
__delay_cycles(5000);
write_12864(0,0x01);//写入空格清屏幕
}
void displaystr_12864(uchar x,uchar y,uchar *str) //写入字符串
{
write_12864(0,0x80+(x/2+(x-1)%2)*8+y-1); //x行,y列
while(*str!=' ')
{
write_12864(1,*str);
str++;
}
}
void displaychar_12864(uchar x,uchar y,uchar z) //写入字符
{
write_12864(0,0x80+(x/2+(x-1)%2)*8+y-1); //x行,y列
write_12864(1,z);
}
void main(void) {
WDTCTL = WDTPW + WDTHOLD;
P1DIR = 0xff;
init_12864();
P1OUT |= BIT4;
P1OUT |= BIT5;
while(1)
{
displaystr_12864(1,1,"一江之水可以望月");
displaystr_12864(2,1,"一江之水可以望月");
displaystr_12864(3,1,"一江之水可以望月");
displaystr_12864(4,1,"一江之水可以望月");
}
}
一周热门 更多>