📄 adc0809电压表.lst
字号:
C51 COMPILER V8.05a ADC0809电压表 04/15/2009 13:51:24 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE ADC0809电压表
OBJECT MODULE PLACED IN adc0809电压表.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE adc0809电压表.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<stdio.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 uchar code tab0[]="AD0809数字电压表";
6 uchar code tab1[]="Vx = V";
7 sbit sid=P0^1;//12864数据输入
8 sbit sck=P0^0;//12864时钟输入
9 sbit st=P3^0;
10 sbit oe=P3^1;
11 sbit eoc=P3^2;
12 sbit clk=P3^3;
13 #define com 0 //指令标志
14 #define dat 1 //数据标志
15 //uint temp,a1,a2,a3,a;
16 uchar dis[16];
17 float ftemp;
18 //********12864相关函数*****************//
19
20 void w_12864byte(uchar byte)//写字节
21 {
22 1 uchar i;
23 1 for(i=0;i<8;i++)
24 1 {
25 2 sck=0;
26 2 byte<<=1;
27 2 sid=CY;
28 2 sck=1;
29 2 sck=0;
30 2 }
31 1 }
32
33 void w_12864(bit dat_com,uchar byt) //写入函数
34 {
35 1 uchar temp;
36 1 if(dat_com==0) //为零,写入指令
37 1 temp=0xf8; //11111,RS(0),RW(0),0
38 1 else //否则,写入数据
39 1 temp=0xfa; //11111,RS(1),RW(0),0
40 1 w_12864byte(temp);
41 1 w_12864byte(byt&0xf0); //写入高四位
42 1 w_12864byte(byt<<4); //写入低四位
43 1
44 1 }
45
46 void init_12864(void)//初始化12864
47 {
48 1 w_12864(com,0x30); //基本指令功能.
49 1 w_12864(com,0x0c); //显示打开,关光标,反白关.
50 1 w_12864(com,0x01); //清屏指令.
51 1 w_12864(com,0x06); //AC自动加一
52 1 }
53
54 void lcd_display()
55 {
C51 COMPILER V8.05a ADC0809电压表 04/15/2009 13:51:24 PAGE 2
56 1 uchar i;
57 1 w_12864(com,0x80);
58 1 for(i=0;i<16;i++)
59 1 {
60 2 w_12864(dat,tab0[i]);
61 2 }
62 1 w_12864(com,0x90);
63 1 for(i=0;i<10;i++)
64 1 {
65 2 w_12864(dat,tab1[i]);
66 2 }
67 1
68 1 }
69
70 uchar get_0809()
71 { uint temp=0;
72 1 st=0;
73 1 st=1;
74 1 st=0;
75 1 while(eoc==0);//等待AD转换完毕
76 1 oe=1;
77 1 // P1++;
78 1 // if(P1==256)
79 1 // P1=0;
80 1 temp=P1;
81 1 oe=0;
82 1 return(temp);
83 1 }
84 void adc0809_data(uint temp)
85 {
86 1 uchar i;
87 1 w_12864(com,0x80);
88 1 for(i=0;i<16;i++)
89 1 {
90 2 w_12864(dat,tab0[i]);
91 2 }
92 1
93 1 ftemp = temp*0.0196*44;
94 1 sprintf(dis,"%f",ftemp);//把温度值写入数组内存
95 1 w_12864(com,0x90+2);
96 1 for(i=0;i<5;i++)
97 1 w_12864(dat,dis[i]);
98 1
99 1
100 1 }
101 /*
102 void delay(uint z)
103 {
104 uint x,y;
105 for(x=0;x<z;x++)
106 for(y=0;y<120;y++);
107 }
108 */
109 void time0(void) interrupt 1
110 {
111 1 clk=~clk;
112 1 }
113 void main()
114 {
115 1 TMOD=0x02;
116 1 TR0=1;
117 1 EA=1;
C51 COMPILER V8.05a ADC0809电压表 04/15/2009 13:51:24 PAGE 3
118 1 ET0=1;
119 1 TH0=0xfe;
120 1 TL0=0xfe; //500KHz
121 1 P1=0xff;
122 1 init_12864();
123 1 lcd_display();
124 1 while(1)
125 1 {
126 2 adc0809_data(get_0809());
127 2
128 2
129 2 }
130 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 292 ----
CONSTANT SIZE = 31 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 1
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 + -