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

📄 320240.c

📁 RA8835或SED1335黑白屏主控系列C源程序,测试OK(端口需要根据自己需要修改)
💻 C
字号:
/*
;-------------------------------------------------------------------
;
; LCM指令端口地址FFFFH:数据端口地址:FFFEH
; 320*240点阵整屏的点象素为76800,也就有9600(2580H)个字节,单屏图形方式
; 所以第一区显示缓存地址范围为:0000H----257FH
; 所以第二区显示缓存地址范围为:2580H----4AFFH
; 所以第三区显示缓存地址范围为:4B00H----707FH
; 320*240点阵整屏---一行占40个字节的显示缓存
;
;--------------------------------------------------------------------
*/

#include <reg52.h>
//include "240160.h"
#define uchar unsigned char
#define uint unsigned int
//=====================================
void LcdCommand(uchar com);
void LcdDataWrite(uchar dat);
void Initialize(void);
void delay(uint);
void SetCursor(uchar,uchar);
void WriteOneWork(uchar,uchar,uchar *);
void WriteLine(uchar,uchar,uchar);
//==============================================
 sbit RST= P2^4;
 sbit A0 = P2^3;
 sbit CS = P2^2;
 sbit R_D = P2^1;
 sbit W_R = P2^0; 
//==============================================
uchar code ZKWU[]=
{0x00,0x10,0x1F,0xF8,0x10,0x10,0x10,0x10,0x1F,0xF0,0x00,0x00,0x00,0x10,0x3F,
0xF8,0x01,0x00,0x01,0x04,0xFF,0xFE,0x02,0x80,0x02,0x40,0x04,0x20,0x18,0x1C,0x60,0x08};
uchar code ZKLIN[]=
{0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0xFD,0xFE,0x10,0x20,0x10,0x60,0x38,0x70,
0x34,0xB0,0x54,0xA8,0x51,0x28,0x92,0x26,0x14,0x24,0x10,0x20,0x10,0x20,0x10,0x20};




void LcdCommand(uchar com)
{ 
	CS = 0;
	R_D = 1;
    A0 = 1;
    P1 = com;
    W_R = 0;
    W_R = 1;
    CS = 1;
	A0 = 0;
}


void LcdDataWrite(uchar dat);
{
    CS = 0;
	R_D = 1;
 	A0 = 0;
    P1 = dat;   
    W_R = 0;
    W_R = 1;
    CS = 1;
    A0 = 1;
}


/******************************** 初始化LCD函数 ********************************/
void Initialize(void)
{
uint i;
LcdCommand(0x40); /* ---------LCD SYSTEM SET系统设置令,8个参数--------
*/
LcdDataWrite(0x30);
LcdDataWrite(0x87);
LcdDataWrite(0x07);
LcdDataWrite(39); /* 显示域长度为320dot */
LcdDataWrite(0x36); /* 确定液晶工作频率 */
LcdDataWrite(239); /* 显示屏高度为240dot */
LcdDataWrite(40); /* 显示屏一行所占显示缓冲区字节数(L) */
LcdDataWrite(0); /* 显示屏一行所占显示缓冲区字节数(H) */
delay(0x9);
LcdCommand(0x44); /* ---------LCD SCROLL显示区设置命令,最多10个参数---
------ */
LcdDataWrite(0x00); /* 显示1区对应的显示RAM起始高8位地址 */
LcdDataWrite(0x00); /* 显示1区对应的显示RAM起始低8位地址 */
LcdDataWrite(240); /* 显示1区占用240个dot行 */
LcdDataWrite(0x80); /* 显示2区对应的显示RAM起始低8位地址 */
LcdDataWrite(0x25); /* 显示2区对应的显示RAM起始高8位地址 */
LcdDataWrite(240); /* 显示3区占用240个dot行 */
LcdDataWrite(0x00); /* 显示3区对应的显示RAM起始低8位地址 */
LcdDataWrite(0x4b); /* 显示3区对应的显示RAM起始高8位地址 */
delay(0x9);
LcdCommand(0x5a); /* 水平卷动,初始化时必须清零 */
LcdDataWrite(0x00);
delay(0x9);
LcdCommand(0x5b); /* 各个显示区的合成方式,1个参数 */
LcdDataWrite(0x1c); /* 参数:显示方式为三屏图形叠加,逻辑或 */
delay(0x9);
LcdCommand(0x59); /* 打开显示,1个参数 */
LcdDataWrite(0x04); /* 只显示第一个区并关闪烁 */
delay(0x9);
LcdCommand(0x4c); /* 光标自动向右增一?*/
delay(0x9);
LcdCommand(0x46); /* 设定光标位置命令 */
LcdDataWrite(0); /* 从0000位置开始 */
LcdDataWrite(0);
delay(0x9);
LcdCommand(0x42); /* 允许MPU连续地把显示数据写入显示区内命令 */
for(i=0;i<32760;i++)
{

LcdDataWrite(0); /* 将32K显缓全部清零,即LCD不显示任何东西 */
}
}
/* --------------------------设定光标,允许显示------------------------- */
void SetCursor(uchar CursorHIGH,uchar CursorLOW)
{
delay(0x9);
LcdCommand(0x46); /* 设定光标位置命令 */
LcdDataWrite(CursorLOW); /* 从0000位置开始 */
LcdDataWrite(CursorHIGH);
delay(0x9);
LcdCommand(0x42); /* 允许MPU连续地把显示数据写入显示区内命令 */
}
/* ---------------------------在指定位置显示一个汉字--------------------------- */
void WriteOneWork(uchar CurHIGH,uchar CurLOW,uchar * ZiKu)
{
uchar i;
SetCursor(CurHIGH,CurLOW); /* 设定光标,允许显示 */
i=0;
do
{
LcdDataWrite(ZiKu[i]);
i=i+2;
}
while(i<0x1e);
SetCursor(CurHIGH,CurLOW+1);
i=1;
while(i<0x1f)
{
LcdDataWrite(ZiKu[i]);
i=i+2;
}
}
/* ----------------------延时子程序----------------------------- */
void delay(uint delx)
{
uint i=0;
while(i<delx)
{
i++;
}
}
void main(void)
{
uchar i;
SP=0x60;
EA=0;
delay(0x30);
Initialize();
delay(0x9);
LcdCommand(0x4f); /* 光标地址自动向下增一 */
WriteOneWork(0,0,ZKWU);
WriteOneWork(0x2,0x80,ZKLIN);
while(1);
}

⌨️ 快捷键说明

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