找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3883|回复: 1
收起左侧

基于STC90C516RD+单片机的自动风扇制作 含源码

[复制链接]
ID:215444 发表于 2017-8-14 11:01 | 显示全部楼层 |阅读模式
我学的是强电专业,这个是我毕业设计做的一个很简单而且被我做的很粗糙的的东西,用了DHT11,DS1302,HMI的显示屏,还有一个5v直流电动机,两个按键,一个按键是单片机根据温度自动控制电机转速,一个是手动按,按一下就加快转速,当然,时间,温度,湿度,电机转速,是否是自动控制,风速多少,都在HMI显示屏显示出来了,我的电机是和单片机I/O口直接连接,因为能动能显示出不同风速的差别,毕业设计嘛,没想的太多,程序和编写HMI的界面软件都在在附件里面,本来是不想写这个帖子的,因为自己做的非常粗糙,但是想到自己这两个月又是实物又是论文,大家找资料并不容易,希望我的东西能给大家一些参考的东西,因为已经出来工作了,所以关于实物的图片并没有了,只能给大家看一下,HMI显示的仿真界面,为什么不用TFT的呢。其实我有一块TFT的,但是焊接的时候弄坏了,之后淘宝一看人机界面多高端啊,就买了个HMI的,对了HMI的软件是 2.png usart hmi

这个就是界面,真的和仿真的是一样的

这个就是界面,真的和仿真的是一样的


0.png

