| #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);
 }
 
 }
 
 
 |