久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
ht1625 Segment code LCD與點陣液晶屏的資料與菜單源碼
[打印本頁]
作者:
細風
時間:
2018-3-21 08:07
標題:
ht1625 Segment code LCD與點陣液晶屏的資料與菜單源碼
自己用到的段式液晶與點陣液晶的資料的一些分享
0.png
(38.61 KB, 下載次數: 59)
下載附件
2018-3-22 00:21 上傳
0.png
(6.28 KB, 下載次數: 55)
下載附件
2018-3-22 00:29 上傳
全部資料51hei下載地址:
Display module.zip
(9.83 MB, 下載次數: 260)
2018-3-21 08:05 上傳
點擊文件名下載附件
12864液晶
下載積分: 黑幣 -5
1.給ht1625發送命令控制字 數據必須是9位
2.ht1625初始化時 控制端口初始狀態為高電平
ht1625單片機源程序如下:
#include "lcd.h"
static void nop(void)//
{
u8 i;
for(i=0;i<90;i++)
;
}
//給1625發送命令與地址,寫入3位ID命令或A6A5A4A3A2A1A0七位地址
static void SendBit_1625(u8 mdata,u8 cnt) //mdata的高cnt位寫入HT1625,高位在前
{
u8 i;
for(i=0;i<cnt;i++)
{
LWR_L;
if((mdata&0x80)==0)
LDA_L;
else
LDA_H;
nop();
LWR_H;
nop();
mdata<<=1;
}
}
//給1625發送數據,寫入D0D1D2D3..cnt位數據到RAM
static void SendDataBit_1625(u8 mdata,u8 cnt) //mdata的低cnt位寫入HT1625,低位在前
{
u8 i;
for(i=0;i<cnt;i++)
{
LWR_L;
if((mdata&0x01)==0x00)
LDA_L;
else
LDA_H;
nop();
LWR_H;
nop();
mdata>>=1;
}
}
//讀一個地址
u8 Read_1625(u8 addr,u8 cnt)
{
u8 rd=0x00,i=0;
LCS_L;
SendBit_1625(0xc0,3); //控制命令110,啟動讀模式
// SendBit_1625(addr<<1,7);
// //讀入的數據放在RD的低四位
// for(i=0;i<cnt;i++)
// {
// if(LDA)
// rd|=0x08;
// else
// rd&=0xf7;
// LRD_L;
// nop();//
// LRD_H;
// nop();//
// rd = rd>>1; //rd>>1;
// }
// if(LDA)
// rd|=0x08;
// else
// rd&=0xf7;
// LCS=1;
return rd;
}
//給1625發送命令控制字
void SendCmd(u8 command)
{
LCS_L;
SendBit_1625(0x80,3); //控制命令100,啟動命令模式
SendBit_1625(command,9); //jjk命令處 數據數必須是9 將命令command發送給1625
LCS_H;
}
//LCD初始化,向HT1625寫入命令
void LCD_init(void)
{
//LCD端口初始化,定義控制引腳數據方向
LCS_H;LWR_H;LDA_H;LRD_H;nop();
SendCmd(0x01); //命令2:0x01,打開系統晶振SYS_EN
SendCmd(0x03); //命令3:0x03,開LCD顯示 LCD_ON
SendCmd(0x18); //命令1:0x18,使用片上RC振蕩器RC_32K
}
//寫一個地址
void Write_1625(u8 addr,u8 mdata)
{
LCS_L;
SendBit_1625(0xa0,3); //啟動寫模式
SendBit_1625(addr,7); //寫入A6A5A4A3A2A1A0七位地址
SendDataBit_1625(mdata,4); //寫入D0D1D2D3數據到RAM
LCS_H;
}
//從一地址處連續寫入
void WriteAll_1625(u8 addr,u8 *p,u8 cnt) //起始地址,數組指針,數據字節數
{
u8 i;
LCS_L;
SendBit_1625(0xa0,3); //啟動寫模式
SendBit_1625(addr,7); //寫入A6A5A4A3A2A1A0七位地址
for(i=0;i<cnt;i++,p++) //依次寫入cnt個字節數據
{
SendDataBit_1625(*p,8);
}
LCS_H;
}
//清屏&全屏顯示
void full_or_clear (u8 F_C) //1:全顯,0:清屏
{
u8 i,p;
if(F_C)
p=0xff;
else
p=0x00;
LCS_L;
SendBit_1625(0xa0,3); //啟動寫模式
SendBit_1625(0x00,7); //地址0000H
for(i=0;i<64;i++)
{
SendDataBit_1625(p,8); //將全顯或清屏數據寫入1625
}
LCS_H;
}
復制代碼
Segment code LCD菜單程序:
#include "stm32f10x_it.h"
#include "lcd.h"
#include "string.h"
#include "drv_sys.h"
#include "delay.h"
#include "drv_rtc.h"
#include "math.h"
u16 SystemPara[18] =
{0,100,1,246,200,0,0,0,10,1,300,180,100,100,300,0,1,20};
unsigned char dis_buffer[64]; //液晶顯示字符緩存數組
//1-4行數字 字母 0 1 2 3 4 5 6 7 8 9 . C c o d E F H h n u
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,};
//1-4符號 XJ % M K V A M K W Var
const unsigned char my_unit[10]={0x80,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x01};
//5符號 M K W h M K V ar
const unsigned char my_unit5[9]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//指示行 數字 字母 0 1 2 3 4 5 6 7 8 9 C U I P Q F
const unsigned char my_13seg_J[16]={0x9A,0x18,0x92,0x9A,0x18,0x8A,0x8A,0x98,0x9A,0x98,0x82,0x1A,0xC2,0x90,0x9E,0x80};
const unsigned char my_13seg_K[16]={0x84,0x00,0x24,0x20,0xA0,0xA0,0xA4,0x00,0x84,0xA0,0x84,0x84,0x10,0xA4,0x84,0xA4};
//*****8位字節翻轉
unsigned char ru8(unsigned char s)
{
unsigned char rtn = 0,i=0;
for(i = 0 ; i < 8 ; i++)
{
rtn |= ((s & (1 << i)) >> i) << (7 - i) ;
}
return rtn ;
}
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)
{
switch(line_number)
{
case 0:{
dis_buff[6] = my_7seg_J[dat0];
dis_buff[7] = my_7seg_J[dat1];
dis_buff[8] = my_7seg_J[dat2];
dis_buff[9] = my_7seg_J[dat3];//此處應考慮X9--Var
//符號
if(dat4) dis_buff[4] |=0x02;
else dis_buff[4] &=0xFD;
//測量內容
dis_buff[5] |=0x01;//a
dis_buff[4] |=0x01;//b
dis_buff[3] |=0x01;//E
} break;
case 1:{
dis_buff[12] = my_7seg_J[dat0];
dis_buff[13] = my_7seg_J[dat1];
dis_buff[14] = my_7seg_J[dat2];
dis_buff[15] = my_7seg_J[dat3];//此處應考慮X18--Var
//符號
if(dat4)dis_buff[63] |=0x02;
else dis_buff[63] &=0xFD;
//測量內容
dis_buff[0] |=0x01;//b
dis_buff[63] |=0x01;//c
dis_buff[63] |=0x04;//E
} break;
case 2:{
dis_buff[39] = ru8(my_7seg_J[dat0]);
dis_buff[38] = ru8(my_7seg_J[dat1]);
dis_buff[37] = ru8(my_7seg_J[dat2]);
dis_buff[18] = ru8(my_7seg_J[dat3]);//此處應考慮X27--Var
//符號
if(dat4)dis_buff[59] |=0x01;
else dis_buff[59] &=0xFE;
//測量內容
dis_buff[60] |=0x02;//c
dis_buff[60] |=0x01;//a
dis_buff[59] |=0x02;//E
} break;
case 3:{
dis_buff[40] = my_7seg_J[dat0];
dis_buff[41] = my_7seg_J[dat1];
dis_buff[42] = my_7seg_J[dat2];
dis_buff[43] = my_7seg_J[dat3];//此處應考慮X37--Var
//符號
if(dat4)dis_buff[55] |=0x04;
else dis_buff[55] &=0xFB;
//測量內容
dis_buff[57] |=0x01;//Avg
dis_buff[56] |=0x01;//n
dis_buff[55] |=0x08;//E
//單位
dis_buff[44] = my_unit[dat3];
//Hz
dis_buff[54] |=0x20;//
} break;
default :break;
}
}
//1,2,3,4行數碼管顯示數字,緩存數組指針、更新數據、第幾行顯示
void dis_number(unsigned char *dis_buf,long data,unsigned char line_number)
{
unsigned long mydata;
unsigned char dat0,dat1,dat2,dat3,dat4;
if(data < 0)
{
mydata = fabs(data);
dat4 = 1;
}else
{
mydata = data;
dat4 = 0;
}
dat3 = mydata%10;
dat2 = mydata%100/10;
dat1 = mydata%1000/100;
dat0 = mydata%10000/1000;
Refurbish_Disply(dis_buf,dat0,dat1,dat2,dat3,dat4,line_number);
}
//顯示數據高4位值,緩存數組指針、更新數據、第幾行顯示
void dis_num_H(unsigned char *dis_buf,long data,unsigned char line_number)
{
long mydata;
if(data / 1000000000)
mydata = data /1000000;
else if(data / 100000000)
mydata = data /100000;
else if(data / 10000000)
mydata = data /10000;
else if(data / 1000000)
mydata = data /1000;
else if(data / 100000)
mydata = data /100;
else if(data / 10000)
mydata = data /10;
else mydata = data;
dis_number(dis_buf,mydata,line_number);
}
//5行數碼管顯示數字,緩存數組指針、更新數據、第幾行顯示
void dis_number5(unsigned char *dis_buf,long data)
{
unsigned long mydata;
unsigned char dat0,dat1,dat2,dat3,dat4,dat5,dat6,dat7;
if(data < 0)
{
mydata = fabs(data);
dis_buf[54] |=0x01; //負號
}else
{
mydata = data;
dis_buf[54] &=0xFE; //負號
}
dat7 = mydata%10;
dat6 = mydata%100/10;
dat5 = mydata%1000/100;
dat4 = mydata%10000/1000;
dat3 = mydata%100000/10000;
dat2 = mydata%1000000/100000;
dat1 = mydata%10000000/1000000;
dat0 = mydata%100000000/10000000;
dis_buf[53] = ru8(my_7seg_J[dat0]);
dis_buf[52] = ru8(my_7seg_J[dat1]);
dis_buf[51] = ru8(my_7seg_J[dat2]);
dis_buf[50] = ru8(my_7seg_J[dat3]);
dis_buf[49] = ru8(my_7seg_J[dat4]);
dis_buf[48] = ru8(my_7seg_J[dat5]);
dis_buf[47] = ru8(my_7seg_J[dat6]);
dis_buf[46] = ru8(my_7seg_J[dat7]);//此處應考慮X37--Var
//冒號
dis_buf[54] |=0x04; //P16
dis_buf[54] |=0x08; //P19
//測量內容
dis_buf[55] |=0x40;//a
dis_buf[55] |=0x20;//b
dis_buf[55] |=0x10;//c
dis_buf[55] |=0x80;//E
//單位
dis_buf[45] |=my_unit5[my_S_M];//
dis_buf[46] |=0x80;//h
}
//指示行 數碼管顯示數字,緩存數組指針、更新數據
void Instruct_line(unsigned char *dis_buff,unsigned char dat0,unsigned char dat1,unsigned char dat2)
{
unsigned char Temp[6];
Temp[0] = dis_buff[0]&0x03;
Temp[1] = dis_buff[1]&0x01;
Temp[2] = dis_buff[2]&0x03;
Temp[3] = dis_buff[3]&0x01;
Temp[4] = dis_buff[4]&0x03;
Temp[5] = dis_buff[5]&0x01;
dis_buff[1] = my_13seg_J[dat0] |Temp[1] ;//
dis_buff[0] = my_13seg_K[dat0] |Temp[0];//
dis_buff[3] = my_13seg_J[dat1] |Temp[3];//
dis_buff[2] = my_13seg_K[dat1] |Temp[2];//
dis_buff[5] = my_13seg_J[dat2] |Temp[5];//
dis_buff[4] = my_13seg_K[dat2] |Temp[4];//
}
//電壓單位轉換 小數點
void Change_U(long data,unsigned char ABC)
{
unsigned long Temp_U = 0;
Temp_U = fabs(data);
if(Temp_U<10000)//xxx.x V
{
switch(ABC){ //V 擦除var 小數點
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;
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;
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;
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;
default: break;
}
}
else if(Temp_U<100000)//x.xxx KV
{
switch(ABC){
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;
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;
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;
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;
default: break;
}
}
else if(Temp_U<1000000)//xx.xx KV
{
switch(ABC){
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;
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;
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;
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;
default: break;
}
}
else if(Temp_U<10000000)//xxx.x KV
{
switch(ABC){
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;
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;
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;
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;
default: break;
}
}
else //x.xxx MV
{
switch(ABC){
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;
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;
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;
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;
default: break;
}
}
}
//電流單位轉換
void Change_I(long data,unsigned char ABC)
{
unsigned long Temp_A = 0;
//dis_buffer[6] |= 0x01;dis_buffer[7] |= 0x01;dis_buffer[8] |= 0x01;
//dis_buffer[12] |= 0x01;dis_buffer[13] |= 0x01;dis_buffer[14] |= 0x01;
//dis_buffer[39] |= 0x80;dis_buffer[38] |= 0x80;dis_buffer[37] |= 0x80;
//dis_buffer[40] |= 0x01;dis_buffer[41] |= 0x01;dis_buffer[42] |= 0x01;
//擦除小數點
// dis_buffer[6] &= 0xFE;dis_buffer[7] &= 0xFE;dis_buffer[8] &= 0xFE;
// dis_buffer[12] &= 0xFE;dis_buffer[13] &= 0xFE;dis_buffer[14] &= 0xFE;
// dis_buffer[39] &= 0x7F;dis_buffer[38] &= 0x7F;dis_buffer[37] &= 0x7F;
// dis_buffer[40] &= 0xFE;dis_buffer[41] &= 0xFE;dis_buffer[42] &= 0xFE;
Temp_A = fabs(data);
if(Temp_A<10000) //x.xxx A
{
switch(ABC)
{ //V 擦除var 小數點
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;
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;
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;
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;
default :break;
}
}
else if(Temp_A<100000) //xx.xx A
{
switch(ABC)
{
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;
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;
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;
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;
default :break;
}
}
else if(Temp_A<1000000) //xxx.x A
{
switch(ABC)
{
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;
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;
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;
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;
default :break;
}
}
else if(Temp_A<10000000) //x.xxx kA
{
switch(ABC)
{
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;
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;
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;
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;
default :break;
}
}
else
{
switch(ABC) //xx.xx kA
{
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;
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;
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;
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;
default :break;
}
}
}
//功率單位轉換unsigned char *dis_buf,
void Change_P(long data,unsigned char ABCD) //電流單位轉換,A:0 B:1 C:2
{
unsigned long Temp_A = 0;
Temp_A = fabs(data);
if(Temp_A<10000) //x.xxx kW
{
switch(ABCD)
{ //V 擦除var 小數點
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;
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;
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;
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;
default :break;
}
}
else if(Temp_A<100000) //xx.xx kW
{
switch(ABCD)
{
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;
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;
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;
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;
default :break;
}
}
else if(Temp_A<1000000) //xxx.x kW
{
switch(ABCD)
{
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;
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;
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;
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;
default :break;
}
}
else if(Temp_A<10000000) //x.xxx MW
{
switch(ABCD)
{
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;
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;
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;
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;
default: break;
}
}
else if(Temp_A<100000000) //xx.xx MW
{
switch(ABCD)
{
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;
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;
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;
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;
default: break;
}
}
else if(Temp_A<1000000000) //xxx.x MW
{
switch(ABCD)
{
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;
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;
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;
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;
default: break;
}
}
else //xxxx MW
{
switch(ABCD)
{
case 0:{dis_buffer[10] = my_unit[Power_W] | my_unit[Power_K];dis_buffer[9] &= 0XFE;}break;
case 1:{dis_buffer[16] = my_unit[Power_W] | my_unit[Power_K];dis_buffer[15] &= 0XFE;}break;
case 2:{dis_buffer[17] =ru8(my_unit[Power_W] | my_unit[Power_K]);dis_buffer[18] &= 0X7F;}break;
case 3:{dis_buffer[44] = my_unit[Power_W] | my_unit[Power_K];dis_buffer[43] &= 0XFE;}break;
default: break;
}
}
}
void Display_tiaoshi(void)
{
LIGHT_H;
dis_buffer[11] = 0x80;//許繼標
dis_buffer[2] |= 0x02;//諧波分量
dis_buffer[2] |= 0x01;//LINE 3-
dis_buffer[1] |= 0x01;//3 T7
dis_buffer[0] |= 0x02;//4 T8
dis_buffer[63] |= 0x10;//電話諧波因子T9
dis_buffer[63] |= 0x40;//鈴 圖案T14
dis_buffer[63] |= 0x20;//H系數 T15
dis_buffer[63] |= 0x80;//開入 T16
dis_buffer[63] |= 0x08;//MAX T17
dis_buffer[62] |= 0x02;//MIN T18
dis_buffer[62] |= 0x01;//需量 T19
dis_buffer[62] |= 0x80;//1開入開關座 圖標 T20
dis_buffer[62] |= 0x20;//1開入開 圖標 T21
dis_buffer[62] |= 0x40;//1開入閉 圖標 T22
dis_buffer[62] |= 0x10;//2開入開關座 圖標 T23
dis_buffer[62] |= 0x04;//2開入開 圖標 T24
dis_buffer[62] |= 0x08;//2開入閉 圖標 T25
dis_buffer[61] |= 0x80;//3開入開關座 圖標 T26
dis_buffer[61] |= 0x20;//3開入開 圖標 T27
dis_buffer[61] |= 0x40;//3開入閉 圖標 T28
dis_buffer[61] |= 0x10;//4開入開關座 圖標 T29
dis_buffer[61] |= 0x04;//4開入開 圖標 T30
dis_buffer[61] |= 0x08;//4開入閉 圖標 T31
dis_buffer[61] |= 0x02;//開出 T32
dis_buffer[61] |= 0x01;//電壓合格率T33
dis_buffer[60] |= 0x80;//1開出開關座 圖標 T38
dis_buffer[60] |= 0x20;//1開出開 圖標 T39
dis_buffer[60] |= 0x40;//1開出閉 圖標 T40
dis_buffer[60] |= 0x10;//2開出開關座 圖標 T41
dis_buffer[60] |= 0x04;//2開出開 圖標 T42
dis_buffer[60] |= 0x08;//2開出閉 圖標 T43
dis_buffer[59] |= 0x80;//3開出開關座 圖標 T44
dis_buffer[59] |= 0x20;//3開出開 圖標 T45
dis_buffer[59] |= 0x40;//3開出閉 圖標 T46
dis_buffer[59] |= 0x10;//4開出開關座 圖標 T47
dis_buffer[59] |= 0x04;//4開出開 圖標 T48
dis_buffer[59] |= 0x08;//4開出閉 圖標 T49
dis_buffer[58] |= 0x01;//電流K系數 T50
dis_buffer[58] |= 0x02;//電感圖標 T52
dis_buffer[57] |= 0x02;//電壓波峰系數 T53
dis_buffer[58] |= 0x04;//電容圖標 T55
dis_buffer[56] |= 0x02;//三相不平衡度T56
dis_buffer[58] |= 0x08;//電腦圖標 T59
dis_buffer[57] |= 0x08;//本 T60
dis_buffer[57] |= 0x04;//上 T61
dis_buffer[56] |= 0x08;//上 T62
dis_buffer[56] |= 0x04;//月 T63
dis_buffer[57] |= 0x20;//尖 T64
dis_buffer[57] |= 0x10;//峰 T65
dis_buffer[56] |= 0x20;//平 T66
dis_buffer[56] |= 0x10;//谷 T67
dis_buffer[58] |= 0x20;//正 T68
dis_buffer[58] |= 0x10;//負 T69
dis_buffer[57] |= 0x40;//有功 T70
dis_buffer[56] |= 0x40;//電度 T71
dis_buffer[58] |= 0x40;//正 T75
dis_buffer[58] |= 0x80;//負 T76
dis_buffer[57] |= 0x80;//無功 T77
dis_buffer[56] |= 0x80;//電度 T78
dis_number5(dis_buffer,9876);
dis_num_H(dis_buffer,9876,0);
Change_P(9876,0);
dis_num_H(dis_buffer,-54321,1);
Change_P(-54321,1);
WriteAll_1625(0x00,dis_buffer,64);
dis_num_H(dis_buffer,543212,2);
Change_P(543211,2);
WriteAll_1625(0x00,dis_buffer,64);
dis_num_H(dis_buffer,5432123,3);
Change_P(5432123,3);
WriteAll_1625(0x00,dis_buffer,64);
Instruct_line(dis_buffer,Ins_C,Ins_0,Ins_5);//cos
}
復制代碼
ht1621b中文.pdf
ht1625v170.pdf
作者:
zhangjianhu
時間:
2018-3-22 18:21
段碼屏的程序用來學習,現在在做電表相關的工作。
作者:
卡洛琦
時間:
2018-8-4 23:09
學習了。謝謝!
作者:
hjj1019389748
時間:
2018-8-6 10:46
我先在在做電表,感謝!
作者:
eternity86
時間:
2018-8-31 15:12
下載還要金幣啊!
作者:
eternity86
時間:
2018-8-31 16:02
代碼不全啊!
作者:
zeze10000
時間:
2018-12-5 00:17
學習一下
作者:
weiwei850113
時間:
2019-4-9 21:25
代碼量有點大啊
作者:
wang930626
時間:
2019-5-20 11:57
學習了。。。。。。
作者:
hilam
時間:
2019-8-4 21:08
好資料,謝謝了
作者:
znddcc
時間:
2019-10-22 16:08
感謝分享,很好的學習資料
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
91国产精品在线
|
久久久成人免费一区二区
|
久久久国产精品
|
国产精彩视频在线观看
|
日本不卡免费新一二三区
|
欧美日韩亚洲视频
|
国产一区二区电影
|
九九九视频精品
|
超级乱淫av片免费播放
|
久草精品视频
|
一区二区在线不卡
|
韩日精品一区
|
亚洲第一天堂无码专区
|
一区二区在线
|
免费在线观看一区二区三区
|
色妹子综合网
|
欧美成人a
|
国产精品乱码一区二三区小蝌蚪
|
国产精品毛片久久久久久
|
午夜天堂精品久久久久
|
国产一区免费视频
|
日韩av在线一区二区三区
|
色呦呦在线
|
成人免费视频7777777
|
日本电影免费完整观看
|
欧美韩一区二区三区
|
日韩波多野结衣
|
精品1区2区3区
|
黄色一级大片在线免费看产
|
欧美成人激情
|
成人免费视屏
|
日本 欧美 三级 高清 视频
|
另类a v
|
精品欧美一区二区三区久久久
|
中文字幕在线观看www
|
精品久久久久久久
|
午夜视频在线免费观看
|
www午夜视频
|
日本免费一区二区三区
|
理论片87福利理论电影
|
国产一区二区三区久久久久久久久
|