tlc549_2.lst
来自「自己的平时一些制作 现在整理一下 与大家一起分享」· LST 代码 · 共 126 行
LST
126 行
C51 COMPILER V7.20 TLC549_2 06/12/2007 14:00:15 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE TLC549_2
OBJECT MODULE PLACED IN tlc549_2.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE tlc549_2.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 //定义显示数组d[4]以及一个变量n用于动态显示
3 unsigned char d[4],n;
4 //定义显示用的查找表
5 unsigned char code table[11]={0x3f,6,0x5b,0x4f,
6 0x66,0x6d,0x7d,7,0x7f,0x6f,0}; //0--9 最后再有一个空
7 unsigned char code digit[4]={0xf8,0xf4,0xf2,0xf1};
8
9 //定义TLC549转换接口
10 sbit tlc549_cs=P1^6;
11 sbit tlc549_clk=P1^5;
12 sbit tlc549_data=P1^4;
13
14 //定义可位寻址的变量adc用于存放ad转换值,
15 //以及一个bit变量用于移位,它指示了ad的最最低一位
16 unsigned char bdata adc;
17 sbit adclow=adc^0;
18
19 //ad转换函数
20 unsigned char adconvert()
21 { unsigned char i;
22 1 tlc549_cs=1;
23 1 tlc549_cs=0;
24 1 tlc549_clk=0;
25 1 for(i=0;i<8;i++)
26 1 { tlc549_clk=1;
27 2 adclow=tlc549_data;
28 2 tlc549_clk=0;
29 2 if(i<7) adc=adc<<1;
30 2 }
31 1 tlc549_clk=0;
32 1 tlc549_cs=1;
33 1 return(adc);
34 1 }
35
36 /******将ad转换BCD码值显示出来**********/
37 vtobcd(unsigned int hexs)
38 {
39 1 d[0]=hexs/1000;
40 1 hexs=hexs % 1000;
41 1 d[1]=hexs/100;
42 1 hexs=hexs % 100;
43 1 d[2]=hexs/10;
44 1 hexs=hexs % 10;
45 1 d[3]=hexs;
46 1 }
47
48 /*******延时函数***********/
49 void delay(unsigned char dy)
50 {
51 1 while(--dy);
52 1 }
53
54 /*****定时器初始化函数********/
55 void Init_Timer (void)
C51 COMPILER V7.20 TLC549_2 06/12/2007 14:00:15 PAGE 2
56 {
57 1 TMOD=0X21;
58 1 TR0=1;
59 1 ET0=1;
60 1 EA=1;
61 1 }
62
63 /**********定时器0中断服务函数*****************/
64 void timer0() interrupt 1 using 1
65 {
66 1 TH0=(65536-1000)/256;
67 1 TL0=(65536-1000)%256;
68 1 n=n++;
69 1 if(n>3) n=0;
70 1 P0=0;
71 1 P2=digit[n];
72 1 P0=table[d[n]];
73 1 }
74
75 /******主函数main*************/
76 //效果就是多次测量求平均值然后显示测量的电压值;
77 //电压值用mv为单位,范围 0--5000mv
78 //由于测量值的范围为0--255,所以中间要乘一个系数19.6
79
80 /*****************************/
81 void main()
82 {
83 1 unsigned char ad,j;
84 1 unsigned int sum_ad=0;
85 1 Init_Timer();
86 1 //变量初始化
87 1 n=0;
88 1 while(1)
89 1 {
90 2
91 2 for(j=0;j<10;j++)
92 2 { ad=adconvert(); //ad转换
93 3 sum_ad=sum_ad+ad;
94 3 delay(250);
95 3 }
96 2 sum_ad=sum_ad/10;
97 2 vtobcd(sum_ad*19.6); //将ad转换BCD码
98 2 for(j=0;j<200;j++) delay(250);
99 2 }
100 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 288 ----
CONSTANT SIZE = 15 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?