⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ocj4x8.c

📁 2007年全国赛题A题音频信号分析仪的源码
💻 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 + -