📄 vfdtask.lst
字号:
C51 COMPILER V7.20 VFDTASK 07/16/2005 13:42:40 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE VFDTASK
OBJECT MODULE PLACED IN ..\output\vfdtask.obj
COMPILER INVOKED BY: C:\Keil51\C51\BIN\C51.EXE ..\source\UI\vfdtask.c BROWSE DEBUG OBJECTEXTEND CODE PRINT(..\output\vfd
-task.lst) OBJECT(..\output\vfdtask.obj)
line level source
1 #include "reg52.h"
2 #include "intrins.h"
3 #include "..\..\inc\globedef.h"
4 #include "..\..\inc\delay.h"
5 #include "..\..\inc\keyproc.h"
6 #include "..\..\inc\vfddef.h"
7 #include "..\..\inc\Tuner.h"
8
9
10
11 /*===========================================
12 将输入的数转换成VFD显示字符输出
13 ===========================================*/
14 code WORD NUMBER_DISPLAY[10] =
15 {
16 CHAR_0,CHAR_1,CHAR_2,CHAR_3,CHAR_4,
17 CHAR_5,CHAR_6,CHAR_7,CHAR_8,CHAR_9
18 };
19
20 /*===========================================
21 将输入的字母转换成VFD显示字符输出
22 ===========================================*/
23 code WORD LETTER_DISPLAY[26] =
24 {
25 CHAR_A,CHAR_B,CHAR_C,CHAR_D,CHAR_E,
26 CHAR_F,CHAR_G,CHAR_H,CHAR_I,CHAR_J,
27 CHAR_K,CHAR_L,CHAR_M,CHAR_N,CHAR_O,
28 CHAR_P,CHAR_Q,CHAR_R,CHAR_S,CHAR_T,
29 CHAR_U,CHAR_V,CHAR_W,CHAR_X,CHAR_Y,
30 CHAR_Z
31 };
32
33 /*===============================================
34 描述: 从PT16312读取一个字节的数据
35 参数: 无
36 返回: 从VFD芯片读到的数据
37 ================================================*/
38 BYTE VFD_ReadByte(void)
39 {
40 1 BYTE i;
41 1 BYTE ReceiveData = 0;
42 1 for (i = 0;i <8;i++)
43 1 {
44 2 ReceiveData >>= 1;
45 2 CLEAR_VFD_CLK;
46 2 Delay5US();
47 2 SET_VFD_CLK;
48 2 Delay5US();
49 2 if (VFD_DATA_HIGH)
50 2 ReceiveData |= 0x80;
51 2 }
52 1 TRISTATE_DATA;
53 1 return ReceiveData;
54 1 }
C51 COMPILER V7.20 VFDTASK 07/16/2005 13:42:40 PAGE 2
55 /*===============================================
56 描述: 向PT16312发送一个字节的数据
57 参数: 向VFD芯片发送的数据字节
58 返回: 无
59 ================================================*/
60 void VFD_SendByte(BYTE VFD_SendByte)
61 {
62 1 BYTE i;
63 1 CLEAR_VFD_DATA;
64 1 Delay5US();
65 1 for (i = 0;i <8;i++)
66 1 {
67 2 CLEAR_VFD_CLK;
68 2 _nop_();
69 2 if (VFD_SendByte & 0x01) {
70 3 SET_VFD_DATA;
71 3 }
72 2 else
73 2 {
74 3 CLEAR_VFD_DATA;
75 3 }
76 2 _nop_();
77 2 SET_VFD_CLK;
78 2 VFD_SendByte >>= 1;
79 2 _nop_();
80 2 }
81 1 TRISTATE_DATA;
82 1 }
83 /*===============================================
84 描述: 向PT16312发送命令
85 参数: 向VFD芯片发送的数据字节
86 返回: 无
87 ================================================*/
88 void VFD_SendCmd(BYTE VFD_Byte)
89 {
90 1 DelayX1ms(1);
91 1 CLEAR_VFD_CS;
92 1 Delay5US();
93 1 Delay5US();
94 1 VFD_SendByte(VFD_Byte);
95 1 Delay5US();
96 1 Delay5US();
97 1 SET_VFD_CS;
98 1 DelayX1ms(2);
99 1 }
100
101 /*===============================================
102 描述: 向VFD显示芯片发送一系列数据
103 参数: length,向VFD芯片发送的数据字节的长度,
104 *str, 指向数据的指针
105 返回: 无
106 ================================================*/
107
108 /*===============================================
109 描述: 向VFD显示芯片发送一系列数据
110 参数: length,向VFD芯片发送的数据字节的长度,
111 *str, 指向数据的指针
112 返回: 无
113 ================================================*/
114
115 #ifdef FUT_ZYC25085
116 code BYTE VFD_Refresh_Address[Max_Segment_Display] =
C51 COMPILER V7.20 VFDTASK 07/16/2005 13:42:40 PAGE 3
117 {
118 GRID_6, GRID_5, GRID_4, GRID_3, GRID_2
119 };
120 #endif
121
122
123 #ifdef NEW_VFD
#if(MAX_Segment == 8)
code WORD VFD_CHAR_SEGMENTS[MAX_8Char][MAX_Segment] =
{
{ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P8, ANODE_G2P7, ANODE_G2P6, ICON_empty}, /* Track high */
{ANODE_G7P11, ANODE_G7P10, ANODE_G7P9, ANODE_G2P16,
ANODE_G2P15, ANODE_G2P14, ANODE_G2P13, ICON_empty}, /* Track low */
{ANODE_G5P12, ANODE_G5P11, ANODE_G5P10, ANODE_G5P9,
ANODE_G5P8, ANODE_G5P7, ANODE_G5P6, ICON_empty}, /* Minute high */
{ANODE_G9P3, ANODE_G9P2, ANODE_G9P1, ANODE_G5P16,
ANODE_G5P15, ANODE_G5P14, ANODE_G5P13, ICON_empty}, /* Minute low */
{ANODE_G6P12, ANODE_G6P11, ANODE_G6P10, ANODE_G6P9,
ANODE_G6P8, ANODE_G6P7, ANODE_G6P6, ICON_empty}, /* Second high */
{ANODE_G9P11, ANODE_G9P10, ANODE_G9P9, ANODE_G6P16,
ANODE_G6P15, ANODE_G6P14, ANODE_G6P13, ICON_empty}, /* Second low */
{ANODE_G8P11, ANODE_G8P10, ANODE_G8P9, ANODE_G4P16,
ANODE_G4P15, ANODE_G4P14, ANODE_G4P13, ICON_empty}, /* Minute 100 */
{ANODE_G3P12, ANODE_G3P11, ANODE_G3P10, ANODE_G3P9,
ANODE_G3P8, ANODE_G3P7, ANODE_G3P6, ICON_empty}, /* Chapter high */
{ANODE_G8P3, ANODE_G8P2, ANODE_G8P1, ANODE_G3P16,
ANODE_G3P15, ANODE_G3P14, ANODE_G3P13, ICON_empty}, /* Chapter low */
};
code BYTE NUMBER_DISPLAY[10] =
{
CHAR_0,CHAR_1,CHAR_2,CHAR_3,CHAR_4,
CHAR_5,CHAR_6,CHAR_7,CHAR_8,CHAR_9
};
/*===========================================
将输入的字母转换成VFD显示字符输出
===========================================*/
code BYTE LETTER_DISPLAY[26] =
{
CHAR_A,CHAR_B,CHAR_C,CHAR_D,CHAR_E,
CHAR_F,CHAR_G,CHAR_H,CHAR_I,CHAR_J,
CHAR_K,CHAR_L,CHAR_M,CHAR_N,CHAR_O,
CHAR_P,CHAR_Q,CHAR_R,CHAR_S,CHAR_T,
CHAR_U,CHAR_V,CHAR_W,CHAR_X,CHAR_Y,
CHAR_Z
};
#else //14 SEGMENT
code WORD VFD_CHAR_SEGMENTS[MAX_8Char][MAX_Segment] =
{
{ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
C51 COMPILER V7.20 VFDTASK 07/16/2005 13:42:40 PAGE 4
ANODE_G2P8, ANODE_G2P7, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P6, ICON_empty}, /* Track high */
{ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P8, ANODE_G2P7, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P6, ICON_empty}, /* Track low */
{ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P8, ANODE_G2P7, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P6, ICON_empty}, /* Minute high */
{ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P8, ANODE_G2P7, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P6, ICON_empty}, /* Minute low */
{ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P8, ANODE_G2P7, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P6, ICON_empty}, /* Second high */
{ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P8, ANODE_G2P7, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P6, ICON_empty}, /* Second low */
{ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P8, ANODE_G2P7, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P6, ICON_empty}, /* Minute 100 */
{ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P8, ANODE_G2P7, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P6, ICON_empty}, /* Chapter high */
{ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P8, ANODE_G2P7, ANODE_G2P10, ANODE_G2P9,
ANODE_G2P6, ICON_empty}, /* Chapter low */
};
code WORD NUMBER_DISPLAY[10] =
{
CHAR_0,CHAR_1,CHAR_2,CHAR_3,CHAR_4,
CHAR_5,CHAR_6,CHAR_7,CHAR_8,CHAR_9
};
/*===========================================
将输入的字母转换成VFD显示字符输出
===========================================*/
code WORD LETTER_DISPLAY[26] =
{
CHAR_A,CHAR_B,CHAR_C,CHAR_D,CHAR_E,
CHAR_F,CHAR_G,CHAR_H,CHAR_I,CHAR_J,
CHAR_K,CHAR_L,CHAR_M,CHAR_N,CHAR_O,
CHAR_P,CHAR_Q,CHAR_R,CHAR_S,CHAR_T,
CHAR_U,CHAR_V,CHAR_W,CHAR_X,CHAR_Y,
CHAR_Z
};
C51 COMPILER V7.20 VFDTASK 07/16/2005 13:42:40 PAGE 5
#endif
void VFD_Display(BYTE *str,BYTE str_length, WORD Number)
{
//要显示的转换数据
#if(MAX_Segment == 8)
BYTE VFD_DATA;
BYTE VFD_RAM[MAX_8Char];
#else
WORD VFD_DATA;
WORD VFD_RAM[MAX_8Char];
BYTE Gird_Locate;
#endif
BYTE grid_temp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -