在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例嵌入式开发 → 测温液晶显示并与昆仑通态触摸屏互动

测温液晶显示并与昆仑通态触摸屏互动

嵌入式开发

下载此实例
  • 开发语言:C/C++
  • 实例大小:0.09M
  • 下载次数:16
  • 浏览次数:128
  • 发布时间:2021-07-26
  • 实例类别:嵌入式开发
  • 发 布 人:tianlongrui
  • 文件格式:.zip
  • 所需积分:10

实例介绍

本例程可与昆仑通态触摸屏互通数据Modbus_KLTT


void main ()

{   int temp;
    float temperature;
    unsigned char displaytemp[16];//¶¨ÒåÏÔʾÇøÓòÁÙʱ´æ´¢Êý×é
    LCD_Init(); // ³õʼ»¯Òº¾§
    LCD_Clear();
    EA = 1; // ¿ª×ÜÖжÏ
    ConfigTimer0(1); // Åä Öà T0 ¶¨ ʱ
    ConfigUART(9600); //ÅäÖò¨ÌØÂÊΪ9600
    while(1)
    {   temp=ReadTemperature();
        temperature=(float)temp*0.0625;
        sprintf(displaytemp,"Temp  % 7.3f",temperature);//´òӡζÈÖµ
        LCD_Write_String(0,1,displaytemp);//ÏÔʾµÚ¶þÐÐ
        UartDriver();
    }
}
void InterruptUART() interrupt 4 //UART ÖжϷþÎñº¯Êý
{
    if (RI) // ½ÓÊÕµ½×Ö½Ú
    { 
        RI = 0; // ÊÖ¶¯ÇåÁã½ÓÊÕÖжϱê־λ
        if (cntRxd < sizeof(bufRxd)) // ½ÓÊÕ»º³åÇøÉÐδÓÃÍêʱ£¬
        {
            bufRxd[cntRxd ] = SBUF; // ±£´æ½ÓÊÕ×Ö½Ú£¬²¢µÝÔö¼ÆÊýÆ÷
        }
    }
    if (TI)           // ×Ö½Ú·¢ËÍÍê±Ï
    {  
        TI = 0;           // ÊÖ¶¯ÇåÁã·¢ËÍÖжϱê־λ
        flagOnceTxd = 1;  //ÉèÖõ¥´Î·¢ËÍÍê³É±êÖ¾
    }
}

void UartDriver() // ´®¿ÚÇý¶¯º¯Êý£¬¼ì²â½ÓÊÕµ½µÄÃüÁî²¢Ö´ÐÐÏàÓ¦¶¯×÷
{
    unsigned char i;
    unsigned char cnt;
    unsigned char len;
    unsigned char buf[30];
    unsigned int crc;
    unsigned char crch, crcl;

    if (cmdArrived) // ÓÐÃüÁîµ½´ïʱ£¬¶ÁÈ¡´¦Àí¸ÃÃüÁî
    {  
        cmdArrived = 0;
        len = UartRead(buf, sizeof(buf)); //½«½ÓÊÕµ½µÄÃüÁî¶ÁÈ¡µ½»º³åÇøÖÐ

        if (buf[0] == 0x01)               //ºË¶ÔµØÖ·ÒÔ¾ö¶¨ÊÇ·ñÏìÓ¦ÃüÁ±¾Àý±¾»úµØַΪ0x01
        {
            
            crc = GetCRC16(buf, len-2); //¼ÆËã CRCУÑéÖµ
            crch = crc >> 8;
            crcl = crc & 0xFF;
            if ((buf[len-2] == crch) && (buf[len-1] == crcl)) // ÅÐ¶Ï CRCУÑéÊÇ·ñÕýÈ·
            {
                switch (buf[1]) // °´¹¦ÄÜÂëÖ´ÐвÙ×÷
                {
                case 0x03: // ¶ÁÈ¡Ò»¸ö»òÁ¬ÐøµÄ¼Ä´æÆ÷
                    if ((buf[2] == 0x00) && (buf[3] <= 0x05)) // ¼Ä´æÆ÷µØÖ·Ö§³Ö 0x0000 ¡«0x0005
                    {

                        if (buf[3] <= 0x04)
                        {
                            i = buf[3]; // ÌáÈ¡¼Ä´æÆ÷µØÖ·
                            cnt = buf[5]; //ÌáÈ¡´ý¶ÁÈ¡µÄ¼Ä´æÆ÷ÊýÁ¿
                            buf[2] = cnt*2; // ¶ÁÈ¡Êý¾ÝµÄ×Ö½ÚÊý£¬Îª¼Ä´æÆ÷Êý*2 £¬Òò Modbus¶¨ÒåµÄ¼Ä´æÆ÷Ϊ16 λ
                            len = 3;
                            while (cnt--)
                            {
                                buf[len ] = 0x00; // ¼Ä´æÆ÷¸ß×Ö½Ú²¹ 0
                                buf[len ] = regGroup[i ]; // µÍ×Ö½Ú
                            }
                        }
                        else 
                        {
                            buf[2] = 2; // ¶ÁÈ¡Êý¾ÝµÄ×Ö½ÚÊý
                            buf[3] = 0x00;
                            buf[4] = 0x00;
                            len = 5;
                        }

                        break;
                    }
                    else // ¼Ä´æÆ÷µØÖ·²»±»Ö§³Öʱ£¬·µ»Ø´íÎóÂë
                    {
                        buf[1] = 0x83; // ¹¦ÄÜÂë×î¸ßλÖÃ1
                        buf[2] = 0x02; // ÉèÖÃÒì³£ÂëΪ02- ÎÞЧµØÖ·
                        len = 3;
                        break;
                    }
                case 0x06: // дÈëµ¥¸ö¼Ä´æÆ÷
                    if ((buf[2] == 0x00) && (buf[3] <= 0x05))
                    {

                        if (buf[3] <= 0x04)
                        {
                            i = buf[3]; // ÌáÈ¡¼Ä´æÆ÷µØÖ·
                            regGroup[i] = buf[5]; // ±£´æ¼Ä´æÆ÷Êý¾Ý
                        }
                        else 
                        {
                        }
                        len -= 2; // ³¤¶È -2  ÒÔÖØмÆËãCRC²¢·µ»ØÔ­Ö¡break;
                    }
                    else // ¼Ä´æÆ÷µØÖ·²»±»Ö§³Öʱ£¬·µ»Ø´íÎóÂë
                    {
                        buf[1] = 0x86; // ¹¦ÄÜÂë×î¸ßλÖà 1
                        buf[2] = 0x02; // ÉèÖÃÒì³£ÂëΪ 02- ÎÞЧµØÖ·
                        len = 3;
                        break;
                    }
                default: // ÆäËü²»Ö§³ÖµÄ¹¦ÄÜÂë
                    buf[1] |= 0x80; // ¹¦ÄÜÂë×î¸ßλÖÃ1
                    buf[2] = 0x01; // ÉèÖÃÒì³£ÂëΪ 01- ÎÞЧ¹¦ÄÜ
                    len = 3;
                    break;
                }
                crc = GetCRC16(buf, len); //¼ÆËã CRCУÑéÖµ
                buf[len ] = crc >> 8;   //CRC ¸ß×Ö½Ú
                buf[len ] = crc & 0xFF;  //CRC µÍ× Ö½Ú
                UartWrite(buf, len);   // ·¢ËÍÏìÓ¦Ö¡
            }

        }
    }

}


实例下载地址

测温液晶显示并与昆仑通态触摸屏互动

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警