中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

人机界面

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 人机界面 → 浏览主题: C51开发人机界面指南
发表新帖 回复该主题
回帖:5个,阅读:1326 [上一页] [1] [下一页]
* 帖子主题:

C51开发人机界面指南

分享到
1081
dingji534
文章数:31
年度积分:50
历史总积分:1081
注册时间:2007/8/14
发站内信
发表于: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.测试、调试非常简单。

附件
专业即价值,诚信赢得未来
匿名用户
文章数:N/A
年度积分:0
历史总积分:0
注册时间:2008/3/28
发站内信
发表于:2009/2/25 10:39:49
#1楼
该用户被锁定,回复内容不予显示!
匿名用户
文章数:N/A
年度积分:0
历史总积分:0
注册时间:2008/3/28
发站内信
发表于:2009/2/25 10:40:19
#2楼
该用户被锁定,回复内容不予显示!
665
plc51303030
文章数:-1
年度积分:50
历史总积分:665
注册时间:2009/2/19
发站内信
发表于:2009/2/26 15:39:55
#3楼
此楼内容不符合板块规定,不予显示! 查看原帖内容>>
1081
dingji534
文章数:31
年度积分:50
历史总积分:1081
注册时间:2007/8/14
发站内信
发表于:2009/3/10 9:03:49
#4楼
有不少人提到出串口没有,或者被占用了,这是,可以用IO口模拟串口的,需要相关资料的给我来信息。
专业即价值,诚信赢得未来
1081
dingji534
文章数:31
年度积分:50
历史总积分:1081
注册时间:2007/8/14
发站内信
发表于:2010/1/26 17:06:08
#5楼
2010年价格有很大调整,有相关意向的来电话信息
专业即价值,诚信赢得未来
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004