ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

数目管显示程序下的串口发送注意事项

2020-08-16 16:34:36  阅读:254  来源: 互联网

标签:串口 SBUF else 发送 数码管 注意事项 trData trStep


      数码管显示原理,简单的讲就是类似PWM调光调电流,快速的扫描多个段数码管,利用人眼会残留影像的原理,显示完整静态的画面。通俗讲是依次显示A,B,C,B管,而不是同一时间显示,保证显示各管的时间基本相同,间隔相同,帧画面频率在75hz以上,人眼基本看不到抖动。

      程序流程总时间不超过,1/75 S,才能保证刷新频率高于对帧画面频率的要求,实时上对数码管的操作是一瞬间的事情,在数码管保持期间可以运行主程序,这就需要保证,不会有不可打断的长时间进程出现在程序运行中,比如uart发送或者接收,按键检测等。

     尽可能的提高主程序运行效率,减少不必要的延迟。

if(swDisplay == 0)
                 {
                     Sys_Scan();                //exKeyValueFlag存放在该变量中    10ms    1次
                    
                     if(enTran)
                     {
                         TrUart(trIntruct,trCdata);
                         enTran = 0;
                     }
                 }
                 else
                 {
                     if(runState)
                     {
                         //显示数码管
                         if(timCountMin > 5)        //总体20ms刷新完成
                         {
                             timCountMin = 0;
                             displayFlash();
                         }   
                     }
                 }

其他程序;
  把长进程与段扫描拆时序上分开。串口发送做成中断的方式。

//串口里执行里中断            //定时扫描发送使能位触发串口发送

if(TI)
     {
         TI = 0;
         uartTx0Flg = 1;
         trStep++;
         if(trStep == 1)
         {
             trData = 0xaa;
             SBUF = trData;
         }
         else if(trStep == 2)
         {
             SBUF = trIntruct;
         }
         else if(trStep == 3)
         {
             SBUF = trCdata;
         }
         else if(trStep == 4)
         {
             trData = 0xfa;
             SBUF = trData;
         }
         else if(trStep == 5)
         {
             trStep = 0;
         }

//需要触发中断直接调用即可

void TrUart(unsigned char instruct,unsigned char cdata)
{
     trIntruct = instruct,
     trCdata = cdata;
    
     trData = 0x55;
     SBUF = trData;

}

优点是,实时性好,不影响主进程运行。

SaiOneC -mcu交流群群二维码

项目合作,吹牛扯淡,交朋友,请联系18665321219

标签:串口,SBUF,else,发送,数码管,注意事项,trData,trStep
来源: https://www.cnblogs.com/logicexpression/p/13512970.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有