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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5376|回復: 10
打印 上一主題 下一主題
收起左側

ht1625 Segment code LCD與點陣液晶屏的資料與菜單源碼

  [復制鏈接]
跳轉到指定樓層
樓主
自己用到的段式液晶與點陣液晶的資料的一些分享



全部資料51hei下載地址:
Display module.zip (9.83 MB, 下載次數: 260)


1.給ht1625發送命令控制字  數據必須是9位
2.ht1625初始化時 控制端口初始狀態為高電平

ht1625單片機源程序如下:
  1. #include "lcd.h"


  2. static void nop(void)//
  3. {
  4.   u8 i;
  5.   for(i=0;i<90;i++)
  6.         ;
  7. }
  8. //給1625發送命令與地址,寫入3位ID命令或A6A5A4A3A2A1A0七位地址
  9. static void SendBit_1625(u8 mdata,u8 cnt)   //mdata的高cnt位寫入HT1625,高位在前
  10. {
  11.   u8 i;
  12.   for(i=0;i<cnt;i++)
  13.   {
  14.         LWR_L;
  15.     if((mdata&0x80)==0)
  16.       LDA_L;
  17.     else
  18.       LDA_H;        
  19.         nop();
  20.     LWR_H;
  21.     nop();        
  22.     mdata<<=1;
  23.   }
  24. }

  25. //給1625發送數據,寫入D0D1D2D3..cnt位數據到RAM
  26. static void SendDataBit_1625(u8 mdata,u8 cnt)   //mdata的低cnt位寫入HT1625,低位在前
  27. {
  28.   u8 i;
  29.   for(i=0;i<cnt;i++)
  30.   {        
  31.         LWR_L;
  32.      if((mdata&0x01)==0x00)
  33.        LDA_L;
  34.      else
  35.        LDA_H;         
  36.      nop();
  37.      LWR_H;
  38.          nop();
  39.      mdata>>=1;
  40.   }
  41. }

  42. //讀一個地址
  43. u8 Read_1625(u8 addr,u8 cnt)
  44. {
  45.   u8 rd=0x00,i=0;
  46.   LCS_L;
  47.   SendBit_1625(0xc0,3);                        //控制命令110,啟動讀模式
  48. //  SendBit_1625(addr<<1,7);
  49. //  //讀入的數據放在RD的低四位
  50. //  for(i=0;i<cnt;i++)
  51. //  {
  52. //    if(LDA)
  53. //       rd|=0x08;
  54. //    else
  55. //       rd&=0xf7;
  56. //     LRD_L;
  57. //     nop();//
  58. //     LRD_H;
  59. //    nop();//
  60. //     rd = rd>>1;                //rd>>1;
  61. //  }
  62. //  if(LDA)
  63. //     rd|=0x08;
  64. //  else
  65. //     rd&=0xf7;
  66. //  LCS=1;
  67.   return rd;
  68. }

  69. //給1625發送命令控制字
  70. void SendCmd(u8 command)
  71. {
  72.   LCS_L;
  73.   SendBit_1625(0x80,3);                        //控制命令100,啟動命令模式
  74.   SendBit_1625(command,9);                //jjk命令處 數據數必須是9   將命令command發送給1625
  75.   LCS_H;
  76. }

  77. //LCD初始化,向HT1625寫入命令
  78. void LCD_init(void)
  79. {  
  80.         //LCD端口初始化,定義控制引腳數據方向
  81.           LCS_H;LWR_H;LDA_H;LRD_H;nop();         
  82.           SendCmd(0x01);                //命令2:0x01,打開系統晶振SYS_EN
  83.           SendCmd(0x03);                //命令3:0x03,開LCD顯示        LCD_ON  
  84.           SendCmd(0x18);                //命令1:0x18,使用片上RC振蕩器RC_32K
  85. }  

  86. //寫一個地址
  87. void Write_1625(u8 addr,u8 mdata)
  88. {  
  89.   LCS_L;
  90.   SendBit_1625(0xa0,3);                        //啟動寫模式
  91.   SendBit_1625(addr,7);                        //寫入A6A5A4A3A2A1A0七位地址
  92.   SendDataBit_1625(mdata,4);        //寫入D0D1D2D3數據到RAM
  93.   LCS_H;
  94. }

  95. //從一地址處連續寫入
  96. void WriteAll_1625(u8 addr,u8 *p,u8 cnt)                //起始地址,數組指針,數據字節數
  97. {
  98.   u8 i;
  99.   LCS_L;
  100.   SendBit_1625(0xa0,3);                //啟動寫模式
  101.   SendBit_1625(addr,7);                //寫入A6A5A4A3A2A1A0七位地址
  102.   for(i=0;i<cnt;i++,p++)        //依次寫入cnt個字節數據
  103.   {
  104.     SendDataBit_1625(*p,8);
  105.   }
  106.   LCS_H;
  107. }

  108. //清屏&全屏顯示
  109. void full_or_clear (u8 F_C)        //1:全顯,0:清屏
  110. {
  111.   u8 i,p;
  112.   if(F_C)
  113.     p=0xff;
  114.   else
  115.     p=0x00;
  116.   LCS_L;
  117.   SendBit_1625(0xa0,3);                //啟動寫模式
  118.   SendBit_1625(0x00,7);                //地址0000H
  119.   for(i=0;i<64;i++)
  120.   {
  121.     SendDataBit_1625(p,8);        //將全顯或清屏數據寫入1625
  122.   }
  123.   LCS_H;
  124. }



復制代碼

Segment code LCD菜單程序:
  1. #include "stm32f10x_it.h"
  2. #include "lcd.h"
  3. #include "string.h"
  4. #include "drv_sys.h"
  5. #include "delay.h"
  6. #include "drv_rtc.h"
  7. #include "math.h"


  8. u16 SystemPara[18] =
  9. {0,100,1,246,200,0,0,0,10,1,300,180,100,100,300,0,1,20};

  10. unsigned char dis_buffer[64]; //液晶顯示字符緩存數組
  11. //1-4行數字 字母                                                0          1           2   3    4    5    6    7    8    9     .   C    c    o     d    E   F    H     h   n    u
  12. const unsigned char my_7seg_J[21]={0xEE,0x24,0xBA,0xB6,0x74,0xD6,0xDE,0xA4,0xFE,0xF4,0x01,0xCA,0x1A,0x1E,0x3E,0xDA,0xD8,0x7C,0x5C,0x1C,0x0E,};
  13. //1-4符號                                                  XJ   %    M     K    V    A   M    K    W    Var
  14. const unsigned char my_unit[10]={0x80,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x01};
  15. //5符號                                                           M     K    W    h   M    K    V    ar   
  16. const unsigned char my_unit5[9]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};        
  17. //指示行 數字 字母                                          0           1        2    3    4    5    6   7    8    9    C    U     I    P   Q     F
  18. const unsigned char my_13seg_J[16]={0x9A,0x18,0x92,0x9A,0x18,0x8A,0x8A,0x98,0x9A,0x98,0x82,0x1A,0xC2,0x90,0x9E,0x80};
  19. const unsigned char my_13seg_K[16]={0x84,0x00,0x24,0x20,0xA0,0xA0,0xA4,0x00,0x84,0xA0,0x84,0x84,0x10,0xA4,0x84,0xA4};
  20. //*****8位字節翻轉
  21. unsigned char ru8(unsigned char s)  
  22. {  
  23.     unsigned char rtn = 0,i=0;
  24.     for(i = 0 ; i < 8 ; i++)  
  25.     {  
  26.         rtn |= ((s & (1 << i)) >> i) << (7 - i) ;  
  27.     }  
  28.     return rtn ;  
  29. }  
  30. void Refurbish_Disply(unsigned char *dis_buff,unsigned char dat0,unsigned char dat1,unsigned char dat2,unsigned char dat3,unsigned char dat4,unsigned char line_number)
  31. {
  32.         switch(line_number)
  33.         {
  34.                 case 0:{
  35.                         dis_buff[6] =  my_7seg_J[dat0];
  36.                         dis_buff[7] =  my_7seg_J[dat1];
  37.                         dis_buff[8] =  my_7seg_J[dat2];
  38.                         dis_buff[9] =  my_7seg_J[dat3];//此處應考慮X9--Var
  39.                         //符號
  40.                         if(dat4) dis_buff[4] |=0x02;
  41.                         else dis_buff[4] &=0xFD;
  42.                         //測量內容
  43.                         dis_buff[5] |=0x01;//a
  44.                         dis_buff[4] |=0x01;//b
  45.                         dis_buff[3] |=0x01;//E        
  46.                         
  47.                 }        break;
  48.                 case 1:{
  49.                         dis_buff[12] =  my_7seg_J[dat0];
  50.                         dis_buff[13] =  my_7seg_J[dat1];
  51.                         dis_buff[14] =  my_7seg_J[dat2];
  52.                         dis_buff[15] =  my_7seg_J[dat3];//此處應考慮X18--Var
  53.                         //符號
  54.                         if(dat4)dis_buff[63] |=0x02;
  55.                         else dis_buff[63] &=0xFD;
  56.                         //測量內容
  57.                         dis_buff[0] |=0x01;//b
  58.                         dis_buff[63] |=0x01;//c
  59.                         dis_buff[63] |=0x04;//E
  60.                         
  61.                 }        break;
  62.                 case 2:{
  63.                         dis_buff[39] =  ru8(my_7seg_J[dat0]);
  64.                         dis_buff[38] =  ru8(my_7seg_J[dat1]);
  65.                         dis_buff[37] =  ru8(my_7seg_J[dat2]);
  66.                         dis_buff[18] =  ru8(my_7seg_J[dat3]);//此處應考慮X27--Var
  67.                         //符號
  68.                         if(dat4)dis_buff[59] |=0x01;
  69.                         else dis_buff[59] &=0xFE;
  70.                         //測量內容
  71.                         dis_buff[60] |=0x02;//c
  72.                         dis_buff[60] |=0x01;//a
  73.                         dis_buff[59] |=0x02;//E
  74.                         
  75.                         
  76.                 }        break;
  77.                 case 3:{
  78.                         dis_buff[40] =  my_7seg_J[dat0];
  79.                         dis_buff[41] =  my_7seg_J[dat1];
  80.                         dis_buff[42] =  my_7seg_J[dat2];
  81.                         dis_buff[43] =  my_7seg_J[dat3];//此處應考慮X37--Var
  82.                         //符號
  83.                         if(dat4)dis_buff[55] |=0x04;
  84.                         else dis_buff[55] &=0xFB;
  85.                         //測量內容
  86.                         dis_buff[57] |=0x01;//Avg
  87.                         dis_buff[56] |=0x01;//n
  88.                         dis_buff[55] |=0x08;//E
  89.                         //單位
  90.                         dis_buff[44] =  my_unit[dat3];
  91.                         //Hz
  92.                         dis_buff[54] |=0x20;//
  93.                 }        break;
  94.                
  95.                 default :break;
  96.         }
  97.         
  98. }
  99. //1,2,3,4行數碼管顯示數字,緩存數組指針、更新數據、第幾行顯示
  100. void dis_number(unsigned char *dis_buf,long data,unsigned char line_number)
  101. {
  102.         unsigned long  mydata;
  103.         unsigned char dat0,dat1,dat2,dat3,dat4;
  104.                
  105.                 if(data < 0)
  106.                 {
  107.                         mydata = fabs(data);
  108.                         dat4 = 1;
  109.                         
  110.                 }else
  111.                 {
  112.                         mydata = data;
  113.                         dat4 = 0;
  114.                 }
  115.                 dat3 = mydata%10;
  116.                 dat2 = mydata%100/10;
  117.                 dat1 = mydata%1000/100;
  118.                 dat0 = mydata%10000/1000;
  119.         Refurbish_Disply(dis_buf,dat0,dat1,dat2,dat3,dat4,line_number);
  120. }

  121. //顯示數據高4位值,緩存數組指針、更新數據、第幾行顯示
  122. void  dis_num_H(unsigned char *dis_buf,long data,unsigned char line_number)
  123. {
  124.         long  mydata;

  125.         if(data / 1000000000)
  126.                 mydata = data /1000000;
  127.         else if(data / 100000000)
  128.                 mydata = data /100000;
  129.         else if(data / 10000000)
  130.                 mydata = data /10000;
  131.         else if(data / 1000000)
  132.                 mydata = data /1000;
  133.         else if(data / 100000)
  134.                 mydata = data /100;
  135.         else if(data / 10000)
  136.                 mydata = data /10;
  137.         else mydata = data;
  138.         
  139.         dis_number(dis_buf,mydata,line_number);
  140. }
  141. //5行數碼管顯示數字,緩存數組指針、更新數據、第幾行顯示
  142. void dis_number5(unsigned char *dis_buf,long data)
  143. {
  144.         unsigned long  mydata;
  145.         unsigned char dat0,dat1,dat2,dat3,dat4,dat5,dat6,dat7;
  146.         
  147.         if(data < 0)
  148.         {
  149.                 mydata = fabs(data);
  150.                 dis_buf[54] |=0x01; //負號        
  151.         }else
  152.         {
  153.                 mydata = data;
  154.                 dis_buf[54] &=0xFE; //負號
  155.         }
  156.         
  157.         dat7 = mydata%10;
  158.         dat6 = mydata%100/10;
  159.         dat5 = mydata%1000/100;
  160.         dat4 = mydata%10000/1000;
  161.         dat3 = mydata%100000/10000;
  162.         dat2 = mydata%1000000/100000;
  163.         dat1 = mydata%10000000/1000000;
  164.         dat0 = mydata%100000000/10000000;
  165.                
  166.         dis_buf[53] =  ru8(my_7seg_J[dat0]);
  167.         dis_buf[52] =  ru8(my_7seg_J[dat1]);
  168.         dis_buf[51] =  ru8(my_7seg_J[dat2]);
  169.         dis_buf[50] =  ru8(my_7seg_J[dat3]);
  170.         dis_buf[49] =  ru8(my_7seg_J[dat4]);
  171.         dis_buf[48] =  ru8(my_7seg_J[dat5]);
  172.         dis_buf[47] =  ru8(my_7seg_J[dat6]);
  173.         dis_buf[46] =  ru8(my_7seg_J[dat7]);//此處應考慮X37--Var
  174.         //冒號
  175.         dis_buf[54] |=0x04; //P16
  176.         dis_buf[54] |=0x08; //P19
  177.         //測量內容
  178.         dis_buf[55] |=0x40;//a
  179.         dis_buf[55] |=0x20;//b
  180.         dis_buf[55] |=0x10;//c
  181.         dis_buf[55] |=0x80;//E
  182.         //單位
  183.         dis_buf[45] |=my_unit5[my_S_M];//
  184.         dis_buf[46] |=0x80;//h

  185. }
  186. //指示行 數碼管顯示數字,緩存數組指針、更新數據
  187. void Instruct_line(unsigned char *dis_buff,unsigned char dat0,unsigned char dat1,unsigned char dat2)
  188. {        
  189.         unsigned char Temp[6];
  190.         Temp[0] = dis_buff[0]&0x03;
  191.         Temp[1] = dis_buff[1]&0x01;
  192.         Temp[2] = dis_buff[2]&0x03;
  193.         Temp[3] = dis_buff[3]&0x01;
  194.         Temp[4] = dis_buff[4]&0x03;
  195.         Temp[5] = dis_buff[5]&0x01;
  196.         
  197.         dis_buff[1] = my_13seg_J[dat0] |Temp[1] ;//
  198.         dis_buff[0] = my_13seg_K[dat0] |Temp[0];//
  199.         
  200.         dis_buff[3] = my_13seg_J[dat1] |Temp[3];//
  201.         dis_buff[2] = my_13seg_K[dat1] |Temp[2];//
  202.         
  203.         dis_buff[5] = my_13seg_J[dat2] |Temp[5];//
  204.         dis_buff[4] = my_13seg_K[dat2] |Temp[4];//
  205. }
  206. //電壓單位轉換 小數點
  207. void Change_U(long data,unsigned char ABC)
  208. {
  209.         unsigned long Temp_U = 0;        
  210.         Temp_U = fabs(data);
  211.         if(Temp_U<10000)//xxx.x V
  212.         {
  213.                 switch(ABC){                         //V                擦除var       小數點
  214.                         case 0:{dis_buffer[10] = my_unit[my_V];dis_buffer[9] &= 0XFE;dis_buffer[8] |= 0x01;dis_buffer[6] &= 0xFE;dis_buffer[7] &= 0xFE;}break;
  215.                         case 1:{dis_buffer[16] = my_unit[my_V];dis_buffer[15] &= 0XFE;dis_buffer[14] |= 0x01;dis_buffer[12] &= 0xFE;dis_buffer[13] &= 0xFE;}break;
  216.                         case 2:{dis_buffer[17] =ru8(my_unit[my_V]);dis_buffer[18] &= 0X7F;dis_buffer[37] |= 0x80;dis_buffer[39] &= 0x7F;dis_buffer[38] &= 0x7F;}break;
  217.                         case 3:{dis_buffer[44] = my_unit[my_V];dis_buffer[43] &= 0XFE;dis_buffer[42] |= 0x01;dis_buffer[40] &= 0xFE;dis_buffer[41] &= 0xFE;}break;
  218.                         default: break;
  219.                 }
  220.         }
  221.         else if(Temp_U<100000)//x.xxx KV
  222.         {
  223.                 switch(ABC){
  224.                         case 0:{dis_buffer[10] = my_unit[my_V] | my_unit[my_K]; dis_buffer[9] &= 0XFE;dis_buffer[6] |= 0x01;dis_buffer[7] &= 0xFE;dis_buffer[8] &= 0xFE;}break;
  225.                         case 1:{dis_buffer[16] = my_unit[my_V] | my_unit[my_K];dis_buffer[15] &= 0XFE;dis_buffer[12] |= 0x01;dis_buffer[13] &= 0xFE;dis_buffer[14] &= 0xFE;}break;
  226.                         case 2:{dis_buffer[17] =ru8(my_unit[my_V] | my_unit[my_K]);dis_buffer[18] &= 0X7F;dis_buffer[39] |= 0x80;dis_buffer[38] &= 0x7F;dis_buffer[37] &= 0x7F;}break;
  227.                         case 3:{dis_buffer[44] = my_unit[my_V] | my_unit[my_K];dis_buffer[43] &= 0XFE;dis_buffer[40] |= 0x01;dis_buffer[41] &= 0xFE;dis_buffer[42] &= 0xFE;}break;
  228.                         default: break;
  229.                 }
  230.         }
  231.         else if(Temp_U<1000000)//xx.xx KV
  232.         {
  233.                 switch(ABC){
  234.                         case 0:{dis_buffer[10] = my_unit[my_V] | my_unit[my_K]; dis_buffer[9] &= 0XFE;dis_buffer[7] |= 0x01; dis_buffer[6] &= 0xFE;dis_buffer[8] &= 0xFE;}break;
  235.                         case 1:{dis_buffer[16] = my_unit[my_V] | my_unit[my_K];dis_buffer[15] &= 0XFE;dis_buffer[13] |= 0x01;dis_buffer[12] &= 0xFE;dis_buffer[14] &= 0xFE;}break;
  236.                         case 2:{dis_buffer[17] =ru8(my_unit[my_V] | my_unit[my_K]);dis_buffer[18] &= 0X7F;dis_buffer[38] |= 0x80;dis_buffer[39] &= 0x7F;dis_buffer[37] &= 0x7F;}break;
  237.                         case 3:{dis_buffer[44] = my_unit[my_V] | my_unit[my_K];dis_buffer[43] &= 0XFE;dis_buffer[41] |= 0x01;dis_buffer[40] &= 0xFE;dis_buffer[42] &= 0xFE;}break;
  238.                         default: break;
  239.                 }
  240.         }
  241.         else if(Temp_U<10000000)//xxx.x KV
  242.         {        
  243.                 switch(ABC){
  244.                         case 0:{dis_buffer[10] = my_unit[my_V] | my_unit[my_K];dis_buffer[9] &= 0XFE;dis_buffer[8] |= 0x01;dis_buffer[6] &= 0xFE;dis_buffer[7] &= 0xFE;}break;
  245.                         case 1:{dis_buffer[16] = my_unit[my_V] | my_unit[my_K];dis_buffer[15] &= 0XFE;dis_buffer[14] |= 0x01;dis_buffer[12] &= 0xFE;dis_buffer[13] &= 0xFE;}break;
  246.                         case 2:{dis_buffer[17] =ru8(my_unit[my_V] | my_unit[my_K]);dis_buffer[18] &= 0X7F;dis_buffer[37] |= 0x80;dis_buffer[39] &= 0x7F;dis_buffer[38] &= 0x7F;}break;
  247.                         case 3:{dis_buffer[44] = my_unit[my_V] | my_unit[my_K];dis_buffer[43] &= 0XFE;dis_buffer[42] |= 0x01;dis_buffer[40] &= 0xFE;dis_buffer[41] &= 0xFE;}break;
  248.                         
  249.                         default: break;
  250.                 }
  251.         }
  252.         else //x.xxx MV
  253.         {
  254.                 switch(ABC){
  255.                         case 0:{dis_buffer[10] = my_unit[my_V] | my_unit[my_M]; dis_buffer[9] &= 0XFE;dis_buffer[6] |= 0x01;dis_buffer[7] &= 0xFE;dis_buffer[8] &= 0xFE;}break;
  256.                         case 1:{dis_buffer[16] = my_unit[my_V] | my_unit[my_M];dis_buffer[15] &= 0XFE;dis_buffer[12] |= 0x01;dis_buffer[13] &= 0xFE;dis_buffer[14] &= 0xFE;}break;
  257.                         case 2:{dis_buffer[17] =ru8(my_unit[my_V] | my_unit[my_M]);dis_buffer[18] &= 0X7F;dis_buffer[39] |= 0x80;dis_buffer[38] &= 0x7F;dis_buffer[37] &= 0x7F;}break;
  258.                         case 3:{dis_buffer[44] = my_unit[my_V] | my_unit[my_M];dis_buffer[43] &= 0XFE;dis_buffer[40] |= 0x01;dis_buffer[41] &= 0xFE;dis_buffer[42] &= 0xFE;}break;
  259.                         
  260.                         default: break;
  261.                 }
  262.         }
  263. }

  264. //電流單位轉換
  265. void Change_I(long data,unsigned char ABC)
  266. {
  267.         unsigned long Temp_A = 0;
  268.         //dis_buffer[6] |= 0x01;dis_buffer[7] |= 0x01;dis_buffer[8] |= 0x01;
  269.         //dis_buffer[12] |= 0x01;dis_buffer[13] |= 0x01;dis_buffer[14] |= 0x01;
  270.         //dis_buffer[39] |= 0x80;dis_buffer[38] |= 0x80;dis_buffer[37] |= 0x80;
  271.         //dis_buffer[40] |= 0x01;dis_buffer[41] |= 0x01;dis_buffer[42] |= 0x01;
  272.         //擦除小數點
  273. //        dis_buffer[6] &= 0xFE;dis_buffer[7] &= 0xFE;dis_buffer[8] &= 0xFE;
  274. //        dis_buffer[12] &= 0xFE;dis_buffer[13] &= 0xFE;dis_buffer[14] &= 0xFE;
  275. //        dis_buffer[39] &= 0x7F;dis_buffer[38] &= 0x7F;dis_buffer[37] &= 0x7F;
  276. //        dis_buffer[40] &= 0xFE;dis_buffer[41] &= 0xFE;dis_buffer[42] &= 0xFE;
  277.         Temp_A = fabs(data);
  278.         if(Temp_A<10000)                //x.xxx A
  279.         {
  280.                 switch(ABC)
  281.                 {                                    //V                擦除var       小數點
  282.                         case 0:{dis_buffer[10] = my_unit[my_A]; dis_buffer[9] &= 0XFE;dis_buffer[6] |= 0x01;dis_buffer[7] &= 0xFE;dis_buffer[8] &= 0xFE;}break;
  283.                         case 1:{dis_buffer[16] = my_unit[my_A] ;dis_buffer[15] &= 0XFE;dis_buffer[12] |= 0x01;dis_buffer[13] &= 0xFE;dis_buffer[14] &= 0xFE;}break;
  284.                         case 2:{dis_buffer[17] =ru8(my_unit[my_A] );dis_buffer[18] &= 0X7F;dis_buffer[39] |= 0x80;dis_buffer[38] &= 0x7F;dis_buffer[37] &= 0x7F;}break;
  285.                         case 3:{dis_buffer[44] = my_unit[my_A] ;dis_buffer[43] &= 0XFE;dis_buffer[40] |= 0x01;dis_buffer[41] &= 0xFE;dis_buffer[42] &= 0xFE;}break;
  286.                         default :break;
  287.                 }
  288.         }
  289.         else if(Temp_A<100000)        //xx.xx A
  290.         {
  291.                 switch(ABC)
  292.                 {
  293.                         case 0:{dis_buffer[10] = my_unit[my_A]; dis_buffer[9] &= 0XFE;dis_buffer[7] |= 0x01;dis_buffer[6] &= 0xFE;dis_buffer[8] &= 0xFE;}break;
  294.                         case 1:{dis_buffer[16] = my_unit[my_A];dis_buffer[15] &= 0XFE;dis_buffer[13] |= 0x01;dis_buffer[12] &= 0xFE;dis_buffer[14] &= 0xFE;}break;
  295.                         case 2:{dis_buffer[17] =ru8(my_unit[my_A] );dis_buffer[18] &= 0X7F;dis_buffer[38] |= 0x80;dis_buffer[39] &= 0x7F;dis_buffer[37] &= 0x7F;}break;
  296.                         case 3:{dis_buffer[44] = my_unit[my_A];dis_buffer[43] &= 0XFE;dis_buffer[41] |= 0x01;dis_buffer[40] &= 0xFE;dis_buffer[42] &= 0xFE;}break;
  297.                         default :break;
  298.                 }
  299.         }
  300.         else if(Temp_A<1000000)        //xxx.x A
  301.         {
  302.                 switch(ABC)
  303.                 {
  304.                         case 0:{dis_buffer[10] = my_unit[my_A] ;dis_buffer[9] &= 0XFE;dis_buffer[8] |= 0x01;dis_buffer[6] &= 0xFE;dis_buffer[7] &= 0xFE;}break;
  305.                         case 1:{dis_buffer[16] = my_unit[my_A] ;dis_buffer[15] &= 0XFE;dis_buffer[14] |= 0x01;dis_buffer[12] &= 0xFE;dis_buffer[13] &= 0xFE;}break;
  306.                         case 2:{dis_buffer[17] =ru8(my_unit[my_A] );dis_buffer[18] &= 0X7F;dis_buffer[37] |= 0x80;dis_buffer[39] &= 0x7F;dis_buffer[38] &= 0x7F;}break;
  307.                         case 3:{dis_buffer[44] = my_unit[my_A] ;dis_buffer[43] &= 0XFE;dis_buffer[42] |= 0x01;dis_buffer[40] &= 0xFE;dis_buffer[41] &= 0xFE;}break;
  308.                         default :break;
  309.                 }
  310.         }
  311.         else if(Temp_A<10000000)        //x.xxx kA
  312.         {
  313.                 switch(ABC)
  314.                 {
  315.                         
  316.                         case 0:{dis_buffer[10] = my_unit[my_A] | my_unit[my_K]; dis_buffer[9] &= 0XFE;dis_buffer[6] |= 0x01;dis_buffer[7] &= 0xFE;dis_buffer[8] &= 0xFE;}break;
  317.                         case 1:{dis_buffer[16] = my_unit[my_A] | my_unit[my_K];dis_buffer[15] &= 0XFE;dis_buffer[12] |= 0x01;dis_buffer[13] &= 0xFE;dis_buffer[14] &= 0xFE;}break;
  318.                         case 2:{dis_buffer[17] =ru8(my_unit[my_A] | my_unit[my_K]);dis_buffer[18] &= 0X7F;dis_buffer[39] |= 0x80;dis_buffer[38] &= 0x7F;dis_buffer[37] &= 0x7F;}break;
  319.                         case 3:{dis_buffer[44] = my_unit[my_A] | my_unit[my_K];dis_buffer[43] &= 0XFE;dis_buffer[40] |= 0x01;dis_buffer[41] &= 0xFE;dis_buffer[42] &= 0xFE;}break;
  320.                         default :break;
  321.                 }
  322.         }
  323.         else
  324.         {
  325.                 switch(ABC)                //xx.xx kA
  326.                 {
  327.                         case 0:{dis_buffer[10] = my_unit[my_A] | my_unit[my_K]; dis_buffer[9] &= 0XFE;dis_buffer[7] |= 0x01;dis_buffer[6] &= 0xFE;dis_buffer[8] &= 0xFE;}break;
  328.                         case 1:{dis_buffer[16] = my_unit[my_A] | my_unit[my_K];dis_buffer[15] &= 0XFE;dis_buffer[13] |= 0x01;dis_buffer[12] &= 0xFE;dis_buffer[14] &= 0xFE;}break;
  329.                         case 2:{dis_buffer[17] =ru8(my_unit[my_A] | my_unit[my_K]);dis_buffer[18] &= 0X7F;dis_buffer[38] |= 0x80;dis_buffer[39] &= 0x7F;dis_buffer[37] &= 0x7F;}break;
  330.                         case 3:{dis_buffer[44] = my_unit[my_A] | my_unit[my_K];dis_buffer[43] &= 0XFE;dis_buffer[41] |= 0x01;dis_buffer[40] &= 0xFE;dis_buffer[42] &= 0xFE;}break;
  331.                         default :break;
  332.                 }
  333.         }
  334.         
  335. }
  336. //功率單位轉換unsigned char *dis_buf,
  337. void Change_P(long data,unsigned char ABCD)        //電流單位轉換,A:0  B:1  C:2
  338. {
  339.         unsigned long Temp_A = 0;
  340.         Temp_A = fabs(data);
  341.         if(Temp_A<10000)        //x.xxx kW
  342.         {
  343.                 switch(ABCD)
  344.                 {                                                          //V                擦除var       小數點
  345.                         case 0:{dis_buffer[10] = my_unit[Power_W] | my_unit[Power_K] ; dis_buffer[9] &= 0XFE;dis_buffer[6] |= 0x01;dis_buffer[7] &= 0xFE;dis_buffer[8] &= 0xFE;}break;
  346.                         case 1:{dis_buffer[16] = my_unit[Power_W] | my_unit[Power_K];dis_buffer[15] &= 0XFE;dis_buffer[12] |= 0x01;dis_buffer[13] &= 0xFE;dis_buffer[14] &= 0xFE;}break;
  347.                         case 2:{dis_buffer[17] =ru8(my_unit[Power_W] | my_unit[Power_K]);dis_buffer[18] &= 0X7F;dis_buffer[39] |= 0x80;dis_buffer[38] &= 0x7F;dis_buffer[37] &= 0x7F;}break;
  348.                         case 3:{dis_buffer[44] = my_unit[Power_W] | my_unit[Power_K];dis_buffer[43] &= 0XFE;dis_buffer[40] |= 0x01;dis_buffer[41] &= 0xFE;dis_buffer[42] &= 0xFE;}break;
  349.                         default :break;
  350.                 }
  351.         }
  352.         else if(Temp_A<100000)        //xx.xx kW
  353.         {
  354.                 switch(ABCD)
  355.                 {
  356.                         case 0:{dis_buffer[10] = my_unit[Power_W] | my_unit[Power_K]; dis_buffer[9] &= 0XFE;dis_buffer[7] |= 0x01;dis_buffer[6] &= 0xFE;dis_buffer[8] &= 0xFE;}break;
  357.                         case 1:{dis_buffer[16] = my_unit[Power_W] | my_unit[Power_K];dis_buffer[15] &= 0XFE;dis_buffer[13] |= 0x01;dis_buffer[12] &= 0xFE;dis_buffer[14] &= 0xFE;}break;
  358.                         case 2:{dis_buffer[17] =ru8(my_unit[Power_W] | my_unit[Power_K]);dis_buffer[18] &= 0X7F;dis_buffer[38] |= 0x80;dis_buffer[39] &= 0x7F;dis_buffer[37] &= 0x7F;}break;
  359.                         case 3:{dis_buffer[44] = my_unit[Power_W] | my_unit[Power_K];dis_buffer[43] &= 0XFE;dis_buffer[41] |= 0x01;dis_buffer[40] &= 0xFE;dis_buffer[42] &= 0xFE;}break;
  360.                         default :break;
  361.                 }
  362.         }
  363.         else if(Temp_A<1000000)        //xxx.x kW
  364.         {
  365.                 switch(ABCD)
  366.                 {
  367.                         case 0:{dis_buffer[10] = my_unit[Power_W] | my_unit[Power_K];dis_buffer[9] &= 0XFE;dis_buffer[8] |= 0x01;dis_buffer[6] &= 0xFE;dis_buffer[7] &= 0xFE;}break;
  368.                         case 1:{dis_buffer[16] = my_unit[Power_W] | my_unit[Power_K];dis_buffer[15] &= 0XFE;dis_buffer[14] |= 0x01;dis_buffer[12] &= 0xFE;dis_buffer[13] &= 0xFE;}break;
  369.                         case 2:{dis_buffer[17] =ru8(my_unit[Power_W] | my_unit[Power_K]);dis_buffer[18] &= 0X7F;dis_buffer[37] |= 0x80;dis_buffer[39] &= 0x7F;dis_buffer[38] &= 0x7F;}break;
  370.                         case 3:{dis_buffer[44] = my_unit[Power_W] | my_unit[Power_K];dis_buffer[43] &= 0XFE;dis_buffer[42] |= 0x01;dis_buffer[40] &= 0xFE;dis_buffer[41] &= 0xFE;}break;
  371.                         default :break;
  372.                 }
  373.         }
  374.         else if(Temp_A<10000000)        //x.xxx MW
  375.         {
  376.                 switch(ABCD)
  377.                 {
  378.                         case 0:{dis_buffer[10] = my_unit[Power_W] | my_unit[Power_M]; dis_buffer[9] &= 0XFE;dis_buffer[6] |= 0x01;dis_buffer[7] &= 0xFE;dis_buffer[8] &= 0xFE;}break;
  379.                         case 1:{dis_buffer[16] = my_unit[Power_W] | my_unit[Power_M];dis_buffer[15] &= 0XFE;dis_buffer[12] |= 0x01;dis_buffer[13] &= 0xFE;dis_buffer[14] &= 0xFE;}break;
  380.                         case 2:{dis_buffer[17] =ru8(my_unit[Power_W] | my_unit[Power_M]);dis_buffer[18] &= 0X7F;dis_buffer[39] |= 0x80;dis_buffer[38] &= 0x7F;dis_buffer[37] &= 0x7F;}break;
  381.                         case 3:{dis_buffer[44] = my_unit[Power_W] | my_unit[Power_M];dis_buffer[43] &= 0XFE;dis_buffer[40] |= 0x01;dis_buffer[41] &= 0xFE;dis_buffer[42] &= 0xFE;}break;
  382.                         default: break;
  383.                 }
  384.         }
  385.         else if(Temp_A<100000000)                //xx.xx MW
  386.         {
  387.                 switch(ABCD)
  388.                 {
  389.                         case 0:{dis_buffer[10] = my_unit[Power_W] | my_unit[Power_M]; dis_buffer[9] &= 0XFE;dis_buffer[7] |= 0x01;dis_buffer[6] &= 0xFE;dis_buffer[8] &= 0xFE;}break;
  390.                         case 1:{dis_buffer[16] = my_unit[Power_W] | my_unit[Power_M];dis_buffer[15] &= 0XFE;dis_buffer[13] |= 0x01;dis_buffer[12] &= 0xFE;dis_buffer[14] &= 0xFE;}break;
  391.                         case 2:{dis_buffer[17] =ru8(my_unit[Power_W] | my_unit[Power_M]);dis_buffer[18] &= 0X7F;dis_buffer[38] |= 0x80;dis_buffer[39] &= 0x7F;dis_buffer[37] &= 0x7F;}break;
  392.                         case 3:{dis_buffer[44] = my_unit[Power_W] | my_unit[Power_M];dis_buffer[43] &= 0XFE;dis_buffer[41] |= 0x01;dis_buffer[40] &= 0xFE;dis_buffer[42] &= 0xFE;}break;
  393.                         default: break;
  394.                 }
  395.         }
  396.         else if(Temp_A<1000000000)        //xxx.x MW
  397.         {
  398.                 switch(ABCD)
  399.                 {
  400.                         case 0:{dis_buffer[10] = my_unit[Power_W] | my_unit[Power_M];dis_buffer[9] &= 0XFE;dis_buffer[8] |= 0x01;dis_buffer[6] &= 0xFE;dis_buffer[7] &= 0xFE;}break;
  401.                         case 1:{dis_buffer[16] = my_unit[Power_W] | my_unit[Power_M];dis_buffer[15] &= 0XFE;dis_buffer[14] |= 0x01;dis_buffer[12] &= 0xFE;dis_buffer[13] &= 0xFE;}break;
  402.                         case 2:{dis_buffer[17] =ru8(my_unit[Power_W] | my_unit[Power_M]);dis_buffer[18] &= 0X7F;dis_buffer[37] |= 0x80;dis_buffer[39] &= 0x7F;dis_buffer[38] &= 0x7F;}break;
  403.                         case 3:{dis_buffer[44] = my_unit[Power_W] | my_unit[Power_M];dis_buffer[43] &= 0XFE;dis_buffer[42] |= 0x01;dis_buffer[40] &= 0xFE;dis_buffer[41] &= 0xFE;}break;
  404.                         default: break;
  405.                 }
  406.         }
  407.         else                //xxxx MW
  408.         {
  409.                 switch(ABCD)
  410.                 {
  411.                         case 0:{dis_buffer[10] = my_unit[Power_W] | my_unit[Power_K];dis_buffer[9] &= 0XFE;}break;
  412.                         case 1:{dis_buffer[16] = my_unit[Power_W] | my_unit[Power_K];dis_buffer[15] &= 0XFE;}break;
  413.                         case 2:{dis_buffer[17] =ru8(my_unit[Power_W] | my_unit[Power_K]);dis_buffer[18] &= 0X7F;}break;
  414.                         case 3:{dis_buffer[44] = my_unit[Power_W] | my_unit[Power_K];dis_buffer[43] &= 0XFE;}break;
  415.                         default: break;
  416.                 }
  417.         }
  418. }
  419. void Display_tiaoshi(void)
  420. {
  421.         LIGHT_H;
  422.         dis_buffer[11] = 0x80;//許繼標
  423.         
  424.         dis_buffer[2] |=  0x02;//諧波分量
  425.         dis_buffer[2] |=  0x01;//LINE 3-
  426.         dis_buffer[1] |=  0x01;//3   T7
  427.         dis_buffer[0] |=  0x02;//4   T8
  428.         dis_buffer[63] |=  0x10;//電話諧波因子T9
  429.         dis_buffer[63] |=  0x40;//鈴 圖案T14
  430.         dis_buffer[63] |=  0x20;//H系數 T15
  431.         dis_buffer[63] |=  0x80;//開入 T16
  432.         dis_buffer[63] |=  0x08;//MAX T17
  433.         
  434.         dis_buffer[62] |=  0x02;//MIN T18
  435.         dis_buffer[62] |=  0x01;//需量 T19
  436.         dis_buffer[62] |=  0x80;//1開入開關座 圖標 T20
  437.         dis_buffer[62] |=  0x20;//1開入開 圖標 T21
  438.         dis_buffer[62] |=  0x40;//1開入閉 圖標 T22
  439.         
  440.         dis_buffer[62] |=  0x10;//2開入開關座 圖標 T23
  441.         dis_buffer[62] |=  0x04;//2開入開 圖標 T24
  442.         dis_buffer[62] |=  0x08;//2開入閉 圖標 T25
  443.         
  444.         dis_buffer[61] |=  0x80;//3開入開關座 圖標 T26
  445.         dis_buffer[61] |=  0x20;//3開入開 圖標 T27
  446.         dis_buffer[61] |=  0x40;//3開入閉 圖標 T28
  447.         
  448.         dis_buffer[61] |=  0x10;//4開入開關座 圖標 T29
  449.         dis_buffer[61] |=  0x04;//4開入開 圖標 T30
  450.         dis_buffer[61] |=  0x08;//4開入閉 圖標 T31
  451.         
  452.         dis_buffer[61] |=  0x02;//開出 T32
  453.         dis_buffer[61] |=  0x01;//電壓合格率T33
  454.         dis_buffer[60] |=  0x80;//1開出開關座 圖標 T38
  455.         dis_buffer[60] |=  0x20;//1開出開 圖標 T39
  456.         dis_buffer[60] |=  0x40;//1開出閉 圖標 T40
  457.         
  458.         dis_buffer[60] |=  0x10;//2開出開關座 圖標 T41
  459.         dis_buffer[60] |=  0x04;//2開出開 圖標 T42
  460.         dis_buffer[60] |=  0x08;//2開出閉 圖標 T43
  461.         
  462.         dis_buffer[59] |=  0x80;//3開出開關座 圖標 T44
  463.         dis_buffer[59] |=  0x20;//3開出開 圖標 T45
  464.         dis_buffer[59] |=  0x40;//3開出閉 圖標 T46
  465.         
  466.         dis_buffer[59] |=  0x10;//4開出開關座 圖標 T47
  467.         dis_buffer[59] |=  0x04;//4開出開 圖標 T48
  468.         dis_buffer[59] |=  0x08;//4開出閉 圖標 T49
  469.         
  470.         dis_buffer[58] |=  0x01;//電流K系數 T50
  471.         dis_buffer[58] |=  0x02;//電感圖標 T52
  472.         dis_buffer[57] |=  0x02;//電壓波峰系數 T53
  473.         dis_buffer[58] |=  0x04;//電容圖標 T55
  474.         dis_buffer[56] |=  0x02;//三相不平衡度T56
  475.         
  476.         dis_buffer[58] |=  0x08;//電腦圖標 T59
  477.         dis_buffer[57] |=  0x08;//本 T60
  478.         dis_buffer[57] |=  0x04;//上 T61
  479.         dis_buffer[56] |=  0x08;//上 T62
  480.         dis_buffer[56] |=  0x04;//月 T63
  481.         dis_buffer[57] |=  0x20;//尖 T64
  482.         dis_buffer[57] |=  0x10;//峰 T65
  483.         dis_buffer[56] |=  0x20;//平 T66
  484.         dis_buffer[56] |=  0x10;//谷 T67
  485.         dis_buffer[58] |=  0x20;//正 T68
  486.         dis_buffer[58] |=  0x10;//負 T69
  487.         dis_buffer[57] |=  0x40;//有功 T70
  488.         dis_buffer[56] |=  0x40;//電度 T71
  489.         dis_buffer[58] |=  0x40;//正 T75
  490.         dis_buffer[58] |=  0x80;//負 T76
  491.         dis_buffer[57] |=  0x80;//無功 T77
  492.         dis_buffer[56] |=  0x80;//電度 T78
  493.         
  494.         dis_number5(dis_buffer,9876);
  495.         dis_num_H(dis_buffer,9876,0);
  496.         Change_P(9876,0);
  497.         dis_num_H(dis_buffer,-54321,1);
  498.         Change_P(-54321,1);
  499.         WriteAll_1625(0x00,dis_buffer,64);
  500.         dis_num_H(dis_buffer,543212,2);
  501.         Change_P(543211,2);
  502.         WriteAll_1625(0x00,dis_buffer,64);
  503.         dis_num_H(dis_buffer,5432123,3);
  504.         Change_P(5432123,3);
  505.         WriteAll_1625(0x00,dis_buffer,64);
  506.         Instruct_line(dis_buffer,Ins_C,Ins_0,Ins_5);//cos
  507.         
  508.         
  509. }
