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

📄 lcda1098.c

📁 c8051F020 液晶显示的程序 也许有用
💻 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 + -