导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→用ARM LPC2131控制液晶(金鹏OCMJ4*8C),请[flatterbird]

 *第37240篇: 用ARM LPC2131控制液晶(金鹏OCMJ4*8C),请指教

  
楼 主:flatterbird 2006年1月17日12:33
 用ARM LPC2131控制液晶(金鹏OCMJ4*8C),请指教

点击浏览该文件
点击浏览该文件

程序如下,敬请指教
#include "config.h"


const uint32 rst=1;          //resrt
const uint32 rs=1  <  <1 ;         //H=data; L=command;
const uint32 rw=1  <  <4 ;         //H=read; L=write;
const uint32  e=1  <  <5 ;        //input enable;
const uint32 busy=1  <  <25  ;     // test busy
const uint32 DB8=(0xFF  <  <18); // P1[25:18]控制D0-D7,

#define uint  unsigned int
#define uchar unsigned char

#define comm  0
#define dat   1


void wr_lcd(uchar dat_comm,uchar content);
void chk_busy (void);


uchar tab1[]={
"本系列中文模块内"
"任意位置反白显示"
"置二级字库,可在"
"使用更方便更灵活"
};


/*------------------初始化-----------------*/
void init_lcd(void)
{
  IO0SET=rst;
  wr_lcd(comm,0x30);  /*30---基本指令动作*/   
  wr_lcd(comm,0x01);  /*清屏,地址指针指向00H*/
  wr_lcd(comm,0x06);  /*光标的移动方向*/
  wr_lcd(comm,0x0c);  /*开显示,关游标*/
}


/*---------------显示汉字或字符----------------*/
void chn_disp(uchar  *chn)
{
  uchar i,j;
  wr_lcd (comm,0x30);                          //30,基本指令集
  wr_lcd (comm,0x80);                          //80,从第一行第一列开始显示
  for (j=0;j  <4;j++)
  {
    for(i=0;i  <16;i++)
    wr_lcd(dat,chn[j*16+i]);
  }
}


/*--------------写数据和指令-----------------*/
void wr_lcd(uchar dat_comm,uchar content)
{
  uint i;
  chk_busy ();
  if(dat_comm)
   {
    IO0SET=rs;    //data
    IO0CLR=rw;    //write
   }
  else 
   {
    IO0CLR=rs;   //command
    IO0CLR=rw;   //write
   }
  IO1PIN=content  <  <18;              //write data or comm
  IO0SET=e;              //模拟使能E下降沿
 for (i=0; i  <0xFFFF; i++);
  IO0CLR=e;

}

/*--------------检验忙信号-----------------*/
void chk_busy(void)
{
  uint i;
  IO0CLR=rs;          //读取忙信号
  IO0SET=rw;
  IO0SET=e;   
  for (i=0; i  <0xFFFF; i++);
  while((IO1PIN&busy)==1);
  IO0CLR=e;
  for (i=0; i  <0xFFFF; i++);
}

/*------------------主程序--------------------*/
int  main(void)
{
  uint i;
 
  PINSEL0 = 0x00000000;          
  PINSEL2 = PINSEL2 & (~0x08);      // P1[25:18]连接GPIO
  IO0DIR  = 0xff;                 // 设置0口为输出
  IO1DIR  = DB8;           // 设置DB控制口为输出


  init_lcd();
  chn_disp(tab1);
  
  for (i=0; i  <0xFFFFFF; i++);
  
  return 0;
 
}


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:优惠价出租(或出售)ARM7开发板

[下一篇主题]:求助