|
MS12232F.c文件:
#include <reg52.h>
#include <string.h>
#include "MS12232F.h"
void delay_MS12232F (unsigned int us) //delay time
{
while(us--);
}
/*----初始化-----*/
void init_lcd (void)
{
wr_lcd (comm,0x30); /*30---基本指令动作*/
wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
delay_MS12232F (100);
wr_lcd (comm,0x06); /*光标的移动方向*/
wr_lcd (comm,0x0c); /*开显示,关游标*/
}
/*-----------写指令或者写数据-----------*/
void wr_lcd (unsigned char dat_comm,unsigned char content)
{
unsigned char a,i,j;
delay_MS12232F (50);
a=content;
cs=1;
sclk=0;
std=1;
for(i=0;i<5;i++)
{
sclk=1;
sclk=0;
}
std=0;
sclk=1;
sclk=0;
if(dat_comm)
std=1; //data
else
std=0; //command
sclk=1;
sclk=0;
std=0;
sclk=1;
sclk=0;
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{
a=a<<1;
std=CY;
sclk=1;
sclk=0;
}
std=0;
for(i=0;i<4;i++)
{
sclk=1;
sclk=0;
}
}
}
/*---清DDRAM----*/
void clrram (void)
{
wr_lcd (comm,0x30);
wr_lcd (comm,0x01);
delay_MS12232F (180);
}
/*---上下半屏顺序显示汉字或字符----*/
void chn_disp(unsigned char code *chn)
{
unsigned char i,j;
wr_lcd (comm,0x30); /*30---基本指令动作*/
wr_lcd (comm,0x80); //把显示地址设为0X80,即为第一行的首位--第一页
j=0;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);
wr_lcd (comm,0x90); //把显示地址设为0X90,即为第二行的首位--第二页
j=1;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);
}
//----上半屏显示汉字或字符
void chn_dispup (unsigned char code *chn)
{
unsigned char i,Length;
Length=strlen(chn);
wr_lcd (comm,0x30); //30---基本指令动作
wr_lcd (comm,0x80); //把显示地址设为0X80,即为第一行的首位--第一页
for (i=0;i<Length;i++)
wr_lcd (dat,chn[i]);
}
void Show_Paska(unsigned char Number) //显示压力值
{
unsigned char tem1,tem2;
tem1=Number/10;
tem2=Number%10;
if(10<=Number)
{
wr_lcd (dat,0x30+tem1);
wr_lcd (dat,0x30+tem2);
}
else
{
wr_lcd (dat,0x30+tem2);
}
}
//----下半屏显示汉字或字符
void chn_dispdown (unsigned char code *chn)
{
unsigned char i,Length;
Length=strlen(chn);
wr_lcd (comm,0x30); //30---基本指令动作
wr_lcd (comm,0x90); //把显示地址设为0X90,即为第二行的首位--第二页
for (i=0;i<Length;i++)
wr_lcd (dat,chn[i]);
}
/*--------上半屏清屏---------*/
void Clear_up(void)
{
unsigned char i;
wr_lcd (comm,0x30); /*30---基本指令动作*/
wr_lcd (comm,0x80); //把显示地址设为0X80,即为第一行的首位--第一页
for (i=0;i<16;i++)
wr_lcd (dat,0x20);
}
/*--------下半屏清屏---------*/
void Clear_down(void)
{
unsigned char i;
wr_lcd (comm,0x30); /*30---基本指令动作*/
wr_lcd (comm,0x90); //把显示地址设为0X90,即为第二行的首位--第二页
for (i=0;i<16;i++)
wr_lcd (dat,0x20);
}
MS12232F.h文件:
#ifndef _MS12232F_h_
#define _MS12232F_h_
#define x1 0x80
#define x2 0x88
#define y 0x80
#define comm 0
#define dat 1
sbit cs = P1^3;
sbit std = P1^1;
sbit sclk = P1^0;
void delay_MS12232F (unsigned int us); //delay time
void init_lcd (void);/*----初始化-----*/
void wr_lcd (unsigned char dat_comm,unsigned char content);/*---写指令或者写数据---*/
void clrram (void);/*---清DDRAM----*/
void chn_disp(unsigned char code *chn);/*---上下半屏顺序显示汉字或字符----*/
void chn_dispup (unsigned char code *chn);//----上半屏显示汉字或字符
void Show_Paska(unsigned char Number);//显示压力值
void chn_dispdown (unsigned char code *chn);//----下半屏显示汉字或字符
void Clear_up(void);/*--------上半屏清屏---------*/
void Clear_down(void);/*--------下半屏清屏---------*/
#endif
|
|