标题: 单片机空调控制模拟源程序与Proteus仿真原理图 [打印本页]

作者: 信仰之跃    时间: 2021-4-23 09:42
标题: 单片机空调控制模拟源程序与Proteus仿真原理图
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <reg52.h>          
  2. #include <intrins.h>
  3. #include "lcd1602.h"
  4. #include "delay.h"
  5. #include "ds18b20.h"
  6. #include "key.h"
  7. unsigned long S;
  8. #define uchar unsigned char  
  9. #define uint  unsigned int
  10. uchar data disdata[5];// 百、十、个、小数位1、小数位2、        小数位3、
  11. uchar data disdata1[6];
  12. uint tvalue,time,Level,High,t; // 温度值
  13. uchar tflag; // 温度正负标志
  14. bit K1flag;
  15. bit K2flag;
  16. bit K3flag;
  17. void Display() // 温度值显示
  18. {
  19.         uchar flagdat;
  20.         disdata[0]=tvalue/1000+0x30; // 百位数
  21.         disdata[1]=tvalue%1000/100+0x30;// 十位数
  22.         disdata[2]=tvalue%100/10+0x30; // 个位数
  23.         disdata[3]=tvalue%10+0x30; // 小数位
  24.        
  25.         if(tflag==0)
  26.                 flagdat=0x2b; // 正温度显示符号 :+
  27.         else
  28.                 flagdat=0x2d; // 负温度显示负号 :-

  29.         if(disdata[0]==0x30)
  30.         {
  31.                 disdata[0]=0x20; // 如果百位为 0,不显示
  32.                 if(disdata[1]==0x30)
  33.                 {
  34.                         disdata[1]=0x20; // 如果百位为 0,十位为 0 也不显示
  35.                 }
  36.         }
  37.         if(disdata1[0]==0x30)
  38.         {
  39.                 disdata1[0]=0x20; // 如果百位为 0,不显示
  40.                 if(disdata1[1]==0x30)
  41.                 {
  42.                         disdata1[1]=0x20; // 如果百位为 0,十位为 0 也不显示
  43.                 }
  44.         }
  45.         if(disdata1[3]==0x30)
  46.         {
  47.                 disdata1[3]=0x20; // 如果百位为 0,不显示
  48.                 if(disdata1[4]==0x30)
  49.                 {
  50.                         disdata1[4]=0x20; // 如果百位为 0,十位为 0 也不显示
  51.                 }
  52.         }       
  53.         wr_com(0x80+0x0C);  // 定位数据指针的位置:第二行第八个字符处
  54.         wr_dat(disdata[1]);  // 显示十位
  55.         wr_com(0x80+0x0D);  // 定位数据指针的位置:第二行第九个字符处
  56.         wr_dat(disdata[2]);  // 显示个位
  57.         wr_com(0x80+0x0E);  // 定位数据指针的位置:第二行第十个字符处
  58.         wr_dat(0x2e); // 显示小数点
  59.         wr_com(0x80+0x0F);  // 定位数据指针的位置:第二行第十一个字符处
  60.         wr_dat(disdata[3]);  // 显示小数位

  61. }
  62. void main()
  63. {       
  64.         init_play();  // 调用 lcd 初始化显示子函数
  65.         while(1)
  66.         {
  67.                 keyscan();
  68.                 read_temp(); // 调用 ds18b20 读取温度
  69.                 Display(); // 调用温度显示子函数
  70.         }
  71. }
复制代码

所有资料51hei提供下载:
空调仿真.zip (93.69 KB, 下载次数: 75)


作者: 独孤飘飘    时间: 2021-5-10 10:53
楼主,仿真打开一直显示被破坏或者与原理图不符是什么原因呢
作者: xixihaha12345    时间: 2021-6-20 17:04
图很清晰,思路很明确




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1