📄 lcd_series.c
字号:
/* File Name: lcd.c */
/* Author: Huaming Liu */
/* Created: 2007-6-5 */
/* Modified: no */
/* Revision: V1.0 */
#include <reg52.h> /*定义头文件*/
#include <absacc.h>
#define Set_Bit(BIT) (BIT = 1) /*定义置1函数*/
#define Clear_Bit(BIT) (BIT = 0) /*定义清0函数*/
typedef unsigned char uchar; /*自定义字节类型*/
sbit LCD_CS=P1^0; /*定义LCD片选信号连接*/
sbit LCD_STD=P1^1; /*定义LCD串行数据硬件连接*/
sbit LCD_Clk=P1^2; /*定义LCD串行时钟硬件连接*/
/****** LCD的指令 ******/
#define CMD_RESET 0xa4 /*需改变*/
void Write_LCD(uchar,uchar); /*定义LCD写函数,先写命令再写控制信息*/
uchar Read_LCD(uchar); /*定义LCD读函数,只需发出命令再读入数据*/
void Send_uchar(uchar); /*定义LCD发送字节函数*/
uchar Receive_uchar(void); /*定义LCD接收字节函数*/
void Short_Delay(void); /*定义短延时函数*/
void Long_Delay(void); /*定义长延时函数*/
void Mcu_Init(void); /*定义MCU初始化函数*/
void Delay_200_mS(void); /*定义200ms延时函数*/
/************************************************************************************/
void main(void) /*主函数*/
{
LCD_CS=0;
Send_uchar(CMD_RESET); /*LCD复位*/
DBYTE[0X00A6]=0x1e;
DBYTE[0X00A6]=0xe1; /*启动看门狗*/
while(1)
{
Mcu_Init(); /*MCU初始化*/
} /*while*/
} /*main*/
void Delay_200_mS(void) /*200ms延时函数*/
{
uchar i,j;
i=200;
while (i--)
{
j=228;
while(j--);
}
}
void Mcu_Init(void) /*MCU初始化函数*/
{
Send_uchar(CMD_TEST); /*所有LED均亮,且闪烁*/
}
void Short_Delay(void) /*短延时函数*/
{
uchar i;
for(i=0;i<0x08;i++);
}
void Long_Delay(void) /*长延时函数*/
{
uchar i;
for(i=0;i<0x30;i++);
}
void Write_LCD(uchar Command,uchar Data) /*LCD写函数*/
{
Send_uchar(Command); /*先发送命令*/
Send_uchar(Data); /*再接收字节*/
}
uchar Read_LCD(uchar Command) /*LCD读函数*/
{
Send_uchar(Command); /*先发送命令*/
return(Receive_uchar()); /*再接收字节*/
}
void Send_uchar(uchar Data_Out) /*向LCD发送字节函数*/
{
uchar i;
Long_Delay();
for(i=0;i<8;i++)
{
if(Data_Out&0x80)
Set_Bit(LCD_Data);
else
Clear_Bit(LCD_Data);
Set_Bit(LCD_Clk);
Short_Delay();
Clear_Bit(LCD_Clk);/*下降沿发出数据*/
Short_Delay();
Data_Out=Data_Out<<1;
}
Clear_Bit(LCD_Data);
}
uchar Receive_uchar(void) /*从LCD接收字节函数*/
{
uchar i,Data_In;
Set_Bit(LCD_Data);
Long_Delay();
for(i=0;i<8;i++)
{
Set_Bit(LCD_Clk);
Short_Delay();
Data_In=Data_In<<1;
if(LCD_Data) /*数据线上为1时*/
Data_In=Data_In|0x01;
Clear_Bit(LCD_Clk);
Short_Delay();
}
Clear_Bit(LCD_Data);
return(Data_In);
}
/*END*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -