📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 07/05/2008 14:59:22 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 /*
3 ****************************************************
4
5
6
7 ****************************************************
8 */
9
10 #include <reg52.H>
11 #include "Typedef.H"
12 #include "UserDef.H"
13 #include "Disp.H"
14 #include "ADC0809.H"
15 #include "TLC0832.H"
16 #include "DAC0832.H"
17
18 /* 常数定义 */
19 #define T_ADDA 10 //ADDA周期:10ms
20
21 /*---------------------<<< 修改1 >>>---------------------------------*/
22 // 按照实际数值修改,可用电压探针查看相应IC的REF引脚电压
23 // 注:TLC0832使用5V的固定电压作为基准电压值
24 #define V_REF_AD0 5.0 //ADC0809的基准电压值
25 #define V_REF_AD1 5.0 //TLC0832的基准电压值
26 #define V_REF_DA 5.0 //DAC0832的基准电压值
27 /*--------------------------------------------------------------------*/
28
29
30 /* 全局变量 */
31 bit bDispRef = FALSE; //信号灯:显示更新时间到
32 bit bADDARef = FALSE; //信号灯:ADDA采样时间到
33
34
35 /***************************************
36
37
38
39 ****************************************/
40 void main(void)
41 {
42 1 INT8U AD0,AD1,DA;
43 1 float Volt_AD0,Volt_AD1,Volt_DA;
44 1
45 1 //初始化
46 1 TMOD = 0x11;
47 1 TH0 = (INT8U)(KTDLY>>8);
48 1 TL0 = (INT8U)(KTDLY);
49 1 TR0 = 1;
50 1
51 1 ET0 = 1;
52 1 EA = 1;
53 1
54 1 DispInit(); //LCD初始化
55 1 AD0809_init(); //AD0809初始化
C51 COMPILER V7.50 MAIN 07/05/2008 14:59:22 PAGE 2
56 1
57 1 /* LCD清屏 */
58 1 DispCls();
59 1
60 1 /* 显示固定的文字 */
61 1 DispXYSet(0,20);
62 1 DispHZ(2);
63 1 DispHZ(3);
64 1 /*----------------------<<< 修改2 >>>--------------------------------*/
65 1 // 液晶屏幕上显示“数据采集”的汉字,现只有显示“数据”的程序。
66 1 // 请补充显示“采集”的相关程序及补充字库中的汉字字模
67 1 // 字模的获取通过工具软件实现
68 1 // 注:汉字字模在font.h中的FontHZ14x14数组
69 1 DispHZ(4);
70 1 DispHZ(5);
71 1 /*--------------------------------------------------------------------*/
72 1
73 1 DispFontSet(1);
74 1 DispXYSet(3,0);
75 1 DispStr("AD0=");
76 1 DispXYSet(5,0);
77 1 DispStr("AD1=");
78 1 DispXYSet(7,0);
79 1 DispStr("DA =");
80 1
81 1
82 1
83 1 while(TRUE)
84 1 {
85 2 /* 显示扫描刷新,输出可变的文字 */
86 2 if (bDispRef == TRUE)
87 2 {
88 3 bDispRef = FALSE;
89 3
90 3 // 显示当前的AD、DA数值
91 3 DispFontSet(1);
92 3 DispXYSet(3,35);
93 3 DispInt(AD0,3);
94 3 DispXYSet(5,35);
95 3 DispInt(AD1,3);
96 3 DispXYSet(7,35);
97 3 DispInt(DA,3);
98 3
99 3 // 显示当前的AD、DA所对应的实际电压值
100 3 DispFontSet(0);
101 3 DispXYSet(3,64);
102 3 DispFloat(Volt_AD0,6); DispChr('V');
103 3 DispXYSet(5,64);
104 3 DispFloat(Volt_AD1,6); DispChr('V');
105 3 DispXYSet(7,64);
106 3 DispFloat(Volt_DA,6); DispChr('V');
107 3 }
108 2
109 2 /* ADDA采样,进行AD、DA转换并计算AD、DA值对应的实际电压值 */
110 2 if (bADDARef == TRUE)
111 2 {
112 3 bADDARef = FALSE;
113 3 AD0 = AD0809(0);
114 3 AD1 = TLC0832();
115 3 DA = AD0-AD1;
116 3 Dac0832(DA);
117 3 /*----------------------<<< 修改3 >>>---------------------------------*/
C51 COMPILER V7.50 MAIN 07/05/2008 14:59:22 PAGE 3
118 3 // 根据公式计算AD,DA所对应的实际电压值
119 3 Volt_AD0 = AD0 / 256.0 * V_REF_AD0;
120 3 Volt_AD1 = AD1 / 256.0 * V_REF_AD1;
121 3 //根据DAC0832的外围硬件电路,选择下列2个公示中的一个
122 3 Volt_DA = (signed char)(DA - 128) / 128.0 * V_REF_DA; //双极性输出
123 3 // Volt_DA = -1.0 * DA / 256.0 * V_REF_DA; //单极性输出
124 3 /*--------------------------------------------------------------------*/
125 3 }
126 2 }
127 1 }
128
129
130
131
132 /*************************************
133
134 定时器中断程序
135
136 **************************************/
137 void int_t0(void) interrupt 1 using 1
138 {
139 1 static int cnt = 0;
140 1
141 1 TH0 = (unsigned char)(KTDLY>>8);
142 1 TL0 = (unsigned char)(KTDLY);
143 1
144 1 cnt ++;
145 1
146 1 /* 显示扫描信号灯 */
147 1 if ((cnt % T_DISPREF) == 0)
148 1 {
149 2 bDispRef = TRUE;
150 2 }
151 1
152 1 /* ADDA采样信号灯 */
153 1 if ((cnt % T_ADDA) == 0)
154 1 {
155 2 bADDARef = TRUE;
156 2 }
157 1
158 1 }
159
160
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 457 ----
CONSTANT SIZE = 15 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 15
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -