1.lst
来自「1602显示程序(51版)」· LST 代码 · 共 396 行 · 第 1/2 页
LST
396 行
C51 COMPILER V9.00 1 09/15/2010 14:51:47 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE 1
OBJECT MODULE PLACED IN .\1.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\Users\liwei\Desktop\1.c BROWSE DEBUG OBJECTEXTEND PRINT(.\1.lst) OBJECT(
-.\1.obj)
line level source
1
2
3 #include<reg52.h>
4 #include<intrins.h>
5 #define uchar unsigned char
6 #define uint unsigned int
7
8 sbit date=P1^3;
9 sbit clk=P1^4;
10 unsigned long int freq=1000;
11 unsigned char zhan=20,xiang1=30,xiang2=30;
12 sbit rs = P1^2; //寄存器选择输入
13 sbit rw = P1^1; //液晶读/写控制
14 sbit en = P1^0; //液晶使能控制
15 sbit psb= P3^6; //串/并方式控制
16
17 uchar table0[]="桂林电子科技大学";
18 uchar table1[]="占空比: %";
19 uchar table2[]="频率: HZ";
20 uchar table3[]="幅度值: V";
21 uchar shu[];
22 uchar m=0,a=0,i=0;
23 uchar b1,b2,b3,c1,c2;
24 unsigned long int b,c,d,e;
25 //*********************************************
26 //延时函数,在12MHz的晶振频率下
27 //大约50us的延时
28 //*********************************************
29 void delay_50us(uint t)
30 {
31 1 uchar j;
32 1 for(;t>0;t--)
33 1 for(j=19;j>0;j--);
34 1 }
35
36 //*********************************************
37 //延时函数,在12MHz的晶振频率下
38 //大约50ms的延时
39 //*********************************************
40 void delay_50ms(uint t)
41 {
42 1 uchar j;
43 1 for(;t>0;t--)
44 1 for(j=6245;j>0;j--);
45 1 }
46 void debouncer(void)
47 {
48 1 int i;
49 1 for(i=0;i<2400;i++);
50 1 }
51 void write_12864com(uchar com)
52 {
53 1 rw=0;
54 1 rs=0;
C51 COMPILER V9.00 1 09/15/2010 14:51:47 PAGE 2
55 1 delay_50us(1);
56 1 P0=com;
57 1 en=1;
58 1 delay_50us(10);
59 1 en=0;
60 1 delay_50us(10);
61 1 }
62
63 void write_12864data(uchar date)
64 {
65 1 rw=0;
66 1 rs=1;
67 1 delay_50us(1);
68 1 P0=date;
69 1 en=1;
70 1 delay_50us(10);
71 1 en=0;
72 1 delay_50us(2);
73 1
74 1 }
75
76 void intitnal(void)
77 {
78 1 delay_50ms(2);
79 1 write_12864com(0x30);
80 1 delay_50us(4);
81 1 write_12864com(0x30);
82 1 delay_50us(4);
83 1 write_12864com(0x0e);
84 1 delay_50us(4);
85 1 write_12864com(0x01);
86 1 delay_50ms(1);
87 1 write_12864com(0x06);
88 1 delay_50us(10);
89 1
90 1 }
91
92 void display1(void)
93 {
94 1 uchar i,j=11;
95 1 write_12864com(0x80);
96 1 delay_50us(10);
97 1 for(i=0;i<16;i++)
98 1 {
99 2 write_12864data(table0[i]);
100 2 delay_50us(1);
101 2 }
102 1 write_12864com(0x90);
103 1 for(i=0;i<12;i++)
104 1 {
105 2 write_12864data(table1[i]);
106 2 delay_50us(1);
107 2 }
108 1
109 1 write_12864com(0x88);
110 1 for(i=0;i<16;i++)
111 1 {
112 2 write_12864data(table2[i]);
113 2 delay_50us(1);
114 2 }
115 1 write_12864com(0x98);
116 1 for(i=0;i<13;i++)
C51 COMPILER V9.00 1 09/15/2010 14:51:47 PAGE 3
117 1 {
118 2 write_12864data(table3[i]);
119 2 delay_50us(1);
120 2 }
121 1
122 1 }
123 uchar scanner(void)
124 {
125 1 uchar key,keydata;
126 1 debouncer();
127 1 if(P3!=0xf0)
128 1 {
129 2 P3=0xfe;
130 2 keydata=(P3&0xf0);
131 2 switch(keydata)
132 2 {
133 3 case 0xe0: key=0x30;break;
134 3 case 0xd0: key=0x31;break;
135 3 case 0xb0: key=0x32;break;
136 3 case 0x70: key=0x33;break;
137 3 }
138 2 P3=0xfd;
139 2 keydata=(P3&0xf0);
140 2 switch(keydata)
141 2 {
142 3 case 0xe0: key=0x34;break;
143 3 case 0xd0: key=0x35;break;
144 3 case 0xb0: key=0x36;break;
145 3 case 0x70: key=0x37;break;
146 3 }
147 2 P3=0xfb;
148 2 keydata=(P3&0xf0);
149 2 switch(keydata)
150 2 {
151 3 case 0xe0: key=0x38;break;
152 3 case 0xd0: key=0x39;break;
153 3 case 0xb0: key=0x41;break;
154 3 case 0x70: key=0x2e;break;
155 3 }
156 2 P3=0xf7;
157 2 keydata=(P3&0xf0);
158 2 switch(keydata)
159 2 {
160 3 case 0xe0: key=0x43;break;
161 3 case 0xd0: key=0x44;break;
162 3 case 0xb0: key=0x45;break;
163 3 case 0x70: key=0x46;break;
164 3 }
165 2 while(1)
166 2 {
167 3 P3=0xf0;
168 3 if(P3==0xf0) break;
169 3 }
170 2 return key;
171 2 }
172 1 else return 20;
173 1 }
174 void sent(int n,unsigned long int x)
175 {
176 1 int i;
177 1 for(i=0;i<n;i++)
178 1 {
C51 COMPILER V9.00 1 09/15/2010 14:51:47 PAGE 4
179 2 date=x&0x01;
180 2 clk=1;
181 2 delay_50ms(20);
182 2 x=x>>1;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?