📄 mcu_test.lst
字号:
C51 COMPILER V8.02 MCU_TEST 03/31/2009 13:10:27 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MCU_TEST
OBJECT MODULE PLACED IN mcu_test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mcu_test.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //下面是图片的排序号。它是一个头文件,需将其加入到您的程序中。
2 #define hehua 0
3 #define pic_0 1
4 #define pic_1 2
5 #define pic_2 3
6 #define wheel_0 4
7 #define wheel_1 5
8
9 #include<Atmel/AT89x52.H>
10 //定义颜色数据类型(可以是数据结构)
11 typedef struct _tcolor
12 {
13 unsigned char R;
14 unsigned char G;
15 unsigned char B;
16 } TCOLOR;
17 #define uint16 unsigned short
18 #define uint8 unsigned char
19 TCOLOR Fcolor, Bcolor;
20 //*************************************************************
21 void InitUART(void) //串口初始化函数,使用11.0592M晶体
22 {
23 1 SCON = SCON|0x50; //选择模式1,8位数据格式,使能UART
24 1 PCON |= 0x80; //波特率加倍
25 1 TMOD =TMOD| 0x20; //定时器1:模式2
26 1 //TH1=256-(2f/32*12*19200)
27 1 TH1 = 0xfd; //定时器1自动装载初值,时钟频率11.0592MHz,fd(19200bps)
28 1 TL1 = 0xfd;
29 1 TR1 = 1; //定时器1计数使能
30 1 REN = 1; //允许串口接受使能
31 1 }
32 /*
33 ******************************************************************
34 *
35 * 名称: write_byte()
36 * 功能: 向串口发送一个字节的数据
37 * 入口参数:i为待发送的字节数据
38 ******************************************************************
39 */
40
41 void write_byte(uint8 i)
42 {
43 1 SBUF=i;
44 1 while(TI==0){}
45 1 TI=0;
46 1 }
47
48
49 /*
50 ******************************************************************
51 *
52 * 名称: MCU_Draw_String()
53 * 功能: 利用中英文汉字库显示中英文
54 * 入口参数:x=起点X轴坐标;y=起点Y轴坐标;
55 * mode=汉字库类型选择;string=指向需显示的内容
C51 COMPILER V8.02 MCU_TEST 03/31/2009 13:10:27 PAGE 2
56 ******************************************************************
57 */
58 void MCU_Draw_String(uint16 x, uint16 y, uint8 mode,char *string)
59 {
60 1 write_byte(0x81); //指令开始
61 1 write_byte(mode); //汉字库指令代码
62 1
63 1 write_byte(Bcolor.B); //背景色3个字节
64 1 write_byte(Bcolor.G); //绿
65 1 write_byte(Bcolor.R); //红
66 1 write_byte(Fcolor.B); //前景色3个字节
67 1 write_byte(Fcolor.G); //绿
68 1 write_byte(Fcolor.R); //红
69 1 write_byte(x/100); //起点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1)
70 1 write_byte(x%100); //起点位置x轴坐标(取模运算)
71 1 write_byte(y/100); //起点位置y轴坐标
72 1 write_byte(y%100); //起点位置y轴坐标
73 1 while(*string) //为0时(字符串结束)退出
74 1 {
75 2 write_byte(*string);
76 2 string++;
77 2 }
78 1 write_byte(0x84); //指令结束
79 1 }
80
81 /*
82 ******************************************************************
83 *
84 * 名称: MCU_Draw_Variable()
85 * 功能: 利用中英文汉字库显示变量
86 * 入口参数:x=起点X轴坐标;y=起点Y轴坐标
87 * mode=汉字库类型选择;i=变量值
88 ******************************************************************
89 */
90 void MCU_Draw_Variable(uint16 x, uint16 y, uint8 mode,uint16 i)
91 {
92 1 write_byte(0x81); //指令开始
93 1 write_byte(mode|0x10);
94 1
95 1 write_byte(Bcolor.B); //背景色3个字节
96 1 write_byte(Bcolor.G); //绿
97 1 write_byte(Bcolor.R); //红
98 1 write_byte(Fcolor.B); //前景色3个字节
99 1 write_byte(Fcolor.G); //绿
100 1 write_byte(Fcolor.R); //红
101 1 write_byte(x/100); //起点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1)
102 1 write_byte(x%100); //起点位置x轴坐标(取模运算)
103 1 write_byte(y/100); //起点位置y轴坐标
104 1 write_byte(y%100); //起点位置y轴坐标
105 1 write_byte(i/100); //变量
106 1 write_byte(i%100); //
107 1 write_byte(0x84); //指令结束
108 1
109 1 }
110 /****************************************************************************
111 * 名称:MCU_Draw_Pic()
112 * 功能:显示一幅图片
113 *
114 * 入口参数:x 起点的x坐标值
115 * y 起点的y坐标值
116 * num 图片编号
117 ****************************************************************************/
C51 COMPILER V8.02 MCU_TEST 03/31/2009 13:10:27 PAGE 3
118 void MCU_Draw_Pic(uint16 x,uint16 y,uint16 num)
119 {
120 1 write_byte(0x81); //指令开始
121 1 write_byte(0x20);
122 1 write_byte(x/100); //起点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1)
123 1 write_byte(x%100); //起点位置x轴坐标(取模运算)
124 1 write_byte(y/100); //起点位置y轴坐标
125 1 write_byte(y%100); //起点位置y轴坐标
126 1 write_byte(num/100); //图片编号
127 1 write_byte(num%100); //
128 1 write_byte(0x84); //指令结束
129 1
130 1 }
131 /****************************************************************************
132 * 名称:MCU_Draw_Pic_Auto()
133 * 功能:循环显示多幅图片,产生动画效果;当显示到第end幅时,又从第start开始重新显示,不断循环
134 *
135 * 入口参数:x 起点的x坐标值
136 * y 起点的y坐标值
137 * start 起始图片编号
138 * end 结束图片编号
139 * T 显示时间间隔 //为0时表示关闭动画
140 ****************************************************************************/
141 void MCU_Draw_Pic_Auto(uint16 x,uint16 y,uint16 start,uint16 end,uint8 T)
142 {
143 1 write_byte(0x81); //指令开始
144 1 write_byte(0x21);
145 1 write_byte(x/100); //起点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1)
146 1 write_byte(x%100); //起点位置x轴坐标(取模运算)
147 1 write_byte(y/100); //起点位置y轴坐标
148 1 write_byte(y%100); //起点位置y轴坐标
149 1
150 1 write_byte(start/100); // 起始图片编号
151 1 write_byte(start%100); //
152 1 write_byte(end/100); // 结束图片编号
153 1 write_byte(end%100); //
154 1
155 1 write_byte(T); //指令结束
156 1 write_byte(0x84); //指令结束
157 1
158 1 }
159 /****************************************************************************
160 * 名称:MCU_Draw_Pic_Step()
161 * 功能:顺序显示多幅图片,当显示到第end幅时停止显示
162 *
163 * 入口参数:x 起点的x坐标值
164 * y 起点的y坐标值
165 * start 起始图片编号
166 * end 结束图片编号
167 * T 显示时间间隔 //为0时表示关闭顺序显示
168 ****************************************************************************/
169 void MCU_Draw_Pic_Step(uint16 x,uint16 y,uint16 start,uint16 end,uint8 T)
170 {
171 1 write_byte(0x81); //指令开始
172 1 write_byte(0x22);
173 1 write_byte(x/100); //起点位置x轴坐标(取整运算-x为两字节变量,高低两字节100进1)
174 1 write_byte(x%100); //起点位置x轴坐标(取模运算)
175 1 write_byte(y/100); //起点位置y轴坐标
176 1 write_byte(y%100); //起点位置y轴坐标
177 1 write_byte(start/100); // 起始图片编号
178 1 write_byte(start%100); //
179 1 write_byte(end/100); // 结束图片编号
C51 COMPILER V8.02 MCU_TEST 03/31/2009 13:10:27 PAGE 4
180 1 write_byte(end%100); //
181 1 write_byte(T); //指令结束
182 1 write_byte(0x84); //指令结束
183 1
184 1 }
185 /*
186 ******************************************************************
187 *
188 * 名称:MCU_Draw_LineWith()
189 * 功能:指定起点和终点画直线。
190 * 入口参数:x0 直线起点所在列的位置
191 * y0 直线起点所在行的位置
192 * x1 直线终点所在列的位置
193 * y1 直线终点所在行的位置
194 * width 直线宽度 (需小于30)
195 ******************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -