我學的是強電專業,這個是我畢業設計做的一個很簡單而且被我做的很粗糙的的東西,用了DHT11,DS1302,HMI的顯示屏,還有一個5v直流電動機,兩個按鍵,一個按鍵是單片機根據溫度自動控制電機轉速,一個是手動按,按一下就加快轉速,當然,時間,溫度,濕度,電機轉速,是否是自動控制,風速多少,都在HMI顯示屏顯示出來了,我的電機是和單片機I/O口直接連接,因為能動能顯示出不同風速的差別,畢業設計嘛,沒想的太多,程序和編寫HMI的界面軟件都在在附件里面,本來是不想寫這個帖子的,因為自己做的非常粗糙,但是想到自己這兩個月又是實物又是論文,大家找資料并不容易,希望我的東西能給大家一些參考的東西,因為已經出來工作了,所以關于實物的圖片并沒有了,只能給大家看一下,HMI顯示的仿真界面,為什么不用TFT的呢。其實我有一塊TFT的,但是焊接的時候弄壞了,之后淘寶一看人機界面多高端啊,就買了個HMI的,對了HMI的軟件是
2.png (4.76 KB, 下載次數: 104)
下載附件
2017-8-14 10:59 上傳
usart hmi
1.png (130 KB, 下載次數: 147)
下載附件
這個就是界面,真的和仿真的是一樣的
2017-8-14 10:57 上傳
0.png (48.61 KB, 下載次數: 97)
下載附件
2017-8-14 16:22 上傳
STC90C516RD+單片機源程序如下:
- #include <reg52.h>
- #include <hmi.h>
- #include <intrins.h>
- #include <stdio.h>
- #include <THT11.h>
- #include <delay.h>
- #include <i2c.h>
- #include <ds1302.h>
- #define KeyPort P0
- sbit DCOUT = P1^7;
- unsigned char PWM_ON=0,PWM; //定義速度等級
- #define CYCLE 10 //周期
- unsigned char KeyScan(void);//鍵盤掃描
- void Init_Timer0(void);
- unsigned char code digit[10]={"0123456789"};
- int TMEPX[6]={40,50,60,70,80,90};
- unsigned char second,minute,Value,hour,day,month,year;
- unsigned char m,n,j,k,h,g;
- unsigned char ReadValue;
- char str[1];
- main()
- {
- unsigned char num;
- PWM_ON=0;
- Init_Timer0();
- Init_DS1302();
- system_Ini();
- DHT11_ReadTempAndHumi();
- m=temp_value/10/10;
- n=temp_value/10%10;
- j=humi_value/10/10;
- k=humi_value/10%10;
- while(1)
- {
- Delay_1ms(10);
- Delay_1ms(10);
- ReadValue = ReadSet1302(0x81);
- second=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
- h=second/10;
- g=second%10;
- UART_Send_Str("t10.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(h+48);
- UART_Send_Byte(34);
- UART_Send_END();
- UART_Send_Str("t11.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(g+48);
- UART_Send_Byte(34);
- UART_Send_END();
- ReadValue = ReadSet1302(0x83);
- minute=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
- h=minute/10;
- g=minute%10;
- UART_Send_Str("t8.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(h+48);
- UART_Send_Byte(34);
- UART_Send_END();
- UART_Send_Str("t9.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(g+48);
- UART_Send_Byte(34);
- UART_Send_END();
- ReadValue = ReadSet1302(0x85);
- hour=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
- h=hour/10;
- g=hour%10;
- UART_Send_Str("t6.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(h+48);
- UART_Send_Byte(34);
- UART_Send_END();
- UART_Send_Str("t7.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(g+48);
- UART_Send_Byte(34);
- UART_Send_END();
- ReadValue = ReadSet1302(0x87);
- day=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
- h=day/10;
- g=day%10;
- UART_Send_Str("t4.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(h+48);
- UART_Send_Byte(34);
- UART_Send_END();
- UART_Send_Str("t5.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(g+48);
- UART_Send_Byte(34);
- UART_Send_END();
- ReadValue = ReadSet1302(0x89);
- month=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
- h=month/10;
- g=month%10;
- UART_Send_Str("t2.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(h+48);
- UART_Send_Byte(34);
- UART_Send_END();
- UART_Send_Str("t3.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(g+48);
- UART_Send_Byte(34);
- UART_Send_END();
- ReadValue = ReadSet1302(0x8d);
- year=((ReadValue&0xf0)>>4)*10 + (ReadValue&0x0F);
- h=year/10;
- g=year%10;
- UART_Send_Str("t0.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(h+48);
- UART_Send_Byte(34);
- UART_Send_END();
- UART_Send_Str("t1.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(g+48);
- UART_Send_Byte(34);
- UART_Send_END();
- UART_Send_Str("t12.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(j+48);
- UART_Send_Byte(34);
- UART_Send_END();
- UART_Send_Str("t13.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(k+48);
- UART_Send_Byte(34);
- UART_Send_END();
- UART_Send_Str("t14.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(m+48);
- UART_Send_Byte(34);
- UART_Send_END();
- UART_Send_Str("t15.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(n+48);
- UART_Send_Byte(34);
- UART_Send_END();
- num=KeyScan();
- if(num==1)
- {
- UART_Send_Str("t16.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(1+48);
- UART_Send_Byte(34);
- UART_Send_END();
- UART_Send_Str("t18.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(0+48);
- UART_Send_Byte(34);
- UART_Send_END();
- if(PWM_ON<CYCLE)
- PWM_ON++;
- }
- else if(num==2)
- {
- UART_Send_Str("t16.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(0+48);
- UART_Send_Byte(34);
- UART_Send_END();
- UART_Send_Str("t18.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(1+48);
- UART_Send_Byte(34);
- UART_Send_END();
- if(m==0)
- PWM_ON=1;
- if(m==1)
- PWM_ON=3;
- if(m==2)
- PWM_ON=5;
- if(m==3)
- PWM_ON=9;
- }
- PWM=PWM_ON%10;
- UART_Send_Str("t20.txt=");
- UART_Send_Byte(34);
- UART_Send_Byte(PWM+48);
- UART_Send_Byte(34);
- UART_Send_END();
-
- DelayMs(100);
- }
- }
- void Init_Timer0(void)
- {
- TMOD |= 0x01;
- EA=1;
- ET0=1;
- TR0=1;
- }
- void Timer0_isr(void) interrupt 1
- {
- static unsigned char count;
- TH0=(65536-2000)/256;
- TL0=(65536-2000)%256;
- if (count==PWM_ON)
- {
- DCOUT = 0;
- }
- count++;
- if(count == CYCLE)
- {
- count=0;
- if(PWM_ON!=0)
- DCOUT = 1;
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
20170405 - 副本 (2).zip
(93.78 KB, 下載次數: 24)
2017-8-14 11:00 上傳
點擊文件名下載附件
程序 下載積分: 黑幣 -5
|