微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第78节:多个窗口里移动光标设置参数的液晶屏菜单程序

第78节:多个窗口里移动光标设置参数的液晶屏菜单程序

时间:11-22 来源:互联网 点击:

  1. 0xFC,0x40,0x04,0x00,0x00,
  2. };
  3. code unsigned char Hz1616_chuang[]=
  4. {
  5. /*--文字:窗--*/
  6. /*--宋体12;此字体下对应的点阵为:宽x高=16x16 --*/
  7. 0x01,0x00,0x00,0x80,0x7F,0xFE,0x40,0x22,0x09,0x18,0x12,0x06,0x7F,0xF8,0x11,0x08,
  8. 0x13,0xE8,0x14,0x48,0x1A,0x88,0x11,0x08,0x12,0x88,0x14,0x08,0x1F,0xF8,0x10,0x08,
  9. };
  10. code unsigned char Hz1616_kou[]=
  11. {
  12. /*--文字:口--*/
  13. /*--宋体12;此字体下对应的点阵为:宽x高=16x16 --*/
  14. 0x00,0x00,0x00,0x00,0x3F,0xF8,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,
  15. 0x20,0x08,0x20,0x08,0x20,0x08,0x3F,0xF8,0x20,0x08,0x20,0x08,0x00,0x00,0x00,0x00,
  16. };
  17. code unsigned char Hz1616_hang[]=
  18. {
  19. /*--文字:行--*/
  20. /*--宋体12;此字体下对应的点阵为:宽x高=16x16 --*/
  21. 0x08,0x00,0x1C,0x00,0x31,0xFC,0x40,0x00,0x88,0x00,0x0C,0x00,0x1B,0xFE,0x30,0x20,
  22. 0x50,0x20,0x90,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0xA0,0x10,0x40,
  23. };
  24. unsigned char ucCanvasBuffer[]= //画布显示数组。注意,这里没有code关键字,是全局变量。初始化全部填充0x00
  25. {
  26. 0x00,0x00,0x00,0x00,//上半屏
  27. 0x00,0x00,0x00,0x00,
  28. 0x00,0x00,0x00,0x00,
  29. 0x00,0x00,0x00,0x00,
  30. 0x00,0x00,0x00,0x00,
  31. 0x00,0x00,0x00,0x00,
  32. 0x00,0x00,0x00,0x00,
  33. 0x00,0x00,0x00,0x00,
  34. //------------上半屏和下半屏的分割线-----------
  35. 0x00,0x00,0x00,0x00,//下半屏
  36. 0x00,0x00,0x00,0x00,
  37. 0x00,0x00,0x00,0x00,
  38. 0x00,0x00,0x00,0x00,
  39. 0x00,0x00,0x00,0x00,
  40. 0x00,0x00,0x00,0x00,
  41. 0x00,0x00,0x00,0x00,
  42. 0x00,0x00,0x00,0x00,
  43. };
  44. unsigned char ucKeySec=0; //被触发的按键编号
  45. unsigned intuiVoiceCnt=0;//蜂鸣器鸣叫的持续时间计数器
  46. unsigned char ucWd=1; //窗口变量
  47. unsigned char ucPart=0; //局部变量 0代表没有选中任何一行,其它数值1到4代表选中某一行
  48. unsigned char ucWd1Update=1; //窗口1的整屏更新显示变量 1代表更新显示,响应函数内部会清零
  49. unsigned char ucWd1Part1Update=0; //窗口1的第1行局部更新显示变量1代表更新显示,响应函数内部会清零
  50. unsigned char ucWd1Part2Update=0; //窗口1的第2行局部更新显示变量1代表更新显示,响应函数内部会清零
  51. unsigned char ucWd1Part3Update=0; //窗口1的第3行局部更新显示变量1代表更新显示,响应函数内部会清零
  52. unsigned char ucWd1Part4Update=0; //窗口1的第4行局部更新显示变量1代表更新显示,响应函数内部会清零
  53. unsigned char ucWd2Update=0; //窗口2的整屏更新显示变量 1代表更新显示,响应函数内部会清零
  54. unsigned char ucWd2Part1Update=0; //窗口2的第1行局部更新显示变量1代表更新显示,响应函数内部会清零
  55. unsigned char ucWd2Part2Update=0; //窗口2的第2行局部更新显示变量1代表更新显示,响应函数内部会清零
  56. unsigned char ucWd2Part3Update=0; //窗口2的第3行局部更新显示变量1代表更新显示,响应函数内部会清零
  57. unsigned char ucWd2Part4Update=0; //窗口2的第4行局部更新显示变量1代表更新显示,响应函数内部会清零
  58. unsigned char ucData_1_1=8;//第1个窗口第1行的被设置数据
  59. unsigned char ucData_1_2=9;//第1个窗口第2行的被设置数据
  60. unsigned char ucData_1_3=10;//第1个窗口第3行的被设置数据
  61. unsigned char ucData_1_4=11;//第1个窗口第4行的被设置数据
  62. unsigned char ucData_2_1=12;//第2个窗口第1行的被设置数据
  63. unsigned char ucData_2_2=13;//第2个窗口第2行的被设置数据
  64. unsigned char ucData_2_3=14;//第2个窗口第3行的被设置数据
  65. unsigned char ucData_2_4=15;//第2个窗口第4行的被设置数据
  66. void main()
  67. {
  68. initial_myself(); //第一区,上电后马上初始化
  69. delay_long(100); //一线,延时线。延时一段时间
  70. initial_peripheral();//第二区,上电后延时一段时间再初始化
  71. while(1) //第三区
  72. {
  73. key_service(); //按键服务的应用程序
  74. lcd_display_service(); //应用层面的液晶屏显示程序
  75. }
  76. }
  77. void initial_myself()//第一区 上电后马上初始化
  78. {
  79. /* 注释二:
  80. * 矩阵键盘也可以做独立按键,前提是把某一根公共输出线输出低电平,
  81. * 模拟独立按键的触发地,本程序中,把key_gnd_dr输出低电平。
  82. * 朱兆祺51学习板的S1和S5两个按键就是本程序中用到的两个独立按键。
  83. */
  84. key_gnd_dr=0; //模拟独立按键的地GND,因此必须一直输出低电平
  85. beep_dr=1; //用PNP三极管控制蜂鸣器,输出高电平时不叫。
  86. TMOD=0x01;//设置定时器0为工作方式1
  87. TH0=0

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top