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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1168|回復: 1
打印 上一主題 下一主題
收起左側(cè)

基于P89V51控制LCD顯示屏源程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:456119 發(fā)表于 2018-12-27 09:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基于P89V51控制LCD顯示屏

單片機源程序如下:
  1. #include "System.h"
  2. #include "STRING.h"
  3. #include "LCD.h"
  4. #include "I2C.h"
  5. #include "Relay_Parameter.h"
  6. #include "Display.h"

  7. uchar xdata xy1[19][2]={
  8.                                       {21,30},{22,30},{21,56},{21,82},
  9.                                                                     {21,108},{22,108},{23,108},{24,108},{25,108},                     
  10.                                                                     {21,134},{22,134},{23,134},{24,134},{25,134},
  11.                           {14,75},{15,75},{16,75},{17,75},{18,75}
  12.                              };//光標坐標

  13. uchar xdata x,y;

  14. /****鍵盤控制LCD上的光標左移****/
  15. void Left_M(uchar JL_or_ceshi)//0為測試界面,1計量界面
  16. {
  17.         uchar xdata i,a,b;
  18.         if(JL_or_ceshi==1)
  19.         {
  20.                 a=14;b=19;
  21.         }
  22.         else
  23.         {
  24.                 if((Relay1.delay_type[0]-0x30)==3) {a=0;b=14;}
  25.           else {a=0;b=9;}
  26.         }       
  27.         for(i=a;i<b;i++)
  28.         {
  29.                 if(x==xy1[i][0]&&y==xy1[i][1])
  30.                 {
  31.                         LcmClear_1();
  32.                         if(i!=a)
  33.                         {
  34.                                 if(xy1[i][0]==21&&xy1[i][1]==82)
  35.         {
  36.                                         dprintf(xy1[i-1][0],xy1[i-1][1],StrForMixed10,0);
  37.                                         dprintf(xy1[i-1][0]+1,xy1[i-1][1],StrForMixed10,0);
  38.                                         dprintf(xy1[i-1][0]+2,xy1[i-1][1],StrForMixed10,0);
  39.                                         dprintf(xy1[i-1][0]+3,xy1[i-1][1],StrForMixed10,0);
  40.                                         dprintf(xy1[i-1][0]+4,xy1[i-1][1],StrForMixed10,0);
  41.                                         dprintf(xy1[i-1][0]+5,xy1[i-1][1],StrForMixed10,0);
  42.         }
  43.                                 else
  44.                                 {
  45.                                         dprintf(xy1[i-1][0],xy1[i-1][1],StrForMixed10,0);
  46.                                 }
  47.                                 x=xy1[i-1][0];y=xy1[i-1][1];
  48.                  }
  49.                  else
  50.                  {
  51.                          dprintf(xy1[i][0],xy1[i][1],StrForMixed10,0);
  52.                          x=xy1[i][0];y=xy1[i][1];
  53.                  }
  54.                  break;
  55.          }                
  56.         }
  57. }

  58. /****鍵盤控制LCD上的光標右移****/
  59. void Right_M(uchar JL_or_ceshi)//0測試界面,1計量界面
  60. {
  61.         uchar xdata i,a,b;
  62.         if(JL_or_ceshi==1)
  63.         {
  64.                 a=14;b=19;
  65.         }
  66.         else
  67.         {
  68.                 if((Relay1.delay_type[0]-0x30)==3) {a=0;b=14;}
  69.           else {a=0;b=9;}
  70.         }
  71.         for(i=a;i<b;i++)
  72.         {
  73.                 if(x==xy1[i][0]&&y==xy1[i][1])
  74.                  {
  75.                          LcmClear_1();
  76.                          if(i!=(b-1))
  77.                          {
  78.                                  if(xy1[i][0]==22&&xy1[i][1]==30)
  79.                                  {
  80.                                          dprintf(xy1[i+1][0],xy1[i+1][1],StrForMixed10,0);
  81.                                          dprintf(xy1[i+1][0]+1,xy1[i+1][1],StrForMixed10,0);
  82.                                          dprintf(xy1[i+1][0]+2,xy1[i+1][1],StrForMixed10,0);
  83.                                          dprintf(xy1[i+1][0]+3,xy1[i+1][1],StrForMixed10,0);
  84.                                          dprintf(xy1[i+1][0]+4,xy1[i+1][1],StrForMixed10,0);
  85.                                          dprintf(xy1[i+1][0]+5,xy1[i+1][1],StrForMixed10,0);
  86.                                  }
  87.                                  else
  88.                                  {
  89.                                          dprintf(xy1[i+1][0],xy1[i+1][1],StrForMixed10,0);
  90.                                  }
  91.                                  x=xy1[i+1][0];y=xy1[i+1][1];
  92.                          }       
  93.                          else
  94.                          {
  95.                                  dprintf(xy1[i][0],xy1[i][1],StrForMixed10,0);
  96.                                  x=xy1[i][0];y=xy1[i][1];
  97.                          }
  98.                          break;
  99.                  }
  100.         }
  101. }

  102. /****向上調(diào)LCD上的參數(shù)****/
  103. void Uchange_P(uchar *Ptr,uint t)
  104. {
  105.         uchar xdata i,c1;
  106.         if(Ptr==Relay1.chud_num)
  107.         {
  108.                 for(i=0;i<13;i++) //13為觸點類型種數(shù)
  109.                 {
  110.                         if(strcmp(Relay1.chud_num,Relay_CD_numbers[i])==0)
  111.                         {
  112.                                 if(i==12) {strncpy(Relay1.chud_num,Relay_CD_numbers[0],7);}
  113.                                 else {strncpy(Relay1.chud_num,Relay_CD_numbers[i+1],7);}
  114.                                 switch(strlen(Relay1.chud_num))
  115.                                 {
  116.                                         case 2:
  117.                                                       dddprintf(21,56,Relay1.chud_num,2,1);
  118.                                                 dprintf(23,56,StrForMixed58,1);
  119.                                                 dprintf(25,56,StrForMixed58,1);
  120.                                                 break;
  121.                                         case 4:
  122.                                                       dddprintf(21,56,Relay1.chud_num,4,1);
  123.                                                 dprintf(25,56,StrForMixed58,1);
  124.                                                 break;
  125.                                         case 6:
  126.                                                       dddprintf(21,56,Relay1.chud_num,7,1);
  127.                                                 break;
  128.                                 }
  129.                                 break;       
  130.                         }
  131.                 }
  132.         }
  133.         else if(Ptr==Relay1.delay_type)
  134.         {
  135.                 for(i=0;i<7;i++)
  136.                 {
  137.                         if(strcmp(Relay1.delay_type,Relay_YS_Type[i])==0)
  138.                         {
  139.                                 if(i==6) {strncpy(Relay1.delay_type,Relay_YS_Type[0],2);}
  140.                                 else {strncpy(Relay1.delay_type,Relay_YS_Type[i+1],2);}
  141.                                 dddprintf(21,82,Relay1.delay_type,2,1);
  142.                                 break;       
  143.                         }
  144.                 }
  145.         }
  146.         else
  147.         {
  148.                 c1=Ptr[t];
  149.           switch(c1)
  150.           {
  151.                   case 0x39:
  152.                                    if(Ptr==Relay1.number) {c1=0x2F;}                                                                                                   
  153.                                                            else {c1=0x2D;}                   
  154.                              break;
  155.                   case 0x2E:
  156.                              c1=0x2F;
  157.                                    break;
  158.                     default:
  159.                              break;
  160.           }
  161.           if(c1>=0x10)
  162.           {
  163.       WriteCommand(CspDirD);
  164.       Locatexy(x,y,1);
  165.                   WriteCommand(mWrite);
  166.       for(i=0;i<16;i++)
  167.                   WriteData(ASC_MSK[(c1-0x20+1)*16+i]);
  168.             Ptr[t]=c1+1;               
  169.     }
  170.         }       
  171. }

  172. /*****向下調(diào)LCD上的參數(shù)****/
  173. void Dchange_P(uchar *Ptr,uint t)
  174. {
  175.         uchar xdata i,c1;
  176.         if(Ptr==Relay1.chud_num)
  177.         {
  178.                 for(i=0;i<13;i++)
  179.                 {
  180.                         if(strcmp(Relay1.chud_num,Relay_CD_numbers[i])==0)
  181.                         {
  182.                                 if(i==0) {strncpy(Relay1.chud_num,Relay_CD_numbers[12],7);}
  183.                                 else {strncpy(Relay1.chud_num,Relay_CD_numbers[i-1],7);}
  184.                                 switch(strlen(Relay1.chud_num))
  185.                                 {
  186.                                         case 2:
  187.                                                       dddprintf(21,56,Relay1.chud_num,2,1);
  188.                                                 dprintf(23,56,StrForMixed58,1);
  189.                                                 dprintf(25,56,StrForMixed58,1);
  190.                                                 break;
  191.                                         case 4:
  192.                                                       dddprintf(21,56,Relay1.chud_num,4,1);
  193.                                                 dprintf(25,56,StrForMixed58,1);
  194.                                                 break;
  195.                                         case 6:
  196.                                                       dddprintf(21,56,Relay1.chud_num,7,1);
  197.                                                 break;
  198.                                 }
  199.                                 break;       
  200.                         }
  201.                 }
  202.         }
  203.         else if(Ptr==Relay1.delay_type)
  204.         {
  205.                 for(i=0;i<7;i++)
  206.                 {
  207.                         if(strcmp(Relay1.delay_type,Relay_YS_Type[i])==0)
  208.                         {
  209.                                 if(i==0) {strncpy(Relay1.delay_type,Relay_YS_Type[6],2);}
  210.                                 else {strncpy(Relay1.delay_type,Relay_YS_Type[i-1],2);}
  211.                                 dddprintf(21,82,Relay1.delay_type,2,1);
  212.                                 break;       
  213.                         }
  214.                 }
  215.         }
  216.         else
  217.         {
  218.                 c1=Ptr[t];
  219.                 switch(c1)
  220.           {
  221.                   case 0x30:
  222.                                    if(Ptr==Relay1.number) {c1=0x3A;}                                                                                                   
  223.                                                            else {c1=0x2F;}
  224.                              break;
  225.                   case 0x2E:
  226.                                    c1=0x3A;
  227.                              break;
  228.                   default:
  229.                                    break;
  230.           }
  231.           if(c1>=0x10)
  232.           {
  233.       uint xdata j;
  234.       WriteCommand(CspDirD);
  235.       Locatexy(x,y,1);
  236.                   WriteCommand(mWrite);
  237.       for(j=0;j<16;j++)
  238.                   WriteData(ASC_MSK[(c1-0x20-1)*16+j]);
  239.             Ptr[t]=c1-1;
  240.     }       
  241.         }       
  242. }

  243. /****移動光標,調(diào)大LCD上的參數(shù)****/
  244. void SheZP1()
  245. {
  246.         if(x==21&&y==30)  Uchange_P(Relay1.number,0);
  247.         if(x==22&&y==30)  Uchange_P(Relay1.number,1);
  248.         if(x==21&&y==56)  Uchange_P(Relay1.chud_num,0);
  249.         if(x==21&&y==82)  Uchange_P(Relay1.delay_type,0);
  250.        
  251.         if(x==21&&y==108) Uchange_P(Relay1.time1,0);
  252.         if(x==22&&y==108) Uchange_P(Relay1.time1,1);
  253.         if(x==23&&y==108) Uchange_P(Relay1.time1,2);
  254.         if(x==24&&y==108) Uchange_P(Relay1.time1,3);
  255.         if(x==25&&y==108) Uchange_P(Relay1.time1,4);
  256.        
  257.         if(x==21&&y==134) Uchange_P(Relay1.time2,0);
  258.         if(x==22&&y==134) Uchange_P(Relay1.time2,1);
  259.         if(x==23&&y==134) Uchange_P(Relay1.time2,2);
  260.         if(x==24&&y==134) Uchange_P(Relay1.time2,3);
  261.         if(x==25&&y==134) Uchange_P(Relay1.time2,4);
  262.        
  263.         if(x==14&&y==75)  Uchange_P(JL_Time,0);
  264.         if(x==15&&y==75)  Uchange_P(JL_Time,1);
  265.         if(x==16&&y==75)  Uchange_P(JL_Time,2);
  266.         if(x==17&&y==75)  Uchange_P(JL_Time,3);
  267.         if(x==18&&y==75)  Uchange_P(JL_Time,4);

  268. }

  269. /****移動光標,調(diào)小LCD上的參數(shù)****/
  270. void SheZP2()
  271. {
  272.         if(x==21&&y==30)  Dchange_P(Relay1.number,0);
  273.         if(x==22&&y==30)  Dchange_P(Relay1.number,1);
  274.         if(x==21&&y==56)  Dchange_P(Relay1.chud_num,0);
  275.         if(x==21&&y==82)  Dchange_P(Relay1.delay_type,0);
  276.        
  277.         if(x==21&&y==108) Dchange_P(Relay1.time1,0);
  278.         if(x==22&&y==108) Dchange_P(Relay1.time1,1);
  279.         if(x==23&&y==108) Dchange_P(Relay1.time1,2);
  280.         if(x==24&&y==108) Dchange_P(Relay1.time1,3);
  281.         if(x==25&&y==108) Dchange_P(Relay1.time1,4);
  282.        
  283.        
  284.         if(x==21&&y==134) Dchange_P(Relay1.time2,0);
  285.         if(x==22&&y==134) Dchange_P(Relay1.time2,1);
  286.         if(x==23&&y==134) Dchange_P(Relay1.time2,2);
  287.         if(x==24&&y==134) Dchange_P(Relay1.time2,3);
  288.         if(x==25&&y==134) Dchange_P(Relay1.time2,4);
  289.        
  290.         if(x==14&&y==75)  Dchange_P(JL_Time,0);
  291.         if(x==15&&y==75)  Dchange_P(JL_Time,1);
  292.         if(x==16&&y==75)  Dchange_P(JL_Time,2);
  293.         if(x==17&&y==75)  Dchange_P(JL_Time,3);
  294.         if(x==18&&y==75)  Dchange_P(JL_Time,4);
  295. }

  296. /****判斷輸入的延時形式是否為3,從而決定是否出現(xiàn)“延時時間T2“****/
  297. void Second_PD()
  298. {
  299.         if((Relay1.delay_type[0]-0x30)==3)
  300.         {
  301.                 switch(strlen(Relay1.chud_num))
  302.                 {
  303.                                         case 2:
  304.                                                       dddprintf(21,56,Relay1.chud_num,2,1);
  305.                                                 dprintf(23,56,StrForMixed58,1);
  306.                                                 dprintf(25,56,StrForMixed58,1);
  307.                                                 break;
  308.                                         case 4:
  309.                                                       dddprintf(21,56,Relay1.chud_num,4,1);
  310.                                                 dprintf(25,56,StrForMixed58,1);
  311.                                                 break;
  312.                                         case 6:
  313.                                                       dddprintf(21,56,Relay1.chud_num,7,1);
  314.                                                 break;
  315.                 }
  316.                
  317.                 //dddprintf(21,56,Relay1.chud_num,7,1);
  318.           dddprintf(21,82,Relay1.delay_type,2,1);
  319.           dddprintf(21,108,Relay1.time1,5,1);
  320.           dprintf(15,108,StrForMixed181,1);
  321.                 dprintf(7,134,StrForMixed18,1);
  322.                 dprintf(15,134,StrForMixed182,1);
  323.                 dddprintf(21,134,Relay1.time2,5,1);
  324.                 dprintf(26,134,StrForMixed20,1);
  325.         }
  326.         else
  327.         {
  328.                 switch(strlen(Relay1.chud_num))
  329.                 {
  330.                                         case 2:
  331.                                                       dddprintf(21,56,Relay1.chud_num,2,1);
  332.                                                 dprintf(23,56,StrForMixed58,1);
  333.                                                 dprintf(25,56,StrForMixed58,1);
  334.                                                 break;
  335.                                         case 4:
  336.                                                       dddprintf(21,56,Relay1.chud_num,4,1);
  337.                                                 dprintf(25,56,StrForMixed58,1);
  338.                                                 break;
  339.                                         case 6:
  340.                                                       dddprintf(21,56,Relay1.chud_num,7,1);
  341.                                                 break;
  342.                 }
  343.                 //dddprintf(21,56,Relay1.chud_num,7,1);
  344.           dddprintf(21,82,Relay1.delay_type,2,1);
  345.           dddprintf(21,108,Relay1.time1,5,1);
  346.         }
  347. }

  348. /****根據(jù)輸入的產(chǎn)品編號,得到其在EEPROM中存儲的位置,
  349. 并判斷該位置上是否存有繼電器參數(shù),如果有更新相應(yīng)的LCD顯示****/
  350. void number_just()
  351. {
  352.         uchar xdata t,t1;
  353.         uchar xdata ADL,ADH;
  354.         uchar xdata BianH[2];
  355.         t=10*(Relay1.number[0]-0x30)+(Relay1.number[1]-0x30);
  356.         ADL=(t*32)%256;
  357.         ADH=(t*32)/256;
  358.   RW_EEPROM(0,ADH,ADL,BianH,2);
  359.         if(BianH[0]!=0x00&&BianH[1]!=0x00)
  360.         {
  361.                 t1=10*(BianH[0]-0x30)+(BianH[1]-0x30);
  362.                 if(t1==t)
  363.           {
  364.                   RW_EEPROM(0,ADH,ADL,Relay1.number,RelayBits);
  365.                         Second_PD();
  366.                         RW_EEPROM(1,0x1F,0xE0,Relay1.number,RelayBits);                       
  367.           }
  368.         }
  369. }
  370. ……………………

  371. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
