📄 ocj4x8.c
字号:
/************************************************************************************
* 文件名称: lcd_ocmj48.c
* 适用器件: MSP430X22X4
* 液晶型号: OCMJ4X8C / OCMJ4X8C-8(128X64)
* 摘 要: 本文件是OCMJ4X8C串行显示字符子程序;使用dco1MHz晶振.
*接口配置: sbit cs = P4.1;
sbit std = P3.1;
sbit sclk = P3.3;*/
#include "msp430x22x4.h"
//#include <intrins.h>
//#include "lib.h"
// 常量及全局变量定义
#define uint unsigned int
#define uchar unsigned char
#define x1 0x80
#define x2 0x88
#define y 0x80
#define comm 0
#define dat 1
//****************************************************************************************
// 函数引用声明
void wr_lcd (uchar dat_comm,uchar content);
void delay (uint us);
void delaynop();
void init_lcd (void); //LCD初始化
void clrram (void); //LCD汉字清屏
void dprintf (uchar x0,uchar y0,uchar *content); //显示汉字(x0行:0-3,y0列:0-7,内容)
void dis_num(unsigned char i,unsigned char j,unsigned char ss);
//********************************************************************************************
//********************************************************************************************
//根据需要配置端口
//sbit cs = P4.1;//18
//sbit std = P3.1;//12脚
//sbit sclk = P3.3;//14脚
//*********************************************************************************************
void delay (uint time) //delay time
{
while(time--);
}
////////////////////////////////////////////////////
/*void delaynop()
{
_NOP();_NOP();_NOP();_NOP();_NOP();
}*/
#define delay_() _NOP();
//********************************************************************************
//利用液晶字库直接显示汉字或字符
void dprintf (uchar x0,uchar y0,uchar *content) //(x0是行,y0是列)
{
uchar addr=0,i=0;
addr=8*x0+y0;
if(addr>7 && addr<16)
addr+=8;
else if(addr>15 && addr<24)
addr-=8;
addr+=0x80;
wr_lcd (comm,addr);
delay (160);
do
{
wr_lcd (dat,*content);
i++;
if((i+y0*2)==16)
{
i=0;y0=0;
x0++;
switch (x0)
{
case 1: wr_lcd (comm,0x90);break;
case 2: wr_lcd (comm,0x88);break;
case 3: wr_lcd (comm,0x98);break;
default: break;
}
delay (160);
}
}while((*(++content))!=0);
}
//***************************************************
//显示变量
void dis_num(unsigned char i,unsigned char j,unsigned char ss)
{
uchar dis_[4];
dis_[0]=ss/100+0x30;
dis_[1]=ss%100/10+0x30;
dis_[2]=ss%10+0x30;
dis_[3]='\0';
if((dis_[0]==0x30)&&(dis_[1]!=0x30))
{
dis_[0]=dis_[1];
dis_[1]=dis_[2];
dis_[2]='\0';
}
if((dis_[0]==0x30)&&(dis_[1])==0x30)
{
dis_[0]=dis_[2];
dis_[1]='\0';
}
dprintf(i,j,dis_);
}
//***************************************************
//LCD汉字清屏
void clrram (void)
{
wr_lcd (comm,0x30);
delay (160);
wr_lcd (comm,0x01);
delay (7000);
}
//***************************************************
//****************************************************
/*------------------初始化-----------------*/
void init_lcd (void)
{
wr_lcd (comm,0x30); /*30---基本指令动作*/
delay(180);
wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
delay (7000);
wr_lcd (comm,0x06); /*光标右移*/
delay(300);
wr_lcd (comm,0x0c); /*开整体显示,关游标*/
delay(180);
}
//****************************************************
//****************************************************
/*--------------写地址或数据-------------------*/
void wr_lcd (uchar dat_comm,uchar content)
{
uchar aa=0,i=0,j=0;
P4DIR|=0x02;
P3DIR|=0x0a;
aa=content;
P4OUT|=BIT1;//cs=1;
P3OUT&=~BIT3;//sck=0;
delay_();delay_();delay_();
P3OUT|=BIT1;//std=1;
for(i=5;i>0;i--)
{
P3OUT|=BIT3;//sclk=1;
delay_();delay_();delay_();delay_();delay_();
P3OUT&=~BIT3;//sclk=0;
delay_();delay_();delay_();delay_();delay_();
}
P3OUT&=~BIT1;//std=0;
P3OUT|=BIT3;//sclk=1;
delay_();delay_();delay_();delay_();delay_();
P3OUT&=~BIT3;//sclk=0;
delay_();delay_();delay_();
if(dat_comm)
P3OUT|=BIT1;//std=1; //data
else
P3OUT&=~BIT1;//std=0; //command
P3OUT|=BIT3;//sclk=1;
delay_();delay_();delay_();delay_();delay_();
P3OUT&=~BIT3;//sclk=0;
delay_();delay_();delay_();delay_();
P3OUT&=~BIT1;//std=0;
P3OUT|=BIT3;//sclk=1;
delay_();delay_();delay_();delay_();delay_();
P3OUT&=~BIT3;//sclk=0;
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{
P3OUT=((aa&0x80)>>6);//std=(aa&0x80);
aa=aa<<1;
P3OUT|=BIT3;//sclk=1;
delay(1);
P3OUT&=~BIT3;//sclk=0;
delay_();delay_();delay_();delay_();delay_();
}
P3OUT&=~BIT1; //std=0;
for(i=0;i<4;i++)
{
P3OUT|=BIT3;//sclk=1;
delay_();delay_();delay_();delay_();delay_();
P3OUT&=~BIT3;//sclk=0;
delay_();delay_();delay_();delay_();delay_();
}
}
}
//*************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -