ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:909.61KB ,
资源ID:2965999      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-2965999.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字温度计的设计word版本.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

数字温度计的设计word版本.docx

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