画出仿真电路图,用电位器仿真热电阻,用ADC0832采集电压信息,用数码管进行显示。编写程序进行AD采集,线性化,标度变换,显示。

参考电路:包含恒流源电路、减法电路、反向比例放大电路,使用100Ω电阻和38.5滑动变阻器模拟PT100热电阻,数码管可显示0-100摄氏度。

参考程序:

#include<reg51.h>
#include<intrins.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int

uchar Get_AD_Result();  //定义模数转换结果
void ET0_init();//定时器0中断
void ET1_init();//定时器1中断

/*ADC0832引脚位定义*/
sbit cS = P3^3;
sbit CLK = P3^0;
sbit DIDO = P3^1;

/*数码管位选*/
sbit qian = P2^0;
sbit bai = P2^1;
sbit shi = P2^2;
sbit ge = P2^3;

/*数码管段选 */
unsigned char date[4];
unsigned char code tb[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
                           0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x80};//共阴极七段数码0-F

void main()
{
ET0_init();  //定时器0初始化
ET1_init();  //定时器l初始化
ET0 = 1;     //打开定时器0中断
TR0 = 1;     //打开定时器0
ET1 = 1;     //打开定时器1中断
TR1 = 1;     //打开定时器1
EA = 1;      //打开总中断
CLK = 0;     // ADC0832初始化
cS = 1;         
while(1);
}

/*定时器T0中断*/
void ET0_INT()interrupt 1
{
static uchar i;
TH0 =(65536-2000)/256;//重装初值 2ms
TL0 = (65536-2000)%256;
P2 |= 0xff;//消影
switch(i)//位选,选择点亮的数码管,
{
case(0):
P0 = date[0];qian = 0;break;//显示千位
case(1):
P0= date[1];bai = 0;break; //显示百位
case(2):
P0= date[2];shi = 0; break;//显示十位
case(3):
P0 = date[3];ge = 0;break;//显示个位
}
  i++;
if(i==4)
{
  i = 0;
}
}

/*定时器T1中断服务子程序*/
void ET1_INT() interrupt 3
{
uint vt;
uchar AD;
TH1=(65536-2000)/256;//重装初值     2ms
TL1 =(65536-2000)%256;

AD = Get_AD_Result();
vt = 29013-100*sqrt(336701-(long int)(785012*AD/10000)+578)/2;//标度变换
//vt = vt/3.19;

date[0] =tb[vt/1000];
date[1] =tb[vt/100%10];
date[2] =tb[vt/10%10];
date[3] =tb[vt%10];
}

/*获取AD转换结果(0)通道*/
uchar Get_AD_Result()//包含11个CLK下降沿
{
uchar i,date;
cS = 1;     
_nop_;//对于延时很短的,要求在us级的,采用“_nop_”函数
CLK =0;
cS = 0;//开始工作

DIDO = 1; CLK = 1; _nop_; CLK = 0; _nop_; //CLK第一个下降沿来到时,DI=1,表示起始信号
DIDO = 1; CLK = 1;_nop_; CLK = 0;_nop_;   //CLK第二个下降沿
DIDO = 0; CLK = 1; _nop_; CLK = 0;_nop_;  //CLK第三个下降沿,DI输入1,0选择通道ch0
DIDO = 1;//释放总线

for(i = 0; i< 8; i++) //第3个下降沿之后,DI输入失去作用,第4个下降沿到第11个下降沿
{
CLK = 0;              // cLk处于下降沿,每一个下降沿D0端输入下一个
_nop_;

if(DIDO) date |= 0x01;  // dat = dat | 0x01 , dat和0x01做“或”的运算,意思是最低位置l,其它位保持不变。
CLK = 1;_nop_;         //CLk处于上升沿
date <<= 1;             //数据左移
}

return (date);
cS = 1;// ADC0832停止工作
}

/*定时器T0初始化*/
void ET0_init()
{
TMOD = 0x01;//模式设置0000 0001 采用的是定时器0(M1=0,M0=1)
TH0 = (65536-2000)/256; //2ms溢出
TL0 = (65536-2000)%256;
}

/*定时器1初始化*/
void ET1_init()
{
TMOD = 0x10;//模式设置0001 0000采用的是定时器1(M1=1,M0=0)
TH1 = (65536-2000)/256;//2ms 溢出
TL1 =(65536-2000)%256;
}

热电阻温度测量线性化显示实验相关推荐

  1. 数字系统实验—第13周任务(3位数码管动态扫描显示实验含工程与优化)

    数字系统实验--第13周任务 任务书 0.简介 1. 实验操作:1周 2. 完成并在线提交文档(100%) 日志(系统功能描述) 报告(目的 设计 实现 总结) 3. 三位数码管数据显示实验在线验收 ...

  2. pdfstamper生成pdf无法显示汉字_正点原子STM32F4/F7水星开发板资料连载第四十六章 汉字显示实验...

    1)实验平台:正点原子水星 STM32F4/F7 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载 ...

  3. activiti高亮显示图片_【正点原子FPGA连载】第二十章SD卡读BMP图片HDMI显示实验领航者 ZYNQ 之嵌入式开发指南...

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  4. 8255数码管显示0到9_汇编语言--键盘扫描及显示实验(含代码解释)

    实验题目 将8255单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示.键盘采用4X4键盘,每个数码管显示值可为0-F共16个数. 实验具体内容如下:将键盘进行编号, ...

  5. fastreport masterdata每页都显示_ALIENTEK 阿波罗 STM32F767 开发板资料连载十六章 OLED 显示实验...

    1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 http://weixi ...

  6. elementui table某一列是否显示_汇编语言--键盘扫描及显示实验(含代码解释)

    实验题目 将8255单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示.键盘采用4X4键盘,每个数码管显示值可为0-F共16个数. 实验具体内容如下:将键盘进行编号, ...

  7. c语言头文件格式图片_阿波罗 STM32F767 开发板资料连载第四十九章 图片显示实验...

    1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第四十九章 图片显示实验 ...

  8. 【正点原子FPGA连载】第三十九章OV7725摄像头RGB-LCD显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

  9. c语言实现7段数码管显示,七段数码管显示实验.doc

    七段数码管显示实验 单 片 机 实 验 报 告 实验九 七段数码管显示实验 实验目的 学习七段数码管的工作原理: 学习数码管与8051单片机的接口方法: 掌握动态扫描显示技术. 实验原理 如图4.9- ...

最新文章

  1. python http接口_python处理http接口请求
  2. 网络端口的分类和作用
  3. php面向对象的概括图解,简单介绍PHP面向对象
  4. 自己快速提升SCI论文质量的简单方法:分清研究类型,遵从指南修改
  5. 【Luogu3931】SAC E#1 - 一道难题 Tree
  6. 设计模式之-命令模式(Command Pattern)
  7. python导入模块教程_Python 极简教程(二十四) - 导入模块
  8. office2007右键doc,xls
  9. 文件查询之三:文件和目录的批量操作
  10. 吴恩达机器学习ex8:异常检测
  11. 按值对对象属性进行排序
  12. hibernate--生成正向和逆向工程
  13. 根据TTL值判断目标主机的类型
  14. Android开发学习笔记(11):NDK与Cygwin配置手顺
  15. 用户画像方法论与工程化解决方案 pdf_《用户画像》作者:赵宏田
  16. java dagger2_Dagger2用法整理
  17. 围炉听风,新醅试手烫
  18. Android仿人人客户端(v5.7.1)——新鲜事之完整篇
  19. 80后一代开始结婚 独生子女开始承担新的责任
  20. 面试总结-2023届安全面试题总汇

热门文章

  1. 会使用mysql_mysql必知必会--使用MySQL
  2. 问卷星定时抢讲座(可以跳过最后一步智能验证)
  3. PS“矩形工具”的多样式
  4. 新冠无情人有情,ONV助力打造电子防控后盾
  5. 3-Elasticsearch基础操作
  6. 如何使用vue实现搜索输入框实时查询显示
  7. 3秒搜电影,基于Pyqt5的简单电影搜索工具,会Python真牛逼!
  8. 使用winRAR的绿色版的操作
  9. 猿创征文|【电源专题】案例:怎么用万用表测试静态电流IQ
  10. jeecgboot问题解决方案