#include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[]="i love you!"; uchar code table1[]="WWW.TXMCU.COM"; sbit lcdrw=P1^6; sbit lcdrs=P1^7; sbit dula=P3^6; sbit wela=P3^7; sbit lcden=P2^4; void delay_ms(uint); void write_date (uint); void write_com (uint); void make_en(); void init_a(); void main() { uchar num; dula=0; wela=0; init_a(); write_com(0x80); //指向lcd内部ram的初始端 for(num=0;num<11;num++) { write_date(table[num]); delay_ms(5); } write_com(0x80+0x40);// 指向lcd第二行的ram for(num=0;num<13;num++) { write_date(table1[num]); delay_ms(5); } exit(0); // while(1); } void init_a() //初始化函数 { write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口 write_com(0x0c); write_com(0x06); write_com(0x01); } void write_date (uint date) { lcdrs=1; //输入数据 lcdrw=0; P0=date; delay_ms(5); make_en(); } void write_com (uint com) { lcdrs=0; //输入命令 lcdrw=0; P0=com; delay_ms(5); make_en(); } void delay_ms(uint xms) { uint i,j; for(i=xms;i>0;i--) { for(j=110;j>0;j--); } } void make_en() { lcden=0; wela=1; wela=0; delay_ms(5); lcden=1; wela=1; lcden=0; wela=0; }
这个是使用1206最基本的用法,我一直在纠结为什么while(1);这个函数去掉以后,会重复的输入.
整个环境没有用while(1);编译器默认加个循环,一直刷新你的液晶屏的数据,所以就会闪.是编译器的问题.