/******************************************************************** 
                            汇诚科技 
                                          http://www.ourhc.cn 
*********************************************************************/ 
#include<reg52.h>              
#include<math.h>                 
#include<intrins.h>               
#define        uchar unsigned char       
#define        uint unsigned int 
#define         data_IO P0 
 
sbit     rs=P1^0;        //指令和数据寄存器 “1是数据,” “0是指令” 
sbit     rw=P1^1;//读写控制,“1读” “0写” 
sbit          e=P1^2; //片选信号 
 
 
char d[32]={'h', 't', 't', 'p',':', '/', '/', 'w',  'w', 'w', '.', 'o', 'u','r','h', 'c', 
 
                   '.', 'c', 'n', ' ','Q','Q',':','1', '1', '5', '4', '5', 'l', '6', '1', '9'}; 
                                                                                                                                                                                   
 
 
 
void yanshi(uint n)///////////////延时函数/////////////////////////////////// 
{ 
 uint i; 
  for(i=0;i<n;i++){}; 
} 
 
void delay(uint n)///////////////延时函数/////////////////////////////////// 
{ 
 uint i,j; 
  for(i=0;i<1000;i++) 
   {for(j=0;j<n;j++){}} 
 
} 
 
void busy() ////////////////////判断是否忙//////////////////////////////////////// 
{data_IO=0xff; 
 rs=0; //写指令        //////////////////// 
 rw=1; //表示读状态    // 三个的状态表示 // 
 e=1;  //下降延//      // 判忙状态       // 
 
}  
void xiezl(uchar shuju) /////////////////////*写指令*///////////////////////////// 
{ 
 busy();/*yanshi(6500);*/ 
 data_IO=shuju; 
 //rs=1; 
 rs=0; //写指令        //////////////////// 
 rw=0; //表示写状态    // 三个的状态表示 // 
 e=1;  //下降延//      // 写指令         // 
 e=0;  /////////       //////////////////// 
 
} 
 
void w_dat(uint n)//////////////////写数据////////////////////////// 
{ 
 busy(); /*yanshi(6500) ;*/ 
  data_IO=n; 
   rs=0; 
   rs=1; //写数据       //////////////////// 
   rw=0; //表示写状态    // 三个的状态表示 // 
   e=1;  //下降延//      //写数据         // 
   e=0;  /////////       //////////////////// 
   //return; 
} 
 
void xianshi(uchar js[]) //////////////////显示函数/////////////////////////////// 
{ 
   uchar h,v; 
  xiezl(0x01); //清屏显示 
  yanshi(100) ; 
  xiezl(0x80); // DDRAM地址的设置 
 for(h=0;h<16;h++) 
   {w_dat(js[h]);  ///n表示有写几位数据 
   yanshi(10) ; 
   } 
   xiezl(0xc0);//换行 
 for(v=(16);v<32;v++) 
   {w_dat(js[v]);  ///n表示有写几位数据 
   yanshi(10) ; 
   } 
   } 
 
 
void chushihua(void)///////////////////*液晶模块初始化*/ 
 { uchar i; 
   //rs=1        ; 
   rs=0; //写指令 
   rw=0; //表示写状态 
   e=0;  //使能 
   for(i=0;i<3;i++) 
   { 
    xiezl(0x38);  //功能设置,8位,一行显示,5*7点阵 
    yanshi(1000); 
   } 
    xiezl(0x38); //两行显示 
    xiezl(0x0f); //显示开关控制位 
    xiezl(0x18); //移位控制,光标和显示一起左移   
    xiezl(0x06); //设置输入模式 
    xiezl(0x01); //清屏显示 
    xiezl(0x80); // DDRAM地址的设置 
 
    } 
 
 
void main(void) 
 
{  
while(1) 
{ 
 
chushihua(); 
xianshi(d);//显示函数 
 yanshi(40000); 
        } 
                   
         } 
 
 
 
 |