📄 ocmj4x8c.c
字号:
#include <MSP430X16X.h>
#include"OCMJ4X8C.h"
#define comm 0
#define dat 1
/*
sbit rs = P2^0; //H=data; L=command;
sbit rw = P2^1; //H=read; L=write;
sbit e = P2^2; //input enable;
sbit psb= P2^3; //H=并口; L=串口;
sbit rst= P2^4; //Reset Signal 低电平有效
sbit busy=P1^7; //lcd busy bit
*/
/*------------------初始化-----------------*/
void init_lcd (void)
{
P2DIR |=0x1F;
P4DIR |=0xFF;
P2OUT |=0x10;//rst=1;
P2OUT |=0X08;//psb=1;
wr_lcd (comm,0x30); /*30---基本指令动作*/
/*
DL=1: 8-BIT 控制接口
DL=0: 4-BIT 控制接口
RE=1: 扩充指令集动作
RE=0: 基本指令集动作
*/
wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
wr_lcd (comm,0x06); /*光标的移动方向*/
wr_lcd (comm,0x0c); /*开显示,关游标*/
lat_disp (0x00,0x00);
}
/*---------------显示汉字或字符----------------*/
void chn_disp (uchar *chn)
{
uchar i,j;
wr_lcd (comm,0x30);
wr_lcd (comm,0x80);
for (j=0;j<4;j++)
{
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);
}
}
/**********************************************
显示单个字符在液晶上
num:为要显示的字符; addr:为显示的地址
**********************************************/
void num_disp(uchar num,uint addr)
{
wr_lcd(comm,0x30);
wr_lcd(comm,addr);
wr_lcd(dat,num);
wr_lcd(dat,' ');
}
/*********************************************
显示一个字符加小数点
*********************************************/
void dot_disp(uchar num,uint addr)
{
wr_lcd(comm,0x30);
wr_lcd(comm,addr);
wr_lcd(dat,num);
wr_lcd(dat,'.');
}
/*********************************************
显示一行字符在液晶上
*********************************************/
void line_disp(uchar* line,uint addr)
{
uchar i;
wr_lcd (comm,0x30);
wr_lcd (comm,addr);
for (i=0;i<16;i++)
wr_lcd (dat,*line++);
}
/*-----------上半屏显示汉字或字符------------*/
void chn_disp1 (uchar *chn)
{
uchar i,j;
wr_lcd (comm,0x30);
wr_lcd (comm,0x80);
j=0;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);
wr_lcd (comm,0x90);
j=1;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);
}
/*--------------清DDRAM------------------*/
void clrram (void)
{
wr_lcd (comm,0x30);
wr_lcd (comm,0x01);
delay(2000);
}
/*---------------------------------------*/
void wr_lcd (uchar dat_comm,uchar content)
{
//chk_busy ();
if(dat_comm)
{
P2OUT |=0X01;//rs=1; //data
_NOP();
_NOP();
P2OUT &=0XFD;//rw=0; //write
_NOP();
_NOP();
}
else
{
P2OUT &=0XFE;//rs=0; //command
_NOP();
_NOP();
P2OUT &=0XFD;//rw=0; //write
_NOP();
_NOP();
}
P4OUT=content; //output data or comm
_NOP();
_NOP();
P2OUT |=0X04;//e=1;
_NOP();
_NOP();
P2OUT &=0XFB;//e=0;
delay(500);
}
void delay (uint us) //delay time
{
while(us--);
}
/*--------------显示点阵----------------*/
void lat_disp (uchar data1,uchar data2)
{
uchar i,j,k,x;
x=x1;
for(k=0;k<2;k++)
{
for(j=0;j<16;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34);
wr_lcd (comm,y+j*2);
wr_lcd (comm,x+i);
wr_lcd (comm,0x30);
wr_lcd (dat,data1);
wr_lcd (dat,data1);
}
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34);
wr_lcd (comm,y+j*2+1);
wr_lcd (comm,x+i);
wr_lcd (comm,0x30);
wr_lcd (dat,data2);
wr_lcd (dat,data2);
}
}
x=x2;
}
wr_lcd (comm,0x36);
}
/****************************************************************
把输入的设置值在液晶显示
Value:显示的输入值
****************************************************************/
void Convert(unsigned char *Result,unsigned int value1,unsigned int value2,unsigned int Freq)
{
Result +=6;
*Result ='z';
Result--;
*Result ='H';
Result--;
for(unsigned char i=0;i<5;i++)
{
*Result=Freq%10;
*Result +=48;
Result--;
Freq=Freq/10;
}
Result+=16;
for(unsigned char j=0;j<4;j++)
{
*Result=value2%10;
*Result +=48;
Result--;
value2=value2/10;
}
*Result='.';
Result--;
for(unsigned m=0;m<3;m++)
{
*Result=value1%10;
*Result +=48;
Result--;
value1=value1/10;
}
*Result=' ';
}
/****************************************************************
把输入的设置值在液晶显示,显示浮点数
Value:显示的输入值
****************************************************************/
void float_Convert(unsigned char *Result,float Value,unsigned int Freq)
{
unsigned int value1;
Value *=100000;
value1=(unsigned int)Value;
value1&=0x7FFFF;
Result +=6;
*Result ='z';
Result--;
*Result ='H';
Result--;
for(unsigned char i=0;i<5;i++)
{
*Result=Freq%10;
*Result +=48;
Result--;
Freq=Freq/10;
}
Result+=16;
for(unsigned char j=0;j<2;j++)
{
*Result=value1%10;
*Result +=48;
Result--;
value1=value1/10;
}
*Result='.';
Result--;
for(unsigned char m=0;m<3;m++)
{
*Result=value1%10;
*Result +=48;
Result--;
value1=value1/10;
}
for(unsigned char n=0;n<3;n++)
{
*Result=' ';
*Result--;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -