#include "stc12c5a60s2.h"
#include<intrins.h>
typedef unsigned char uchar;
sbit LCD1602_RS=P1^0;
sbit LCD1602_RW=P1^1;
sbit LCD1602_E=P2^5;
sbit du=P2^6;
sbit we=P2^7;
void Delayms(unsigned int ms)
{
int i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
void CloseSmg() //关数码管
{
P0=0;
du=1;
du=0;
}
void LCD1602_Ready()
{
P0=0XFF;
LCD1602_RS=0;
LCD1602_RW=1;
LCD1602_E=1;
while(P0&0X80);
LCD1602_E=0;
}
void LCD1602_WriteCMD(uchar date)
{
LCD1602_Ready();
LCD1602_RS=0;
LCD1602_RW=0;
P0=date;
LCD1602_E=1;
Delayms(5);
LCD1602_E=0;
}
void LCD1602_WriteDate(uchar date)
{
LCD1602_Ready();
LCD1602_RS=1;
LCD1602_RW=0;
P0=date;
LCD1602_E=1;
Delayms(5);
LCD1602_E=0;
}
/***********设置光标所处位置**********/
void LCD1602_Position(uchar row,uchar list) // 光标所处位置
{
if(row==0) LCD1602_WriteCMD(list|0x80);
else LCD1602_WriteCMD(list|0xC0);
}
/*********显示单个字符到LCD1602上**********/
void LCD1602_ShowChar(uchar row,uchar list,uchar address)
{
LCD1602_Position(row,list);
LCD1602_WriteDate(address);
}
/*********显示字符串到LCD1602上**********/
void LCD1602_ShowStr(uchar row,uchar list,uchar *str)
{
LCD1602_Position(row,list);
while(*str!='\0')
{
LCD1602_WriteDate(*str++);
}
}
/********初始化LCD1602************/
void LCD1602_Init ()
{
CloseSmg(); //关数码管
LCD1602_E=0;
LCD1602_WriteCMD(0x38); //数据写入设置
LCD1602_WriteCMD(0x01); //清屏
LCD1602_WriteCMD(0x06); //光标及液晶屏移动
LCD1602_WriteCMD(0x0C); //光标及液晶屏显示
}
void main()
{
LCD1602_Init ();
LCD1602_ShowStr(0,0,"()';123zj");
while(1);
}
|