📄 text1.lst
字号:
C51 COMPILER V8.08 TEXT1 11/02/2012 16:26:19 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: D:\Program Files\keil_51\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 点阵屏管脚定义
3 SHCP GND
4 STCP GND
5 R1 R2
6 G1 G2
7 VCC GND
8 A GND
9 B GND
10 C D
11 */
12 /*
13 控制卡
14 P0~P3 A B C D
15 P16 SCK
16 P17 STR
17 R1 P04
18 G1 P05
19 R2 P06
20 G2 P07
21 */
22 #include<stc89c51rc.h>
23 #define uchar unsigned char
24 #define uint unsigned int
25 #define light 3
26 extern uint uiAllData; //定义亮度
27 uchar code hanzi[]; //汉字字模
28 uchar code hanzi1[]; //汉字字模
29 //0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
30 uchar code sw[16]={0X00,0X08,0x04,0x0C,0X02,0X0A,0X06,0X0E,0X01,0X09,0X05,0X0D,0X03,0X0B,0X07,0X0F};/*16行
-段码*///138驱动数据
31 sbit IA =P4^0; //行控制线A
32 sbit IB =P2^0; //行控制线B
33 sbit IC =P2^1; //行控制线C
34 sbit ID =P2^2; //行控制线D
35
36 #define scan0 {IA=0;IB=0;IC=0;ID=0;}
37 #define scan1 {IA=1;IB=0;IC=0;ID=0;}
38 #define scan2 {IA=0;IB=1;IC=0;ID=0;}
39 #define scan3 {IA=1;IB=1;IC=0;ID=0;}
40 #define scan4 {IA=0;IB=0;IC=1;ID=0;}
41 #define scan5 {IA=1;IB=0;IC=1;ID=0;}
42 #define scan6 {IA=0;IB=1;IC=1;ID=0;}
43 #define scan7 {IA=1;IB=1;IC=1;ID=0;}
44 #define scan8 {IA=0;IB=0;IC=0;ID=1;}
45 #define scan9 {IA=1;IB=0;IC=0;ID=1;}
46 #define scan10 {IA=0;IB=1;IC=0;ID=1;}
47 #define scan11 {IA=1;IB=1;IC=0;ID=1;}
48 #define scan12 {IA=0;IB=0;IC=1;ID=1;}
49 #define scan13 {IA=1;IB=0;IC=1;ID=1;}
50 #define scan14 {IA=0;IB=1;IC=1;ID=1;}
51 #define scan15 {IA=1;IB=1;IC=1;ID=1;}
52
53 sbit STR=P4^1; //锁存
54 sbit SCK=P2^7; //时钟
C51 COMPILER V8.08 TEXT1 11/02/2012 16:26:19 PAGE 2
55 sbit SERr1= P2^4; //数据
56 sbit SERg1= P2^6;
57
58
59
60 sbit SERr= P2^5;
61 sbit SERg= P2^3;
62
63 uchar Move,Speed,line; //时间温度变量
64 uint zimuo; //字模计数器
65 uchar BUFF[20]; //缓存
66 uchar BUFF1[20]; //缓存
67
68 void DelayMs(void); // 延时
69 void in_data(); // 调整移动数据
70 void rxd_data(); // 串口发送移动数据
71 /******************************************************/
72 /*****不影响其他端口的扫描*************************/
73 void scan(unsigned char Value)
74 {switch(Value)
75 1 {case 15: scan0;break;
76 2 case 0: scan1;break;
77 2 case 1: scan2;break;
78 2 case 2: scan3;break;
79 2 case 3: scan4;break;
80 2 case 4: scan5;break;
81 2 case 5: scan6;break;
82 2 case 6: scan7;break;
83 2 case 7: scan8;break;
84 2 case 8: scan9;break;
85 2 case 9:scan10;break;
86 2 case 10:scan11;break;
87 2 case 11:scan12;break;
88 2 case 12:scan13;break;
89 2 case 13:scan14;break;
90 2 case 14:scan15;break;
91 2 default:break;
92 2 }
93 1 }
94 /**************************延时***********************/
95
96 void DelayMs(void)
97 {
98 1 uchar TempCyc;
99 1 for(TempCyc=250;TempCyc>1;TempCyc--)
100 1 {;}
101 1 }
102 /********************************************/
103
104 /*主函数*/
105 void main()
106 {
107 1 Move=0;
108 1 zimuo=0;
109 1 P0M0=0XFF;
110 1 P0M1=0X00;
111 1 P1M0=0X0C;
112 1 P1M0=0X00;
113 1 while(1)
114 1 {
115 2 while(zimuo<2016)
116 2 {
C51 COMPILER V8.08 TEXT1 11/02/2012 16:26:19 PAGE 3
117 3 while(Move<16) //数据移位。
118 3 {
119 4 for(Speed=0;Speed<4;Speed++) //移动速度
120 4 {
121 5 for(line=0;line<16;line++)
122 5 {
123 6 in_data(); //调整移动数据
124 6 rxd_data();
125 6 //P0=sw[line];
126 6 scan(line);
127 6
128 6 STR=1;//锁存
129 6 STR=0;
130 6 STR=1;
131 6 DelayMs(); //延时,等待一段时间,让这列显示的内容在人眼内产生“视觉暂留”现象。
132 6 DelayMs();
133 6 DelayMs();
134 6 DelayMs();
135 6
136 6 }
137 5 }
138 4 Move++; //移动一步
139 4 }
140 3 Move=0;
141 3 zimuo=zimuo+32;
142 3 }
143 2 zimuo=0;
144 2 }
145 1 }
146 /**********************************************************/
147
148 void in_data(void) //调整数据
149 {
150 1 char s;
151 1 for(s=8;s>=0;s--) //i为向后先择字节计数器,zimuoo为向后先字计数器
152 1 {
153 2 BUFF[2*s+1]=hanzi[zimuo+1+32*s+2*line]; //把第一个字模的第一个字节放入BUFF0中,第二个字模和第
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -