51单片机串口控制继电器Proteus仿真,温湿度显示程序

[复制链接]
查看4 | 回复0 | 2021-6-10 01:16:07 | 显示全部楼层 |阅读模式
完整的仿真文件和单片机程序在本文尾部附件里
1.png 2.png

部分源码:
  1. void UART_INIT()
  2. {
  3.         SM0 = 0;
  4.         SM1 = 1;//串口工作方式1
  5.         REN = 1;//允许串口接收
  6.         EA = 1;//开总中断
  7.         ES = 1;//开串口中断
  8.         TMOD|= 0x20;//8位自动重装模式
  9.         TH1 = 0xfd;
  10.         TL1 = 0xfd;//9600波特率
  11.         TR1 = 1;//启动定时器1
  12. }

  13. void delay(uint a)
  14. {
  15.         uint x,y;
  16.         for(x=0;x++;x<a)
  17.                 for(y=0;y++;y<110);
  18. }

  19. void display()
  20. {
  21.                 LcdShowStr(0,0,"T:");             //温度
  22.                 DisplayOneStr(2,0,tmp()%1000/100);     
  23.                 DisplayOneStr(3,0,tmp()%1000%100/10);     
  24.                 LcdShowStr(4,0,".");   
  25.                 DisplayOneStr(5,0,tmp()%10);   
  26.                 LcdShowStr(6,0,"C");   
  27.       
  28.                 LcdShowStr(8,0,"H:");            //湿度
  29.                 DisplayOneStr(10,0,num1/100);   
  30.                 DisplayOneStr(11,0,num1%100/10);     
  31.                 DisplayOneStr(12,0,num1%100%10);     
  32.                 LcdShowStr(13,0,"%");   

  33.                 tmpchange();

  34.         if(key1==0 && buzz==1)
  35.         {
  36.                                         TI=1;
  37.                                         printf("Humidity:");//湿度
  38.                                         printf("%x",num1/100);
  39.                                         printf("%x",num1%100/10);
  40.                                         printf("%x",num1%100%10);
  41.                                         printf("%%\n");
  42.                                         printf("\n");
  43.                                         printf("\n");

  44.                                         printf("Temperature:");//温度
  45.                                         printf("%x",tmp()%1000/100);
  46.                                         printf("%x.",tmp()%1000%100/10);
  47.                                         printf("%x",tmp()%10);
  48.                                         printf(".C\n");
  49.                                         printf("\n");
  50.                                         printf("\n");
  51.                                         printf("\n");
  52.                 while(key1==0);

  53.         }

  54. }

  55. /******外部中断1初始化******/
  56. void intlInit()
  57. {
  58.         EA=1;//开总中断
  59.         EX1=1;//开外部中断1中断
  60.                 EX0=1;//开外部中断0中断
  61.         IT1=1;//中断方式1,下降沿方式
  62.                 IT0=1;//中断方式1,下降沿方式
  63. }
  64. void main()
  65. {
  66.         InitLcd1602();   
  67.         inter();
  68.         UART_INIT();
  69.         intlInit();
  70.         TR0=1;
  71.         buzz=0;
  72.         while(1)
  73.         {
  74.                 EA=0;
  75.                 num1=du24c02(0);//湿度
  76.                 num1=num1/2.55;

  77.                 EA=1;      
  78.                 delay(5);               
  79.                 display();
复制代码
完整单片机源码和proteus仿真文件.rar (324.62 KB, 售价: 3 工控币)
回复

使用道具 举报

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

本版积分规则