📄 dianzhen.lst
字号:
C51 COMPILER V7.06 DIANZHEN 08/04/2008 15:26:32 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DIANZHEN
OBJECT MODULE PLACED IN DianZhen.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DianZhen.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include"reg51.h"
2 #include"for51.h"
3
4 typedef char bool;
5 #define TURE 1
6 #define FALSE 0
7
8 #define Length 31 //点阵长度
9
10 uchar x, y;//x表示8块点阵中的哪一块,y表示选中点阵的哪一列
11
12 void SendData(uchar ddata);
13 bool DisplayPic(uchar start, uchar* pic, uchar num); //向74HC595发送数据
14 void Delayms(uint ticks);
15
16 //图片数据
17 /*-- 文字: 皇 --*/
18 /*-- 黑体12; 此字体下对应的点阵为:宽x高=16x16 --*/
19 uchar code Pic[] = {
20 0x00,0x00,0x7E,0x7E,0x56,0x57,0x57,0x56,0x56,0x56,0x56,0x7E,0x7E,0x00,0x00,0x00,
21 0x60,0x63,0x6B,0x6B,0x6B,0x6B,0x6B,0x7F,0x7F,0x6B,0x6B,0x6B,0x6B,0x63,0x60,0x00,
22 };
23
24 void main(void) {
25 1 while(1) {
26 2 DisplayPic(8, Pic, 32);//显示pic1
27 2 Delayms(10);
28 2 }
29 1 }
30
31 /**************************************************
32 函数名称: 串行数据发送函数
33 参数含义: ddata - 字节显示数据
34 函数功能: 主机向从机发送一个字节串行数据
35 返 回 值: 无返回
36 **************************************************/
37 void SendData(uchar ddata) {
38 1 uchar count=0;
39 1 for(; count != 8; count++) {
40 2 SCK = 0;
41 2 if(ddata & 0x80)
42 2 MOSI=1; //发送数据
43 2 else
44 2 MOSI=0;
45 2 SCK = 1; //发送时钟
46 2 ddata <<= 1; //数据右移一位
47 2 }
48 1 SS = 0;
49 1 SS = 1; //锁存数据
50 1 SS = 0;
51 1 }
52
53 /**************************************************
54 函数名称: 延时函数
55 参数含义: 延长时间
C51 COMPILER V7.06 DIANZHEN 08/04/2008 15:26:32 PAGE 2
56 函数功能: 延时
57 返 回 值: 无返回
58 **************************************************/
59 void Delayms(uint ticks) {
60 1 uchar i;
61 1 for(; ticks != 0; ticks--)
62 1 for(i = 100; i != 0; i--);
63 1 }
64
65
66 /**************************************************
67 函数名称: 图片显示函数
68 参数含义: start - 从哪一列开始显示
69 pic - 图片数据指针
70 num - 图片数组字节数
71 函数功能: 从某一列开始显示一副图片
72 返 回 值: bool类型,正确显示返回TURE,异常返回FALSE
73 **************************************************/
74 bool DisplayPic(uchar start, uchar* pic, uchar num) {
75 1 uchar i;
76 1 uchar tempx, tempy;
77 1 if((Length - 8 + 1) < (start/2))//如果显示长度不够图片显示则出现异常返回FALSE
78 1 return FALSE;
79 1 x = start / 8;//选中哪一块
80 1 y = start % 8;//选中那块的哪一列
81 1 for(i = 0; i < num; i++) {
82 2 if(i < num/2) {//先扫描上一排
83 3 tempx = x;
84 3 tempy = y;
85 3 }
86 2 else {//扫描下一排
87 3 tempx = x + 4;
88 3 tempy = y;
89 3 }
90 2 if(tempy != y && tempy % 8 == 0) {//当此块点阵扫描到最后一列,则换到下一块
91 3 tempx++;
92 3 tempy = 0;
93 3 }
94 2 P0 &= 0xf0;//第几块点阵译码器
95 2 P0 |= 1;//关总显示
96 2 SendData(pic[i]);//发送数据
97 2 P2 = tempy++;//第几列译码器数据
98 2 P0 = tempx << 1;//第几块译码器数据
99 2 P0 &= 0xfe;//开块译码器
100 2 Delayms(10);
101 2 }
102 1 return TURE;
103 1 }
104
105
106
107
108
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 202 ----
CONSTANT SIZE = 48 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 7
IDATA SIZE = ---- ----
C51 COMPILER V7.06 DIANZHEN 08/04/2008 15:26:32 PAGE 3
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 + -