📄 ms12864r-串口编程(c).txt
字号:
//////////-- ms12864r 串口编程 示例-- //////////////
// //
// 例程芯片: 430fw427,
// 注意!单片机输出口做了反向处理.
// 编程日期: 2008.11.27
// 编 者: 汤忠良
// 联系方式:
// 电话 > 13766867932
// Q Q > 909987836
// 信箱 > tangzhongliang315@163.com //
///////////////////////////////////////////////////
#include "msp430x41x.h"
void ys(unsigned int aa);
#define lcd_cs1 P2OUT&=~BIT0;
#define lcd_cs0 P2OUT|=BIT0;
#define lcd_data1 P2OUT&=~BIT3;
#define lcd_data0 P2OUT|=BIT3;
#define lcd_clk1 P2OUT&=~BIT1;
#define lcd_clk0 P2OUT|=BIT1;
#define lcd_rest1 P2OUT&=~BIT2;
#define lcd_rest0 P2OUT|=BIT2;
#define uchar unsigned char
#define uint unsigned int
void reset_12864(void);
void w12864_command(uchar command);
void w12864_data(uchar data);
void a12864xs(uchar data);
void list_12864(uchar x,uchar y,uint data);//按坐标输入字符
void main(void)
{
uint ss,zz;
uchar ii,jj;
WDTCTL = WDTPW + WDTHOLD; // 停掉看门狗
P2DIR=0X0f;
P2OUT=0X0f;
reset_12864(); //复位12864
list_12864(2,1,0xc0db); //显示:"累"
list_12864(2,2,0xbcd3); //显示:"加"
list_12864(2,3,0xa1c3); //显示:" :"
while(1) //从0加到99的程序
{
ss++; if(ss>99){ss=0;}
ii=ss/10+0x30;jj=ss%10+0x30;
list_12864(2,4,ii*256+jj);
for(zz=32768;zz>0;zz--);
}
}
//***************************************************
//写一字节数据到12864
void write_byte(uchar data)
{
uchar i,temp_data;
for(i=0;i<8;i++)
{
temp_data=data;
temp_data<<=i; //
if(temp_data&0x80){lcd_data1;} //数据线输出1
else {lcd_data0;} //数据线输出0
lcd_clk1;lcd_clk1;lcd_clk1; //时钟变换为0
lcd_clk0;lcd_clk0;lcd_clk0; //时钟变换为0
lcd_clk0;lcd_clk0;lcd_clk0; //时钟变换为0
}
}
//***************************************************
//写命令到12864
void w12864_command(uchar command)
{
lcd_cs1;lcd_cs1; //片选为1
write_byte(0xF8); //发送命令的命令
write_byte(command&0xF0); //发送H_data
write_byte((command&0x0F)<<4); //发送L_data
lcd_cs0;lcd_cs0; //片选为0
}
//***************************************************
//写数据到12864
void w12864_data(uchar data)
{
lcd_cs1;lcd_cs1; //片选为1
write_byte(0xFA); //发送数据的命令
write_byte(data&0xF0); //发送H_data
write_byte((data&0x0F)<<4); //发送L_data
lcd_cs0;lcd_cs0; //片选为0
}
//***************************************************
//复位12864
void reset_12864(void)
{
lcd_rest0;lcd_rest0; //准备复位
lcd_rest1;lcd_rest1; //执行复位
w12864_command(0x30); //功能设置 8位数据,基本指令
w12864_command(0x0c); //显示状态 ON,游标OFF,反白OFF
w12864_command(0x01); //清除显示
w12864_command(0x02); //地址归位
w12864_command(0x80); //设置DDRAM地址
}
//***************************************************
//按坐标输入字符 x:行数; y:例数; data:字符代码
void list_12864(uchar x,uchar y,uint data)
{
// 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,//第一行汉字位置
// 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,//第二行汉字位置
// 0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,//第三行汉字位置
// 0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,//第四行汉字位置
switch(x)
{ case 1:x=0x80;break; //第1行
case 2:x=0x90;break; //第2行
case 3:x=0x88;break; //第3行
case 4:x=0x98;break; //第4行
default:return; } //不在例范围,退 出
if(y>8){return;} //不在行范围,退 出
w12864_command(x+y-1); //发送字符显示的位置
w12864_data((data&0xff00)>>8); //发送字符的高8位
w12864_data (data&0x00ff); //发送字符的低8位
}
//***************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -