?? p1.lst
字號:
C51 COMPILER V6.12 P1 11/28/2006 21:31:21 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE P1
OBJECT MODULE PLACED IN .\P1.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE .\P1.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*************************************************
2 程序名稱:32x64LED點陣上顯示32X32的漢字
3 日期 :2006.11.25
4 程序說明:一個漢字占128個字節,點陣每一行數據占4個字節
5 作者 :liuanggh
6 *************************************************/
7 #include <reg52.h>
8 #include "P1.h"
9
10 sbit LOAD =P3^2; //74LS595鎖存
11 sbit RST =P3^3; //
12 sbit SLECET =P2^3; //74LS138譯碼器使能端,低電平有效
13
14 uchar code line[] = { //行掃描段碼
15 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07
16 };
17 uchar line_count; //行計數器
18 uchar move_count; //移位計數器
19 uchar font_count; //字計數器
20 uchar buff[16] = {0x00};//一行有128列,每8列數據占一個字節,所以緩沖區需要16個字節
21
22 void transform_data(); //數據轉換
23 void send_data(); //串行發送8個字節的數據
24
25 main()
26 {
27 1 uchar i;
28 1 uchar j = 0;
29 1 SCON = 0; //串口工作在方式0下
30 1 SLECET = 1; //138譯碼器無效
31 1 RST = 0;
32 1 RST = 1; //595復位
33 1 /*
34 1 for(i = 0; i < 32; i++)
35 1 {
36 1 LOAD = 0;
37 1 send_data();
38 1 LOAD = 1;
39 1 P2 = line[j%8]; //片選138
40 1 P1 = line[i%8];
41 1 if(i%8 == 7)
42 1 j++;
43 1 }
44 1 */
45 1 for(i = 0; i < 8; i++)
46 1 {
47 2 P2 = line[i]; //138譯碼器片選
48 2 for(j = 0; j < 8; j++)
49 2 {
50 3 LOAD = 0; //保持原有數據
51 3 send_data(); //發送數據
52 3 SLECET = 1; //關閉顯示
53 3 LOAD = 1; //595鎖存數據
54 3 SLECET = 0; //138譯碼器有效
55 3 P1 = line[j]; //行掃描
C51 COMPILER V6.12 P1 11/28/2006 21:31:21 PAGE 2
56 3 line_count++; //行掃描一次,行計數器加1
57 3 //if(line_count > 31)
58 3 if(line_count > 64)
59 3 line_count = 0;
60 3 delay();
61 3 }
62 2 }
63 1
64 1 }
65
66 void transform_data() //數據轉換
67 {
68 1 /*
69 1 uchar temp[5] = {0};
70 1 uchar i;
71 1 for( i = 0; i < 4; i++)
72 1 temp[i] = font[(font_count + i) * 8 + line_count]; //取第i行數據
73 1 for( i = 0; i < 4; i++)
74 1 buff[i] = ( temp[ i ] >> move_count )|( temp[ i + 1] << ( 7 - move_count ) );
75 1 */
76 1 uchar i;
77 1 for(i = 0; i < 8; i++)
78 1 {
79 2 buff[i] = hanzi[ line_count*8 + i];
80 2 }
81 1
82 1 for(i = 8; i < 16; i++)
83 1 {
84 2 buff[i] = hanzi[ line_count*8 + (i-8) + 512];
85 2 }
86 1 /*
87 1 for(i = 0; i < 4; i++)
88 1 {
89 1 buff[i] = hanzi[ line_count*4 + i];
90 1 }
91 1
92 1 for(i = 4; i < 8; i++)
93 1 {
94 1 buff[i] = hanzi[ line_count*4 + i + 128];
95 1 }
96 1
97 1 for(i = 8; i < 12; i++)
98 1 {
99 1 buff[i] = hanzi[ line_count*4 + i + 256];
100 1 }
101 1
102 1 for(i = 12; i < 16; i++)
103 1 {
104 1 buff[i] = hanzi[ line_count*4 + i + 384];
105 1 }
106 1 */
107 1
108 1
109 1 }
110
111
112 void send_data() //串行發送8個字節的數據
113 {
114 1 uchar i;
115 1 transform_data(); //數據轉換
116 1
117 1 //顯示"陣點"
C51 COMPILER V6.12 P1 11/28/2006 21:31:21 PAGE 3
118 1 for( i = 0; i < 16; i++)
119 1 {
120 2 //SBUF = 0xff;
121 2 SBUF = buff[i];
122 2 while(!TI);
123 2 TI = 0;
124 2 }
125 1
126 1 /*
127 1 //顯示"點陣"
128 1 for( i = 4; i < 8; i++)
129 1 {
130 1 //SBUF = 0xff;
131 1 SBUF = buff[i];
132 1 while(!TI);
133 1 TI = 0;
134 1 }
135 1 for( i = 0; i < 4; i++)
136 1 {
137 1 //SBUF = 0xff;
138 1 SBUF = buff[i];
139 1 while(!TI);
140 1 TI = 0;
141 1 }
142 1 */
143 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 213 ----
CONSTANT SIZE = 1032 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 19 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -