发表于:2009/2/18 13:44:54
#0楼
我们的产品是智能液晶终端,是采用全新工规A级液晶屏,然后加上我们自己的液晶驱动,包括汉字库,界面图片数据储存的128兆FLASH,可以集成触摸屏(有漂移补偿技术)、键盘和时钟等。您只要通过简单的RS232串口接上你的设备,上位机可以用51、AVR、PIC、DSP、MSP430系列等8位、16位单片机,也适合ARM,西门子、三菱等PLC。发送简单的指令,便可以在您的系统中方便的实现数据、多种字体、多国语言的文本显示;曲线,菜单,图型的快速显示和转换。
无压缩的图片存储方式,可以全屏、区域和图标方式显示。还集成拼音输入法、农历查询等实用算法。我们的液晶终端有2.8寸、3.5寸、4.3寸、5.6寸、5.7寸、7寸、8寸、8.4寸、10.4寸、12.1寸、19寸等单色和真彩色,含各种分辨率,如常见的128*64,320*240,640*480,800*480,800*600,1024*768。都是统一指令集,能够大批量稳定的供货,有完善的支持。
推荐产品:DMT32240T035-01WN,3.5寸真彩色TFT液晶终端(128*64,192*64等小单色液晶的终结者),320*240分辨率,232/TTL接口,有字库,有点线段矩形圆等函数指令,能储存256张整幅图片。零售价格为330.00元/片,1k以上批量在245.00元左右。其他如5.6寸7寸8寸液晶终端都是工控常用产品,需要详细报价和液晶终端开发指南技术资料的请联系:胡剑峰13810401631,010-62551507,QQ:20642719,电子邮件:dingji534@163.com
以下是详细开发指南:
1.串口通信处理
//串口的处理,串口接收采用中断方式,串口发送采用查询方式
sbit TIFLG=0; //串口发送标记
sbit HMIFLG=0; //触控界面数据接收标记
uchar data HMI_Page,HMI_Key; //触控界面传回来的当前页面位置和按键编码
uchar xdata cmd[8];
void Serial_Int(void) interrupt 4
{ if(TI==1)
{ TI=0;
TIFLG=1;} //TIFLG在作为其它程序的查询标记
if(RI==1)
{ cmd[0]=cmd[1]; //触控界面下,接收触摸按键数据 AA 78 K0 K1 CC 33 C3 3C
cmd[1]=cmd[2]; //采用移动窗口方式接收
cmd[2]=cmd[3];
cmd[3]=cmd[4];
cmd[4]=cmd[5];
cmd[5]=cmd[6];
cmd[6]=cmd[7];
cmd[7]=SBUF;
RI=0;} if((cmd[0]==0xaa)&&(cmd[1]==0x78)&&(cmd[4]==0xcc)&&(cmd[5]==0x33)&&(cmd[6]==0xc3)&&(cmd[7]==0x3c))
{ HMIFLG=1; //置位触控界面标记,主程序中查询处理
HMI_Page=cmd[2];
HMI_Key=cmd[3];}
}
//查询方式发送数据到串口
//发送一个字节
void Txbyte(uchar i)
{TIFLG=0;
SBUF=i;
While(TIFLG==0);
TIFLG=0;
}
//发送一个以0xCC 0x33 0xC3 0x3C为结束标记的数据串到串口
void Txstring(uchar *str)
{uchar i0,i1,i2,i3;
i0=0;
i1=0;
i2=0;
i3=0;
TIFLG=0;
while(!((i0==0xcc)&&(i1==0x33)&&(i2==0xc3)&&(i3==0x3c)))
{i0=i1;
I1=i2;
I2=i3;
i3=*str;
str++;
SBUF=i3;
While(TIFLG==0);
TIFLG=0;}
}
2.I/O后台程序的处理
使用一个定时器产生一个定时器中断,来刷新I/O状态、采集设备信息,或对设备的控制;
比如,我们可以使用一个100mS的定时器,定时来进行A/D转换,采集温度信息;
对于多路信息的采集,如果每一路的处理时间比较长,就应该把任务分解成“节拍”来分成几次中断来执行,以保证其它中断程序能够被可靠执行,并提高CPU的执行效率。
比如,我们要依次分别对2路温度信号进行A/D采集,我们可以这样设计:
1mS为一个节拍(定时器中断间隔为1mS);
1次采样过程分成个节拍:
节拍1:把A/D切换到1通道,启动A/D
节拍2:读取1通道值
节拍3:把A/D切换到2通道,启动A/D
节拍4:读取2通道值
这样就避免了等待A/D转换而让CPU“空等”,提高了CPU的执行效率。
3.主程序的处理
主程序的主要作用就是处理“人机界面”,由于触控界面的切换等已经由迪文HMI完成,用户主程序的主要任务,就是根据触控界面返回的键值switch()处理就可以了。
我们建议用户把键值分成两个字节,
HMI_Page 告诉用户程序,当前的显示界面;
HMI_Key 告诉用户程序,当前界面下,点击了哪个按键;
当然,不需要用户程序干预的界面切换,可以让迪文HMI在界面切换时,不上传键码即可。
void main(void)
{ initsys(); //系统初始化,如不使用握手来判断迪文HMI是否初始化完成,则必须延时0.5秒以后才发送指令给HMI
while(1) //死循环,处理界面
{ if(HMIFLG==1) //触控界面有操作,按照页面来处理按键
{switch(HMI_Page)
{ case 0x00: //页面0的按键处理
break;
case 0x01: //页面1的按键处理
switch(HMI_KEY)
{ case 0x41:
break;
case 0x42:
break;}
break;
}
HMIFLG=0;
}
if(RTCOK==1) //数据刷新时间(一般为0.1-1秒)到了,按照界面状态进行数据刷新处理
{switch(HMI_Page)
{ case 0x00: //页面0的刷新处理,比如显示温度值
break;
case 0x01: //页面1的刷新处理,比如做键盘输入
break;
}
RTCOK=0;
}
}
}
采用这种结构来设计程序,主要特点有:
1.主程序可以由多人同时,并行设计和调试,并且互相之间基本独立,提高了软件开发效率;
2.关键算法和控制放到后台,由定时器中断驱动,不受主程序影响,保证了可靠性;
3.复杂的触控界面由迪文HMI来处理完成,无需用户软件过多干涉,使界面和控制真正分离,简化软件设计;
4.即使用户软件出问题重启了,由于界面是“分布式”处理,用户在前台并不会感觉到后台的变化,界面操作“依旧正常”;
5.测试、调试非常简单。
无压缩的图片存储方式,可以全屏、区域和图标方式显示。还集成拼音输入法、农历查询等实用算法。我们的液晶终端有2.8寸、3.5寸、4.3寸、5.6寸、5.7寸、7寸、8寸、8.4寸、10.4寸、12.1寸、19寸等单色和真彩色,含各种分辨率,如常见的128*64,320*240,640*480,800*480,800*600,1024*768。都是统一指令集,能够大批量稳定的供货,有完善的支持。
推荐产品:DMT32240T035-01WN,3.5寸真彩色TFT液晶终端(128*64,192*64等小单色液晶的终结者),320*240分辨率,232/TTL接口,有字库,有点线段矩形圆等函数指令,能储存256张整幅图片。零售价格为330.00元/片,1k以上批量在245.00元左右。其他如5.6寸7寸8寸液晶终端都是工控常用产品,需要详细报价和液晶终端开发指南技术资料的请联系:胡剑峰13810401631,010-62551507,QQ:20642719,电子邮件:dingji534@163.com
以下是详细开发指南:
1.串口通信处理
//串口的处理,串口接收采用中断方式,串口发送采用查询方式
sbit TIFLG=0; //串口发送标记
sbit HMIFLG=0; //触控界面数据接收标记
uchar data HMI_Page,HMI_Key; //触控界面传回来的当前页面位置和按键编码
uchar xdata cmd[8];
void Serial_Int(void) interrupt 4
{ if(TI==1)
{ TI=0;
TIFLG=1;} //TIFLG在作为其它程序的查询标记
if(RI==1)
{ cmd[0]=cmd[1]; //触控界面下,接收触摸按键数据 AA 78 K0 K1 CC 33 C3 3C
cmd[1]=cmd[2]; //采用移动窗口方式接收
cmd[2]=cmd[3];
cmd[3]=cmd[4];
cmd[4]=cmd[5];
cmd[5]=cmd[6];
cmd[6]=cmd[7];
cmd[7]=SBUF;
RI=0;} if((cmd[0]==0xaa)&&(cmd[1]==0x78)&&(cmd[4]==0xcc)&&(cmd[5]==0x33)&&(cmd[6]==0xc3)&&(cmd[7]==0x3c))
{ HMIFLG=1; //置位触控界面标记,主程序中查询处理
HMI_Page=cmd[2];
HMI_Key=cmd[3];}
}
//查询方式发送数据到串口
//发送一个字节
void Txbyte(uchar i)
{TIFLG=0;
SBUF=i;
While(TIFLG==0);
TIFLG=0;
}
//发送一个以0xCC 0x33 0xC3 0x3C为结束标记的数据串到串口
void Txstring(uchar *str)
{uchar i0,i1,i2,i3;
i0=0;
i1=0;
i2=0;
i3=0;
TIFLG=0;
while(!((i0==0xcc)&&(i1==0x33)&&(i2==0xc3)&&(i3==0x3c)))
{i0=i1;
I1=i2;
I2=i3;
i3=*str;
str++;
SBUF=i3;
While(TIFLG==0);
TIFLG=0;}
}
2.I/O后台程序的处理
使用一个定时器产生一个定时器中断,来刷新I/O状态、采集设备信息,或对设备的控制;
比如,我们可以使用一个100mS的定时器,定时来进行A/D转换,采集温度信息;
对于多路信息的采集,如果每一路的处理时间比较长,就应该把任务分解成“节拍”来分成几次中断来执行,以保证其它中断程序能够被可靠执行,并提高CPU的执行效率。
比如,我们要依次分别对2路温度信号进行A/D采集,我们可以这样设计:
1mS为一个节拍(定时器中断间隔为1mS);
1次采样过程分成个节拍:
节拍1:把A/D切换到1通道,启动A/D
节拍2:读取1通道值
节拍3:把A/D切换到2通道,启动A/D
节拍4:读取2通道值
这样就避免了等待A/D转换而让CPU“空等”,提高了CPU的执行效率。
3.主程序的处理
主程序的主要作用就是处理“人机界面”,由于触控界面的切换等已经由迪文HMI完成,用户主程序的主要任务,就是根据触控界面返回的键值switch()处理就可以了。
我们建议用户把键值分成两个字节,
HMI_Page 告诉用户程序,当前的显示界面;
HMI_Key 告诉用户程序,当前界面下,点击了哪个按键;
当然,不需要用户程序干预的界面切换,可以让迪文HMI在界面切换时,不上传键码即可。
void main(void)
{ initsys(); //系统初始化,如不使用握手来判断迪文HMI是否初始化完成,则必须延时0.5秒以后才发送指令给HMI
while(1) //死循环,处理界面
{ if(HMIFLG==1) //触控界面有操作,按照页面来处理按键
{switch(HMI_Page)
{ case 0x00: //页面0的按键处理
break;
case 0x01: //页面1的按键处理
switch(HMI_KEY)
{ case 0x41:
break;
case 0x42:
break;}
break;
}
HMIFLG=0;
}
if(RTCOK==1) //数据刷新时间(一般为0.1-1秒)到了,按照界面状态进行数据刷新处理
{switch(HMI_Page)
{ case 0x00: //页面0的刷新处理,比如显示温度值
break;
case 0x01: //页面1的刷新处理,比如做键盘输入
break;
}
RTCOK=0;
}
}
}
采用这种结构来设计程序,主要特点有:
1.主程序可以由多人同时,并行设计和调试,并且互相之间基本独立,提高了软件开发效率;
2.关键算法和控制放到后台,由定时器中断驱动,不受主程序影响,保证了可靠性;
3.复杂的触控界面由迪文HMI来处理完成,无需用户软件过多干涉,使界面和控制真正分离,简化软件设计;
4.即使用户软件出问题重启了,由于界面是“分布式”处理,用户在前台并不会感觉到后台的变化,界面操作“依旧正常”;
5.测试、调试非常简单。
专业即价值,诚信赢得未来