标题:
PIC16F1947单片机做的NTC热敏电阻温控器原理图及源程序
[打印本页]
作者:
jinzhao591
时间:
2018-4-9 12:12
标题:
PIC16F1947单片机做的NTC热敏电阻温控器原理图及源程序
PIC16F1947做的温控器及程序
电路原理图如下:
0.jpg
(72.43 KB, 下载次数: 204)
下载附件
2018-4-9 16:17 上传
0.jpg
(40.01 KB, 下载次数: 198)
下载附件
2018-4-9 16:18 上传
单片机源程序如下:
#include "mydefine.h"
#include "pic.h"
#include "mTouch.h"
#include "GLOBAL.H"
#include "DEFINE.H"
#include "XWKQ_KeyScan.H"
// Required Include
// CONFIGURATION SETTINGS
#include "generic_processorConfigBits.h" // Provided for ease-of-development.
// PROTOTYPES
void Example_System_Init (void);
extern void interrupt ISR (void);
extern unsigned char auto_exit;
extern void working_mode ();
extern void inplement();
extern void FAN_CONTROL();
extern volatile int SET_TEMPER10;
void key_press(void);
void key_exit(void);
extern void LCD_disp(unsigned int data_in );
extern void UpdateLCD(void);
#define uchar unsigned char
#define uint unsigned int
//volatile uchar tflag;
bit ON_OFF; //MENU ON/OFF button
bit POWER_ON_FIRST; //1 ,POWER ON FIRST TIME;
//EEPROM DATA
int SET_TEMPER; //SETTING TEMPERATURE
volatile bit SET_DATA; //change the temperature or other data
unsigned char FAN_SPEED; // 0:AUTO, 1:LOW, 2:MED, 3:HIGH
unsigned char BACKLIGHT_LEVE;
//unsigned char PIPLE4_AUTO;
volatile unsigned char MODE; //mode : 1:COOLING, 2:HEATING
extern volatile unsigned char piple_num;
bit OK; // KEY OK
unsigned char SYSTEM_SETUP; //1: TEMPERATURE FINE 2: FAN BE CONTROLED
volatile signed char TEMP_FINE; // CORRECT THE TEMPERATURE
volatile unsigned char FAN_BECONTROL;
bit FAN_DELAY;
unsigned long FAN_DELAYTIME;
extern bit FAN_DELAY_OFF;
unsigned char SET_TIME=0;
unsigned long TIME_ONOFF=0; // TIMING FOR ON OR OFF;
unsigned long TIME_ONOFF_BACKUP=0;
volatile bit TIMING; //CHINESE TIMING SIGN 0:OFF 1: ON
volatile bit TIME_COUNT; //0:DISABLE 1:ENABLE
volatile bit TIME_EDIT;
volatile bit TIME_ON; // FROM OFF TO WOROK
extern bit mode_inverter;
extern bit downup;
extern unsigned char FAN_STATUS;
extern void ClearLCD(void);
extern void KeyControl(void);
extern void KeyScan(void);
// START PROGRAM
void main(void)
{
OK=1;
POWER_ON_FIRST=1;
TIMING=0; //*****/
TIME_COUNT=0;
TIME_EDIT=0;
TIME_ON=0;
SYSTEM_SETUP=0;
FAN_DELAYTIME=0;
FAN_DELAY_OFF=1; // avoid low fan switch be turn on when power on at firest time (heating=0 && cooling=0)
FAN_DELAY=1; // avoid low fan switch be turn on when power on at firest time (heating=0 && cooling=0)
SET_DATA=0;
SET_TIME=0;
Example_System_Init(); // Your System Initialization Function
mTouch_Init(); // mTouch Initialization (Required)
PEIE = 1;
GIE = 1; // Initialization complete. Begin servicing interrupts.
WDTPS3 = 1;
SWDTEN = 1; // enable WDT
INTCON=0b11100000;
PIR1=0b00000000;
TMR1H=0x3c;
TMR1L=0xaf;
T1CON=0b00110001; // 16M internal clock
T1GVAL=0;
PORTA = 0x00;
PORTB = 0X00;
PORTC = 0x00;
PORTD = 0X00;
PORTE = 0X00;
PORTF = 0X00;
PORTG = 0X00;
LATF=0;
ANSELA =0b00001111;
ANSELE =0b00000000;
ANSELF =0b00011111;
ANSELG =0b00000000;
TRISA =0b00001001;
TRISB =0b00000001;
TRISC =0b10000000;
TRISD =0b00000000;
TRISE =0b00000000;
TRISF =0b10000000;
TRISG =0b00000010;
RG2=0;
LCDSE0 = 0xFF; // enable first group of LCD segment outputs
LCDSE1 = 0x3F; // enable second group of LCD segments
LCDSE2 = 0x00; // enable third group of LCD segments
LCDSE3 = 0x00;
LCDSE4 = 0x00;
LCDSE5 = 0x00;
LCDCON = 0b10001011;
LCDREF = 0b10000000;
LCDPS = 0b00110011;
LCDCST = 0b00000000;
LCDRL = 0b11110000;
LCDDATA0=0X00;
LCDDATA1=0X00;
LCDDATA3=0X00;
LCDDATA4=0X00;
LCDDATA6=0X00;
LCDDATA7=0X00;
LCDDATA9=0X00;
LCDDATA10=0X00;
ClearLCD();
__delay_us(100);
CLRWDT();
MODE=EEPROM_READ(0x00);
if (MODE==0XFF) {MODE=1;}
SET_TEMPER=EEPROM_READ(0x01);
if (SET_TEMPER==0XFF) {SET_TEMPER=25;}
FAN_SPEED=EEPROM_READ(0X02);
if (FAN_SPEED==0XFF) {FAN_SPEED=1;}
BACKLIGHT_LEVE=EEPROM_READ(0X03);
if (BACKLIGHT_LEVE==0XFF) {BACKLIGHT_LEVE=0;}
//CCPR3L=LIGHT_OFF;
//LIGHT_ON=0;
// PIPLE4_AUTO=EEPROM_READ(0X04);
// if (PIPLE4_AUTO==0XFF) {PIPLE4_AUTO=0;}
_nop();
_nop();
TEMP_FINE=EEPROM_READ(0X05);
FAN_BECONTROL=EEPROM_READ(0X06);
if (FAN_BECONTROL==0XFF) {FAN_BECONTROL=0;}
_nop();
_nop();
_nop();
_nop();
_nop();
_nop();
if (PIPLE_QTY==0) {piple_num=4;}else { piple_num=2; }
__delay_ms(100);
while(1)
{
CLRWDT();
if (SET_TIME !=0 && TIMING==1 &&TIME_COUNT==1&& OK==1 )
{
COOLING=0;
HEATING=0;
if (LOW==1) {CLRWDT(); __delay_ms(10);LOW=0;}
if (MED==1) {CLRWDT(); __delay_ms(10);MED=0;}
if (HIGH==1) {CLRWDT(); __delay_ms(10);HIGH=0;}
// CCPR3L=LIGHT_OFF;
LIGHT_ON=0;
TIME_ON=1;
}else
{
TIME_ON=0;
if ( SET_TIME==0 && TIMING==0 &&TIME_COUNT==1 && OK==1)
{
ON_OFF=0;
// CCPR3L=LIGHT_OFF;
LIGHT_ON=0;
}else
{
_nop();
if ( ON_OFF==1)
{
inplement();
FAN_CONTROL();
}
}
if (ON_OFF==0)
{
COOLING=0;
HEATING=0;
FAN_CONTROL();
}
}
KeyValueBuf=0;
KeyControl();
if ( auto_exit>=100 && OK==1 && LIGHT_ON==1)
{
LIGHT_ON=0;
}
if ( auto_exit>=100 && OK==0) //OVERTIME
{
// MENU_BAR=0; //RESET THE MENU BAR TO DEFAULT BAR 0;
OK=1; //RESET TO DEFAULT
TIME_ONOFF_BACKUP=0; // EXIT MENU BEGINING TO COUNT
TIME_EDIT=0;
if (TIME_COUNT==1 && SET_TIME==0) { TIME_COUNT=0;TIMING=0;}
working_mode ();
SYSTEM_SETUP=0;
}
CLRWDT();
} // end - while(1) main loop
} // end - main() function
/* Initial the system */
void Example_System_Init()
{
// The mTouch framework controls these modules:
// * TMR0 - YOU MUST INIT THE OPTION REGISTER / TMR0 PRESCALER
// Do not choose 1:1 prescaling.
//
// * ADC - automatic initialization
// * UART - automatic initialization (if enabled and available)
//
// mTouch performs better as Fosc increases.
// NOTE: Update the configuration file if Fosc is changed!
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
K9-WKQ.7z
(432.35 KB, 下载次数: 172)
2018-4-9 12:11 上传
点击文件名下载附件
程序
下载积分: 黑币 -5
MCU-SI1102 调整亮度后.pdf
(1.08 MB, 下载次数: 122)
2018-4-9 12:11 上传
点击文件名下载附件
电路
下载积分: 黑币 -5
作者:
danpianji3501
时间:
2018-8-12 09:13
很好 ,很有用,很不错!
作者:
空间噶时光
时间:
2019-7-14 11:19
感谢分享
作者:
F1640183
时间:
2019-7-21 08:03
谢谢楼主无私奉献
作者:
学徒工--静
时间:
2019-7-25 19:46
刚好想研究温控,谢谢楼主分享
作者:
LGH850
时间:
2019-8-10 09:26
感谢分享!大概看了一下!后面有时间再慢慢研究……
作者:
djz_1688
时间:
2019-9-20 10:31
我想用红外温度传感器,根单片几做一个,温度控制起,温度可调,带LED屏,好做吗?
作者:
dcc024
时间:
2021-6-28 06:27
我试试,PIC单片机不常用呢
作者:
zongheng99
时间:
2021-8-29 23:18
谢谢楼主分享,希望可以试试看
作者:
nanfuB
时间:
2021-9-1 22:08
谢谢分享,参考看能不能得到帮助。
作者:
zongheng99
时间:
2021-12-17 21:33
谢谢分享,参考看能不能得到帮助。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1