| 
				打卡等级:初来乍到打卡总天数:6最近打卡:2024-10-04 22:23:07 注册会员 
 
 
	积分50 
 | 
 
| 我学习的老师是冲哥的STC32G试验箱,买的是9.4试验箱,结果再写NTC测温时,出现了问题。 我写的程序实现的功能是用NTC测温,并将温度值显示到数码管上,同时,数码管设置的默认显示是8个"-"。
 但是我发现我的程序只有当有printf时,数码管才会显示温度数值,如果把printf函数注释掉,数码管就是默认值。
 我是嵌入式小白,第一次学ADC,求求大佬帮我看看吧{:5_270:}{:5_270:}{:5_270:}
  main.c文件:(头文件包含没粘贴过来)
 
 bit TIM_10MS_FLAG=0;
 uint32_t TimCount=0;
 
 int Temperature;
 u8 Temp_Count=0;
 void main()
 {
 
 USB_Download();
 Timer0_Init();
 ADC_Init();
 
 while(1)
 {
 
 if(DeviceState != DEVSTATE_CONFIGURED )
 continue;
 if(bUsbOutReady)
 {
 usb_OUT_done();
 printf("温度:%d\n",ADC_Value_INT);
 }
 if(TIM_10MS_FLAG==1)
 {
 TIM_10MS_FLAG=0;
 Temp_Count++;
 if(Temp_Count==20)
 {
 Temp_Count=0;
 
 Temperature=NTC_CalTemp(ADC_Value_INT);
 if(Temperature>=0)
 {
 SEG0=Temperature/1000%10;
 SEG1=Temperature/100%10;
 SEG2=Temperature/10%10 + 10;
 SEG3=Temperature%10;
 }
 else
 {
 Temperature= -Temperature;
 SEG0=22;
 SEG1=Temperature/100%10;
 SEG2=Temperature/10%10 + 10;
 SEG3=Temperature%10;
 }
 
 }
 }
 
 
 }
 
 }
 
 
 
 
 void Timer0_Isr(void) interrupt 1
 {
 SEG_LED_Display();
 TimCount++;
 if(TimCount>10)
 {
 TIM_10MS_FLAG=1;
 TimCount=0;
 }
 }
 
 ADC使用的是中断方式:  (ADC.c)
 
 
 u16 ADC_Value_INT;
 u16 BGV=0;
 
 
 void ADC_Init(void)   //
 {
 P1M0 = 0x00;
 P1M1 = 0x08;  //配置P13口位高阻输入
 ADC_CONTR &=0XE0;  //选择通道
 ADC_CONTR |=0X03;
 
 ADC_POWER=1;  //打开ADC电源
 ADCTIM=0X3F;  //配置ADC时序
 ADCCFG=0X2F;  //设置ADC转换结果为右对齐 ADC时钟为最低
 EADC=1;
 ADC_START=1;
 }
 
 void ADC_Isr(void) interrupt 5
 {
 ADC_FLAG=0;
 ADC_Value_INT= (ADC_RES<<8) + ADC_RESL;
 ADC_START=1;
 }
 
 ADC.H文件:
 
 #ifndef _ADC_H
 #define _ADC_H
 
 void ADC_Init(void);
 extern u16 ADC_Value_INT;
 
 #endif
 
 NTC.c文件:
 
 
 #include <STC32G.H>
 #include "stc.h"
 
 u16 NTC_ADCTable[191]=
 {
 //  ADC数值          温度        序号
 3956,         //-40        0
 3947,         //-39        1
 3937,         //-38        2
 3928,         //-37        3
 3918,         //-36        4
 3908,         //-35        5
 3897,         //-34        6
 3886,         //-33        7
 3874,         //-32        8
 3863,         //-31        9
 3850,         //-30        10
 3837,         //-29        11
 3824,         //-28        12
 3810,         //-27        13
 3795,         //-26        14
 3779,         //-25        15
 3763,         //-24        16
 3747,         //-23        17
 3729,         //-22        18
 3711,         //-21        19
 3693,         //-20        20
 3673,         //-19        21
 3653,         //-18        22
 3632,         //-17        23
 3610,         //-16        24
 3587,         //-15        25
 3563,         //-14        26
 3538,         //-13        27
 3513,         //-12        28
 3486,         //-11        29
 3458,         //-10        30
 3429,         //-9        31
 3400,         //-8        32
 3369,         //-7        33
 3338,         //-6        34
 3305,         //-5        35
 3272,         //-4        36
 3238,         //-3        37
 3203,         //-2        38
 3167,         //-1        39
 3131,         //0                40
 3093,         //1                41
 3055,         //2                42
 3016,         //3                43
 2977,         //4                44
 2936,         //5                45
 2895,         //6                46
 2853,         //7                47
 2811,         //8                48
 2768,         //9                49
 2725,         //10        50
 2682,         //11        51
 2637,         //12        52
 2593,         //13        53
 2548,         //14        54
 2503,         //15        55
 2458,         //16        56
 2412,         //17        57
 2366,         //18        58
 2321,         //19        59
 2275,         //20        60
 2229,         //21        61
 2184,         //22        62
 2138,         //23        63
 2093,         //24        64
 2048,         //25        65
 2003,         //26        66
 1959,         //27        67
 1914,         //28        68
 1871,         //29        69
 1827,         //30        70
 1784,         //31        71
 1742,         //32        72
 1699,         //33        73
 1658,         //34        74
 1617,         //35        75
 1577,         //36        76
 1537,         //37        77
 1498,         //38        78
 1459,         //39        79
 1421,         //40        80
 1384,         //41        81
 1348,         //42        82
 1312,         //43        83
 1277,         //44        84
 1243,         //45        85
 1209,         //46        86
 1176,         //47        87
 1144,         //48        88
 1112,         //49        89
 1082,         //50        90
 1052,         //51        91
 1023,         //52        92
 994 ,        //53        93
 966 ,        //54        94
 939 ,        //55        95
 913 ,        //56        96
 887 ,        //57        97
 862 ,        //58        98
 837 ,        //59        99
 813 ,        //60        100
 790 ,        //61        101
 768 ,        //62        102
 745 ,        //63        103
 724 ,        //64        104
 703 ,        //65        105
 683 ,        //66        106
 664 ,        //67        107
 644 ,        //68        108
 626 ,        //69        109
 608 ,        //70        110
 590 ,        //71        111
 573 ,        //72        112
 557 ,        //73        113
 541 ,        //74        114
 525 ,        //75        115
 510 ,        //76        116
 495 ,        //77        117
 481 ,        //78        118
 468 ,        //79        119
 454 ,        //80        120
 441 ,        //81        121
 429 ,        //82        122
 417 ,        //83        123
 405 ,        //84        124
 394 ,        //85        125
 382 ,        //86        126
 372 ,        //87        127
 361 ,        //88        128
 351 ,        //89        129
 342 ,        //90        130
 332 ,        //91        131
 323 ,        //92        132
 314 ,        //93        133
 305 ,        //94        134
 297 ,        //95        135
 289 ,        //96        136
 281 ,        //97        137
 274 ,        //98        138
 266 ,        //99        139
 259 ,        //100        140
 252 ,        //101        141
 246 ,        //102        142
 239 ,        //103        143
 233 ,        //104        144
 227 ,        //105        145
 221 ,        //106        146
 215 ,        //107        147
 209 ,        //108        148
 204 ,        //109        149
 199 ,        //110        150
 194 ,        //111        151
 189 ,        //112        152
 184 ,        //113        153
 179 ,        //114        154
 175 ,        //115        155
 170 ,        //116        156
 166 ,        //117        157
 162 ,        //118        158
 158 ,        //119        159
 154 ,        //120        160
 150 ,        //121        161
 146 ,        //122        162
 143 ,        //123        163
 139 ,        //124        164
 136 ,        //125        165
 133 ,        //126        166
 129 ,        //127        167
 126 ,        //128        168
 123 ,        //129        169
 120 ,        //130        170
 117 ,        //131        171
 114 ,        //132        172
 112 ,        //133        173
 109 ,        //134        174
 106 ,        //135        175
 104 ,        //136        176
 101 ,        //137        177
 99         ,        //138        178
 97         ,        //139        179
 94         ,        //140        180
 92         ,        //141        181
 90         ,        //142        182
 88         ,        //143        183
 86         ,        //144        184
 84         ,        //145        185
 82         ,        //146        186
 80         ,        //147        187
 78         ,        //148        188
 76         ,        //149        189
 75         ,        //150        190
 };
 
 int NTC_CalTemp(u16 ADC_Value)
 {
 u8 i;
 float Temp;
 if(ADC_Value > NTC_ADCTable[0] || ADC_Value < NTC_ADCTable[190])  //超出测量范围的输出 9999
 {
 return 9999;
 }
 else
 {
 for(i=0;i<=190;i++)
 {
 if( ADC_Value == NTC_ADCTable)
 {
 return (i-40)*10;
 }
 else if(ADC_Value < NTC_ADCTable)  continue;
 else
 {
 Temp = NTC_ADCTable[i-1] - ADC_Value;  //分子
 Temp = Temp/(NTC_ADCTable[i-1] - NTC_ADCTable)*10; // x/y 为小数部分 为了返回小数,再乘以10
 Temp += (i-1-40)*10;   //返回温度的整数部分
 return Temp;
 }
 }
 }
 return 9999;
 }
 
 
 NTC.H文件:
 
 #ifndef _NTC_H
 #define _NTC_H
 
 int NTC_CalTemp(u16 ADC_Value);
 
 #endif
 
 
 
 
 
 
 
 
 
 
 | 
 
有printf函数的现象   
  |