- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验6--数字温测量系统设计实验说明
数字温度测量系统设计
热敏电阻 1个(25度时的阻值为100K)
100K欧可调电阻 若干
741/LM324运算放大器 若干
其他阻值电阻 若干
三、设计与验收要求(当场验收)
1、提前设计好电路,两组同学分别在第15、16周三晚上来实验室领取元件,进行电路焊接、调试;
2、在30度~70度之间,每间隔5度测一次,至少测5组数据;
3、显示的温度误差不超过1度;
4、将调试好的电路板贴上姓名和测试数据上交。
四、附加提高(有兴趣同学可以尝试,做出来验收通过者考核成绩加分)
不采用数字电压表,采用模数转换器、单片机及LED来完成温度的数字显示,有兴趣同学可近一步设计硬件电路,编写软件(提供参考软件附后),实现数字温度测量功能。
本次实验占总实验成绩的比重较大,请同学们认真做好本次实验。
数字温度测量参考程序
#include c8051f410.h // SFR declarations
#define SYSCLK// SYSCLK frequency in Hz
code unsigned char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
code unsigned char position[4]={0xfe,0xfd,0xfb,0xf7};
unsigned char dis_buff[4]; // 显示缓冲区
bit point_on,set_on,alarm_win; //小数点和闪烁标记 警告标记
sfr16 TMR2RL = 0xca; // Timer2 reload value
sfr16 TMR2 = 0xcc; // Timer2 counter
sfr16 ADC0 = 0xbd; // ADC0 result
sfr16 ADC0LT =0xc5; //上限
sfr16 ADC0GT =0xc3; //下限
void display(void)
{
static char posit=0;
P2 = 0xFF;
P0 = led_7[dis_buff[posit]];
if (posit==2) //第二位小数点亮
P0 |= 0x80;
P2 = position[posit];
if (++posit =4 )
posit = 0;
}
void i_to_disbuf(int v) // 电压值送显示缓冲区函数
{
char i;
//v=v/10;
for (i=0;i=2;i++)
{
dis_buff[i] = v%10;
v=v/10;
}
dis_buff[3]=v;
}
void Timer2_Init (void) //16-bit auto-reload,100uS
{
TMR2CN = 0x00; // Stop Timer2; Clear TF2;
// use SYSCLK as timebase, 16-bit auto-reload
CKCON = 0x30; // select SYSCLK for timer 2 source
TMR2RL = - (SYSCLK / 10000); // init reload value for 100uS
TMR2 = 0xffff; // set to reload immediately
TR2 = 1; // start Timer2
ET2 = 1; // Timer2 interrupt enabled
}
void Timer2_ISR (void) interrupt 5
{
static char time_4ms_ok=0;
static char counter=0;
counter++;
if(counter==40)
{
display(); // LED 扫描显示 4ms一次
counter=0;
time_4ms_ok++;
if (time_4ms_ok==125)//500ms到了,警告闪烁
{
time_4ms_ok=0;
}
}
TF2H = 0;
}
void ADC0_Init (void)
{
ADC0CN =0x03; // ADC0 disabled, normal tracking,
// conversion triggered on TMR2 overflow
REF0
文档评论(0)