📄 105+.lst
字号:
C51 COMPILER V7.50 105_ 10/28/2007 11:09:37 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 105_
OBJECT MODULE PLACED IN 105+.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 105+.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <c8051f410.H>
2
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define LCD_PORT P2
6 #define Left 2
7 #define Right 1
8
9 ////////////////////12864
10 sbit LCD_Busy=P2^7;
11 sbit LCD_EN = P1^7;
12 sbit LCD_RW = P1^6;
13 sbit LCD_RS = P1^5;
14 sbit LCD_CS1= P1^4;
15 sbit LCD_CS2= P1^3;
16 sbit LCD_RST= P1^1;
17 sbit kk= P1^0;
18
19 uchar Page_Num,Clm_Num,tempdata,page,clum,pagestart,clmstart,clmsum,pageend,i,j,k,dataout,digih2,digih,dig
-il2,digil,digitalin,clockrecog;
20 uchar swd,symbolin,symbolout,con,ab,keysetsymbol,keyud,keylr,keyset,keysetin,dir,enterkeynumber=0,keyclr,x
-,y;
21 uint v5,v15,vm15,v151,v152,v153,v154,v24,v24h;
22 uchar count,dafig=0;
23 uchar serial,accidentrecog=0;
24 uchar dt[7];
25 uchar datacenter[3][9];
26 code uchar digital[19][14]={{0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,0x03,0x04,0x08,0x08,0x04,0x03,0x00},/*"0",
-0*/
27 {0x00,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x08,0x08,0x0F,0x08,0x08,0x00},/*"1",1
-*/
28 {0x00,0x18,0x04,0x04,0xC4,0x38,0x00,0x00,0x0C,0x0A,0x09,0x08,0x0C,0x00},/*"2",2
-*/
29 {0x00,0x18,0x04,0x44,0x44,0xB8,0x00,0x00,0x06,0x08,0x08,0x08,0x07,0x00},/*"3",3
-*/
30 {0x80,0x40,0x30,0x08,0xFC,0x00,0x00,0x01,0x01,0x01,0x09,0x0F,0x09,0x01},/*"4",4
-*/
31 {0x00,0x7C,0x24,0x24,0x64,0xC4,0x00,0x00,0x06,0x08,0x08,0x0C,0x07,0x00},/*"5",5
-*/
32 {0xF0,0x88,0x44,0x44,0x44,0x8C,0x00,0x07,0x08,0x08,0x08,0x08,0x07,0x00},/*"6",6
-*/
33 {0x00,0x1C,0x04,0xC4,0x34,0x0C,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00},/*"7",7
-*/
34 {0x38,0xE4,0x44,0x44,0xC4,0x38,0x00,0x07,0x08,0x08,0x08,0x08,0x07,0x00},/*"8",8
-*/
35 {0x78,0x84,0x84,0x84,0x4C,0xF0,0x00,0x0C,0x08,0x08,0x0C,0x06,0x01,0x00},/*"9",9
-*/
36 {0x20,0xE0,0x40,0x20,0x20,0xC0,0x00,0x20,0x3F,0x28,0x08,0x0C,0x07,0x00},/*"p",1
-0*/
37 {0x00,0x40,0x20,0xA0,0xA0,0xC0,0x00,0x00,0x06,0x09,0x08,0x08,0x0F,0x08},/*"a",1
-1*/
38 {0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00},//: 12
-
39 {0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",1
-3*/
C51 COMPILER V7.50 105_ 10/28/2007 11:09:37 PAGE 2
40 {0x80,0x80,0x80,0xF0,0x80,0x80,0x80,0x00,0x00,0x00,0x07,0x00,0x00,0x00},/*"+",1
-4*/
41 {0x00,0x38,0x44,0xFE,0x84,0x18,0x00,0x00,0x06,0x08,0x3F,0x08,0x07,0x00},/*"$",1
-5*/
42 {0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00},/*"=",16*/
43 {0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x07,0x38,0x0E,0x01,0x00,0x00},/*"V",1
-7*/
44 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00}};/*".",18*/
45
46 void Delay_us(unsigned int DelayTime)
47 {
48 1 while(DelayTime) DelayTime--;
49 1 }
50
51 void Delay_x10ms(unsigned char DelayTime) //***************10ms延时**********//
52 {
53 1 unsigned char iq,jq,kq;
54 1 for(iq=0;iq<DelayTime;iq++)
55 1 for(jq=0;jq<50;jq++)
56 1 for(kq=0;kq<120;kq++) {;}
57 1 }
58
59
60 /*----------------------------------------------------------------------------
61 下面这个函数用于液晶模块的忙信号检测。
62 ----------------------------------------------------------------------------*/
63 void LCD_Check_Busy(void)
64 {
65 1 while(1)
66 1 { LCD_Busy=1;
67 2 Delay_us(3);
68 2 LCD_EN = 0;
69 2 LCD_RS = 0;
70 2 Delay_us(10);
71 2 LCD_RW = 1;
72 2 LCD_PORT = 0xff;
73 2 LCD_EN = 1;
74 2
75 2 if(!LCD_Busy) break;
76 2 }
77 1 LCD_EN = 0;
78 1 }
79 /*----------------------------------------------------------------------------
80 下面这个函数用于向液晶模块写入控制指令代码。
81 函数入口参数:Command ------ 向液晶模块写入的控制指令代码 。
82 CS_Num ------ 左右半屏的选数值
83 ----------------------------------------------------------------------------*/
84 void LCD_WriteCommand(uchar Command, uchar CS_Num)
85 { Delay_us(3);
86 1 if(CS_Num==1) /*选择左半屏*/
87 1 {
88 2 LCD_CS1 = 0;
89 2 LCD_CS2 = 1;
90 2 }
91 1 else if(CS_Num==2) /*选择右半屏*/
92 1 {
93 2 LCD_CS1 = 1;
94 2 LCD_CS2 = 0;
95 2 }
96 1 Delay_us(3);
97 1 LCD_Check_Busy(); /* 使能信号为L */
98 1 LCD_RS = 0; /* 置寄存器选择为L */
C51 COMPILER V7.50 105_ 10/28/2007 11:09:37 PAGE 3
99 1 LCD_RW = 0; /* 置读/写选择为L */
100 1 LCD_PORT = Command; /* 将控制指令代码输出到的数据端口 */
101 1 LCD_EN = 1; /* 使能信号为H */
102 1 Delay_us(10); /* 延时2us */
103 1 LCD_EN = 0; /* 使能信号为L */
104 1 LCD_CS1 = 1; /* 置片选1为L */
105 1 LCD_CS2 = 1; /* 置片选2为L */
106 1 }
107
108
109 /*----------------------------------------------------------------------------
110 下面这个函数用于向液晶模块写入显示数据。
111 函数入口参数:Data------ 向液晶模块写入的显示数据 。
112 CS_Num-------左右半屏的选数值
113 ----------------------------------------------------------------------------*/
114 void LCD_WriteData(uchar Data,uchar CS_Num)
115 { Delay_us(3);
116 1 if(CS_Num==1) /*选择左半屏*/
117 1 {
118 2 LCD_CS1 = 0;
119 2 LCD_CS2 = 1;
120 2 }
121 1 else if(CS_Num==2) /*选择右半屏*/
122 1 {
123 2 LCD_CS1 = 1;
124 2 LCD_CS2 = 0;
125 2 }
126 1 LCD_Check_Busy();
127 1 LCD_EN = 0;
128 1 LCD_RS = 1; /* 置寄存器选择为H */
129 1 LCD_RW = 0; /* 置读/写选择为L */
130 1 LCD_PORT = Data; /* 将显示数据输出到的数据端口 */
131 1 LCD_EN = 1; /* 使能信号为H */
132 1 Delay_us(10); /* 延时2us */
133 1 LCD_EN = 0; /* 使能信号为L */
134 1 LCD_CS1= 1; /* 置片选1为L */
135 1 LCD_CS2= 1; /* 置片选2为L */
136 1 }
137
138 /*---------------------------------------------------------------------------
139 下面这个函数用于液晶模块的清屏。
140 ---------------------------------------------------------------------------*/
141 void LCD_keyclr(uchar Side_Num)
142 {
143 1 uchar i,k,COM;
144 1
145 1 for(i=0;i<8;i++)
146 1 {
147 2 COM=0xB8+i;
148 2 LCD_WriteCommand(COM,Side_Num);
149 2 COM=0x40;
150 2 LCD_WriteCommand(COM,Side_Num);
151 2
152 2 for(k=0;k<64;k++)
153 2 {
154 3 LCD_WriteData(0x00,Side_Num);
155 3 }
156 2 }
157 1 Delay_us(2);
158 1 }
159
160
C51 COMPILER V7.50 105_ 10/28/2007 11:09:37 PAGE 4
161 /*---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -