TA的每日心情 | 郁闷 2024-10-28 10:11 |
---|
签到天数: 1703 天 连续签到: 1 天 [LV.Master]伴坛终老
|
本帖最后由 nemon 于 2012-9-7 12:48 编辑
一共4个代码文件,依赖关系如下:
main.c
+->device.h
+->Display.h(Display.c)
device就不说了。
先说Display:
Display负责显示字符转换和led延时,里面定义了
extern uint8 DisplayRasterTable[];
用来引用main.c里面定义的全局DisplayRasterTable,这个数组是用来保存显示字符的各列像素的。
const char8 font8x5[ 0x60 ][ 5 ]是字符转列像素的转换表。
看原文就明白了:- /***************************************************************
- This array contains ASCII character offset for LED display*/
- /***************************************************************
- The characters are displayed using a pixel format.
- Each character is represented by 5 horizontal pixels and 8 vertical.
- Each column is a single byte.
-
- For example A is displayed in the following format
- 0 0 1 0 0 = *
- 0 1 0 1 0 = * *
- 1 0 0 0 1 = * *
- 1 0 0 0 1 = * *
- 1 1 1 1 1 = * * * * *
- 1 0 0 0 1 = * *
- 1 0 0 0 1 = * *
- 1 0 0 0 1 = * *
- | | | | |
- | | | | 0x3F
- | | | 0x48
- | | 0x88
- | 0x48
- 0x3F
- {0x3F,0x48,0x88,0x48,0x3F}, // ASCII - 65 A
- ****************************************************************/
复制代码 算有图了有真相了吧。
uint8 LED_StringProcess(const char8 CurrentDisplayString[])负责把CurrentDisplayString转换成列像素,放在DisplayRasterTable里(每个字符后面加一列空白);
void LED_Delay(uint16 DelayCount)延时;
下面是主角main.c:
const char8 DisplayString[MAX_MESSAGE_NUMBER][STRING_MAX_LEN] 预定义的MAX_MESSAGE_NUMBER个显示字串;
const uint8 StringCycles[MAX_MESSAGE_NUMBER]每次显示第n个字串时连续显示的次数(有点显示时间的意思哈);
只有一个函数:
void main()
流程是:对每一个要显示的字串做以下操作:
等开始晃,则逐一显示每一列,每一列都显示完了后,停下来直到晃动停止。
结构很清楚,现在还有个问题:“ACCEL_TRIGGER是干什么用的?”
|
|