这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 坤创E-Geek/天科大新电社 » 1602-hello world!

共4条 1/1 1 跳转至

1602-hello world!

菜鸟
2015-02-16 08:56:51     打赏

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

sbit RS = P2^4;   //定义端口
sbit RW = P2^5;
sbit EN = P2^6;

#define RS_CLR RS=0
#define RS_SET RS=1

#define RW_CLR RW=0
#define RW_SET RW=1

#define EN_CLR EN=0
#define EN_SET EN=1

#define DataPort P0
/*------------------------------------------------
 uS延时函数,含有输入参数 unsigned char t,无返回值
 unsigned char 是定义无符号字符变量,其值的范围是
 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
 长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{  
 while(--t);
}
/*------------------------------------------------
 mS延时函数,含有输入参数 unsigned char t,无返回值
 unsigned char 是定义无符号字符变量,其值的范围是
 0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
    
 while(t--)
 {
     //大致延时1mS
     DelayUs2x(245);
  DelayUs2x(245);
 }
}
/*------------------------------------------------
              判忙函数
------------------------------------------------*/
 bit LCD_Check_Busy(void)
 {
 DataPort= 0xFF;
 RS_CLR;
 RW_SET;
 EN_CLR;
 _nop_();
 EN_SET;
 return (bit)(DataPort & 0x80);
 }
/*------------------------------------------------
              写入命令函数
------------------------------------------------*/
 void LCD_Write_Com(unsigned char com)
 { 
// while(LCD_Check_Busy()); //忙则等待
 DelayMs(5);
 RS_CLR;
 RW_CLR;
 EN_SET;
 DataPort= com;
 _nop_();
 EN_CLR;
 }
/*------------------------------------------------
              写入数据函数
------------------------------------------------*/
 void LCD_Write_Data(unsigned char Data)
 {
 //while(LCD_Check_Busy()); //忙则等待
 DelayMs(5);
 RS_SET;
 RW_CLR;
 EN_SET;
 DataPort= Data;
 _nop_();
 EN_CLR;
 }

/*------------------------------------------------
                清屏函数
------------------------------------------------*/
 void LCD_Clear(void)
 {
 LCD_Write_Com(0x01);
 DelayMs(5);
 }
/*------------------------------------------------
              写入字符串函数
------------------------------------------------*/
 void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
 {    
 if (y == 0)
  {    
  LCD_Write_Com(0x80 + x);     //表示第一行
  }
 else
  {     
  LCD_Write_Com(0xC0 + x);      //表示第二行
  }       
 while (*s)
  {    
 LCD_Write_Data( *s);    
 s ++;    
  }
 }
/*------------------------------------------------
              写入字符函数
------------------------------------------------*/
 void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
 {    
 if (y == 0)
  {    
  LCD_Write_Com(0x80 + x);    
  }   
 else
  {    
  LCD_Write_Com(0xC0 + x);    
  }       
 LCD_Write_Data( Data); 
 }
/*------------------------------------------------
              初始化函数
------------------------------------------------*/
 void LCD_Init(void)
 {
   LCD_Write_Com(0x38);    /*显示模式设置*/
   DelayMs(5);
   LCD_Write_Com(0x38);
   DelayMs(5);
   LCD_Write_Com(0x38);
   DelayMs(5);
   LCD_Write_Com(0x38); 
   LCD_Write_Com(0x08);    /*显示关闭*/
   LCD_Write_Com(0x01);    /*显示清屏*/
   LCD_Write_Com(0x06);    /*显示光标移动设置*/
   DelayMs(5);
   LCD_Write_Com(0x0C);    /*显示开及光标设置*/
   }
  
/*------------------------------------------------
                    主函数
------------------------------------------------*/
void main(void)
{
LCD_Init();
LCD_Clear();//清屏
while (1)
 { 
  LCD_Write_String(0,0,"Hello world!");


  while(1);
 }
}

 


菜鸟
2015-02-16 08:58:23     打赏
2楼

做完这个板子坏了 无法检测ds18b20 所以关于温度的就不发了


院士
2015-02-16 13:47:21     打赏
3楼

楼主 其实论坛发帖子是有代码插入功能的。

那样就有语法高亮显示,非常容易读代码了。


高工
2015-03-01 22:03:37     打赏
4楼
虽然很遗憾,你的板子总是坏。但是还是给你点个赞~~棒棒哒

共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]