📄 test_mobi2007.c
字号:
//液晶MOBI2007测试程序
/*******************************包含的头文件***********************************/
#include<at898252.h>
#include <intrins.h>
/**********************************宏定义**************************************/
#define uchar unsigned char
#define uint unsigned int
/*****************************端口声明******************************/
#define RESET P2_0
#define SID P2_1
#define SCLK P2_2
#define RS P2_3
//CS为片选
//PS为并口与串口的选择
/***************************全局变量的定义**************************/
uchar bdata command; //液晶控制字存储单元
uchar bdata display_data; //液晶显示数据存储单元
sbit control_bit=command^7;
sbit display_data_bit=display_data^7;
uchar page; //页面地址存储单元
uchar column; //列地址存储单元
uchar page_temp; //页面地址暂存单元
uchar column_temp; //列地址暂存单元
uchar data_indx;
uchar code data_ZIFU[16][8]={0x00,0x3E,0x51,0x49,0x45,0x3E,0x00,0x00,//"0"
0x00,0x00,0x42,0x7F,0x40,0x00,0x00,0x00,//"1"
0x00,0x42,0x61,0x51,0x49,0x46,0x00,0x00,//"2"
0x00,0x21,0x41,0x45,0x4B,0x31,0x00,0x00,//"3"
0x00,0x18,0x14,0x12,0x7F,0x10,0x00,0x00,//"4"
0x00,0x27,0x45,0x45,0x45,0x39,0x00,0x00,//"5"
0x00,0x3C,0x4A,0x49,0x49,0x30,0x00,0x00,//"6"
0x00,0x01,0x01,0x79,0x05,0x03,0x00,0x00,//"7"
0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,//"8"
0x00,0x06,0x49,0x49,0x29,0x1E,0x00,0x00,//"9"
0x00,0x7E,0x11,0x11,0x11,0x7E,0x00,0x00,//"A"
0x00,0x41,0x7F,0x49,0x49,0x36,0x00,0x00,//"B"
0x00,0x3E,0x41,0x41,0x41,0x22,0x00,0x00,//"C"
0x00,0x41,0x7F,0x41,0x41,0x3E,0x00,0x00,//"D"
0x00,0x7F,0x49,0x49,0x49,0x49,0x00,0x00,//"E"
0x00,0x7F,0x09,0x09,0x09,0x01,0x00,0x00//"F"
};
uchar code data_HANZI[16][8]={
0x82,0x8A,0x92,0xB2,0x02,0xA7,0x92,0x5E,//蓬
0x2A,0xAF,0x2A,0x5A,0x4A,0x83,0x82,0x00,
0x00,0x80,0x40,0x3F,0x41,0x90,0x95,0x95,
0x95,0xFF,0x95,0x95,0x95,0xD0,0x40,0x00,
0x80,0x64,0x24,0x24,0x3F,0x24,0xA6,0x64,//勃
0x20,0x20,0xFF,0x20,0x20,0xF0,0x20,0x00,
0x00,0x08,0x49,0x89,0x7D,0x0B,0x89,0x40,
0x30,0x0E,0x41,0x80,0x40,0x3F,0x00,0x00,
0x40,0x42,0x44,0xCC,0x00,0x20,0x22,0xE2,//远
0x22,0x22,0xE2,0x23,0x32,0x20,0x00,0x00,
0x00,0x40,0x20,0x1F,0x20,0x50,0x4C,0x43,
0x40,0x40,0x47,0x48,0x48,0x6E,0x20,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0xD1,0x7F,//大
0xD1,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
0x00,0x40,0x40,0x20,0x10,0x0C,0x03,0x00,
0x01,0x06,0x08,0x10,0x20,0x60,0x20,0x00
};
/****************************函数声明*******************************/
void delay_s(uint x); //延时x毫秒子函数
void LCD_init(void); //液晶初始化子函数
void LCD_order_write(void); //写控制字子函数
void LCD_data_write(void); //写数据子函数
void LCD_Clear(uchar display_data_temp);
void Display_ZIFU(void); //西文字符显示子函数
void Display_HANZI(void);
void main(void); //主函数
/*************************延时X毫秒函数*****************************/
//说明:实现功能:软件延时X毫秒
//输入:软件延时的时间:xms
//输出:无
void delay_s(uint x)
{
uint n;
while(x!=0)
{
for(n=0;n<125;n++) //一次延时1ms
{;}
x--;
}
}
/*************************液晶初始化子函数**************************/
//说明:完成对液晶的初始化
//输入:无
//输出:无
void LCD_init(void)
{
RESET=0; //复位液晶
delay_s(250); //延时250毫秒
RESET=1;
RS=0; //传送控制字模式
SID=0; //传送数据置为0
SCLK=0; //时钟置为低电平
command=0x0a3; //显示占空比设置(A2 1/8;A3 1/65DUTY)
LCD_order_write();
command=0x0a1; //ADC SELECT
LCD_order_write();
command=0x2f; //POWER CONTROL
LCD_order_write();
command=0x24; //VOLT REGULATOR RADIO SET
LCD_order_write();
command=0x81; //REFERENCE VOLT MODE set
LCD_order_write();
command=0x18; //REFERENCE VOLT REG set
LCD_order_write();
command=0x0c8; //列地址选择为右移方式
LCD_order_write();
command=0x0af; //显示打开
LCD_order_write();
command=0x40; //显示起始行设置
LCD_order_write();
}
/**********************写控制字子函数*******************************/
//说明:通过串行方式写液晶的命令字
//输入:无
//输出:无
void LCD_order_write(void)
{
uchar i;
RS=0; //传送命令字方式
for(i=0;i<8;i++)
{
SID=control_bit;//按位传送控制字
SCLK=0; //上升沿开始传送
delay_s(1);
SCLK=1;
command=command<<1;//命令字左移一位
}
SCLK=0;
}
/*************************写数据子函数******************************/
//说明:通过串行方式写液晶的显示数据
//输入:无
//输出:无
void LCD_data_write(void)
{
uchar i;
RS=1; //传送显示数据方式
for(i=0;i<8;i++)
{
SID=display_data_bit;//按位传送显示数据
SCLK=0; //上升沿开始传送
delay_s(1);
SCLK=1;
display_data=display_data<<1;//显示数据左移一位
}
SCLK=0;
}
/***********************液晶清屏子程序*****************************/
//说明:
//输入:无
//输出:无
void LCD_Clear(uchar display_data_temp)
{
uchar page_temp; //页面地址暂存单元
// uchar column_temp; //列地址暂存单元
uchar i;
uchar j;
for(j=0;j<8;j++)
{
page=j; //页面地址设置为j
page_temp=page|0x0b0; //"或"页面地址设置代码
command=page_temp;
LCD_order_write(); //设置页面地址
command=0x10; //列地址自动加1
LCD_order_write();
column=0x00; //列地址设置为"0"
command=column;
LCD_order_write(); //设置列地址
for(i=0;i<128;i++)
{
display_data=display_data_temp;
LCD_data_write();
}
}
}
/************************西文字符显示子函数************************/
//说明:
//输入:无
//输出:无
void Display_ZIFU(void)
{
uchar i;
// column=0;
// page=0;
uchar page_temp1; //页面地址暂存单元
uchar column_temp1; //列地址暂存单元
page_temp1=page_temp; //页面地址设置
page_temp1=page_temp1|0x0b0; //"或"页面地址设置代码
command=page_temp1;
LCD_order_write(); //设置页面地址
column_temp1=column_temp/16;
column_temp1=column_temp1+0x10;
command=column_temp1;
LCD_order_write(); //设置列地址高四位
column_temp1=column_temp&0x0f;
command=column_temp1;
LCD_order_write(); //设置列地址低四位
for(i=0;i<8;i++)
{
display_data=data_ZIFU[data_indx][i];
LCD_data_write();
}
}
/*********************汉字显示子函数*******************************/
//说明:
//输入:
//输出:
void Display_HANZI(void)
{
uchar i;
uchar page_temp1; //页面地址暂存单元
uchar column_temp1; //列地址暂存单元
page_temp1=page_temp; //页面地址设置
page_temp1=page_temp1|0x0b0; //"或"页面地址设置代码
command=page_temp1;
LCD_order_write(); //设置页面地址
column_temp1=column_temp/16;
column_temp1=column_temp1+0x10;
command=column_temp1;
LCD_order_write(); //设置列地址高四位
column_temp1=column_temp&0x0f;
command=column_temp1;
LCD_order_write(); //设置列地址低四位
for(i=0;i<8;i++)
{
display_data=data_HANZI[data_indx][i];
LCD_data_write();
}
}
/***************************主函数*********************************/
//说明:
//输入:无
//输出:无
void main(void)
{
uchar i;
uchar j;
uchar m;
LCD_init(); //液晶初始化
LCD_Clear(0x55);
LCD_Clear(0x00); //液晶清屏
for(i=0;i<8;i++) //显示西文字符
{
for(j=0;j<16;j++)
{
page_temp=i; //设置页面地址
column_temp=8*j;//设置列地址
data_indx=j;
Display_ZIFU(); //显示西文字符
}
}
LCD_Clear(0x00); //液晶清屏
for(i=0;i<4;i++) //显示汉字
{
m=i*4;
for(j=0;j<4;j++)
{
if(j<2)
{
page_temp=0x04; //设置页面地址
column_temp=8*(j+4)+i*16;//设置列地址
}
else
{
page_temp=0x05; //设置页面地址
column_temp=8*(j+4-2)+i*16;
}
data_indx=m+j;
Display_HANZI(); //显示西文字符
}
}
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -