以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)
|