原创 UFUN开发板实验笔记(2)

2019-8-24 15:46 2369 30 1 分类: MCU/ 嵌入式 文集: 开发板笔记
每一件MCU设备、工具起步的第一件是就是要发出声“Hello World”,UFUN开发板也不例外。在开发板例程中已经带了Hello World程序,这个例程的名字是“基础例程4 - USB串口与PC通讯”,烧录后在串口模式下9600波特率连接,PC向UFUN发送0x10,UFUN会不断向PC发送符号拼接的“Hello World”,直到PC发送0x11才停止。
 
这是智能化设备“苏醒”后的常规动作,向World宣告一下“我醒了”。上期我们给UFUN添加了128x64点阵的OLED屏,并且点亮宣告“I am UFUN”,这就相当于给UFUN开发板加了一张嘴,UFUN有了表达的愿望。那么,通过小小的OLED屏幕UFUN能表达哪些内容呢?开发之前我们得了解一下,最好能让UFUN告诉我们。在上期的工程目录下我们可以找到“codetab.h”文件,这是一个点阵字库文件,里面可以看到四个点阵码表:16x16点阵汉字(用到的几个汉字)、6x8点阵字符(92个ASC字符)、8x6点阵字符(92个ASC字符)、图片点阵。我们取出6x8点阵字符码表看一下:
  1. /************************************6*8的点阵************************************/
  2. const unsigned char F6x8[][6] =
  3. {
  4. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// sp
  5. 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00,// !
  6. 0x00, 0x00, 0x07, 0x00, 0x07, 0x00,// "
  7. 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14,// #
  8. 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12,// $
  9. 0x00, 0x62, 0x64, 0x08, 0x13, 0x23,// %
  10. 0x00, 0x36, 0x49, 0x55, 0x22, 0x50,// &
  11. 0x00, 0x00, 0x05, 0x03, 0x00, 0x00,// '
  12. 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00,// (
  13. 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00,// )
  14. 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14,// *
  15. 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08,// +
  16. 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00,// ,
  17. 0x00, 0x08, 0x08, 0x08, 0x08, 0x08,// -
  18. 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,// .
  19. 0x00, 0x20, 0x10, 0x08, 0x04, 0x02,// /
  20. 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
  21. 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
  22. 0x00, 0x42, 0x61, 0x51, 0x49, 0x46,// 2
  23. 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
  24. 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
  25. 0x00, 0x27, 0x45, 0x45, 0x45, 0x39,// 5
  26. 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
  27. 0x00, 0x01, 0x71, 0x09, 0x05, 0x03,// 7
  28. 0x00, 0x36, 0x49, 0x49, 0x49, 0x36,// 8
  29. 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
  30. 0x00, 0x00, 0x36, 0x36, 0x00, 0x00,// :
  31. 0x00, 0x00, 0x56, 0x36, 0x00, 0x00,// ;
  32. 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,// <
  33. 0x00, 0x14, 0x14, 0x14, 0x14, 0x14,// =
  34. 0x00, 0x00, 0x41, 0x22, 0x14, 0x08,// >
  35. 0x00, 0x02, 0x01, 0x51, 0x09, 0x06,// ?
  36. 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E,// @
  37. 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,// A
  38. 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B
  39. 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C
  40. 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
  41. 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E
  42. 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F
  43. 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G
  44. 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
  45. 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I
  46. 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J
  47. 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K
  48. 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L
  49. 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M
  50. 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
  51. 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
  52. 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P
  53. 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
  54. 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R
  55. 0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S
  56. 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T
  57. 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
  58. 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
  59. 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W
  60. 0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X
  61. 0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y
  62. 0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z
  63. 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,// [
  64. 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55,// 55
  65. 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00,// ]
  66. 0x00, 0x04, 0x02, 0x01, 0x02, 0x04,// ^
  67. 0x00, 0x40, 0x40, 0x40, 0x40, 0x40,// _
  68. 0x00, 0x00, 0x01, 0x02, 0x04, 0x00,// '
  69. 0x00, 0x20, 0x54, 0x54, 0x54, 0x78,// a
  70. 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b
  71. 0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c
  72. 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d
  73. 0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e
  74. 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f
  75. 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g
  76. 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h
  77. 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i
  78. 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j
  79. 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k
  80. 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l
  81. 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m
  82. 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n
  83. 0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o
  84. 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p
  85. 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q
  86. 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r
  87. 0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s
  88. 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t
  89. 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
  90. 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
  91. 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
  92. 0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x
  93. 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y
  94. 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z
  95. 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines
  96. };


