📄 osc.lst
字号:
C51 COMPILER V8.02 OSC 01/31/2009 14:04:30 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE OSC
OBJECT MODULE PLACED IN osc.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE osc.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "lcd12864.h"
2 #include "osc.h"
3 #include "common.h"
4 #include "dots.h"
5
6 unsigned char val_vdiv=2; //Y轴电压标度索引0~5
7 unsigned char val_tdiv=0; //X轴时间标度索引0~5
8 unsigned char acdc_flag=0; //交流直流档切换
9 unsigned char run_flag=0; //运行停止切换
10 unsigned char pointxA;
11 unsigned char pointxB;
12 unsigned char pointyA;
13 unsigned char pointyB;
14 unsigned char xdata da_buffer[DATA_SIZE];
15 unsigned char da_finish;
16 char movx=0; //水平移动
17 char movy=0; //垂直移动
18
19 unsigned char code vdiv [] = {1,2,5,10,20,50};//电压标度索引是0到5,实际是0.1到5.0
20 unsigned char code tdiv [] = {5,10,20,50,100};//扫描时间标度索引是0到5
21
22 void disp_ypoint(void)
23 {
24 1 unsigned char dat[ALL_LINE];
25 1 unsigned char j,i;
26 1 for(j=0;j<3;j++) {
27 2 for(i=0;i<7;i++) dat[i] = 0;
28 2 if(j==0) {
29 3 dat[(pointyA-2)/8] |= 0x01<<((pointyA-2)%8);
30 3 dat[(pointyA-1)/8] |= 0x01<<((pointyA-1)%8);
31 3 dat[(pointyA )/8] |= 0x01<<((pointyA )%8);
32 3 dat[(pointyA+1)/8] |= 0x01<<((pointyA+1)%8);
33 3 dat[(pointyA+2)/8] |= 0x01<<((pointyA+2)%8);
34 3
35 3 dat[(pointyB-2)/8] |= 0x01<<((pointyB-2)%8);
36 3 dat[(pointyB-1)/8] |= 0x01<<((pointyB-1)%8);
37 3 dat[(pointyB )/8] |= 0x01<<((pointyB )%8);
38 3 dat[(pointyB+1)/8] |= 0x01<<((pointyB+1)%8);
39 3 dat[(pointyB+2)/8] |= 0x01<<((pointyB+2)%8);
40 3
41 3 /*上下平移标志*/
42 3 if(movy== (HEIGHT/2)) {
43 4 dat[(HEIGHT/2+4-movy)/8] |= 0x01<<((HEIGHT/2+4-movy)%8);
44 4 dat[(HEIGHT/2+5-movy)/8] |= 0x01<<((HEIGHT/2+5-movy)%8);
45 4 }
46 3 else if(movy==-(HEIGHT/2)) {
47 4 dat[(HEIGHT/2+5-movy)/8] |= 0x01<<((HEIGHT/2+5-movy)%8);
48 4 dat[(HEIGHT/2+6-movy)/8] |= 0x01<<((HEIGHT/2+6-movy)%8);
49 4 }
50 3 else {
51 4 dat[(HEIGHT/2+5-movy)/8] |= 0x01<<((HEIGHT/2+5-movy)%8);
52 4 }
53 3
54 3 /*写LCD,刷新显示*/
55 3 for(i=0;i<ALL_LINE;i++) {
C51 COMPILER V8.02 OSC 01/31/2009 14:04:30 PAGE 2
56 4 lcd_cmd_wr(SETY+i,0);
57 4 lcd_cmd_wr(SETX+ZEROX-4,0);
58 4 lcd_data_wr(dat[i],0);
59 4 }
60 3 }
61 2 else if(j==1){
62 3 dat[(pointyA-1)/8] |= 0x01<<((pointyA-1)%8);
63 3 dat[(pointyA )/8] |= 0x01<<((pointyA )%8);
64 3 dat[(pointyA+1)/8] |= 0x01<<((pointyA+1)%8);
65 3 dat[(pointyB-1)/8] |= 0x01<<((pointyB-1)%8);
66 3 dat[(pointyB )/8] |= 0x01<<((pointyB )%8);
67 3 dat[(pointyB+1)/8] |= 0x01<<((pointyB+1)%8);
68 3
69 3 /*上下平移标志*/
70 3 dat[(HEIGHT/2+4-movy)/8] |= 0x01<<((HEIGHT/2+4-movy)%8);
71 3 dat[(HEIGHT/2+5-movy)/8] |= 0x01<<((HEIGHT/2+5-movy)%8);
72 3 dat[(HEIGHT/2+6-movy)/8] |= 0x01<<((HEIGHT/2+6-movy)%8);
73 3
74 3 /*写LCD,刷新显示*/
75 3 for(i=0;i<ALL_LINE;i++) {
76 4 lcd_cmd_wr(SETY+i,0);
77 4 lcd_cmd_wr(SETX+ZEROX-3,0);
78 4 lcd_data_wr(dat[i],0);
79 4 }
80 3 }
81 2 else {
82 3 dat[(pointyA)/8] |= 0x01<<((pointyA)%8);
83 3 dat[(pointyB)/8] |= 0x01<<((pointyB)%8);
84 3
85 3 /*上下平移标志*/
86 3 if(movy==(HEIGHT/2)) {
87 4 dat[(HEIGHT/2+4-movy)/8] |= 0x01<<((HEIGHT/2+4-movy)%8);
88 4 dat[(HEIGHT/2+5-movy)/8] |= 0x01<<((HEIGHT/2+5-movy)%8);
89 4 }
90 3 else if(movy==-(HEIGHT/2)) {
91 4 dat[(HEIGHT/2+5-movy)/8] |= 0x01<<((HEIGHT/2+5-movy)%8);
92 4 dat[(HEIGHT/2+6-movy)/8] |= 0x01<<((HEIGHT/2+6-movy)%8);
93 4 }
94 3 else {
95 4 dat[(HEIGHT/2+5-movy)/8] |= 0x01<<((HEIGHT/2+5-movy)%8);
96 4 }
97 3
98 3 /*写LCD,刷新显示*/
99 3 for(i=0;i<ALL_LINE;i++) {
100 4 lcd_cmd_wr(SETY+i,0);
101 4 lcd_cmd_wr(SETX+ZEROX-2,0);
102 4 lcd_data_wr(dat[i],0);
103 4 }
104 3 }
105 2 }
106 1 }
107 //LCD波形显示区
108 void disp(unsigned char x,unsigned char y,char l)
109 {
110 1 unsigned char dat[ALL_LINE],j,k;
111 1 x += ZEROX;
112 1 y = ZEROY-1-y;//1是修正1行空白行
113 1 dat[0] = 0x10;
114 1 dat[1] = 0x0;
115 1 dat[2] = 0x0;
116 1 dat[3] = 0x0;
117 1 dat[4] = 0x0;
C51 COMPILER V8.02 OSC 01/31/2009 14:04:30 PAGE 3
118 1 dat[5] = 0x0;
119 1 dat[6] = 0x40;
120 1
121 1
122 1 if((x+1)%5==0) {
123 2 dat[3] |= 0x20; /*水平中心线*/
124 2 dat[pointyA/8] |= 0x01<<pointyA%8; /*水平测量线A*/
125 2 dat[pointyB/8] |= 0x01<<pointyB%8; /*水平测量线B*/
126 2 }
127 1
128 1 /*上下边框格点*/
129 1 //if(((x-ZEROX) ==WIDTH/2-1)||((x-ZEROX)%5==0)||((x-ZEROX) == WIDTH/2+1)) {
130 1 if((x-ZEROX)%5==0) {
131 2 dat[0] |= 0x20;dat[ALL_LINE-1] |= 0x20;
132 2 }
133 1
134 1 /*垂直测量线格点和垂直中心线*/
135 1 if(((x-ZEROX) == pointxA)||((x-ZEROX) == pointxB)||((x-ZEROX) == WIDTH/2)) {
136 2 dat[0] |= 0x10;
137 2 dat[1] |= 0x42;
138 2 dat[2] |= 0x08;
139 2 dat[3] |= 0x21;
140 2 dat[4] |= 0x84;
141 2 dat[5] |= 0x10;
142 2 dat[6] |= 0x42;
143 2 }
144 1
145 1 /*顶端测量线三角符号*/
146 1 if(x-ZEROX==(pointxA-2)) dat[0] |= 0x01;
147 1 if(x-ZEROX==(pointxA-1)) dat[0] |= 0x03;
148 1 if(x-ZEROX==(pointxA )) dat[0] |= 0x07;
149 1 if(x-ZEROX==(pointxA+1)) dat[0] |= 0x03;
150 1 if(x-ZEROX==(pointxA+2)) dat[0] |= 0x01;
151 1 if(x-ZEROX==(pointxB-2)) dat[0] |= 0x01;
152 1 if(x-ZEROX==(pointxB-1)) dat[0] |= 0x03;
153 1 if(x-ZEROX==(pointxB )) dat[0] |= 0x07;
154 1 if(x-ZEROX==(pointxB+1)) dat[0] |= 0x03;
155 1 if(x-ZEROX==(pointxB+2)) dat[0] |= 0x01;
156 1
157 1 /*顶端中点左右平移标志*/
158 1 if(movx == (WIDTH/2-1)) {
159 2 if(x-ZEROX==WIDTH/2-movx-1) dat[0] |= 0x07;
160 2 if(x-ZEROX==WIDTH/2-movx ) dat[0] |= 0x07;
161 2 if(x-ZEROX==WIDTH/2-movx+1) dat[0] |= 0x02;
162 2 }
163 1 else if(movx==-(WIDTH/2-1)) {
164 2 if(x-ZEROX==WIDTH/2-movx-1) dat[0] |= 0x02;
165 2 if(x-ZEROX==WIDTH/2-movx ) dat[0] |= 0x07;
166 2 if(x-ZEROX==WIDTH/2-movx+1) dat[0] |= 0x07;
167 2 }
168 1 else {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -