📄 1602-miaobiao.lst
字号:
C51 COMPILER V8.02 1602_MIAOBIAO 06/29/2010 13:14:05 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 1602_MIAOBIAO
OBJECT MODULE PLACED IN 1602-miaobiao.OBJ
COMPILER INVOKED BY: D:\处理软件\keil\C51\BIN\C51.EXE 1602-miaobiao.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /***************************************************************
2 “天祥电子” 倾情奉献
3 www.txmcu.com
4 www.txmcu.cn
5 *****************************************************************
6 ******************************************************************
7 * 工作芯片:STC89C516 晶振频率:11.0592MHz *
8 * *
9 * 作者: 郭天祥 (Email: txmcu@163.com) *
10 * 网站: www.tx-power.com(天祥电子) *
11 * 邮箱: txmcu@163.com *
12 * *
13 *【版权】Copyright(C)天祥电子 www.tx-power.com All Rights Reserved *
14 *【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
15 * *
16 *************************************************************************
17 * *
18 * 描述: *
19 * *
20 * 上电后液晶屏先显示网站等信息,接着按下S4,定时开始,再次按下 *
21 * *
22 * S4暂停,第3次按下显示累积计时,第4次按下暂停计时,任何时候按下S5*
23 * *
24 * 计数清零。 *
25 * *
26 * *
27 ************************************************************************/
28
29 #include <reg51.h>
30 #include <intrins.h>
31
32 #define uchar unsigned char
33 #define uint unsigned int
34
35 uchar KeyCount=0;
36
37 sbit K3 = P3^6;
38 sbit K4 = P3^7;
39
40 sbit BEEP = P2^3; //蜂鸣器
41
42 uchar code cdis1[ ] = {" STOPWATCH 0 "};
43 uchar code cdis2[ ] = {"www.tx-power.com"};
44 uchar code cdis3[ ] = {"TIME "};
45
46 uchar code cdis4[ ] = {" BEGIN COUNT 1 "};
47 uchar code cdis5[ ] = {" PAUSE COUNT 2 "};
48 uchar code cdis6[ ] = {" BEGIN COUNT 3 "};
49 uchar code cdis7[ ] = {" PAUSE COUNT 4 "};
50 uchar code cdis8[ ] = {" "};
51
52 sbit LCD_RS = P3^5;
53 //sbit LCD_RW = P2^1;
54 sbit LCD_EN = P3^4;
55
C51 COMPILER V8.02 1602_MIAOBIAO 06/29/2010 13:14:05 PAGE 2
56 #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
57
58 uchar display[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00};
59 uchar display2[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
60
61 /*********************************************************
62 延时函数
63 *********************************************************/
64
65 void Delay(uint num)//延时函数
66 {
67 1 while( --num );
68 1 }
69
70 /*********************************************************
71 蜂鸣器响一声
72 **********************************************************/
73 void beep()
74 {
75 1 unsigned char y;
76 1 for (y=0;y<180;y++)
77 1 {
78 2 BEEP=!BEEP; //BEEP取反
79 2 Delay(70);
80 2 }
81 1 BEEP=1; //关闭蜂鸣器
82 1 }
83
84 /*********************************************************
85 延时函数1
86 *********************************************************/
87 void delay1(int ms)
88 {
89 1 unsigned char n;
90 1 while(ms--)
91 1 {
92 2 for(n = 0; n<250; n++)
93 2 {
94 3 _nop_();
95 3 _nop_();
96 3 _nop_();
97 3 _nop_();
98 3 }
99 2 }
100 1 }
101
102 /**********************************************************
103 * *
104 * 检查LCD忙状态 *
105 * lcd_busy为1时,忙,等待。 *
106 * lcd-busy为0时,闲,可写指令与数据。 *
107 * *
108 **********************************************************/
109 bit lcd_busy()
110 {
111 1 bit result;
112 1 LCD_RS = 0;
113 1 // LCD_RW = 1;
114 1 LCD_EN = 1;
115 1 delayNOP();
116 1 result = (bit)(P0&0x80);
117 1 LCD_EN = 0;
C51 COMPILER V8.02 1602_MIAOBIAO 06/29/2010 13:14:05 PAGE 3
118 1 return(result);
119 1 }
120
121 /**********************************************************
122 * *
123 *写指令数据到LCD *
124 *RS=L,RW=L,E=高脉冲,D0-D7=指令码。 *
125 * *
126 **********************************************************/
127 void lcd_wcmd(uchar cmd)
128 {
129 1 // while(lcd_busy());
130 1 LCD_RS = 0;
131 1 // LCD_RW = 0;
132 1 LCD_EN = 0;
133 1 _nop_();
134 1 _nop_();
135 1 P0 = cmd;
136 1 delayNOP();
137 1 LCD_EN = 1;
138 1 delayNOP();
139 1 LCD_EN = 0;
140 1 Delay(10);
141 1 }
142
143 /**********************************************************
144 * *
145 *写显示数据到LCD *
146 *RS=H,RW=L,E=高脉冲,D0-D7=数据。 *
147 * *
148 **********************************************************/
149 void lcd_wdat(uchar dat)
150 {
151 1 // while(lcd_busy());
152 1 LCD_RS = 1;
153 1 // LCD_RW = 0;
154 1 LCD_EN = 0;
155 1 P0 = dat;
156 1 delayNOP();
157 1 LCD_EN = 1;
158 1 delayNOP();
159 1 LCD_EN = 0;
160 1 Delay(10);
161 1 }
162
163 /**********************************************************
164 * *
165 * LCD初始化设定 *
166 * *
167 **********************************************************/
168 void lcd_init()
169 {
170 1 delay1(15);
171 1 lcd_wcmd(0x01); //清除LCD的显示内容
172 1 lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据
173 1 delay1(5);
174 1 lcd_wcmd(0x38);
175 1 delay1(5);
176 1 lcd_wcmd(0x38);
177 1 delay1(5);
178 1
179 1 lcd_wcmd(0x0c); //开显示,不显示光标
C51 COMPILER V8.02 1602_MIAOBIAO 06/29/2010 13:14:05 PAGE 4
180 1 delay1(5);
181 1
182 1 lcd_wcmd(0x01); //清除LCD的显示内容
183 1 delay1(5);
184 1 }
185
186 /**********************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -