lcd.c
来自「在LPC2132上实现I/O方式的LCD1602显示」· C语言 代码 · 共 136 行
C
136 行
/**--------------File Info-------------------------------------------------------------------------------
** File name: lcd.c
** Last modified Date: 2006-10-14
** Last Version: 1.0
** Descriptions: lcd function
**
**------------------------------------------------------------------------------------------------------
** Created by: hujing
** Created date: 2006-10-14
** Version: 1.0
** Descriptions: The original version
**
**----------------------------------------------------------------------------------------------------*/
#include "config.h"
/*空指令*/
void Delay(uint8 ms)
{ // 延时子程序
uint8 i;
uint8 m;
while(ms--)
{
for(i = 0; i< 250; i++)
{
m=0;
m=1;
}
}
}
uint32 bf(void)
{ uint32 a;
IO0DIR=0X20018000;//设置P0.29,P0.16,P0.15为输出;P0.4-P0.11(D0-D7)为输入
IO1CLR=0x00030000;//245(2)数据读入ARM
IO0CLR=1<<16; //RS(D/I)=0
IO0SET=1<<15; //R/W=1
IO0SET=1<<29; //E=1
Delay(1);
a=IO0PIN&0X00000FF0;
IO0CLR=1<<29; //E=0
return(a);
}
/*写指令*/
void WRCOMD(uint8 x)
{
uint32 y=x;//把8位的x转换成32位y,y的低8位为x里的内容。
y=y&0x000000FF;//将Y的高24位清零
/*状态位BF=0时LCD可写*/
while((bf()&0x00000800)!=0);
/*指令写*/
IO0DIR=0X20018FF0;//设置P0.29,P0.16,P0.15为输出;P0.4-P0.11(D0-D7)为输出
IO1SET=0x00020000;//245(2)数据读入LCD
IO1CLR=1<<16;//使能245(2) P1.16=0
IO0CLR=1<<16; //RS(D/I)=0
IO0CLR=1<<15; //R/W=0
IO0CLR=1<<29; //E=0
Delay(1);
IO0PIN=(IO0PIN&0XFFFFF00F)|(y<<4);
Delay(1);
IO0SET=1<<29; //E=1
Delay(1);
IO0CLR=1<<29; //E=0
}
/*写数据*/
void WRDATA(uint8 x)
{
uint32 y=x;//把8位的x转换成32位y,y的低8位为x里的内容。
y=y&0x000000FF;//将Y的高24位清零
/*状态位BF=0时LCD可写*/
while((bf()&0x00000800)!=0);
/*数据写*/
IO0DIR=0X20018FF0;//设置P0.29,P0.16,P0.15为输出;P0.4-P0.11(D0-D7)为输出
IO1SET=0x00020000;//245(2)数据读入LCD
IO1CLR=1<<16;//使能245(2) P1.16=0
IO0SET=1<<16; //RS(D/I)=1
IO0CLR=1<<15; //R/W=0
IO0CLR=1<<29; //E=0
Delay(1);
IO0PIN=(IO0PIN&0XFFFFF00F)|(y<<4);
Delay(1);
IO0SET=1<<29; //E=1
Delay(1);
IO0CLR=1<<29; //E=0
}
/*初始化*/
void INITIAL(void)
{
WRCOMD(0X38);
WRCOMD(0X0C);
WRCOMD(0X06);
WRCOMD(0X01);
}
/*清屏*/
void CLEAR(void)
{
WRCOMD(0X01);
}
/*定写入位置*/
void POSITION(uint8 p)
{
WRCOMD(p|0X80);
}
/*数据显示*/
void OUTPUT(uint8 o)
{
WRDATA(o);
}
/**********END OF FILE**********************/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?