2946|0

7228

帖子

192

TA的资源

五彩晶圆(高级)

楼主
 

【Hanker TI M4】第5篇 LCD循环显示与按键显示 [复制链接]

本帖最后由 常见泽1 于 2015-5-1 11:10 编辑

一前言
前面几篇分别讲了按键中断、按键查询、LCD显示以及定时器,这一篇把这些差不多综合一下。
实现如下大致功能:
(1)开发板下载程序后上电,
(2)如果不进行按键操作,则LCD进行循环显示,循环屏数为6屏,分别显示为:“Current :”屏,“software:”屏,电压采样值屏,“The temperature:”屏, “Baud Rate:”屏,“ALLDisplay Screen:”屏。
(屏里面显示的参数的值尚未全部添加,后期会慢慢加进来,敬请期待)
(3)如果在循环显示过程中,按键按下,则进入键显状态,按键按下一翻一屏,不按则保持上次按键按下的屏显,如果十几秒内检测不到按键按下了,则回到上次循环显示的屏数进行显示。
键盘显示屏分别为:"CorrespondenceAddress : "屏,"Meter No: FFFFFFFFFFFF"屏,电压采样值屏,"The temperature:6 "屏,  "BaudRate:115200"屏,"ALL Display Screen:6 "屏。

二部分源码
  1. 定时器中断代码:
  2. void Timer1IntHandler(void)
  3. {
  4.     ROM_TimerIntClear(TIMER1_BASE, TIMER_TIMA_TIMEOUT);    // 清除时钟中断
  5. //   HWREGBITW(&g_ulFlags, 1) ^= 1;  // 定时器切换标志
  6.     ROM_IntMasterDisable();
  7. //  GrStringDraw(&sContext, (HWREGBITW(&g_ulFlags, 1) ? "1" : "0"), -1, 98,
  8. //                46, 1); // 显示屏上的更新中断状态
  9.         if(GPIOPinRead(GPIO_PORTG_BASE, GPIO_PIN_0)!=0)
  10.         {
  11.         keyflag++;
  12.         if(keyflag==20)
  13.         {
  14.                 autoflag++;
  15.                 keyflag=0;
  16.                 DisplayMode=DISPLAYAUTO;
  17.         }
  18.         }        
  19.     ROM_IntMasterEnable();
  20. }
复制代码
  1. switch(autoflag%6)
  2.                 {
  3.                         case 0:
  4.                                         LCD_Clear();
  5.                                         //SysCtlDelay(SysCtlClockGet()/100);
  6.                                          GrContextFontSet(&sContext, &g_sFontCm20);
  7.                                         GrStringDraw(&sContext, "Auto Display Num: 1", -1, 0, 0, 0);
  8.                                          GrStringDraw(&sContext, "Current : ", -1, 0, 60, 0);
  9.                                         GrStringDraw(&sContext, Add, -1, 200, 60, 1);
  10.                                         SysCtlDelay(SysCtlClockGet()/500);
  11.                                         break;
  12.                         case 1:
  13.                                         LCD_Clear();
  14.                                         //SysCtlDelay(SysCtlClockGet()/500);
  15.                                          GrContextFontSet(&sContext, &g_sFontCm20);
  16.                                         GrStringDraw(&sContext, "Auto Display Num: 2", -1, 0, 0, 0);
  17.                                          GrStringDraw(&sContext, "software: FFFFFFFFFFFF", -1, 30, 60, 0);
  18.                                           SysCtlDelay(SysCtlClockGet()/200);
  19.                                         break;
  20.                         case 2:
  21.                                         LCD_Clear();
  22.                                 //        SysCtlDelay(SysCtlClockGet()/1);
  23.                                          GrContextFontSet(&sContext, &g_sFontCm20);
  24.                                         GrStringDraw(&sContext, "Auto Display Num: 3", -1, 0, 0, 0);
  25.                                  //        GrStringDraw(&sContext, "Voltage : ", -1, 30, 60, 0);
  26.                                         GrStringDraw(&sContext, cText, -1, 30, 60, 1);
  27.                                           SysCtlDelay(SysCtlClockGet()/50);
  28.                                         break;
  29.                         case 3:
  30.                                         LCD_Clear();
  31.                                 //        SysCtlDelay(SysCtlClockGet()/10);
  32.                                          GrContextFontSet(&sContext, &g_sFontCm20);
  33.                                         GrStringDraw(&sContext, "Auto Display Num: 4", -1, 0, 0, 0);
  34.                                          GrStringDraw(&sContext, "The temperature:6 ", -1, 30, 60, 0);
  35.                                                   SysCtlDelay(SysCtlClockGet()/10);
  36.                                         break;
  37.                         case 4:
  38.                                         LCD_Clear();
  39.                                 //        SysCtlDelay(SysCtlClockGet()/100);
  40.                                          GrContextFontSet(&sContext, &g_sFontCm20);
  41.                                         GrStringDraw(&sContext, "Auto Display Num: 5", -1, 0, 0, 0);
  42.                                          GrStringDraw(&sContext, "Baud Rate:115200", -1, 30, 60, 0);
  43.                                          SysCtlDelay(SysCtlClockGet()/150);
  44.                                         break;
  45.                         case 5:
  46.                                         LCD_Clear();
  47.                                         SysCtlDelay(SysCtlClockGet()/100);
  48.                                          GrContextFontSet(&sContext, &g_sFontCm20);
  49.                                         GrStringDraw(&sContext, "Auto Display Num: 6", -1, 0, 0, 0);
  50.                                          GrStringDraw(&sContext, "ALL Display Screen:6 ", -1, 30, 60, 0);
  51.                                           SysCtlDelay(SysCtlClockGet()/150);
  52.                                         break;
  53.                         default:
  54.                                         break;                        
  55.                 }
复制代码

三.  显示的图片及视频
按键显示第三屏







视频




 
点赞 关注(1)

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表