📄 lcda1098.c
字号:
//-----------------------------------------------------------------------------
// 版权归新华龙电子公司所有
//-----------------------------------------------------------------------------
//
// 文件名:LCD.c
//
// 编写人:LC
//
// 编写时间:2004/12/31
//
// 目标器件: C8051F31x
//
// 编译工具: Silicon Laboratories IDE
//
//-----------------------------------------------------------------------------
//程序描述:
// 这个程序可以在该液晶模块上显示二行字符:Welcom To NCD,www.xhl.com.cn
// 此程序用8位数据线来驱动液晶
//
//-----------------------------------------------------------------------------
// 头文件包含
//-----------------------------------------------------------------------------
#include <c8051f020.h>
//-----------------------------------------------------------------------------
//全局变量定义
//-----------------------------------------------------------------------------
//---------------------------------------------------
unsigned long x; //w w w . x h l . c o |
unsigned char xdata Netdata[15]={0x77,0x77,0x77,0x2e,0x78,0x68,0x6c,0x2e,0x63,0x6f,//|
0x6d,0x2e,0x63,0x6e};// |
//m . c n |
//-----------------------------------------------------
unsigned char xdata NCDdata[15]={0x57,0x65,0x6c,0x63,0x6f,0x6d,0x65,0x20,0x74,0x6f,//|
0x20,0x4e,0x43,0x44};// |
unsigned char *lcdpoint; //指向 lcddata数组的指针
unsigned char lcd_data_count; //要显示的数据个数
//-----------------------------------------------------------------------------
// 函数定义
//-----------------------------------------------------------------------------
void SYSCLK_Init (void);
void PORT_Init (void);
void LCD_Init(void);
void SEND_LCD(unsigned char lcd_data_count);
//-----------------------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------------------
void main (void)
{
static unsigned char data1,data2;
WDTCN = 0xde;
WDTCN = 0xad; //禁止看门狗定时器
SYSCLK_Init (); // 系统时钟初始化
PORT_Init (); // 交叉开关和通用I/O口初始化
while(1){
LCD_Init(); //LCD初始化
P6 = 0x0d; //准备送数据
for(x=0;x<5000;x++);
lcdpoint=&NCDdata;
for(lcd_data_count=14;lcd_data_count>0;lcd_data_count--) //显示第一行字符
{
data1=*lcdpoint;
P7 = data1;
P6 = 0x0c;
P6 = 0x0d;
lcdpoint++;
for(x=0;x<100;x++);
}
P6 = 0x09;
P7 = 0xc0;
P6 = 0x08;
P6 = 0x09;
//P6 = 0x0c;
//P6 = 0x0d;
for(x=0;x<1000;x++);
lcdpoint=&Netdata;
for(lcd_data_count=14;lcd_data_count>0;lcd_data_count--) //显示第二行字符
{
data1=*lcdpoint;
P7 = data1;
P6 = 0x0d;
P6 = 0x0c;
lcdpoint++;
for(x=0;x<100;x++);
}
}
}
//-----------------------------------------------------------------------------
//函数名称: SYSCLK_Init ()
//函数功能: 系统时钟初始化
//入口参数: 无
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//-----------------------------------------------------------------------------
//
void SYSCLK_Init (void)
{
OSCICN = 0x05; // 系统时钟初始化为片内的 24.5MHz / 8
}
//-----------------------------------------------------------------------------
//函数名称: PORT_Init ()
//函数功能: 通用I/O口及交叉开关初始化
//入口参数: 无
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//-----------------------------------------------------------------------------
void PORT_Init (void)
{
XBR0 = 0x00; // 没有选择数字外设
P74OUT = 0xff; // P0口设为推挽方式
}
//-----------------------------------------------------------------------------
// //函数名称: LCD_Init ()
//函数功能: LCD初始化
//入口参数: 无
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//-----------------------------------------------------------------------------
void LCD_Init(void)
{
P6 = 0x09;
for(x=0;x<50000;x++);
//P7 = 0x30; /*一行显示*/
P7 = 0x38; /*两行显示*/
P6 = 0x08;
P6 = 0x09;
for(x=0;x<1000;x++);
P7 = 0x0e; /*开显示,开光标,字符不闪烁*/
P6 = 0x08;
P6 = 0x09;
for(x=0;x<1000;x++);
P7= 0x06; /*I/D=1,AC自动增1;S=0,整体显示不移动*/
P6 = 0x08;
P6 = 0x09;
for(x=0;x<5000;x++);
P7 = 0x01; /*清除DDRAM,置AC=0*/
P6 = 0x08;
P6 = 0x09;
for(x=0;x<5000;x++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -