原创 1602的屏显程序

2007-8-8 17:47 2384 7 7 分类: MCU/ 嵌入式

#include<reg51.h>
#define uchar unsigned char
uchar  aa[3]={0x41,0x42,0x43}  ;
uchar  bb[16]="    abcdefghi   ";
uchar k,t=0;
sbit rs="P3"^2;   //寄存器选择
sbit rw="P3"^3;   //读写信号线
sbit elcd="P3"^4;   //使能端


void delay(void)  //延时  

 uchar i,j;
 for(i=250;i>0;i--)
 for(j=100;j>0;j--);
}
void wcmd(uchar cmd)  //写入指令或显示地址
{
 P0=cmd;
 rs=0;
 rw=0;
 elcd=0;
 delay();
 elcd=1;
}
void wdat(uchar dat)  //写入字符
{
 P0=dat;
 rs=1;
 rw=0;
 elcd=0;
 delay();        //上升沿有效
 elcd=1;
}
void longdat(uchar cc[])  //写入字符串

 uchar x;
 for(x=0;x<16;x++)
 {
  delay();
  wdat(cc[x]);
 }
}
void init()   //初始化
{
 wcmd(0x01);  //光标复位
 wcmd(0x38);  //选择点阵
 wcmd(0x0c);  //开显示
 wcmd(0x04);  //光标命令
}
void show(void)  
{
 
 longdat(aa);
 wcmd(0xc0);  //换行并从第零个显示
 longdat(bb);
 delay();
 delay();
}
void main()
{
 IE=0X82;
 TMOD=0X01;
 TH0=0X4C;
 TL0=0X00;
 TR0=1;
 for(;;);
}
void time() interrupt 1 using 0
{
 TH0=0X4C;
 TL0=0X00;
 t=t+1;
 if(t==20)
 {
  t=0;
  init();
  show();
  for(k=0;k<2;k++)
  {
   wcmd(0x07);
   show();
  }
 }
}


 


 


 


用后,有什么不对的地方,请留言说明是哪的错,以备后来人使用。


谢谢

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条