⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_mobi2007.c.bak

📁 该程序为液晶显示模块MOBI2007的显示驱动程序
💻 BAK
字号:
//液晶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,0xCD,0x7F,//大
        		0xCD,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 + -