📄 lcd.lst
字号:
C51 COMPILER V7.20 LCD 07/28/2007 00:09:49 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.H>
2 #include"LCD1602.h"
3 //--------------------------
4 //5位lcd显示频率计设计
5 //Designed by BoBo
6 //--------------------------
7 //--------------------------------------------------
8 //固定函数声明
9 void int_0(); //外部中断0
10
11 void int_1(); //外部中断1
12
13 void t0(); //定时器中断1
14
15 void t1(); //定时器中断2
16
17 void serial_1(); //串行中断1
18
19 void serial_2(); //串行中断2
20 //---------------------------------------------------
21 //用户函数声明
22 void initial(); //初始化
23
24 void IntToStr(unsigned long t, unsigned char *str);//数据转换模式
25
26 void Delay1ms(unsigned int num); //延时模块
27 //---------------------------------------------------
28 //-------------------------------------------------------------------------------------------------------
29 //信号和数据声明
30 unsigned char timecount=0; //闸门计数值
31
32 unsigned char T0count; //计数器溢出计数值
33
34 sbit Gate=P3^1; //闸门输出口
35
36 sbit Clr=P3^7; //清零信号
37
38 unsigned long x; //频率计数容器1
39
40 bit flag=0; //闸门结束标志
41
42 unsigned char TempBuffer[10];//数据缓冲区
43
44 //--------------------------------------------------------------------------------------------------------
--
45 void main(void)
46 {
47 1 initial();
48 1
49 1 Gate=1; //闸门开
50 1
51 1 Clr=1; //先清零74LS393
52 1
53 1 LCD_Initial(); //lcd初始化
54 1
C51 COMPILER V7.20 LCD 07/28/2007 00:09:49 PAGE 2
55 1 GotoXY(0,0); //指向0行0列
56 1
57 1 Print(" The Frequent ");
58 1
59 1 GotoXY(0,1);
60 1
61 1 Print(" Hz by BoBo");
62 1
63 1 while(1)
64 1
65 1 {
66 2 Clr=0;
67 2 if(flag)
68 2 {
69 3 flag=0;
70 3
71 3 IntToStr(x,TempBuffer); //数值转换
72 3
73 3 GotoXY(0,1); //定位
74 3
75 3 Print(TempBuffer); //打印数据
76 3
77 3 TR0=1;
78 3 }
79 2
80 2 }
81 1
82 1
83 1 }
84 void initial() //初始化
85 {
86 1
87 1 TMOD=0x15;
88 1
89 1 TH0=0; //计数器付初值
90 1
91 1 TL0=0; //计数器付初值
92 1
93 1 TH1=0x3b; //定时器付初值
94 1
95 1 TL1=0xb0; //定时器付初值
96 1
97 1 TR1=1; //定时器启动
98 1
99 1 TR0=1; //计数器启动
100 1
101 1 ET0=1; //计数器开中断
102 1
103 1 ET1=1; //定时器开中断
104 1
105 1 EX1=1; // INT1中断开
106 1
107 1 IT1=0; // INT1低电平触发(为1则为下降沿触发)
108 1
109 1 EA=1; //开中断
110 1
111 1 return;
112 1 }
113
114 void IntToStr(unsigned long t, unsigned char *str)
115 {
116 1 unsigned char a[10]; char i,length;
C51 COMPILER V7.20 LCD 07/28/2007 00:09:49 PAGE 3
117 1 while(t/10) //将计数值转换为数码管段码值
118 1 {
119 2 a[i]=t%10;
120 2 t=t/10;
121 2 i++;
122 2 }
123 1 a[i]=t;
124 1 length=i+1;
125 1 for(i=0; i<length; i++) //转成ASCII码
126 1 a[i]=a[i]+'0';
127 1 //for(i=0; a[i]=='0' && i<=6; i++);
128 1 //for(j=8-n; j<i; j++) //填充空格
129 1 // { *str=' '; str++; }
130 1 for(i=length-1; i>=0; i--)
131 1 { *str=a[i]; str++; } //加入有效的数字
132 1 *str='\0';
133 1 }
134
135 void int_1() interrupt 2 using 1 //INT1中断 由P3.1引脚产生
136
137 {
138 1
139 1 T0count=0; //计数高位清零
140 1
141 1 flag=1;
142 1
143 1
144 1 TH0=0; //计数器清零
145 1
146 1 TL0=0;
147 1
148 1 }
149
150 void t0(void) interrupt 1 using 0 //计数器中断服务程序
151
152 {
153 1
154 1 T0count++;
155 1
156 1 }
157
158 void t1(void) interrupt 3 using 0 //定时器溢出中断程序
159
160 {
161 1
162 1 TH1=0x3b; //重置初值
163 1
164 1 TL1=0xb0;
165 1
166 1 timecount++;
167 1
168 1 if(timecount==20)
169 1
170 1 {
171 2 TR0=0; //停止计数器
172 2
173 2 x=(T0count*65536+TH0*256+TL0)*255+P1;//取计数值
174 2 Clr=1; //产生清零信号
175 2
176 2 timecount=0; //定时计数清零
177 2
178 2 Gate=!Gate; //闸门取反
C51 COMPILER V7.20 LCD 07/28/2007 00:09:49 PAGE 4
179 2
180 2 }
181 1
182 1 }
183
184
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 599 ----
CONSTANT SIZE = 34 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 19
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -