原创 液晶1602的单片机控制程序

2009-4-11 12:38 2127 4 5 分类: 电源/新能源

#include <reg52.h>
#include <intrins.h>
#include<absacc.h>  


#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
typedef bit BOOL ;


sbit rs="P3"^3;
sbit rw="P3"^1;
sbit ep="P3"^0;


uchar code dis1[] = {"Welcome to 1602"};
uchar code dis2[] = {" Designed by YHB"};


void delayms(uchar ms)
{       // 延时子程序
 uchar i;
 while(ms--)
 {
  for(i = 0; i< 250; i++)
  {
   _nop_();
   _nop_();
   _nop_();
   _nop_();
  }
 }
}


BOOL lcd_bz()
{       // 测试LCD忙碌状态
 BOOL result;
 rs = 0;
 rw = 1;
 ep = 1;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 result = (BOOL)(P2&0x80);
 ep = 0;
 return result;
}


void lcd_wcmd(uchar cmd)
{       // 写入指令数据到LCD
 while(lcd_bz());
 rs = 0;
 rw = 0;
 ep = 0;
 _nop_();
 _nop_();
 P2 = cmd;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 ep = 1;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 ep = 0; 
}


void lcd_pos(uchar pos)
{       //设定显示位置
 lcd_wcmd(pos | 0x80);
}


void lcd_wdat(uchar dat)
{       //写入字符显示数据到LCD
 while(lcd_bz());
 rs = 1;
 rw = 0;
 ep = 0;
 P2 = dat;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 ep = 1;
 _nop_();
 _nop_();
 _nop_();
 _nop_();
 ep = 0;
}


void lcd_init()
{       //LCD初始化设定
 lcd_wcmd(0x38);   //
 delayms(1);
 lcd_wcmd(0x0c);   //
 delayms(1);
 lcd_wcmd(0x06);   //
 delayms(1);
 lcd_wcmd(0x01);   //清除LCD的显示内容
 delayms(1);
}


void main()


{


   while(1)


   {


     lcd_init();    // 初始化LCD  
    delayms(10);
    lcd_pos(0);    // 设置显示位置为第一行的第1个字符
    co = 0;
    while(dis1[co] != '\0')
     {    
      lcd_wdat(dis1[co]);
      co++;
     }
    lcd_pos(0x40);   // 设置显示位置为第二行第1个字符
    co = 0;
    while(dis2[co] != '\0')
     {
       lcd_wdat(dis2[co]);
      co++;
     }


  }


}

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

tengjingshu_112148725 2009-4-11 16:03

支持._nop_()好像不用那么多吧,E高脉冲只要几百ns就行,一个_nop_()就1us了(12MHz)
相关推荐阅读
用户398463 2009-05-24 11:15
各种电容的用途和性能区分
转自Emile的工作收藏:【电容专题】什么是CBB电容,独石电容,电解电容?1、聚酯(涤纶)电容(CL) 电容量:40p--4u 额定电压:63--630V 主要特点:小体积,大容量,耐热耐湿,稳定性...
用户398463 2009-04-11 12:38
自带字库的点阵式液晶12864单片机控制程序
一、概述    带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16...
用户398463 2009-04-11 12:22
4*4行列式键盘扫描程序
uchar code keytab[]={0x7E,0x7D,0x7B,0x77,  //0,1,2,3,                     0xBE,0xBD,0xBB,0xB7,   //4...
用户398463 2009-04-11 12:22
ByteBlasterII下载线电路图
此电路所制作的下载线既可以用来下载51单片机的程序,也可以用来下载FPGA/CPLD的程序。...
EE直播间
更多
我要评论
1
4
关闭 站长推荐上一条 /3 下一条