1、数字温度计的设计word版本数字温度计的设计实验六 数字温度计的设计一、设计目的通过电子技术的综合设计,熟悉一般电子电路综合设计过程、设计要求、应完成的工作内容和具体的设计方法。通过设计有助于复习、巩固以往的学习内容,达到灵活应用的目的。设计完成后在实验室进行自行安装、调试,从而加强学生的动手能力。在该过程中培养从事设计工作的整体概念。二、设计要求1、利用所学的知识,通过上网或到图书馆查阅资料,完成数字温度计的设计;要求写出实验原理,画出原理功能框图,描述其功能。2、需采用单片机STC15W404AS、NTC热敏电阻、共阳数码管等元器件进行设计,试确定设计方案详细工作原理,计算出参数。3、技术
2、指标:1)温度范围: 0 - +100; 误差 2 ;2)选择设计方案;3)根据设计方案分析设计原理及写出详细的硬件电路设计过程;方案概要本设计是利用NTC热敏电阻 MF52E-10K(B=3950)1%精度,作为温度传感器,其输出的信号通过STC15W404AS内部AD进行模数转换,然后STC15W404AS对该温度数据进行处理,并由一个4位一体共阳数码管显示显示温度值。实验报告要求 原理、计算等)1、 根据设计要求确定数字温度计方案,并完成电路设计,分别说明设计方案、电路工作原理:2、完成电路连接并进行数字温度计测试: 参考设计电路图1 参考电路图表1元器件清单图2 参考电路图表2元器件清
3、单图3 数码管引脚图参考程序:*/#define MAIN_Fosc 22118400L /定义主时钟#include STC15Fxxxx.H/* 用户定义宏 */#define Timer0_Reload (65536UL -(MAIN_Fosc / 1000) /Timer 0 中断频率, 1000次/秒/*/#define DIS_DOT 0x20#define DIS_BLACK 16#define DIS_ 17#define AD_Cha 2 /0-4通道/* 本地常量声明 */u8 code t_display= /标准字库共阳/ 0 1 2 3 4 5 6 7 8 9 A B
4、 C D E F 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,/black - H J K L N o P U t G Q r M y 0xff,0xBF,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e, 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x46; /0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -1/*u8
5、 code t_display= /标准字库/ 0 1 2 3 4 5 6 7 8 9 A B C D E F 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,/black - H J K L N o P U t G Q r M y 0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e, 0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0
6、xEF,0x46; /0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -1 */u8 code T_COM=0xEF,0xDF,0xBF,0x7F,0xEF,0xDF,0xBF,0x7F; /位码/* IO口定义 */sbit P_HC595_SER = P40; /pin 14 SER data inputsbit P_HC595_RCLK = P54; /pin 12 RCLk store (latch) clocksbit P_HC595_SRCLK = P43; /pin 11 SRCLK Shift data clock/* 本地变量声明 */u8 LED88; /显示缓
7、冲u8 display_index; /显示位索引bit B_1ms; /1ms标志u8 offled;u16 msecond;/* 本地函数声明 */u16 get_temperature(u16 adc);u16 Get_ADC10bitResult(u8 channel); /channel = 07void Delayms(u16 dlayT);void DisplayScan(void);/*/void main(void) u8 i,k; u16 j; P0M1 = 0; P0M0 = 0; /设置为准双向口 P1M1 = 0; P1M0 = 0; /设置为准双向口 P2M1 =
8、0; P2M0 = 0; /设置为准双向口 P3M1 = 0; P3M0 = 0; /设置为准双向口 P4M1 = 0; P4M0 = 0; /设置为准双向口 P5M1 = 0; P5M0 = 0; /设置为准双向口 P6M1 = 0; P6M0 = 0; /设置为准双向口 P7M1 = 0; P7M0 = 0; /设置为准双向口 display_index = 4; offled = 0; P1ASF = 0x0F; /P1.0 P1.1 P1.2 P1.3做ADC ADC_CONTR = 0xE0; /90T, ADC power on CLK_DIV = CLK_DIV&0xDF; /C
9、LK_DIV.5 ADRJ=0 AUXR = 0x80; /Timer0 set as 1T, 16 bits timer auto-reload, TH0 = (u8)(Timer0_Reload / 256); TL0 = (u8)(Timer0_Reload % 256); ET0 = 1; /Timer0 interrupt enable TR0 = 1; /Tiner0 run EA = 1; /打开总中断 for(k=11;k0;k-) for(i=0; i= 300) /300ms到 msecond = 0; j = Get_ADC10bitResult(AD_Cha); /参数
10、07,查询方式做一次ADC, 返回值就是结果, = 1024 为错误 /j = 768; if(j 1024) LED80 = j / 1000; /显示ADC值 LED81 = (j % 1000) / 100; LED82 = (j % 100) / 10; LED83 = j % 10; if(LED80 = 0) LED80 = 16; else /错误 for(i=0; i4; i+) LED8i = 14; j = Get_ADC10bitResult(3); /参数07,查询方式做一次ADC, 返回值就是结果, = 1024 为错误 j += Get_ADC10bitResult
11、(3); j += Get_ADC10bitResult(3); j += Get_ADC10bitResult(3); if(j = 400) F0 = 0, j -= 400; /温度 = 0度 else F0 = 1, j = 400 - j; /温度 0度 LED84 = j / 1000; /显示温度值 LED85 = (j % 1000) / 100; LED86 = (j % 100) / 10 + DIS_DOT; LED87 = j % 10; if(LED84 = 0) LED84 = DIS_BLACK; if(F0) LED84 = DIS_; /显示- else /错
12、误 for(i=0; i8; i+) LED8i = DIS_; /*/=/ 函数: u16 Get_ADC10bitResult(u8 channel)/ 描述: 查询法读一次ADC结果./ 参数: channel: 选择要转换的ADC./ 返回: 10位ADC结果./ 版本: V1.0, 2012-10-22/=u16 Get_ADC10bitResult(u8 channel) /channel = 07 ADC_RES = 0; ADC_RESL = 0; ADC_CONTR = (ADC_CONTR & 0xe0) | 0x08 | channel; /start the ADC N
13、OP(4); while(ADC_CONTR & 0x10) = 0) ; /wait for ADC finish ADC_CONTR &= 0x10; /清除ADC结束标志 return (u16)ADC_RES 2) | (ADC_RESL & 3);/ MF52E 10K at 25, B = 3950, ADC = 12 bitsu16 code temp_table= 140, /;-40 0 149, /;-39 1 159, /;-38 2 168, /;-37 3 178, /;-36 4 188, /;-35 5 199, /;-34 6 210, /;-33 7 222,
14、 /;-32 8 233, /;-31 9 246, /;-30 10 259, /;-29 11 272, /;-28 12 286, /;-27 13 301, /;-26 14 317, /;-25 15 333, /;-24 16 349, /;-23 17 367, /;-22 18 385, /;-21 19 403, /;-20 20 423, /;-19 21 443, /;-18 22 464, /;-17 23 486, /;-16 24 509, /;-15 25 533, /;-14 26 558, /;-13 27 583, /;-12 28 610, /;-11 2
15、9 638, /;-10 30 667, /;-9 31 696, /;-8 32 727, /;-7 33 758, /;-6 34 791, /;-5 35 824, /;-4 36 858, /;-3 37 893, /;-2 38 929, /;-1 39 965, /;0 40 1003, /;1 41 1041, /;2 42 1080, /;3 43 1119, /;4 44 1160, /;5 45 1201, /;6 46 1243, /;7 47 1285, /;8 48 1328, /;9 49 1371, /;10 50 1414, /;11 51 1459, /;12
16、 52 1503, /;13 53 1548, /;14 54 1593, /;15 55 1638, /;16 56 1684, /;17 57 1730, /;18 58 1775, /;19 59 1821, /;20 60 1867, /;21 61 1912, /;22 62 1958, /;23 63 2003, /;24 64 2048, /;25 65 2093, /;26 66 2137, /;27 67 2182, /;28 68 2225, /;29 69 2269, /;30 70 2312, /;31 71 2354, /;32 72 2397, /;33 73 24
17、38, /;34 74 2479, /;35 75 2519, /;36 76 2559, /;37 77 2598, /;38 78 2637, /;39 79 2675, /;40 80 2712, /;41 81 2748, /;42 82 2784, /;43 83 2819, /;44 84 2853, /;45 85 2887, /;46 86 2920, /;47 87 2952, /;48 88 2984, /;49 89 3014, /;50 90 3044, /;51 91 3073, /;52 92 3102, /;53 93 3130, /;54 94 3157, /;
18、55 95 3183, /;56 96 3209, /;57 97 3234, /;58 98 3259, /;59 99 3283, /;60 100 3306, /;61 101 3328, /;62 102 3351, /;63 103 3372, /;64 104 3393, /;65 105 3413, /;66 106 3432, /;67 107 3452, /;68 108 3470, /;69 109 3488, /;70 110 3506, /;71 111 3523, /;72 112 3539, /;73 113 3555, /;74 114 3571, /;75 11
19、5 3586, /;76 116 3601, /;77 117 3615, /;78 118 3628, /;79 119 3642, /;80 120 3655, /;81 121 3667, /;82 122 3679, /;83 123 3691, /;84 124 3702, /;85 125 3714, /;86 126 3724, /;87 127 3735, /;88 128 3745, /;89 129 3754, /;90 130 3764, /;91 131 3773, /;92 132 3782, /;93 133 3791, /;94 134 3799, /;95 13
20、5 3807, /;96 136 3815, /;97 137 3822, /;98 138 3830, /;99 139 3837, /;100 140 3844, /;101 141 3850, /;102 142 3857, /;103 143 3863, /;104 144 3869, /;105 145 3875, /;106 146 3881, /;107 147 3887, /;108 148 3892, /;109 149 3897, /;110 150 3902, /;111 151 3907, /;112 152 3912, /;113 153 3917, /;114 15
21、4 3921, /;115 155 3926, /;116 156 3930, /;117 157 3934, /;118 158 3938, /;119 159 3942 /;120 160;/* 计算温度 */ 计算结果: 0对应-40.0度, 400对应0度, 625对应25.0度, 最大1600对应120.0度. / 为了通用, ADC输入为12bit的ADC值./ 电路和软件算法设计: Coody/*/#define D_SCALE 10 /结果放大倍数, 放大10倍就是保留一位小数u16 get_temperature(u16 adc) u16 code *p; u16 i; u8
22、 j,k,min,max; adc = 4096 - adc; /Rt接地 p = temp_table; if(adc p160) return (0xffff); min = 0; /-40度 max = 160; /120度 for(j=0; j5; j+) /对分查表 k = min / 2 + max / 2; if(adc = pk) max = k; else min = k; if(adc = pmin) i = min * D_SCALE; else if(adc = pmax) i = max * D_SCALE; else / min temp max while(min
23、 = max) min+; if(adc = pmin) i = min * D_SCALE; break; else if(adc pmin) min-; i = pmin; /min j = (adc - i) * D_SCALE / (pmin+1 - i); i = min; i *= D_SCALE; i += j; break; return i;void Delayms(u16 dlayT) u16 i,j; for(i=0;idlayT;i+) for(j=0;j1280;j+) _nop_(); /* 显示扫描函数 */void DisplayScan(void) u8 i; for(i=0;i= 8) display_index = 4; /8位结束回0 /* Timer0 1ms中断函数 */void timer0 (void) interrupt TIMER0_VECTOR DisplayScan(); /1ms扫描显示一位 B_1ms = 1; /1ms标志附件:1 、NTC热敏电阻原理及应用2、STC15Fxxxx.H程序头文件3、ST
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2