液晶显示第二种方法

来源:互联网 发布:迪杰斯特拉算法的原理 编辑:程序博客网 时间:2024/05/06 00:54
#include   <reg52.H>#include   <intrins.h>#define uint  unsigned int#define uchar unsigned char/*****************************************************************************/sbit LCM_psb  = P2^3;//H=并口; L=串口;sbit LCM_rst  = P2^4;//Reset Signal 低电平有效sbit LCM_cs   = P2^5;sbit LCM_std  = P2^6;sbit LCM_sclk = P2^7;uchar code tab1[]={"   xnian.com    ""欢迎使用这个程序""    哈哈        ""  这  是谁啊?  "};/*****************************************************************************///函数声明void LCM_WriteString(unsigned char *str) ;//写字符  例:LCM_WriteString("您好!");void LCM_WriteDatOrCom(bit ,unsigned char );//(0,指令) (1,数据)void DelayM(unsigned int a);//延时void LCM_init(void);//LCM初始化void LCM_clr(void);//清屏void Delay(int num);/*****************************************************************************///延时函数 1MS/次void DelayM(unsigned int a){unsigned char i;while( --a != 0)       {for(i = 0; i < 125; i++);//一个 ; 表示空语句,CPU空转。}//i 从0加到125,CPU大概就耗时1毫秒}/*****************************************************************************///初始化LCMvoid LCM_init(void){LCM_rst=1;LCM_psb=0;LCM_WriteDatOrCom (0,0x30);//30---基本指令动作LCM_WriteDatOrCom (0,0x01);//清屏,地址指针指向00HDelay (100);LCM_WriteDatOrCom (0,0x06);//光标的移动方向LCM_WriteDatOrCom(0,0x0c);//开显示,关游标}/*****************************************************************************///写指令或数据  (0,指令) (1,数据)void LCM_WriteDatOrCom(bit dat_comm,uchar content){uchar a,i,j;Delay(50);a=content;LCM_cs=1;LCM_sclk=0;LCM_std=1;for(i=0;i<5;i++){LCM_sclk=1;LCM_sclk=0;}LCM_std=0;LCM_sclk=1;LCM_sclk=0;if(dat_comm)LCM_std=1;//dataelseLCM_std=0;//commandLCM_sclk=1;LCM_sclk=0;LCM_std=0;LCM_sclk=1;LCM_sclk=0;for(j=0;j<2;j++){for(i=0;i<4;i++){a=a<<1;LCM_std=CY;LCM_sclk=1;LCM_sclk=0;}LCM_std=0;for(i=0;i<4;i++){LCM_sclk=1;LCM_sclk=0;}}}/*****************************************************************************/void chn_disp (uchar code *chn){uchar i,j;LCM_WriteDatOrCom  (0,0x30);LCM_WriteDatOrCom  (0,0x80);for (j=0;j<4;j++){for (i=0;i<16;i++)LCM_WriteDatOrCom  (1,chn[j*16+i]);}}/*****************************************************************************///清屏函数void LCM_clr(void){LCM_WriteDatOrCom (0,0x30);LCM_WriteDatOrCom (0,0x01);Delay (180);}/*****************************************************************************///向LCM发送一个字符串,长度64字符之内。//应用:LCM_WriteString("您好!");void LCM_WriteString(unsigned char *str){while(*str != '\0')       {LCM_WriteDatOrCom(1,*str++);        }*str = 0;}/*****************************************************************************///延时函数void Delay(int num){while(num--);}/*****************************************************************************///主程序main() {LCM_init();//初始化液晶显示器LCM_clr();//清屏chn_disp(tab1);//显示欢迎字DelayM(5);LCM_WriteString("您好!");while(1){}}

原创粉丝点击