从码表中我们可以大致看到点阵屏能显示的一些ASC字符内容,有了这个码表,就等于让UFUN有了表达内容的媒介——语言元素。接下来,我们要做的是让UFUN自己告诉我们它现在能显示出哪些字符。编写新程序开始,把原先的工程目录完全复制,修改目录名、工程名,该改的改,该删的删。main.c文件修改成如下内容:

  1. int main(void)
  2. {
  3. unsigned char j,n,m;
  4. unsigned char strm[2];
  5. DelayInit();
  6. I2C_Configuration();
  7. OLED_Init();
  8. OLED_Fill(0x00);//清屏
  9. while(1)
  10. {
  11. OLED_ShowStr(0,0,"I can show (6x8):",1);// 标题测试6*8字符
  12. for(j=0;j<7;j++)
  13. {
  14. for(n=0;n<14;n++)
  15. {
  16. m=j*14+n+32;
  17. strm[0]=m;
  18. strm[1]=0;
  19. OLED_ShowStr(n*8+8,j+1,strm,1);
  20. }
  21. }
  22. DelayS(3);
  23. }
  24. }
重要的是要将码表中的内容按顺序排列在128x64点阵屏内,第一行显示标题,64/8还剩7行,每行显示14个字符,总共可以显示98个字符,还多出了6个位置。每行14个字符,共需14x6=84点,每字后面空2个点,14x8=112点。128-112=16点,左右各空8点正好,算上末尾字符无需空的两点,实际左右各空9个点也是合适。看着短短的几行,花费了一上午的时间,原因在于如何把数值变为字符串成为显示函数的参数颇费周折,不多说,看看最后的显示效果。

作者: lyyinhe_xi, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-218568.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论2条评论)

登录后参与讨论

开发工匠 2019-8-26 09:59

写的好,学习了,

curton 2019-8-24 20:47

学习了
相关推荐阅读
lyyinhe_xi 2024-08-25 18:19
【机智云Gokit2.0开发板】DEMO体验及开发流程
Gokit2.0针对硬件开发者的智能硬件开发板GoKit,用于帮助开发者快速实现智能硬件的原型开发。GoKit支持开发者将产品接入目前行业中各大流行的模组方案,帮助他们与高通、庆科、博通、 汉枫等对接...
lyyinhe_xi 2024-08-07 23:09
《运放电路环路稳定性设计》运放电路原理到评测
      非常有幸得到了这样一本专业电子模拟电路方面的书籍,这本书以全面而系统的方式,向读者展示了运放环路稳定性设计的核心原理和实际操作步骤。书的封面很有意思,插图和电...
lyyinhe_xi 2024-04-30 11:08
【拆解】赛事无人机电池集中充电器
      无人机赛事,电池电量充足是取得良好成绩的关键要素。今天拆解一款支持六块电池同时集中充电的无人机电池充电器。板上有六个电池充电插口,分别有指示灯和拨动开关。三位...
lyyinhe_xi 2022-12-30 18:09
【灵动微电子 L0136 温控器/遥控器应用】+温湿度检测试验
      本次试用的是灵动微电子 EVB-L0136 开发板:      板载 MM32L0136C7P MCU,Arm Cortex-M...
lyyinhe_xi 2022-07-28 18:09
【CH32V307评估板】+Rt_thread Srduio 体验
       非常幸运获得CH32V307开发板试用机会,感谢面包板论坛!恒推出的CH32V307是基于32位RISC-V设计的互联型微控制器,配备了硬件堆栈区...
lyyinhe_xi 2022-07-03 22:42
《Verilog HDL与FPGA数字系统设计》美丽邂逅
      伏羲一画开天。阴阳动静迭为升降,天地定位,日月运行,万物之生生不息。阴阳符号演绎四象八卦,人文肇始之。阴阳符号逻辑思维造就了计算机最核心的二进制思想基石。&n...
我要评论
2
30
关闭 站长推荐上一条 /2 下一条