📄 ad9851.lst
字号:
C51 COMPILER V6.23a AD9851 07/23/2007 20:15:57 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE AD9851
OBJECT MODULE PLACED IN AD9851.OBJ
COMPILER INVOKED BY: d:\Programs and Files\Keil\C51\BIN\C51.EXE AD9851.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*********************************************
2 ;Controller:ST7920
3 ;MCU:AT89C52 ,晶体频率:12MHz
4 ;LCM:128*64
5 ;LCM型号:FYD12864-0402
6 ;LCM 接口:1:GND 2:VCC 3:V0 4.RS 5:RW 6:E 7--14:DB0-DB7 15:PSB16:NC 17:RST 18:Vout 19:A 20:K
7 ;**********************************************/
8 #include<stdio.h>
9 #include<intrins.h>
10 #include<reg52.h>
11 #include<string.h>
12 #define DATAOUT P0
13 /*
14 sbit RS=P2^3;
15 sbit RW=P2^5;
16 sbit E=P2^7;
17 sbit PSB=P2^6;
18 sbit RST=P2^0; */
19
20 sbit CS=P2^5;// RS=P2^5;
21 sbit SID=P2^4;//RW=P2^4;
22 sbit CLK=P2^3;//sbit E=P2^3;
23 sbit PSB=P2^2;
24
25 sbit BF=DATAOUT^7;
26
27
28
29 /**********************************
30 **********************************
31
32 延时
33
34 *********************************
35 *********************************/
36 void delayms(unsigned int time) //延时约time个ms
37 {
38 1 unsigned char i;
39 1 while(time--)
40 1 {
41 2 for(i=0;i<120;i++) ;
42 2 }
43 1 }
44 void delay50us(unsigned int time) //延时约time个us
45 {
46 1 unsigned char i;
47 1 while(time--)
48 1 {
49 2 for(i=0;i<6;i++) ;
50 2 }
51 1 }
52 void init()
53 {
54 1 PSB=0; //串口模式
55 1 CS=0; //CS为片选线,高电平有效
C51 COMPILER V6.23a AD9851 07/23/2007 20:15:57 PAGE 2
56 1 CLK=0; //时钟为上升沿有效,因此平时为0
57 1 delayms(1);
58 1 }
59
60 void writedata(unsigned char dat) //不同于以前的writedata,这里仅仅写入一个8位的数据
61 {
62 1 unsigned char i;
63 1 for(i=8;i>0;i--)
64 1 {
65 2 if(dat&0x80) SID=1;
66 2 else SID=0;
67 2 _nop_();_nop_(); _nop_();_nop_(); _nop_();
68 2 CLK=1;
69 2 dat=dat<<1;
70 2 CLK=0;
71 2 }
72 1 }
73
74
75 void writecmd(unsigned char dat) //跟以前一样,写入控制字
76 {
77 1 CS=1;
78 1 CLK=0;
79 1 writedata(0xf8); //写入这个表明以后写入的数据是指令数据而不是显示数据
80 1 writedata(dat&0xf0);
81 1 dat=dat<<4;
82 1 writedata(dat&0xf0);
83 1 CS=0;
84 1 }
85
86
87
88
89
90 void displaydat(unsigned char address,unsigned char dat[])//显示的数据
91 { unsigned char i; //dat【】的长度
92 1 unsigned char d;
93 1 unsigned char test;
94 1 unsigned char temp;
95 1 i=strlen(dat);
96 1 writecmd(address); //写入地址
97 1 writecmd(address); //不知道为啥要写入两次才行,一次的话,怎么写都在0x80这个位置
98 1 CS=1; //允许操作
99 1 writedata(0xfa); //写入这个表明以后写入的数据是显示数据而不是指令数据
100 1 for(d=0;d<i;d++)
101 1 {
102 2 temp=dat[d];
103 2 test=temp&0xf0; //先写高四位,再写入4个0
104 2 writedata(test);
105 2 temp=temp<<4;
106 2 test=temp&0xf0; //再写低四位,再写入4个0
107 2 writedata(test);
108 2 }
109 1 CS=0;
110 1 }
111
112
113 //*********
114 void main()
115 { unsigned char d[2]="wo";
116 1 init();
117 1
C51 COMPILER V6.23a AD9851 07/23/2007 20:15:57 PAGE 3
118 1 // writecmd(0x30); delay50us(1);
119 1
120 1 d[2]="wo";
121 1 while(1)
122 1 {
123 2 writecmd(0x30); delay50us(1);
124 2 writecmd(0x0c); delay50us(1);
125 2 writecmd(0x01); delay50us(1);
126 2 // writecmd(0x0c); delay50us(1);
127 2
128 2
129 2
130 2
131 2
132 2 // writecmd(0x88);
133 2 // CS=1;
134 2 // writedata(0xfa);
135 2 // writedata(0x40);
136 2 // writedata(0x10);
137 2
138 2 // writecmd(0x88);
139 2 // displaydat(0x80,"C U I T"); delayms(1000);
140 2 displaydat(0x94,"C U I T"); delayms(1000);
141 2 }
142 1
143 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 262 ----
CONSTANT SIZE = 13 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -