📄 main.lst
字号:
C51 COMPILER V9.00 MAIN 05/02/2011 12:47:57 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"LCDzimo.h"
2 #include <at89x52.h> //头文件
3 //液晶信号控制引脚定义
4 #define DATAport P0 // LCD数据口
5 sbit LCDC1=P2^0; // 片选1
6 sbit LCDC2=P2^1; // 片选2
7 sbit LCDRS=P2^2; // 数据\指令 选择
8 sbit LCDRW=P2^3; // 读\写 选择
9 sbit LCDE =P2^4; // 读\写 使能
10
11 void delay(unsigned char x){
12 1 unsigned int i;
13 1 while(x--){
14 2 for(i=100;i>0;i--);
15 2 }
16 1 }
17 /*LCD忙状态检测*/
18 void LCDbusy(){
19 1 unsigned char busy;
20 1 LCDRS=0;//指令模式
21 1 LCDRW=1;//读控制器模式
22 1 do{
23 2 DATAport=0x00;//此条指令做仿真调试用
24 2 LCDE=1;
25 2 busy=DATAport;
26 2 LCDE=0;
27 2 busy=busy&0x80;//取出最高位
28 2 }
29 1 while(busy);
30 1 }
31 /*LCD写命令函数*/
32 void LCDcmd(unsigned char cmd){
33 1 LCDbusy();
34 1 LCDRS=0;//指令模式
35 1 LCDRW=0;//写控制器模式
36 1 DATAport=cmd;
37 1 LCDE=1;//采用下降沿将数据写入LCD
38 1 LCDE=0;
39 1 }
40 /*LCD写数据函数*/
41 void LCDdat(unsigned char dat){
42 1 LCDbusy();
43 1 LCDRS=1;//数据模式
44 1 LCDRW=0;//写控制器模式
45 1 DATAport=dat;
46 1 LCDE=1;//采用下降沿将数据写入LCD
47 1 LCDE=0;
48 1 }
49 /*LCD片选控制函数*/
50 void LCDcs(unsigned char x){
51 1 switch(x){
52 2 case 0://选择2片(左右两片)
53 2 LCDC1=0;
54 2 LCDC2=0;
55 2 break;
C51 COMPILER V9.00 MAIN 05/02/2011 12:47:57 PAGE 2
56 2 case 1://选择左片液晶
57 2 LCDC1=0;
58 2 LCDC2=1;
59 2 break;
60 2 case 2://选择右片液晶
61 2 LCDC1=1;
62 2 LCDC2=0;
63 2 break;
64 2 default:
65 2 break;
66 2 }
67 1 }
68 /*LCD清屏函数*/
69 void LCDclear(){ //清屏
70 1 unsigned char page,i;
71 1 LCDcs(0);
72 1 for(page=0xb8;page<0xc0;page++){ //一共写8页
73 2 LCDcmd(page);//控制器页选择
74 2 LCDcmd(0x40);//控制器列选择
75 2 for(i=0;i<64;i++){//写64列数据,每列为一个字节
76 3 LCDdat(0x00);//(8个位纵向组成一个页)
77 3 }
78 2 }
79 1 }
80 /*LCD初始化函数*/
81 void LCDrst(){
82 1 LCDcmd(0xc0); //显示起始为0页
83 1 LCDcmd(0x3f); //开启液晶
84 1 }
85 /*LCD显示函数*/
86 void LCDshow(unsigned int x){
87 1 unsigned char i,p;
88 1 for(p=0;p<8;p++){//一共写8页
89 2 LCDcmd(0xb8+p);//控制器页选择
90 2 LCDcmd(0x40);//控制器列选择
91 2 LCDcs(1);//左片选择
92 2 for(i=0;i<64;i++){
93 3 LCDdat(tab0[8+p*8+x*8*12][i]);
94 3 }
95 2 LCDcs(2);//右片选择
96 2 for(i=0;i<64;i++){
97 3 LCDdat(tab0[8+p*8+x*8*12][i+64]);
98 3 }
99 2 LCDcs(0);//左右一起使能
100 2 }
101 1 }
102 /*****主函数*****/
103 main(){
104 1 unsigned char page=0;
105 1 LCDrst(); //初始化液晶
106 1 LCDcs(0);//选择2块液晶
107 1 LCDclear();//清屏
108 1 while(1){
109 2 // LCDcmd(0x3e); //关显示
110 2 LCDshow(page);//传数据
111 2 // LCDcmd(0x3f); //开显示
112 2 delay(1000);
113 2 page=page+1;
114 2 if(page==4)page=0;
115 2 }
116 1 }
C51 COMPILER V9.00 MAIN 05/02/2011 12:47:57 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 352 ----
CONSTANT SIZE = 6144 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 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 + -