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

📄 ocmj8x15b.c

📁 型号:OCMJ8X15B(不带触摸屏) MCU :89C52 功能:演示
💻 C
字号:
/*******************************************
型号:OCMJ8X15B(不带触摸屏)
MCU :89C52
功能:演示
编写:roger
日期:2007/4/14
********************************************/

#include <reg52.h>
#include <intrins.h>
#include "pic.h"

#define data_ora   P1              //MCU P1<------> LCM
#define uchar      unsigned char
#define uint       unsigned int

sbit req =P3^0;  //请求信号,H有效
sbit busy=P3^1;  //H:已收到数据并在处理中,L:空闲可接收数据

/**********nus延时子程序*************/
void delay_nus(uint n)
{
	while(n--);
}

/**********nms延时子程序*************/
void delay_nms(uint n)
{
	uint i,j;
	for(i=0;i<n;i++)
		for(j=0;j<1000;j++)
			;
}

/**********写命令或数据*************/
void SendData(uchar content)
{
	while(busy==1);
	data_ora=content;
	req=1;
	while(busy==0);
	req=0;
}

/**********写命令或数据到LCD*************/
void SendDataToLCD(uchar cmd,uchar addr_x,uchar addr_y)
{
	SendData(cmd);
	SendData(addr_x);
	SendData(addr_y);
}

/**************显示点阵******************/
void display_Grid(uchar data1,uchar data2)
{
	uchar i,j,k;
	for(k=0;k<128;k=k+4)
	{
		for(j=0;j<2;j++)
		{
			for(i=0;i<30;i++)
			{
				SendDataToLCD(0xf3,i,k+j);
				SendData(data1);
                        }
                }
		for(j=2;j<4;j++)
                {
			for(i=0;i<30;i++)
			{
				SendDataToLCD(0xf3,i,k+j);
				SendData(data2);
			}
		}
	} 
}

/*************显示图形***************/
void display_Picture(uchar code *img)
{
	uchar i,j;
	for(j=0;j<128;j++)
	{
		for(i=0;i<30;i++)
		{
			SendDataToLCD(0xf3,i,j);
			SendData(img[j*30+i]);
		}
	}
}

/************显示中文*****************/
void display_chn(uchar code *chn)
{
	uchar i,j;
	for(j=0;j<8;j++)
	{
		for(i=0;i<15;i++)
		{
			SendDataToLCD(0xf0,i,j);
			SendData(chn[i*2+30*j]-0xa0);
			SendData(chn[i*2+30*j+1]-0xa0);
		}
	}
}

/************显示字符(8X16)****************/
void display_eng(uchar n,uchar code *eng)
{
	uchar i,j;
	for(j=0;j<n;j++)
	{
		for(i=0;i<30;i++)
		{
			SendDataToLCD(0xf9,i,j*16);
			SendData(eng[j*30+i]);
		}
	}
}

/************显示字符(8X8)****************/
void display_eng1(uchar addr_y,uchar n,uchar code *eng)
{
	uchar i,j;
	for(j=0;j<n;j++)
	{
		for(i=0;i<30;i++)
		{
			SendDataToLCD(0xf1,i,addr_y+j*8);
			SendData(eng[j*30+i]);
		}
	}
}

/***********主程序***************/
void main (void)
{
	req=0;
	busy=1;
	while(1)
    {
		SendData(0xf4);
		display_Grid(0xff,0xff);
		delay_nms(300);
		SendData(0xf4);
		display_chn(chn);
		delay_nms(300);
		SendData(0xf4);
		display_Grid(0xff,0x00);
		delay_nms(300);
		SendData(0xf4);
		display_Grid(0x00,0xff);
		delay_nms(300);
		SendData(0xf4);
		display_eng(4,eng);
		display_eng1(64,6,eng+120);
		display_eng1(112,2,eng1);
		delay_nms(300);
		SendData(0xf4);
		display_Picture(pic);
		delay_nms(300);
		SendData(0xf4);
		display_Grid(0xcc,0xcc);
		delay_nms(300);
		SendData(0xf4);
		display_Grid(0x33,0x33);
		delay_nms(300);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -