lcd12864单行反白显示

来源:网络整理 作者:2017年11月06日 15:12
关键词:LCD12864芯片

  反白显示

  1.指在论坛内对于剧情透露之类的内容使用白色字体书写,由读者自行决定是否观看。2.反白显示还出现在AVG(即解密类游戏的攻略中)因为人眼总有余光,容易看到本不想看的答案(可能会丧失游戏性)所以反白显示。3.在12864液晶显示屏中,指像素点黑变白,白变黑,刚好相反,显示相同图形。

  lcd12864单行反白显示

  //在显示汉字的时候要注意不要在偶数的位置   //在偶数的位置是乱码   //希望大家多交流   #include 《reg52.h》   #include 《intrins.h》   #define uchar unsigned char   #define uint unsigned int   #define LCD_data P1 //数据口   sbit LCD_RS = P2^0; //寄存器选择输入   sbit LCD_RW = P2^1; //液晶读/写控制   sbit LCD_EN = P2^2; //液晶使能控制   #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};   uchar code DIS1[] = {“ 123 ”};   uchar code DIS2[] = {“ 电子 ”};   uchar code DIS3[] = {“ 加油 ”};   uchar code DIS4[] = {“ 奋斗就能成功 ”};   void delay(int ms)   {   uchar i;   while(ms--)   {   for(i = 0; i《 250; i++)   delayNOP();   }   }   bit lcd_busy() //判断是否忙   {   bit result;   LCD_RS = 0;   LCD_RW = 1;   LCD_EN = 1;   delayNOP();   result = (bit)(LCD_data&0x80);   LCD_EN = 0;   return(result);   }   void lcd_wcmd(uchar cmd) //写命令   {   while(lcd_busy());   LCD_RS = 0;   LCD_RW = 0;   LCD_data = cmd;   LCD_EN = 1;   delayNOP();   LCD_EN = 0;   }   void lcd_wdat(uchar dat) //写数据   {   while(lcd_busy());   LCD_RS = 1;   LCD_RW = 0;   LCD_data = dat;   LCD_EN = 1;   delayNOP();   LCD_EN = 0;   }   void lcd_wstr(uchar *p)   {   while(*p)   lcd_wdat(*p++);   }   void lcd_init() //液晶初始化   {   delay(40);   lcd_wcmd(0x30); //基本指令操作   delay(5);   lcd_wcmd(0x30); //基本指令操作   delay(1);   lcd_wcmd(0x0C); //显示开,关光标   delay(5);   lcd_wcmd(0x01); //清除LCD的显示内容   delay(5);   lcd_wcmd(0x06); //游标自动右移,整体画面不移动   }   void lcd_pos(uchar X,uchar Y) //X为行,Y为列   {   switch(X)   {   case 1: Y|=0x80; break;   case 2: Y|=0x90; break;   case 3: Y|=0x88; break;   case 4: Y|=0x98; break;   default : break;   }   lcd_wcmd(Y); //显示地址   }   void clr_screen()   {   lcd_wcmd(0x01); //清屏   delay(5);   }   void display() //为反白做准备,目地是在图形显示时防止有噪点   {   uchar i,j;   lcd_wcmd(0x34); //写数据时,关闭图形显示   for(i=0;i《32;i++)   {   lcd_wcmd(0x80+i); //先写入水平坐标值   lcd_wcmd(0x80); //写入垂直坐标值   for(j=0;j《16;j++) //再写入两个8位元的数据   lcd_wdat(0x00);   delay(1);   }   for(i=0;i《32;i++)   {   lcd_wcmd(0x80+i);   lcd_wcmd(0x88);   for(j=0;j《16;j++)   lcd_wdat(0x00);   delay(1);   }   lcd_wcmd(0x36); //写完数据,开图形显示   }   void photodisplay(uchar x,uchar y,uchar width) //反白,X值为0-7,Y值为0-3,width为行反白格数   {   uchar i,j,flag=0x00;   display();   if(y》1)   {   flag=0x08;   y   =y-2;   }   lcd_wcmd(0x34); //写数据时,关闭图形显示,且打开扩展指令集   for(i=0;i《16;i++)   {   lcd_wcmd(0x80+(y《《4)+i);   lcd_wcmd(0x80+flag+x);   for(j=0;j《width;j++)   {   lcd_wdat(0xff);   lcd_wdat(0xff);   }   delay(1);   }   lcd_wcmd(0x36); //写完数据,开图形显示   // lcd_wcmd(0x30); //从扩展指令到基本指令   }   void main()   {   lcd_init(); //初始化LCD   clr_screen(); //清屏   while(1)   {   clr_screen();   lcd_pos(1,0); //设置显示位置为第一行   lcd_wstr(DIS1);   delay(30);   lcd_pos(2,0); //设置显示位置为第二行   lcd_wstr(DIS2);   lcd_pos(3,0); //设置显示位置为第三行   lcd_wstr(DIS3);   lcd_pos(4,0); //设置显示位置为第四行   lcd_wstr(DIS4);   delay(1000);   delay(1000);   photodisplay(3,2,3);   delay(1000);   delay(1000);   lcd_wcmd(0x30); //基本指令集   delay(1000);   delay(1000);   }   }
关注88lifa利发国际娱乐微信
有趣有料的资讯及技术干货
下载发烧友APP
打造属于您的人脉电子圈
关注发烧友课堂
锁定最新课程活动及技术直播
声明:88lifa利发国际娱乐网转载作品均尽可能注明出处,该作品所有人的一切权利均不因本站而转移。
作者如不同意转载,既请通知本站予以删除或改正。转载的作品可能在标题或内容上或许有所改动。
收藏 人收藏
分享:

相关阅读

  1. 全部
  2. LCD12864芯片

相关文章

相关下载

LCD12864芯片相关文章

LCD12864芯片相关下载

发表评论
elecfans网友
分享到:

用户评论(0

88lifa利发国际娱乐

百度360搜索搜狗搜索