?? 四位數顯溫度計.lst
字號:
C51 COMPILER V8.17 四位數顯蝊度計 04/12/2009 13:11:09 PAGE 1
C51 COMPILER V8.17, COMPILATION OF MODULE 四位數顯蝊度計
OBJECT MODULE PLACED IN 四位數顯溫度計.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 四位數顯溫度計.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG51.H>
2 unsigned char code dispbitcode[]={0X01,0X02,0X04,0X08};//顯示位
3 unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
4 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
5 unsigned char dispbuf[]={0X01,0X02,0X04,0X08};
6 unsigned char dispcount;
7 unsigned char getdata;
8 unsigned char getdata;
9 unsigned long temp;
10 unsigned int time;
11 sbit ST=P3^0;
12 sbit OE=P3^1;
13 sbit EOC=P3^2;
14 sbit CLK=P3^3;
15 sbit LED1=P3^6;
16 sbit LED2=P3^7;
17 sbit SPK=P3^5;
18
19 void delay1(unsigned int t)
20 {
21 1 unsigned char i;
22 1 while(t--)
23 1 for(i=0;i<10;i++);
24 1 }
25
26 void dis_make()//顯示處理函數
27 {
28 1 /*temp=(unsigned long)getdata*2350;
29 1 temp=temp/128;
30 1 if(temp<2732)
31 1 {
32 1 temp=2732-temp;
33 1 dispbuf[0]=11;
34 1 }
35 1 else
36 1 {
37 1 temp=temp-2732;
38 1 dispbuf[0]=0;
39 1 }
40 1 if(temp<155) //如果在-55~+155顯示
41 1 {
42 1 dispbuf[1]=temp/100; //取百位
43 1 dispbuf[2]=(temp%100)/10;//取十位
44 1 dispbuf[3]=(temp%100)%10;//取個位
45 1 }
46 1 else//如果超出-55~+155顯示“----”
47 1 {
48 1 dispbuf[0]=11;
49 1 dispbuf[1]=11;
50 1 dispbuf[2]=11;
51 1 dispbuf[3]=11;
52 1 } */
53 1 dispbuf[1]=getdata/100;
54 1 dispbuf[2]=(getdata%100)/10;
55 1 dispbuf[3]=(getdata%100)%10;
C51 COMPILER V8.17 四位數顯蝊度計 04/12/2009 13:11:09 PAGE 2
56 1 for(dispcount=1;dispcount<4;dispcount++)
57 1 {
58 2 P2 = 0X00;
59 2 P1=~dispcode[dispbuf[dispcount]];
60 2 P2=dispbitcode[dispcount];
61 2 delay1(20);
62 2 }
63 1
64 1 }
65
66 void main(void)//主函數
67 {
68 1 TMOD=0x12;
69 1 TH0=0XF6;//0.01ms時間
70 1 TL0=0XF6;
71 1 TH1=(65536-4000)/256;//4ms時間
72 1 TL1=(65536-4000)%256;
73 1 //TR1=1;
74 1 //TR0=1;
75 1 //ET0=1;
76 1 //ET1=1;
77 1 EA=1;
78 1 getdata=148;
79 1 while(1)
80 1 {
81 2 ST=0;
82 2 ST=1; //清空數據
83 2 ST=0; //開始記轉換
84 2 while(!EOC);//等待數據轉換完成
85 2 OE=1; //使能數據輸出
86 2 getdata=P0;//獲取數據
87 2 OE=0; //禁止數據輸出
88 2 dis_make(); //顯示處理
89 2 // if(time>3000){TR1=0;while(1);}
90 2 }
91 1 }
92 void t0(void) interrupt 1 //100K方波
93 {
94 1 CLK=~CLK;
95 1 }
96 void t1(void) interrupt 3
97 {
98 1 TH1=(65536-4000)/256;
99 1 TL1=(65536-4000)%256;
100 1
101 1 P2 = 0X00; //消影
102 1 P1=~dispcode[dispbuf[dispcount]];//顯示字符
103 1 P2=dispbitcode[dispcount];
104 1 dispcount++;
105 1 if(dispcount>3)
106 1 {
107 2 dispcount=0;
108 2 }
109 1 time++;
110 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 215 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V8.17 四位數顯蝊度計 04/12/2009 13:11:09 PAGE 3
DATA SIZE = 12 ----
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 + -