Display.zip (2.7 KB, 下載次數(shù): 9)




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-12-28 01:51 | 只看該作者
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美激情一区 | 男人的天堂久久 | 欧美一级黄视频 | 亚洲精品视频一区二区三区 | 久久成人精品 | 人人干人人看 | 天天插天天操 | 欧美成人不卡 | 国产精品99久久久久久www | 97精品一区二区 | 亚洲国产成人精品女人 | 91影库| 在线看无码的免费网站 | 香蕉视频久久久 | 女同久久 | 亚洲精品一区在线 | 欧美激情一区二区三级高清视频 | 日本久久久久久 | 国产中文字幕在线 | 国产精品久久 | 成人精品一区二区三区中文字幕 | 欧美a级成人淫片免费看 | h片在线免费观看 | 古装三级在线播放 | 精品国产一区二区在线 | 欧美精品啪啪 | 蜜桃日韩 | 人人干人人看 | 精品香蕉一区二区三区 | 亚洲成人网在线观看 | 欧美三级视频 | 久久综合国产 | 亚洲交性 | 久草精品视频 | 大久 | 中文字幕在线观看第一页 | 婷婷午夜天 | а_天堂中文最新版地址 | 久久99精品久久久久久国产越南 | 国产成人久久精品一区二区三区 | 日韩精品a在线观看图片 |