STC90C516RD+单片机源程序如下:
  1. #include <reg52.h>
  2. #include <hmi.h>
  3. #include <intrins.h>
  4. #include <stdio.h>
  5. #include <THT11.h>
  6. #include <delay.h>
  7. #include <i2c.h>
  8. #include <ds1302.h>
  9. #define KeyPort P0
  10. sbit DCOUT = P1^7;
  11. unsigned char PWM_ON=0,PWM;   //定义速度等级
  12. #define CYCLE 10        //周期
  13. unsigned char KeyScan(void);//键盘扫描
  14. void Init_Timer0(void);
  15. unsigned char code digit[10]={"0123456789"};
  16. int  TMEPX[6]={40,50,60,70,80,90};
  17. unsigned char second,minute,Value,hour,day,month,year;  
  18. unsigned char m,n,j,k,h,g;
  19. unsigned char ReadValue;
  20. char str[1];  
  21. main()
  22. {                
  23.                 unsigned char num;                  
  24.                 PWM_ON=0;
  25.                 Init_Timer0();   
  26.                 Init_DS1302();
  27.                 system_Ini();
  28.                 DHT11_ReadTempAndHumi();
  29.                 m=temp_value/10/10;
  30.                 n=temp_value/10%10;
  31.                 j=humi_value/10/10;
  32.                 k=humi_value/10%10;
  33.     while(1)
  34.    {
  35. Delay_1ms(10);
  36.                  Delay_1ms(10);
  37.                  ReadValue = ReadSet1302(0x81);
  38.                  second=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
  39.                         h=second/10;
  40.                         g=second%10;
  41.                 UART_Send_Str("t10.txt=");  
  42.                 UART_Send_Byte(34);                  
  43.                 UART_Send_Byte(h+48);
  44.                  UART_Send_Byte(34);
  45.           UART_Send_END();
  46.                          UART_Send_Str("t11.txt=");  
  47.                 UART_Send_Byte(34);                  
  48.                 UART_Send_Byte(g+48);
  49.                  UART_Send_Byte(34);
  50.           UART_Send_END();
  51.                 ReadValue = ReadSet1302(0x83);
  52.                 minute=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
  53.                 h=minute/10;
  54.                 g=minute%10;       
  55.                         UART_Send_Str("t8.txt=");  
  56.                 UART_Send_Byte(34);                  
  57.                 UART_Send_Byte(h+48);
  58.                  UART_Send_Byte(34);
  59.           UART_Send_END();
  60.                          UART_Send_Str("t9.txt=");  
  61.                 UART_Send_Byte(34);                  
  62.                 UART_Send_Byte(g+48);
  63.                  UART_Send_Byte(34);
  64.           UART_Send_END();
  65.                  ReadValue = ReadSet1302(0x85);
  66.      hour=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
  67.                  h=hour/10;
  68.                 g=hour%10;
  69. UART_Send_Str("t6.txt=");  
  70.                 UART_Send_Byte(34);                  
  71.                 UART_Send_Byte(h+48);
  72.                  UART_Send_Byte(34);
  73.           UART_Send_END();
  74.                          UART_Send_Str("t7.txt=");  
  75.                 UART_Send_Byte(34);                  
  76.                 UART_Send_Byte(g+48);
  77.                  UART_Send_Byte(34);
  78.           UART_Send_END();
  79. ReadValue = ReadSet1302(0x87);  
  80.      day=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
  81. h=day/10;
  82.                 g=day%10;       
  83. UART_Send_Str("t4.txt=");  
  84.                 UART_Send_Byte(34);                  
  85.                 UART_Send_Byte(h+48);
  86.                  UART_Send_Byte(34);
  87.           UART_Send_END();
  88.                          UART_Send_Str("t5.txt=");  
  89.                 UART_Send_Byte(34);                  
  90.                 UART_Send_Byte(g+48);
  91.                  UART_Send_Byte(34);
  92.           UART_Send_END();       
  93. ReadValue = ReadSet1302(0x89);  
  94.      month=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);       
  95. h=month/10;
  96.                 g=month%10;
  97. UART_Send_Str("t2.txt=");  
  98.                 UART_Send_Byte(34);                  
  99.                 UART_Send_Byte(h+48);
  100.                  UART_Send_Byte(34);
  101.           UART_Send_END();
  102.                          UART_Send_Str("t3.txt=");  
  103.                 UART_Send_Byte(34);                  
  104.                 UART_Send_Byte(g+48);
  105.                  UART_Send_Byte(34);
  106.           UART_Send_END();
  107. ReadValue = ReadSet1302(0x8d);
  108.      year=((ReadValue&0xf0)>>4)*10 + (ReadValue&0x0F);
  109. h=year/10;
  110.                 g=year%10;       
  111.         UART_Send_Str("t0.txt=");  
  112.                 UART_Send_Byte(34);                  
  113.                 UART_Send_Byte(h+48);
  114.                  UART_Send_Byte(34);
  115.           UART_Send_END();
  116.                          UART_Send_Str("t1.txt=");  
  117.                 UART_Send_Byte(34);                  
  118.                 UART_Send_Byte(g+48);
  119.                  UART_Send_Byte(34);
  120.           UART_Send_END();
  121.                         UART_Send_Str("t12.txt=");  
  122.                 UART_Send_Byte(34);                  
  123.                 UART_Send_Byte(j+48);
  124.                  UART_Send_Byte(34);
  125.           UART_Send_END();
  126.                 UART_Send_Str("t13.txt=");  
  127.                 UART_Send_Byte(34);                  
  128.                 UART_Send_Byte(k+48);
  129.                  UART_Send_Byte(34);
  130.           UART_Send_END();
  131.                 UART_Send_Str("t14.txt=");  
  132.                 UART_Send_Byte(34);                  
  133.                 UART_Send_Byte(m+48);
  134.                  UART_Send_Byte(34);
  135.           UART_Send_END();
  136.                 UART_Send_Str("t15.txt=");  
  137.                 UART_Send_Byte(34);                  
  138.                 UART_Send_Byte(n+48);
  139.                  UART_Send_Byte(34);
  140.           UART_Send_END();
  141.                 num=KeyScan();   
  142.    if(num==1)
  143.       {
  144.                                 UART_Send_Str("t16.txt=");  
  145.                 UART_Send_Byte(34);                  
  146.                 UART_Send_Byte(1+48);
  147.                  UART_Send_Byte(34);
  148.           UART_Send_END();
  149.                  UART_Send_Str("t18.txt=");  
  150.                 UART_Send_Byte(34);                  
  151.                 UART_Send_Byte(0+48);
  152.                  UART_Send_Byte(34);
  153.           UART_Send_END();                               
  154.            if(PWM_ON<CYCLE)
  155.            PWM_ON++;               
  156.           }       
  157.    else if(num==2)
  158.       {
  159.                                                 UART_Send_Str("t16.txt=");  
  160.                 UART_Send_Byte(34);                  
  161.                 UART_Send_Byte(0+48);
  162.                  UART_Send_Byte(34);
  163.           UART_Send_END();
  164.                         UART_Send_Str("t18.txt=");  
  165.                 UART_Send_Byte(34);                  
  166.                 UART_Send_Byte(1+48);
  167.                  UART_Send_Byte(34);
  168.           UART_Send_END();       
  169.           if(m==0)
  170.                         PWM_ON=1;
  171.                 if(m==1)
  172.                         PWM_ON=3;
  173.                 if(m==2)
  174.                         PWM_ON=5;
  175.                 if(m==3)
  176.                         PWM_ON=9;
  177.           }       
  178.   PWM=PWM_ON%10;
  179.                 UART_Send_Str("t20.txt=");  
  180.                 UART_Send_Byte(34);                  
  181.                 UART_Send_Byte(PWM+48);
  182.                  UART_Send_Byte(34);
  183.           UART_Send_END();               
  184.                
  185. DelayMs(100);
  186.   }
  187. }       
  188. void Init_Timer0(void)
  189. {
  190. TMOD |= 0x01;                               
  191. EA=1;           
  192. ET0=1;           
  193. TR0=1;           
  194. }
  195. void Timer0_isr(void) interrupt 1
  196. {
  197. static unsigned char count;
  198. TH0=(65536-2000)/256;                  
  199. TL0=(65536-2000)%256;
  200. if (count==PWM_ON)
  201.     {
  202.      DCOUT = 0;            
  203.     }
  204.   count++;
  205. if(count == CYCLE)      
  206.     {
  207.     count=0;
  208.         if(PWM_ON!=0)   
  209.            DCOUT = 1;      

  210.     }
  211. ……………………

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

所有资料51hei提供下载:
20170405 - 副本 (2).zip (93.78 KB, 下载次数: 24)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:215444 发表于 2017-8-14 11:01 | 显示全部楼层
因为在论坛找了不少资料,希望能帮助到大家。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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