📄 lcd_sio_@iob14and15.c
字号:
//程序方式的串口,用来驱动LCD,IOB15为数据,IOB14为同步时钟。
//一个字节分为两次传输,先传输起始字节,5个1为开始标志,其后为RW,RS
//接口函数有
//lcd_init_usual(),作用是常用初始化液晶,无入口,无出口中
//chinese_series();作用是输出汉字串,参量为字串的指针
//code_write(); 参量为命令字。
//data_write(); 参量为要写入的数。
//================================================
//用户指令集:
//清除显示:01
//地址归零:02
//点设定: 04 整体显示不移动,光标左移,AC自动减1
// 05 整体显示不移动,光标右移,AC自动加1
// 06 写入时整体显示向右移动,
// 07 整体显示向左移动。
//显示状态:08 关闭整体显示,关闭光标,光标位置不反白闪烁
// 0C 开启整体显示,关闭光标,光标位置不反白闪烁
// 0D 开启整体显示,关闭光标,光标位置反白闪烁
// 0E 开启整体显示,开启光标,光标位置不反白闪烁
// 0F 开启整体显示,开启光标,光标位置反白闪烁
//光标或显示移位控制:
// 10 光标左移,AC减1
// 14 光标右移,AC加1
// 18 整体显示,向左移动,光标跟随,AC不变
// 1C 整体显示,向右移动,光标跟随,AC 不变
//功能设定:20 4 BIT 控制口,基本指令集
// 24 4 BIT 控制口,扩充指令集
// 30 8 BIT 控制口,基本指令集
// 34 8 BIT 控制口,扩充指
//////////////////////////////////////////////////////////////
#include "SPCE061.h"
#define code_start 0xf800
#define data_start 0xfa00
////////////////////////////////////////////////
///命令区定义;
//设定显示地址;
#define row1_line1 0x0080
#define row1_line2 0x0081
#define row1_line3 0x0082
#define row1_line4 0x0083
#define row1_line5 0x0084
#define row1_line6 0x0085
#define row1_line7 0x0086
#define row1_line8 0x0087
#define row2_line1 0x0090
#define row2_line2 0x0091
#define row2_line3 0x0092
#define row2_line4 0x0093
#define row2_line5 0x0094
#define row2_line6 0x0095
#define row2_line7 0x0096
#define row2_line8 0x0097
//状态设定
#define lcd_clear 0x0001
#define lcd_addres_0 0x0002;
//////////////////////////////////////
//public lcde_init_usual();
//public chinese_series();
//public code_write();
//public data_write();
//public set_position();
//============================================
void lcd_init_usual(void)
{
init_iob_out();
code_write(1);
code_write(0x000f);
code_write(0x0006);
}
//===========================================
void init_iob_out(void)
{
*P_IOB_Dir|=0xc000;
*P_IOB_Attrib|=0xc000;
*P_IOB_Data&=0x3fff;
}
//===========================================
void set_position(int position)
{
code_write(position);
}
//=========================================
void chinese_series(int *series)
{
for(series;*series!=0;series++)
data_write(*series);
}
//========================================
void code_write(int code)
{
int i,j;
code=code<<8;
i=j=code;
i&=0xf000;
j=j<<4;
j&=0xf000;
byte_write(code_start);
byte_write(code_start);
byte_write(i);
byte_write(j);
}
//================================
void data_write(int data)
{
int i,j;
data=data<<8;
i=j=data;
i&=0xf000;
j=j<<4;
j&=0xf000;
byte_write(data_start); //启始字符
byte_write(data_start);
byte_write(i);
byte_write(j);
}
///////////////////////////////////////
void byte_write(byte)
int byte;
{
int x=byte,i,r;
for(i=0;i<=7;i++)
{
r=*P_IOB_Data;
r&=0x3fff; // 最高2位B14,B15清零
x=byte;
x&=0x8000;
r|=x;
*P_IOB_Data=r;
*P_IOB_Data|=0x4000;
byte=byte<<1;
}
}
//////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -