📄 12864.c
字号:
#include "MSP430FE427A.h"
#include"delay.h"
//宏定义I/O口有利于修改端口
#define send_1 P1OUT|=BIT0//数据口P1.0
#define send_0 P1OUT&=~BIT0
#define clk_0 P1OUT&=~BIT1//时钟口P1.1
#define clk_1 P1OUT|=BIT1
#define reset P1OUT&=~BIT2//复位口P1.2
#define no_reset P1OUT|=BIT2
#define cs P1OUT|=BIT3//串行片选信号P1.3
#define no_cs P1OUT&=~BIT3
char Line_Buff[]={0x80,0x90,0x88,0x98}; //汉字显示坐标{LINE1,LINE2,LINE3,LINE4}
/*void delay(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++);
}*/
void write_one_byte(unsigned char serial_data)//串口按位发送完一个字节的数据
{
unsigned int i;
for(i=0;i<8;i++)
{
if((serial_data<< i)&0x80)
{
send_1;
}
else
{
send_0;
}
clk_0;
clk_1;
}
}
void write_command(unsigned char command)//写命令
{
cs;
P1OUT|=BIT3;
write_one_byte(0xf8);
write_one_byte(command&0xf0);//命令要先发高四位
write_one_byte((command<<4)&0xf0);//然后发低四位
delay(2);
}
void write_data(unsigned char datas)//写数据
{
cs;
P1OUT|=BIT3;
write_one_byte(0xfa);
write_one_byte(datas&0xf0);//命令要先发高四位
write_one_byte((datas<<4)&0xf0);//然后发低四位
delay(2);
}
void display_inite()
{
write_command(0x30);
delay(50);
write_command(0x08);
delay(50);
write_command(0x10);
delay(50);
write_command(0x0c);
delay(50);
write_command(0x01);
delay(50);
write_command(0x06);
delay(50);
}
void write_a_arrays(unsigned char *array)
{
while(*array>0)
{
write_data(*array);
array++;
delay(50);
}
}
/***************************
以上是底层驱动,不用理会
以下是应用层:
x:第几行
y:第几列
*array:要显示的东西,要加""
****************************/
void write_any_arrays(int x,int y,unsigned char *array)
{
switch(x)
{
case 1:write_command(0x80+y-1);//第一行
write_a_arrays(array);
break;
case 2:write_command(0x90+y-1);//第二行
delay(50);
write_a_arrays(array);
break;
case 3:write_command(0x88+y-1);//第三行
delay(50);
write_a_arrays(array);
break;
case 4:write_command(0x98+y-1);//第四行
delay(50);
write_a_arrays(array);
break;
default:break;
}
}
/********************************************
*名称:Dis_Line()
*功能:在固定的行列显示
*入口参数:Line 第几行
:Lie 第几列
:Data 要显示的数据
*出口参数:无
*说明:Dis_Line(1,4,“6”)
在第一行第四列显示 数字6
************************************************/
void Dis_Line(char Line,char Lie ,int Data)
{
int i;
char Result[8]; //定义一个数组,存放数据的各位
delay(50);
for(i=0;i<4;i++) //这里就两位数
{
Result[i]=Data%10+48; //计算出数据的低位 模10求余数 ASCII码与数据差了48
Data=Data/10; //除法,计算商
}
write_command(Line_Buff[Line-1]+Lie-1); //设置好起始坐标
for(i=4;i>=1;i--) //从高位开始传
write_data(Result[i-1]);
}
//void Dis_Two_Line(char Line,char Lie,int data)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -