📄 hanzi.lst
字号:
C51 COMPILER V8.08 HANZI 08/27/2008 17:24:59 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE HANZI
OBJECT MODULE PLACED IN Hanzi.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE Hanzi.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h> //头文件
2 #include<stdio.h>
3
4 unsigned data i;
5 unsigned char *p; //建立数组指针
6 unsigned char wbyte;
7
8 sbit E=P3^2; //读写使能信号,1有效
9 sbit R_W=P3^1; //读写选择信号;1为读选通,0为写选通
10 sbit RS=P3^0;
11 sbit D_I=P3^0; //数据指令选择信号;1为数据操作,0为写指令或读状态
12
13 char code Hanzi[32]= //汉字和字符数组
14 {
15 0x02,0x03, //笑脸,心
16 0x03, //心
17 0xb1,0xb1, //汉字"北"
18 0xbe,0xa9, //汉字"京"
19 0xb0,0xc2, //汉字"奥"
20 0xd4,0xcb, //汉字"运"
21 0xbb,0xe1, //汉字"会"
22 0x03, //心
23 0x03,0x02, //心,笑脸
24 0x30,0x31, //0,1
25 0x32,0x33, //2,3
26 0x34,0x35, //4,5
27 0x36,0x37, //6,7
28 0x38,0x39, //8,9
29 0x41,0x42, //A,B
30 0x43,0x44, //C,D
31 0x45,0x46 //E,F
32 };
33 char code Hanzi1[28]= //汉字和字符数组
34 {
35 0xbb,0xb6, //汉字"欢"
36 0xd3,0xad, //汉字"迎"
37 0xc4,0xfa, //汉字"您"
38 0xa3,0xa1, //!
39 0x20,0x20, //空格
40 0x20,0x20,
41 0x20,0x20,
42 0x20,
43 0x32,0x30, //2,0
44 0x30,0x38, //0,8
45 0x2d,0x30, //-,0
46 0x38,0x2d, //8,-
47 0x30,0x38, //0,8
48 0x20,0x20, //空格
49 0x20,
50 };
51
52 unsigned char data j;
53 unsigned char data k;
54
55 void WCOM(unsigned char dcode); //指令操作子函数
C51 COMPILER V8.08 HANZI 08/27/2008 17:24:59 PAGE 2
56 void Dat(unsigned char ddata); //数据操作子函数
57 void Imim(); //初始化子函数
58 void Clearlcd(); //基本指令集清屏子函数
59 void Hanz(); //汉字显示子函数
60
61
62 void main()
63 {
64 1 Imim(); //初始化
65 1 Clearlcd();
66 1
67 1 p=Hanzi; //指针指向数组的首地址*/
68 1 j=32; //所建立的第一个汉字数组中元素的个数
69 1 k=0x80; //起始点:80h-8fh为在第一行显示
70 1 Hanz(); //在1、3行写汉字程序
71 1
72 1 p=Hanzi1;
73 1 j=28; //所建立的第二个汉字数组中元素的个数
74 1 k=0x92; //起始点:90h-9fh为在第二行显示
75 1 Hanz(); //在2、4行写汉字程序
76 1 while(1)
77 1 {
78 2 }
79 1 }
80
81
82 void WCOM(unsigned char dcode) //写指令程序
83 {
84 1 unsigned char q;
85 1 R_W=1;
86 1 D_I=0; //设置状态
87 1 Loop:
88 1 P1=0xFF;
89 1 E=1; //使能有效
90 1 q=P1; //将P1口状态读入
91 1 E=0; //关闭使能信号
92 1 if(q&0x80) //判断屏幕是否忙
93 1 {
94 2 goto Loop; //若忙,循环等待
95 2 }
96 1 R_W=0;
97 1 D_I=0; //写数据指令
98 1 P1= dcode; //将数据送入P1口
99 1 E=1; //使能信号开
100 1 E=0; //使能信号关
101 1 }
102
103
104 void Dat(unsigned char ddata)
105 {
106 1 unsigned char q;
107 1 R_W=1;
108 1 D_I=0; //读状态指令
109 1 Loop:
110 1 P1=0xFF;
111 1 E=1; //使能
112 1 q=P1;
113 1 E=0;
114 1 if(q&0x80) //判忙
115 1 {
116 2 goto Loop;
117 2 }
C51 COMPILER V8.08 HANZI 08/27/2008 17:24:59 PAGE 3
118 1 D_I=1; //送数据指令
119 1 R_W=0;
120 1 P1= ddata; //写入数据
121 1 E=1; //使能信号开
122 1 E=0; //使能信号关
123 1 }
124
125
126 void Clearlcd()
127 {
128 1 D_I=0;
129 1 R_W=0;
130 1 P1=0x01;
131 1 WCOM(0x01); //清除显示
132 1 }
133
134 void Imim()
135 {
136 1 P0=0xFF; //初始化单片机端口
137 1 P1=0xFF;
138 1 P2=0xFF;
139 1 P3=0xFF;
140 1 E=0;
141 1 WCOM(0x38); //功能设定
142 1 WCOM(0x08); //关显示指令
143 1 WCOM(0x06); //游标右移
144 1 Clearlcd(); //清屏
145 1 WCOM(0x0c); //开显示指令
146 1 }
147
148
149 void Hanz()
150 {
151 1 int i;
152 1 WCOM(k); //设置起始点
153 1 for(i=0;i<j;i++,p++)
154 1 {
155 2 wbyte=*p;
156 2 Dat(wbyte); //将汉字数组数据送入
157 2 }
158 1 }
159
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 202 ----
CONSTANT SIZE = 60 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 ----
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 + -