久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2325|回復(fù): 1
收起左側(cè)

lcd2684程序 st7920字庫(kù)液晶顯示

[復(fù)制鏈接]
ID:217939 發(fā)表于 2017-7-7 16:41 | 顯示全部樓層 |閱讀模式
  1. /*-----------------------------------------------
  2.   名稱:st7920字庫(kù)液晶顯示
  3.   論壇:806899919
  4.   編寫(xiě):光匯科技
  5.   日期:2012.3
  6.   修改:無(wú)
  7.   內(nèi)容:通過(guò)顯示字符、數(shù)字、漢字和圖片測(cè)試液晶基本功能
  8. ------------------------------------------------*/
  9. #include <reg52.h>
  10. #include "delay.h"

  11. sbit RS = P2^2;
  12. sbit RW = P2^1;
  13. sbit E  = P2^0;
  14. sbit RES = P2^5;
  15. sbit PSB = P2^3;

  16. #define DataPort P0        //MCU P0<------> LCM


  17. /*
  18. unsigned char code user16x16[]={ //笑臉圖片
  19. 0x0F,0xF0,0x10,0x08,0x20,0x04,0x40,0x02,0x9C,0x39,0xBE,0x7D,0x80,0x01,0x80,0x01,
  20. 0x80,0x01,0x88,0x11,0x84,0x21,0x43,0xC2,0x20,0x04,0x10,0x08,0x0F,0xF0,0x00,0x00,
  21. };
  22.    */
  23. /*------------------------------------------------
  24.                     檢測(cè)忙位
  25. ------------------------------------------------*/
  26. void Check_Busy()
  27. {  
  28.     RS=0;
  29.     RW=1;
  30.     E=1;
  31.     DataPort=0xff;
  32.     while((DataPort&0x80)==0x80);//忙則等待
  33.     E=0;
  34. }
  35. /*------------------------------------------------
  36.                    寫(xiě)命令
  37. ------------------------------------------------*/
  38. void Write_Cmd(unsigned char Cmd)
  39. {
  40.         Check_Busy();
  41.         RS=0;
  42.         RW=0;
  43.         E=1;
  44.         DataPort=Cmd;
  45.         DelayUs2x(5);
  46.         E=0;
  47.         DelayUs2x(5);
  48. }
  49. /*------------------------------------------------
  50.                     寫(xiě)數(shù)據(jù)
  51. ------------------------------------------------*/
  52. void Write_Data(unsigned char Data)
  53. {
  54.         Check_Busy();
  55.         RS=1;
  56.         RW=0;
  57.         E=1;
  58.         DataPort=Data;
  59.         DelayUs2x(5);
  60.         E=0;
  61.         DelayUs2x(5);
  62. }
  63. /*------------------------------------------------
  64.                    液晶屏初始化
  65. ------------------------------------------------*/
  66. void Init_ST7920()
  67. {  
  68.    DelayMs(40);           //大于40MS的延時(shí)程序
  69.    PSB=1;                 //設(shè)置為8BIT并口工作模式
  70.    DelayMs(1);            //延時(shí)
  71.    RES=0;                 //復(fù)位
  72.    DelayMs(1);            //延時(shí)
  73.    RES=1;                 //復(fù)位置高
  74.    DelayMs(10);
  75.    Write_Cmd(0x30);       //選擇基本指令集
  76.    DelayUs2x(50);         //延時(shí)大于100us
  77.    Write_Cmd(0x30);       //選擇8bit數(shù)據(jù)流
  78.    DelayUs2x(20);         //延時(shí)大于37us
  79.    Write_Cmd(0x0c);       //開(kāi)顯示(無(wú)游標(biāo)、不反白)
  80.    DelayUs2x(50);         //延時(shí)大于100us
  81.    Write_Cmd(0x01);       //清除顯示,并且設(shè)定地址指針為00H
  82.    DelayMs(15);           //延時(shí)大于10ms
  83.    Write_Cmd(0x06);       //指定在資料的讀取及寫(xiě)入時(shí),設(shè)定游標(biāo)的移動(dòng)方向及指定顯示的移位,光標(biāo)從右向左加1位移動(dòng)
  84.    DelayUs2x(50);         //延時(shí)大于100us
  85. }
  86. /*------------------------------------------------
  87.                    用戶自定義字符
  88. ------------------------------------------------
  89. void CGRAM()
  90. {
  91.      int i;
  92.      Write_Cmd(0x30);
  93.      Write_Cmd(0x40);
  94.      for(i=0;i<16;i++)
  95.        {
  96.             Write_Data(user16x16[i*2]);
  97.         Write_Data(user16x16[i*2+1]);
  98.       }
  99. }                                   */
  100. /*------------------------------------------------
  101.                    顯示用戶自定義字符
  102. ------------------------------------------------
  103. void DisplayCGRAM(unsigned char x,unsigned char y)
  104. {                                                                                                                                                                                          
  105. switch(y)
  106.      {
  107.           case 1: Write_Cmd(0x80+x);break;
  108.           case 2: Write_Cmd(0x90+x);break;
  109.           case 3: Write_Cmd(0x88+x);break;
  110.           case 4: Write_Cmd(0x98+x);break;
  111.       default:break;
  112.          }
  113.     Write_Data(00);
  114.     Write_Data(00);

  115. }                                         */
  116. /*------------------------------------------------
  117.                    顯示字符串
  118. x:橫坐標(biāo)值,范圍0~8
  119. y:縱坐標(biāo)值,范圍1~4
  120. ------------------------------------------------*/
  121. void LCD_PutString(unsigned char x,unsigned char y,unsigned char code *s)
  122. {
  123. switch(y)
  124.      {
  125.           case 1: Write_Cmd(0x80+x);break;
  126.           case 2: Write_Cmd(0x90+x);break;
  127.           case 3: Write_Cmd(0x88+x);break;
  128.           case 4: Write_Cmd(0x98+x);break;
  129.       default:break;
  130.          }
  131. while(*s>0)
  132.    {
  133.       Write_Data(*s);
  134.       s++;
  135.       DelayUs2x(50);
  136.    }
  137. }
  138. /*------------------------------------------------
  139.                       清屏
  140. ------------------------------------------------*/
  141. void ClrScreen()
  142. {
  143.    Write_Cmd(0x01);
  144.    DelayMs(15);
  145. }
  146.            
  147. /*------------------------------------------------
  148.                    顯示圖片
  149. ------------------------------------------------*/
  150. void LCD_PutGraphic(unsigned char code *img)
  151. {
  152. int i,j;
  153. //顯示上半屏內(nèi)容設(shè)置
  154.    for(i=0;i<32;i++)            
  155.     {
  156.       Write_Cmd(0x80 + i); //SET  垂直地址 VERTICAL ADD
  157.       Write_Cmd(0x80);     //SET  水平地址 HORIZONTAL ADD
  158.       for(j=0;j<16;j++)
  159.        {
  160.          Write_Data(*img);
  161.          img++;
  162.        }
  163.     }
  164. //顯示下半屏內(nèi)容設(shè)置
  165.    for(i=0;i<32;i++)            
  166.     {
  167.       Write_Cmd(0x80 + i); //SET 垂直地址 VERTICAL ADD
  168.       Write_Cmd(0x88);     //SET 水平地址 HORIZONTAL ADD
  169.       for(j=0;j<16;j++)
  170.        {
  171.          Write_Data(*img);
  172.          img++;
  173.        }
  174.     }  

  175. }
  176. /*------------------------------------------------
  177.                  設(shè)置到繪圖模式
  178. ------------------------------------------------*/
  179. void SetGraphicMode()
  180. {
  181.    Write_Cmd(0x36);       //選擇8bit數(shù)據(jù)流 圖形模式
  182.    DelayUs2x(20);

  183. }
  184. void display_init()
  185. {
  186.           LCD_PutString(0,1,"智能家居控制系統(tǒng)");
  187.           LCD_PutString(0,2,"學(xué)生:鄭家波");         
  188.           LCD_PutString(0,3,"老師:李湘文");
  189.       LCD_PutString(0,4,"時(shí)間:2015/6/2");   
  190. }

  191. /*------------------------------------------------
  192.                  主程序
  193. ------------------------------------------------
  194. main()
  195. {
  196.   unsigned char i;
  197.   // CGRAM();     //寫(xiě)入自定義字符


  198.     Init_ST7920();   //初始化
  199.         LCD_PutString(0,1,"智能家居控制系統(tǒng)");
  200.           LCD_PutString(0,2,"學(xué)生:鄭家波");         
  201.           LCD_PutString(0,3,"老師:李湘文");
  202.       LCD_PutString(0,4,"時(shí)間:2015/5/5");   
  203.           //延時(shí)30x200ms   
  204.       for(i=0;i<30;i++)
  205.           DelayMs(200);
  206.            ClrScreen();
  207.                     while(1)
  208.    {
  209.           LCD_PutString(0,1,"窗簾OFF 燈光OFF");
  210.           LCD_PutString(0,2,"煙霧OK  溫度OK ");
  211.           LCD_PutString(0,3,"  溫度:28°C");
  212.       LCD_PutString(0,4,"  光照度:53% ");   
  213.           //延時(shí)30x200ms   
  214.       for(i=0;i<30;i++)
  215.           DelayMs(200);
  216.                   LCD_PutString(0,1,"窗簾ON  燈光OFF");
  217.                   for(i=0;i<30;i++)
  218.           DelayMs(200);
  219.           ClrScreen();
  220.           LCD_PutString(0,2,"  短信通知中...");        //"正”字顯示不出
  221.             for(i=0;i<20;i++)
  222.           DelayMs(200);
  223.            


  224.    }
  225. }
  226.                                                   */


復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:4882 發(fā)表于 2018-1-16 19:46 | 顯示全部樓層
有沒(méi)有試過(guò),能亮嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日日草夜夜草 | 久久久一区二区三区四区 | 野狼在线社区2017入口 | 亚洲精品一区二区在线观看 | 国产精品永久在线观看 | 国产欧美日韩在线播放 | 天天操天天摸天天爽 | 欧美一区二区三区在线视频 | 久久精品视频在线播放 | 国产成人高清 | 日本黄色一级片视频 | 久久y| 国产综合精品 | 青青久久久 | 久久综合香蕉 | 99久久国产综合精品麻豆 | aaa在线 | 亚洲天堂999| 99国产欧美| 中文字幕av一区 | 在线视频一区二区三区 | 国产91视频播放 | 欧美激情综合 | 日本91av视频 | 一级a毛片 | 亚洲国产成人精品女人久久久 | 91久久久精品国产一区二区蜜臀 | 欧美美女爱爱 | 一区二区中文 | 欧美日韩三级 | 国内精品久久久久 | 在线视频中文字幕 | 亚洲欧洲国产视频 | 国产高清在线观看 | 亚洲一区二区中文字幕 | 国产精品三级 | 91网在线播放 | 久久美国 | 亚洲精品国产成人 | 国产精品国色综合久久 | 天天草av |