找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16374|回复: 20
打印 上一主题 下一主题
收起左侧

单片机+PT100热电阻测温Proteus仿真+代码与实物制作

  [复制链接]
跳转到指定楼层
楼主
1.设计仿真电路及编程的方框图
•PT100测温得到电压信号---•运算放大器----•AD数模转换----•单片机控制数码管的显示

制作出来的实物图如下:

2.仿真电路方案及元器件选择。
系统以单片机为核心,通过A/D转化芯片对放大之后的信号进行采样。然后传送给单片机,单片机控制数码管的显示。
51系列单片机一块、四位数码管一个、AD0808芯片一块,运放一块
四、仿真电路原理设计
(1)测量桥路设计、元器件及工作电源参数;运算放大器电路、元器件参数;
(2) 单片机与AD转换器、LED接口电路,选择元器件参数;
(3) C51编程。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:

  1. #include  <reg51.h>        //头文件
  2. #include<math.h>
  3. #define uchar unsigned char                                                                                           //宏定义
  4. #define uint unsigned int
  5. sbit STAR=P2^4;
  6. sbit EOC=P2^6;
  7. sbit CLOCK=P2^5;
  8. sbit OE=P2^7;
  9. sbit P20=P2^0;
  10. sbit P21=P2^1;
  11. sbit P22=P2^2;
  12. sbit P23=P2^3;
  13. uchar getdata;
  14. double change;
  15. long int temp;       
  16. uchar code table1[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,
  17.                                                     0x6F,0x40};//0-9,-,无小数点
  18. uchar code table2[]={0xbF,0x86,0xdB,0xcF,0xe6,0xeD,0xfD,0x87,0x7fF,
  19.                                                     0xeF};//0-9,小数点
  20. uchar dispbuf[6];

  21. /****************************************************************************************/
  22. //延时函数:带有入口参数m,代表ms毫秒
  23. //
  24. /****************************************************************************************/
  25. void delay_ms(uchar m)
  26. {
  27.         unsigned int i,j;
  28.         for(i=0;i<m;i++)
  29.         {
  30.                 for(j=0;j<123;j++)
  31.                 {;}
  32.         }
  33. }
  34. /****************************************************************************************/
  35. //
  36. //数码管显示程序
  37. /****************************************************************************************/
  38. void display()
  39. {
  40.         P0=table1[dispbuf[3]];//显示百位
  41.         P20=0;
  42.         P21=1;
  43.         P22=1;
  44.         P23=1;

  45.         delay_ms(8);
  46.         P0=0X00;
  47.         P0=table1[dispbuf[2]];//显示十位
  48.         P20=1;
  49.         P21=0;
  50.         P22=1;
  51.         P23=1;
  52.         delay_ms(8);
  53.         P0=0X00;
  54.         P0=table2[dispbuf[1]];//显示个位
  55.         P20=1;
  56.         P21=1;
  57.         P22=0;
  58.         P23=1;
  59.         delay_ms(8);
  60.         P0=0X00;
  61.         P0=table1[dispbuf[0]];//显示小数位
  62.         P20=1;
  63.         P21=1;
  64.         P22=1;
  65.         P23=0;
  66.         delay_ms(8);
  67.         P0=0X00;
  68. }
  69. /****************************************************************************************/
  70. //
  71. //计算温度
  72. /****************************************************************************************/
  73. void PT100()
  74. {
  75. double deal,U;//
  76.         U=5.0/255.0*getdata;
  77.         deal=U*20*10;
  78.         temp=(long int)deal;
  79.         if(U<5.2&&U>0)
  80.         {   
  81.     dispbuf[0]=temp%10;
  82.                 dispbuf[1]=temp/10%10;
  83.                 dispbuf[2]=temp/100%10;
  84.                 dispbuf[3]=temp/1000;       
  85.         }
  86.         else
  87. {
  88.           dispbuf[0]=0;
  89.                 dispbuf[1]=0;
  90.                 dispbuf[2]=0;
  91.                 dispbuf[3]=0;       
  92.          
  93.   }
  94.                
  95. display();
  96. }

  97. /****************************************************************************************/
  98. //
  99. //
  100. /****************************************************************************************/
  101. main()
  102. {
  103.         TMOD = 0x10;                                        //定时器0,工作在定时器方式
  104.         TH1        = (65536-200)/256;                //0x3c
  105.         TL1 = (65536-200)%256;                //0xb0
  106.         EA = 1;                                                        //开总中断
  107.         ET1 = 1;                                                //打开(允许)定时器1中断
  108.         TR1 =1;                                                        //开始(启动)定时
  109.   while(1)
  110.         {
  111.           STAR=0;
  112.                 OE=0;
  113.                 STAR=1;
  114.                 STAR=0;
  115.                 while(EOC==0)
  116.                 {
  117.                   OE=1;
  118. ……………………

  119. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
热电阻测温.zip (2.06 MB, 下载次数: 839)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏13 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:328014 发表于 2019-5-17 05:47 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:540405 发表于 2019-5-17 07:50 | 只看该作者
不错的资料。
回复

使用道具 举报

地板
ID:558731 发表于 2019-6-10 10:22 | 只看该作者
为什么我的放大器的输出会一直变大?
回复

使用道具 举报

5#
ID:678776 发表于 2020-1-1 11:06 | 只看该作者
好资料
回复

使用道具 举报

6#
ID:679155 发表于 2020-1-2 16:58 | 只看该作者
你好,问一下为什么显示温度被卡死在100度?
回复

使用道具 举报

7#
ID:582615 发表于 2020-1-16 01:19 来自手机 | 只看该作者
51有你更精彩!加油
回复

使用道具 举报

8#
ID:582615 发表于 2020-1-16 22:17 | 只看该作者
怎么能在lcd1602上面显示。lcd1602定义uchar才能显示数字,而您这个是定义double显示。求回复。C:\Users\caby\Desktop
回复

使用道具 举报

9#
ID:518378 发表于 2020-3-6 20:28 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

10#
ID:641995 发表于 2020-3-11 22:08 | 只看该作者
请问一下,您的Pt100接线头和我看到的那个宝上的不一样,您是不是改造过了?具体怎么做的呢
回复

使用道具 举报

11#
ID:508917 发表于 2020-3-14 14:40 | 只看该作者
测温范围是多少啊
回复

使用道具 举报

12#
ID:358536 发表于 2020-5-3 00:25 | 只看该作者
这个好像不对,数据一直在变
回复

使用道具 举报

13#
ID:659068 发表于 2020-6-30 09:04 | 只看该作者
好东西,
回复

使用道具 举报

14#
ID:795520 发表于 2020-7-2 12:24 | 只看该作者
代码在哪里呀
我怎么看不见
回复

使用道具 举报

15#
ID:796717 发表于 2020-7-3 18:56 来自手机 | 只看该作者
下载了怎么没有剩下的代码啊
回复

使用道具 举报

16#
ID:328014 发表于 2020-7-3 19:01 | 只看该作者
hgs2020 发表于 2020-7-3 18:56
下载了怎么没有剩下的代码啊

有,在TP100测温AD显示.c 文件里面 用记事本打开即可看到
回复

使用道具 举报

17#
ID:798737 发表于 2020-7-6 22:58 | 只看该作者
我怎下载下来打不开
回复

使用道具 举报

18#
ID:850737 发表于 2020-12-15 14:20 来自手机 | 只看该作者
请问下 放大电路模块设计思路,元器件参数是怎么算的
回复

使用道具 举报

19#
ID:1034505 发表于 2022-6-14 23:12 来自手机 | 只看该作者
这个电路很不错,谢谢楼主分享
回复

使用道具 举报

20#
ID:3666 发表于 2022-7-26 10:18 | 只看该作者
采集到的电压如何转成温度值呀?谢谢
回复

使用道具 举报

21#
ID:1068233 发表于 2023-5-12 17:47 | 只看该作者
仿真用8V,你实物哪来的8V
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表