📄 23.lst
字号:
C51 COMPILER V7.06 23 03/25/2008 09:55:11 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 23
OBJECT MODULE PLACED IN 23.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 3\23.c BROWSE DEBUG OBJECTEXTEND PRINT(.\23.lst) OBJECT(23.obj)
stmt level source
1 #include <sst89E564RD.H>
2 #include<intrins.h>
3
4 #define uchar unsigned char
5 #define uint unsigned int
6
7 #define disdata P0 //显示数据码输出口
8
9 #define channel_0 0x02 //单通道0输入选择
10 #define channel_1 0x03 //单通道1输入选择
11
12 sbit ADC_CS = P3^4; //片选端
13 sbit ADC_CLK= P1^0; //时钟端
14 sbit ADC_DI = P1^1; //数据输入输出复用
15 sbit ADC_DO = P1^1; //DI和DO端都接在P1.1
16
17 sbit ACC0=ACC^0; //通道与输入方式控制字
18 sbit ACC1=ACC^1; //通道与输入方式控制字
19
20 sbit LCD_RS = P2^0;
21 sbit LCD_RW = P2^1;
22 sbit LCD_EN = P2^2;
23
24 uint data dis[4]={0x00,0x00,0x00,0x00};
25 //定义3个显示数据单元和一个数据存储单元
26
27 uchar code dis4[] = {"DIGITALVOLTMETER"};
28 uchar code dis5[] = {" VOLTAGE: . V "};
29
30 /********************************************************************/
31 /* */
32 /* 延时函数 */
33 /* */
34 /********************************************************************/
35
36 void delay(uchar ms)
37 {
38 1 while(ms--)
39 1 {
40 2 uchar i;
41 2 for(i=0;i<250;i++)
42 2 {
43 3 _nop_();
44 3 _nop_();
45 3 _nop_();
46 3 _nop_();
47 3 }
48 2 }
49 1 }
50
51 /********************************************************************/
52 /* */
53 /*检查LCD忙状态 */
54 /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */
55 /* */
C51 COMPILER V7.06 23 03/25/2008 09:55:11 PAGE 2
56 /********************************************************************/
57
58 bit lcd_busy()
59 {
60 1 bit result;
61 1 LCD_RS = 0;
62 1 LCD_RW = 1;
63 1 LCD_EN = 1;
64 1 _nop_();
65 1 _nop_();
66 1 _nop_();
67 1 _nop_();
68 1 result = (bit)(P0&0x80);
69 1 LCD_EN = 0;
70 1 return result;
71 1 }
72
73 /********************************************************************/
74 /* */
75 /*写指令数据到LCD */
76 /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */
77 /* */
78 /********************************************************************/
79
80 void lcd_wcmd(uchar cmd)
81
82 {
83 1 while(lcd_busy());
84 1 LCD_RS = 0;
85 1 LCD_RW = 0;
86 1 LCD_EN = 0;
87 1 _nop_();
88 1 _nop_();
89 1 P0 = cmd;
90 1 _nop_();
91 1 _nop_();
92 1 _nop_();
93 1 _nop_();
94 1 LCD_EN = 1;
95 1 _nop_();
96 1 _nop_();
97 1 _nop_();
98 1 _nop_();
99 1 LCD_EN = 0;
100 1 }
101
102 /********************************************************************/
103 /* */
104 /*写显示数据到LCD */
105 /*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */
106 /* */
107 /********************************************************************/
108
109 void lcd_wdat(uchar dat)
110 {
111 1 while(lcd_busy());
112 1 LCD_RS = 1;
113 1 LCD_RW = 0;
114 1 LCD_EN = 0;
115 1 P0 = dat;
116 1 _nop_();
117 1 _nop_();
C51 COMPILER V7.06 23 03/25/2008 09:55:11 PAGE 3
118 1 _nop_();
119 1 _nop_();
120 1 LCD_EN = 1;
121 1 _nop_();
122 1 _nop_();
123 1 _nop_();
124 1 _nop_();
125 1 LCD_EN = 0;
126 1 }
127
128 /********************************************************************/
129 /* */
130 /* LCD初始化设定 */
131 /* */
132 /********************************************************************/
133
134 void lcd_init()
135 {
136 1 lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据
137 1 delay(5);
138 1 lcd_wcmd(0x38);
139 1 delay(5);
140 1 lcd_wcmd(0x38);
141 1 delay(5);
142 1
143 1 lcd_wcmd(0x0c); //显示开,关光标
144 1 delay(5);
145 1 lcd_wcmd(0x06); //移动光标
146 1 delay(5);
147 1 lcd_wcmd(0x01); //清除LCD的显示内容
148 1 delay(5);
149 1 }
150
151 /********************************************************************/
152 /* */
153 /* 设定显示位置 */
154 /* */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -