[原创] 【Hanker TI M4】第5篇 LCD循环显示与按键显示

常见泽1   2015-4-29 00:02 楼主
一前言
前面几篇分别讲了按键中断、按键查询、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. }
三. 显示的图片及视频
按键显示第三屏
QQ图片20150428235145.jpg
QQ图片20150428235204.jpg
QQ图片20150428235207.jpg
视频 本帖最后由 常见泽1 于 2015-5-1 11:10 编辑

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复