📄 text2.lst
字号:
C51 COMPILER V7.08 TEXT2 05/21/2008 21:43:27 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE TEXT2
OBJECT MODULE PLACED IN Text2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text2.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include <string.h>
3 #include <intrins.h>
4
5 #define uchar unsigned char
6 #define uint unsigned int
7 #define COUNT 10
8 #define NODE_ADDR 64
9 sbit SID = P1^3; //数据
10 sbit SCLK = P1^4; //时钟
11 sbit P15=P1^5;
12 unsigned char buffer[COUNT];
13 int pointer;
14
15 void lcm_w_word(unsigned char *str) ; //写字符 例:lcm_w_word("您好!");
16 void lcm_w_test(bit start,unsigned char ddata); //(0,指令) (1,数据)
17 void lcm_w_byte(unsigned char bbyte); //写一个字节给lcm
18 void delaynms(unsigned int di); //延时
19 void lcm_init(void); //lcm初始化
20 void lcm_clr(void); //清屏
21
22
23
24 void DelayM(unsigned int a);
25 void DelayM(unsigned int a){//延时函数 1MS/次
26 1 unsigned char i;
27 1 while( --a != 0){
28 2 for(i = 0; i < 125; i++); //一个 ; 表示空语句,CPU空转。
29 2 } //i 从0加到125,CPU大概就耗时1毫秒
30 1 }
31
32 /**********************************************************************/
33 //延迟函数 11us
34 void delay(int t)
35 {
36 1 for(;t>0;t--);
37 1 }
38 /****************************************************************************/
39 //初始化LCM
40 void lcm_init(void) {
41 1 delaynms(100); //启动等待,等LCM讲入工作状态
42 1 lcm_w_test(0,0x30); //8 位介面,基本指令集
43 1 lcm_w_test(0,0x0c); //显示打开,光标关,反白关
44 1 lcm_w_test(0,0x01); //清屏,将DDRAM的地址计数器归零
45 1 delaynms(100); //启动等待,等LCM讲入工作状态
46 1
47 1 }
48 /******************************************************************************/
49 //写指令或数据 (0,指令) (1,数据)
50 void lcm_w_test(bit start, unsigned char ddata) {
51 1 unsigned char start_data,Hdata,Ldata;
52 1 if(start==0)
53 1 start_data=0xf8; //0:写指令
54 1 else
55 1 start_data=0xfa; //1:写数据
C51 COMPILER V7.08 TEXT2 05/21/2008 21:43:27 PAGE 2
56 1
57 1 Hdata=ddata&0xf0; //取高四位
58 1 Ldata=(ddata<<4)&0xf0; //取低四位
59 1 lcm_w_byte(start_data); //发送起始信号
60 1 delaynms(5); //延时是必须的
61 1 lcm_w_byte(Hdata); //发送高四位
62 1 delaynms(5); //延时是必须的
63 1 lcm_w_byte(Ldata); //发送低四位
64 1 delaynms(5); //延时是必须的
65 1 }
66
67 /******************************************************************************/
68 //发送一个字节(底层函数)
69 void lcm_w_byte(unsigned char bbyte) {
70 1 unsigned char i;
71 1 for(i=0;i<8;i++){
72 2 SID=bbyte&0x80; //取出最高位
73 2 SCLK=1;
74 2 SCLK=0;
75 2 bbyte<<=1; //左移
76 2 }
77 1 }
78
79 /******************************************************************************/
80 //延时(LCM占用)
81 void delaynms(unsigned int di) {
82 1 unsigned int da,db;
83 1 for(da=0;da<di;da++);
84 1 for(db=0;db<10;db++);
85 1 }
86
87 /*****************************************************************************/
88 //清屏函数
89 void lcm_clr(void){
90 1 lcm_w_test(0,0x01);
91 1 delaynms(40); //启动等待,等LCM讲入工作状态
92 1
93 1 }
94
95 /*****************************************************************************/
96 //向LCM发送一个字符串,长度64字符之内。
97 //应用:lcm_w_word("您好!");
98 void lcm_w_word(unsigned char *str){
99 1 while(*str != '\0'){
100 2 lcm_w_test(1,*str++);
101 2 }
102 1 *str = 0;
103 1 }
104
105
106 main()
107 {
108 1 int i=0;
109 1 lcm_init();//初始化液晶显示器
110 1 lcm_w_word("上位机为");
111 1 // for(i;i<11;i++)
112 1 // {lcm_w_test(1,buffer[i]);}
113 1 P15=0;
114 1 SCON=0xf0;
115 1 TMOD=0x20;
116 1 TH1=0xfd;
117 1 TR1=1;
C51 COMPILER V7.08 TEXT2 05/21/2008 21:43:27 PAGE 3
118 1 ET1=0;
119 1 ES=1;
120 1 EA=1;
121 1 pointer=0;
122 1
123 1 while(pointer<COUNT);
124 1
125 1 for(i;i<4;i++)
126 1 {lcm_w_test(1,buffer[i]);}
127 1 lcm_w_word("度");
128 1 {DelayM(100);}
129 1
130 1 }
131
132 void receive(void) interrupt 4 using 3
133 {
134 1 RI=0;
135 1 if(RB8==1)
136 1 {
137 2 if(SBUF==NODE_ADDR) SM2=0;
138 2 return;
139 2 }
140 1 buffer[pointer++]=SBUF;
141 1 if(pointer>=COUNT)
142 1 {
143 2 SM2=1;
144 2 }
145 1 // lcm_w_test(1,buffer[pointer]);
146 1
147 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 414 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 9
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -