以51單片機為內核,DS18B20檢測溫度,電機驅動模塊驅動散熱風扇,OLED顯示,還有兩個獨立按鍵控制電機轉速
單片機源程序如下:
- /************************************************************************************
- * Others: none;
- *
- * Function List:
- *
- * 1. void delay(unsigned int z) -- 主函數中用于調整顯示效果的延時函數,STC89C52 12MHZ z=1時大約延時1ms,其他頻率需要自己計算
- * 2. void main(void) -- 主函數
- *
- * History: none;
- *
- *************************************************************************************/
- //#include "reg52.h"
- #include "intrins.h"
- #include "codetab.h"
- #include "LQ12864.h"
- sbit GN=P1^5;
- sbit D1=P1^6;
- sbit D2=P1^7;
- sbit DJ1=P1^1;
- sbit DJ2=P1^2;
- void main(void)
- {
- unsigned char i;
- uchar str[3];
- OLED_Init(); //OLED初始化
- EA = 1; //使能總中斷
- ConfigUART(9600); //配置波特率為9600
- OLED_CLS();
- for(i=0; i<7; i++)//通過點整顯示漢字 -- i表示字表數組的位置
- {
- OLED_P16x16Ch(i*16,0,i);
- }
- for(i=0; i<2; i++)//通過點整顯示漢字 -- i表示字表數組的位置
- {
- OLED_P16x16Ch(i*16,2,i+7);
- }
- for(i=0; i<2; i++)//通過點整顯示漢字 -- i表示字表數組的位置
- {
- OLED_P16x16Ch(i*16+32,2,i+2);
- }
-
-
- for(i=0; i<3; i++)//通過點整顯示漢字 -- i表示字表數組的位置
- {
- OLED_P16x16Ch(i*16+64,2,i+4);
- }
- GN=0;
- DJ1=0;
- while(1)
- {
- str[0]=temp2/100+0x30;
- str[1]=temp2%100/10+0x30;
- OLED_P8x16Str(79,2,str);
- tmpchange();
- str[0]=tmp()/100+0x30;
- str[1]=tmp()%100/10+0x30;
- OLED_P8x16Str(79,0,str);
- delay(100);
- if(D1==0)
- {
- delay(10);
- if(D1==0)
- {
- temp2+=10;
- }
- while(!D1);
- delay(10);
- while(!D1);
- }
- if(D2==0)
- {
- delay(10);
- if(D2==0)
- {
- temp2-=10;
- }
- while(!D2);
- delay(10);
- while(!D2);
- }
- if(temp>=temp2)
- {
- DJ2=1;
- }else DJ2=0;
- }
- }
復制代碼
所有資料51hei提供下載:
源代碼.rar
(66.02 KB, 下載次數: 14)
2019-4-15 23:38 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|