復制代碼

ht1621b中文.pdf
ht1625v170.pdf

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:59423 發表于 2018-3-22 18:21 | 只看該作者
段碼屏的程序用來學習,現在在做電表相關的工作。
回復

使用道具 舉報

板凳
ID:110257 發表于 2018-8-4 23:09 | 只看該作者
學習了。謝謝!
回復

使用道具 舉報

地板
ID:375880 發表于 2018-8-6 10:46 來自手機 | 只看該作者
我先在在做電表,感謝!
回復

使用道具 舉報

5#
ID:234890 發表于 2018-8-31 15:12 | 只看該作者
下載還要金幣啊!
回復

使用道具 舉報

6#
ID:234890 發表于 2018-8-31 16:02 | 只看該作者
代碼不全啊!
回復

使用道具 舉報

7#
ID:415572 發表于 2018-12-5 00:17 | 只看該作者
學習一下
回復

使用道具 舉報

8#
ID:241249 發表于 2019-4-9 21:25 | 只看該作者
代碼量有點大啊
回復

使用道具 舉報

9#
ID:312300 發表于 2019-5-20 11:57 | 只看該作者
學習了。。。。。。
回復

使用道具 舉報

10#
ID:96552 發表于 2019-8-4 21:08 | 只看該作者
好資料,謝謝了
回復

使用道具 舉報

11#
ID:76567 發表于 2019-10-22 16:08 | 只看該作者
感謝分享,很好的學習資料
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜小影院| av在线天堂网 | 欧美亚洲国产一区二区三区 | 欧美日日 | 91爱啪啪 | 欧美国产在线一区 | 欧美性久久久 | 精品久久国产老人久久综合 | 久久精品视频9 | 国产小视频在线 | 亚洲成人免费视频 | 亚洲高清一区二区三区 | 欧美精品网站 | 国产日韩欧美精品一区二区 | 国产精品久久久久免费 | 狠狠的干 | 在线日韩欧美 | 日韩精品一区二区三区中文在线 | 综合精品久久久 | 日韩在线免费看 | 久精品久久 | 午夜久久久 | 国产免费拔擦拔擦8x高清 | 国产电影一区二区在线观看 | av香蕉| 男人天堂999 | 国产精品色一区二区三区 | 成人亚洲| 欧美日韩三区 | 日韩精品一区二区三区在线播放 | 欧美一区二区三区精品 | 一区二区国产精品 | 丝袜美腿av | 成人免费视频 | 久久久久99 | 亚洲精品一区二区三区蜜桃久 | 在线免费观看视频黄 | 欧美一级黄色网 | 日韩中文一区二区 | 91麻豆蜜桃一区二区三区 | 久久国产一区 |