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

📄 f330lcd.txt

📁 用于C8051F330的lcd显示程序
💻 TXT
字号:
   LCD的调试程序     2006-08-25 11:08:27 
大 中 小 
LCD:
 
//程序描述:
//-----------------------------------------------------------------------------
//    此程序控制一块字符型液晶(WCM1602ATL012,它是5V 器件),,液晶资料可从新华龙公网
//站上下载,单片机的P0口作为液晶的8位数据口,P1.0为背光控制(LCDCTRL),P1.1送出脉
//冲信号(LCDE),P1.2为读写信号(LCDRW),P1.4为液晶片选信号(LCDRS),P1.3接发光二极管。
//  这个程序可以在该液晶模块显示一行字符:www.xhl.com.cn
//-----------------------------------------------------------------------------
//
//液晶接线方法
//-----------------------------------------------------------------------------   
//   1脚接地;2脚接+5V;3脚通过1个10K电阻接+5v,通过1个430欧电阻接地;15脚接三极管
//(9013)的集电极,其发射极接地,基极通过1个5.1K电阻接地,并通过1个5.1K的电阻接
//LCDCTRL信号;16脚通过1个10电阻接+5v。液晶别的引脚直接接相应的数据或控制信号线。
//
//-----------------------------------------------------------------------------
// 头文件包含
//-----------------------------------------------------------------------------
#include <c8051f330.h>                
//-----------------------------------------------------------------------------
// 常量定义
#define SYSCLK       24500000 / 8         //系统工作频率
//-----------------------------------------------------------------------------
//位定义
//-----------------------------------------------------------------------------
sbit LED = P1^3;                          // LED所接的引脚
sbit LCDRS = P1^4;
sbit LCDRW = P1^2;
sbit LCDE  = P1^1;
sbit LCDCTRL = P1^0;
//-----------------------------------------------------------------------------
//全局变量定义
//-----------------------------------------------------------------------------
                                //---------------------------------------------------
unsigned long i;                 //w    w   w    .    x     h   l     .   c     o    |
unsigned char xdata lcddata[15]={0x77,0x77,0x77,0x2e,0x78,0x68,0x6c,0x2e,0x63,0x6f,// |
                                0x6d,0x2e,0x63,0x6e};//                              |
                               //m     .    c    n                                   |
                               //-----------------------------------------------------
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)
 {
unsigned char j;
    PCA0MD &= ~0x40;                       //禁止看门狗定时器
    SYSCLK_Init ();                        // 系统时钟初始化
                                         
    PORT_Init ();                          // 交叉开关和通用I/O口初始化
 
    LCD_Init();                            //LCD初始化
LCDRS = 1;                             //准备送数据
    for(i=0;i<5000;i++);
    for(i=0;i<5000;i++);
    lcdpoint=&lcddata;
    for(lcd_data_count=14;lcd_data_count>0;lcd_data_count--)     //显示第一行字符
       {
     P0=*lcdpoint;
     lcdpoint++;
  LCDE =0;
        LCDE =1;
  for(i=0;i<700;i++);
    }                            //字符显示完毕
 
   while (1)
   {                          
   LED =!LED;
   for(i=0;i<5000;i++);
   for(i=0;i<5000;i++);
   }
}
//-----------------------------------------------------------------------------
//系统时钟初始化
//-----------------------------------------------------------------------------
//
void SYSCLK_Init (void)
{
   OSCICN = 0x80;                          // 系统时钟初始化为片内的 24.5MHz / 8                      
                                        
   RSTSRC = 0x04;                         // 使能时钟丢失检测器
}
//-----------------------------------------------------------------------------
// 通用I/O口及交叉开关初始化
//-----------------------------------------------------------------------------
void PORT_Init (void)
{
   XBR0     = 0x00;                       // 没有选择数字外设
   XBR1     = 0x40;                       // 使能交叉开关和弱上拉
   P0MDOUT  = 0xff;                       // P0口设为推挽方式
   P1MDOUT  = 0xff;                       // P1口设为推挽方式
}
//-----------------------------------------------------------------------------
// 通用I/O口及交叉开关初始化
//-----------------------------------------------------------------------------
void LCD_Init(void)
{
 LCDE = 1;
   LCDRS = 0;                              //选通液晶
   LCDRW = 0;                             //准备写数据
   LCDCTRL=1;                             //背光开
   for(i=0;i<50000;i++);
   for(i=0;i<50000;i++);
   for(i=0;i<50000;i++);
   P0=0x38;                           //8位数据线
   LCDE =0;
   LCDE =1;
   for(i=0;i<5000;i++);
   for(i=0;i<5000;i++);
   P0=0x0c;                            //开显示        
   LCDE =0;
   LCDE =1;
   for(i=0;i<5000;i++);
   for(i=0;i<5000;i++);
   P0=0x01;                          // 清屏
   LCDE =0;
   LCDE =1;
   for(i=0;i<5000;i++);
   for(i=0;i<5000;i++);
}

文章引用自: 

⌨️ 快捷键说明

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