?? lcd1602+at24c02.lst
字號:
C51 COMPILER V7.50 LCD1602_AT24C02 04/24/2009 18:29:35 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD1602_AT24C02
OBJECT MODULE PLACED IN LCD1602+AT24C02.OBJ
COMPILER INVOKED BY: E:\07-08課件\keil&protus\C51\BIN\C51.EXE LCD1602+AT24C02.C BROWSE DEBUG OBJECTEXTEND CODE LISTINCLU
-DE SYMBOLS
line level source
1 #include<reg52.h>
*** WARNING C318 IN LINE 1 OF LCD1602+AT24C02.C: can't open file 'reg52.h'
2 #include<intrins.h>
*** WARNING C318 IN LINE 2 OF LCD1602+AT24C02.C: can't open file 'intrins.h'
3 #include"LCD1602.H"
1 =1 /*------------------------------------------------------------------------------*/
2 =1 //File: LCD1602_8.H
3 =1 //Date: 08-7-29
4 =1 //Time: 16:09
5 =1 //Note: LCD1602 Mini Driver.
6 =1
7 =1
8 =1
9 =1
10 =1 /*------------------------------------------------------------------------------*/
11 =1 #ifndef __LCD1602_8_H__
12 =1 #define __LCD1602_8_H__
13 =1
14 =1
15 =1
16 =1
17 =1
18 =1 /*------------------------------------------------------------------------------*/
19 =1 //LCD接口定義
20 =1 sfr io = 0x80; //P0-0x80,P1-0x90,P2-0xA0,P3-0xB0;
21 =1 sbit rs = P2^0; //LCD數據/命令選擇端(H/L)
*** ERROR C202 IN LINE 21 OF LCD1602.H: 'P2': undefined identifier
22 =1 sbit rw = P2^1; //LCD讀/寫選擇端(H/L)
*** ERROR C202 IN LINE 22 OF LCD1602.H: 'P2': undefined identifier
23 =1 sbit ep = P2^2; //LCD使能控制
*** ERROR C202 IN LINE 23 OF LCD1602.H: 'P2': undefined identifier
24 =1 sbit bz = io^7; //LCD忙標志位
25 =1
26 =1
27 =1
28 =1
29 =1
30 =1 /*------------------------------------------------------------------------------*/
31 =1 //函數聲明
32 =1 void lcd_busy(void); //測試LCD忙碌狀態程序
33 =1 void lcd_wcmd(unsigned char cmd); //寫入指令到LCD程序
34 =1 void lcd_wdat(unsigned char dat); //寫入數據到LCD程序
35 =1 void lcd_pos (unsigned char x, bit y); //LCD數據指針位置程序
36 =1 void printc(unsigned char CHAR); //顯示字符
37 =1 //void prints(unsigned char *string); //顯示字符串
38 =1 void lcd_init(void); //LCD初始化設定程序
39 =1
40 =1
41 =1
42 =1 /*------------------------------------------------------------------------------*/
43 =1 //測試LCD忙碌狀態
44 =1 void lcd_busy(void)
45 =1 {
46 1 =1 do{
C51 COMPILER V7.50 LCD1602_AT24C02 04/24/2009 18:29:35 PAGE 2
47 2 =1 ep = 0;
*** ERROR C202 IN LINE 47 OF LCD1602.H: 'ep': undefined identifier
48 2 =1 rs = 0; //指令
*** ERROR C202 IN LINE 48 OF LCD1602.H: 'rs': undefined identifier
49 2 =1 rw = 1; //讀出
*** ERROR C202 IN LINE 49 OF LCD1602.H: 'rw': undefined identifier
50 2 =1 io = 0xff;
51 2 =1 ep = 1;
*** ERROR C202 IN LINE 51 OF LCD1602.H: 'ep': undefined identifier
52 2 =1 _nop_(); //高電平讀出 1us
53 2 =1 }while(bz); //bz=1表示忙,bz=0表示空閑
54 1 =1 ep = 0;
55 1 =1 }
56 =1
57 =1
58 =1
59 =1
60 =1 /*------------------------------------------------------------------------------*/
61 =1 //寫入指令到LCD
62 =1 void lcd_wcmd(unsigned char cmd)
63 =1 {
64 1 =1 lcd_busy(); //檢測忙
65 1 =1 rs = 0; //指令
66 1 =1 rw = 0; //寫入
67 1 =1 ep = 1;
68 1 =1 io = cmd; //指令
69 1 =1 ep = 0; //下降沿有效
70 1 =1 }
71 =1
72 =1
73 =1
74 =1
75 =1 /*------------------------------------------------------------------------------*/
76 =1 //寫入數據函數
77 =1 void lcd_wdat(unsigned char Data)
78 =1 {
79 1 =1 lcd_busy(); //檢測忙
80 1 =1 rs = 1; //數據
81 1 =1 rw = 0; //寫入
82 1 =1 ep = 1;
83 1 =1 io = Data; //數據
84 1 =1 ep = 0; //下降沿有效
85 1 =1 }
86 =1
87 =1
88 =1
89 =1
90 =1 /*------------------------------------------------------------------------------*/
91 =1 //LCD數據指針位置程序
92 =1 void lcd_pos(unsigned char x, bit y)
93 =1 {
94 1 =1 if(y)lcd_wcmd(x|0xc0); //y=1,第二行顯示;y=0,第一行顯示 0<=x<16
95 1 =1 else lcd_wcmd(x|0x80); //數據指針=80+地址碼(00H~27H,40H~67H)
96 1 =1 }
97 =1
98 =1
99 =1
100 =1
101 =1 /*------------------------------------------------------------------------------*/
102 =1 //顯示字符
103 =1 void printc(unsigned char CHAR)
104 =1 {
C51 COMPILER V7.50 LCD1602_AT24C02 04/24/2009 18:29:35 PAGE 3
105 1 =1 lcd_wdat(CHAR);
106 1 =1 }
107 =1
108 =1
109 =1
110 =1
111 =1 /*------------------------------------------------------------------------------*/
112 =1 //顯示字符串
113 =1 /*
114 =1 void prints(unsigned char *string)
115 =1 {
116 =1 unsigned char i;
117 =1 //do{lcd_wdat(string[i]);i++;}while(string[i]!='\0');//生成代碼比for循環大
118 =1 for(i=0;string[i]!='\0';i++)lcd_wdat(string[i]); //有時用for循環也好哈
119 =1 }
120 =1 */
121 =1
122 =1
123 =1
124 =1 /*------------------------------------------------------------------------------*/
125 =1 //LCD初始化設定
126 =1 void lcd_init()
127 =1 {
128 1 =1 lcd_wcmd(0x38); //設置LCD為16X2顯示,5X7點陣,八位數據接口
129 1 =1 lcd_wcmd(0x06); //LCD顯示光標移動設置(光標地址指針加1,整屏顯示不移動)
130 1 =1 lcd_wcmd(0x0c); //LCD開顯示及光標設置(光標不閃爍,不顯示"_")
131 1 =1 lcd_wcmd(0x01); //清除LCD的顯示內容
132 1 =1 }
133 =1
134 =1
135 =1 #endif
4 #include"AT24C02.H"
1 =1 /*-----------------------------------------*/
2 =1 //File: AT24C2.H
3 =1 //Data: 2008.6.9//3:06 PM
4 =1 //Amend: 08-8-1 19:31
5 =1 //Version: Ver0.2
6 =1 //Thanks: Web
7 =1 //Code: I love C51~
8 =1
9 =1
10 =1
11 =1 /*-----------------------------------------*/
12 =1 #ifndef __AT24C02_H__
13 =1 #define __AT24C02_H__
14 =1
15 =1
16 =1
17 =1 /*-----------------------------------------*/
18 =1 #define unchar unsigned char
19 =1 #define unint unsigned int
20 =1 #define unlong unsigned long
21 =1
22 =1
23 =1
24 =1 /*-----------------------------------------*/
25 =1 #define WriteDeviceAddress 0xa0 //寫
26 =1 #define ReadDeviceAddress 0xa1 //讀
27 =1 sbit SCL = P2^3; //串行接口定義
28 =1 sbit SDA = P2^4;
29 =1
30 =1
C51 COMPILER V7.50 LCD1602_AT24C02 04/24/2009 18:29:35 PAGE 4
31 =1
32 =1 /*-----------------------------------------*/
33 =1 //函數聲明
34 =1 void delay1ms(void); //延時1ms
35 =1 void Start(void); //開始總線
36 =1 void Stop(void); //結束總線
37 =1 void NoAck(void); //發送ACk0
38 =1 bit TestAck(void); //測試ACk
39 =1 void Write8Bit(unchar input); //寫入8個Bit 到24C02
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -