利用DWIN HMI 指令集0xC104指令实现高速数据图显示和动态放大 方式:
1.相关指令
1.1写暂存缓冲区(0xC0)
Tx: AA C0 <Address> <Word0……Wordn> CC 33 C3 3C
Rx: 无
- <Address> 暂存缓冲区(RAM)的首地址(字地址),一共40KWord,0x0000-0x9FFF。
- <Word0……Wordn> 要写入的数据
1.2使用暂存缓冲区数据高速显示折线图(0xC104)
Tx: AA C1 04 <Adr1> <x> <y> <Line_Number> <D_x> <Dis_x> <Color1> <Addr0> <Color0> CC 33 C3 3C
Rx: 无
- <x> 显示起始位置的x坐标;
- <y> 显示Y坐标的0点(最低点)位置,实际连线点位置=y-Ly;
- <Line_Number> 连线数目,每条线1个字,最多40960条线;
- <D_x> 固定写0x01;
- <Dis_X> 显示的x坐标增量,0x01-0x0F,即每连1条线后,x=x+Dis_x;
- <Addr0> <Addr1> 暂存缓冲区(RAM)的首地址(字地址),一共40KWord,0x0000-0x9FFF;
- <Color0> <Color1> 为显示线条的颜色,不改变系统调色板属性;
暂存缓冲区的连线数据格式定义为:Ly(2字节),Ly为点的高度。
本指令和0xC103指令基本类似,不同在于:
A.读缓冲区的点间隔固定为1;
b.每连一个点1之前,先把对应的原来的点0擦除,实现
无闪烁显示。
采用115200bps通信速率时,本指令可以达到的折线显示速度极限大约是5500点/秒。
2.举例(DMT80600S080_01WT+DP104B)
//C程序举例,高速实时数据采集显示
Clrwin(0,448,799,512) //先清除要显示的窗口
for(;;)
{ wraddr=0x0000;
for(i=0;i<2;i++)
{ for(j=0;j<2;j++)
{ Txword(0xAAC0);
Txword(wraddr);
for(k=0;k<100;k++)
{ Txword(Read_AD()); } //发送A/D结果
TxEOC(); //发送帧结束符
wraddr=wraddr+100; }
if(i==0)
{ Txstr(*dsp0); } //显示第1个Buffer
else
{ Txstr(*dsp1); } //显示第2个Buffer
}}
//C程序举例,曲线动态放大,假设数据存储在暂存缓冲区
K=4; //放大倍速
Addr=0x0000; //放大的数据段起始位置
Clrwin(0,448,799,512);
Txword(0xAAC1);
Txbyte(0x03);
Txword(Addr);
Txword(0x0000); //x
Txword(0x0200); //y
Txbyte((800/K)-1); //线段数目=横向分辨率/放大倍速-1
Txbyte(0x01); //Adrr增量为1
Txbyte(k);
Txword(0xF800); //显示线段颜色为红色
;ASM51 程序示例,高速数据曲线显示
START: NOP
MOV WRADDR_H,#00H ;写数据到缓冲区
MOV WRADDR_L,#00H
MOV R5,#2 ;两个缓冲区交替切换来实现“无抖动”显示
WRBUF0: MOV R6,#2
WRBUF1: MOV A,#0AAH ;显示间隔4个点,整屏数据需要200个点
LCALL TXBYTE
MOV A,#0C0H
LCALL TXBYTE
MOV A,WRADDR_H
LCALL TXBYTE
MOV A,WRADDR_L
LCALL TXBYTE
MOV R7,#100
WRBUF2: MOV A,#00H ;00:RAND_D为采样点数据
LCALL TXBYTE
MOV A,RAND_D ;随机数测试数据
ANL A,#3FH
LCALL TXBYTE
MOV A,RAND_D ;生成随机数
MOV B,#61
MUL AB
INC A
MOV RAND_D,A
DJNZ R7,WRBUF2
MOV DPTR,#CMDTTL ;帧结束符
LCALL TXROMS
MOV A,WRADDR_L
ADD A,#100
MOV WRADDR_L,A
CLR A
ADDC A,WRADDR_H
MOV WRADDR_H,A
DJNZ R6,WRBUF1
MOV DPTR,#DSP1 ;显示第2个缓冲区数据
CJNE R5,#2,WRBUF3
MOV DPTR,#DSP0 ;显示第1个缓冲区数据
WRBUF3: LCALL TXROMS
DJNZ R5,WRBUF0
LJMP START
DSP0:DB AAH,0C1H,04H,00H,00H,00H,00H,02H,00H,0,199,01H,04H,0FEH,0FEH,00H,200,00H,1FH,0CCH,33H,0C3H,3CH,0FFH
DSP1:DB AAH,0C1H,04H,00H,200,00H,00H,02H,00H,0,199,01H,04H,0FEH,0FEH,00H,00H,00H,1FH,0CCH,33H,0C3H,3CH,0FFH
-----------------------------------------
若有技术问题请Emai:dukehong@126.com 咨询!