用电机驱动模块驱动加热片,温度检测采用DS18B20,显示屏为0.96寸OLED,带独立按键
电路原理图如下:
电路原理图
实物图
实物图
实物图
单片机源程序如下:
- /************************************************************************************
- * 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^1;
- sbit D0=P1^4;
- sbit D1=P1^5;
- sbit D2=P1^6;
- sbit D3=P1^7;
- sbit J1=P3^2;
- sbit J2=P3^3;
- void main(void)
- {
- unsigned char i;
- uchar str[3];
- OLED_Init(); //OLED初始化
- EA = 1; //使能总中断
- ConfigUART(9600); //配置波特率为9600
- OLED_CLS();
- for(i=0; i<5; i++)//通过点整显示汉字 -- i表示字表数组的位置
- {
- OLED_P16x16Ch(i*16,0,i);
- }
- for(i=0; i<2; i++)//通过点整显示汉字 -- i表示字表数组的位置
- {
- OLED_P16x16Ch(i*16,2,i+5);
- }
-
-
- for(i=0; i<3; i++)//通过点整显示汉字 -- i表示字表数组的位置
- {
- OLED_P16x16Ch(i*16+32,2,i+2);
- }
- GN=0;
- J1=0;
- while(1)
- {
- str[0]=temp2/100+0x30;
- str[1]=temp2%100/10+0x30;
- OLED_P8x16Str(47,2,str);
- tmpchange();
- str[0]=tmp()/100+0x30;
- str[1]=tmp()%100/10+0x30;
- OLED_P8x16Str(47,0,str);
- delay(100);
- if(D0==0)
- {
- delay(10);
- if(D0==0)
- {
- temp2+=10;
- }
- while(!D0);
- delay(10);
- while(!D0);
- }
- if(D1==0)
- {
- delay(10);
- if(D1==0)
- {
- temp2-=10;
- }
- while(!D1);
- delay(10);
- while(!D1);
- }
- if(temp<temp2)
- {
- J2=1;
- }else J2=0;
- }
- }
复制代码
所有资料51hei提供下载:
源代码.rar
(66.19 KB, 下载次数: 17)
|