本次設計的家用養生壺自動控制系統便是基于單片機制作的,多種控制方式可以按用戶需要快捷操作。
通過控制溫度、加熱功率和加熱時間來實現養生壺的模式切換。
1)設置三種加熱模式:高功率加熱、中功率加熱、低功率加熱。
2)要求系統具有預約功能和保溫功能。
3)要求系統具有多種工作模式:燒水模式:直接加熱至100℃停止;果茶模式:直接加熱至100℃后
改為低功率運行10分鐘,然后保溫; 煲湯模式:直接加熱至100℃,中功率20分鐘后低功率運行20
分鐘,然后保溫;火鍋模式:直接加熱至100℃,轉中功率模式持續加熱;熱奶模式:直接加熱至75℃
后轉保溫模式。
部分程序:
include "stc89c51.h"
#include "typedef.h"
#include
//-----------------------IO配置------------------------------------------
sbit BEEP = P2^2;//蜂鳴器
//按鍵相關
#define DEF_KEY_TIMES 10 //按鍵檢測次數,放抖動
sbit KEY1 = P1^4;//燒水
sbit KEY2 = P1^5;//果茶
sbit KEY3 = P1^6;//煲湯
sbit KEY4 = P1^7;//火鍋
sbit KEY5 = P3^4;//熱奶
sbit KEY6 = P3^5;//設置
sbit KEY7 = P3^6;//時間加
sbit KEY8 = P3^7;//時間減
sbit KEY9 = P3^1;//開始
sbit KEY10= P3^0;//暫停 停止
//數碼管位選管腳定義
#define DEF_OFF 1 //數碼管滅
#define DEF_ON 0 //數碼管亮
#define DEF_LED_PORT P0 //數碼管段選端口
sbit LED0 = P1^0;//溫度第1位位選
sbit LED1 = P1^1;//溫度第2位位選
sbit LED2 = P1^2;//溫度第3位位選
sbit LED3 = P1^3;//溫度第4位位選
sbit LED4 = P4^5;//時間第1位位選
sbit LED5 = P4^4;//時間第2位位選
sbit LED6 = P2^7;//時間第3位位選
sbit LED7 = P4^6;//時間第4位位選
sbit LED8 = P2^6;//放二極管指示燈位選
//繼電器IO初始化
#define ULN2003_ON 1//開啟繼電器
#define ULN2003_OFF 0 //關閉繼電器
sbit BW = P2^1;//保溫繼電器
sbit D_OUT = P2^0;//低功率繼電器
sbit Z_OUT = P3^2;//中功率繼電器
sbit G_OUT = P3^3;//高功率繼電器
#define T_100 33//設定的溫度100度,方便演示用了34度
#define T_75 30//設定的溫度75度,方便演示用了30度
//定義ADC0832引腳
sbit CS1=P2^5;
sbit CLK1=P2^3;
sbit DATI1=P2^4;
sbit DATO1=P2^4;
//-----------------------------------------------------------------------
//----------------------ADC 初始化---------------------------------------
//熱敏電阻溫度查表,溫度的準確與否需要矯正此表格
code u8 ex_code_temper[256] =
//0 1 2 3 4 5 6 7
{256, 255, 245, 230, 231, 232, 220, 210,
//8 9 10 11 12 13 14 15
205, 190, 180, 370, 360, 350, 340, 290,
//16 17 18 19 20 21 22 23
260, 250, 249, 245, 220, 200, 150, 102,
//24 25 26 27 28 29 30 31
80, 79, 78, 77, 76, 75, 74, 73,
//32 33 34 35 36 37 38 39
72, 71, 70, 69, 68, 67, 66, 65,
//40 41 42 43 44 45 46 47
65, 64, 63, 63, 62, 61, 61, 60,
//48 49 50 51 52 53 54 55
59, 58, 58, 57, 57, 56, 56, 55,
//56 57 58 59 60 61 62 63
55, 54, 53, 53, 52, 52, 51, 51,
//64 65 66 67 68 69 70 71
50, 50, 49, 49, 48, 48, 47, 47,
//72 73 74 75 76 77 78 79
46, 46, 45, 45, 45, 44, 44, 43,
//80 81 82 83 84 85 86 87
43, 42, 42, 42, 41, 41, 40, 40,
//88 89 90 91 92 93 94 95
40, 39, 39, 38, 38, 38, 37, 37,
//96 97 98 99 100 101 102 103
36, 36, 36, 35, 35, 35, 34, 34,
//104 105 106 107 108 109 110 111
34, 33, 33, 32, 32, 32, 31, 31,
//112 113 114 115 116 117 118 119
31, 30, 30, 30, 29, 29, 29, 28,
//120 121 122 123 124 125 126 127
28, 28, 27, 27, 27, 26, 26, 26,
//128 129 130 131 132 133 134 135
25, 25, 25, 24, 24, 24, 23, 23,
//135 136 137 138 139 140 141 142
23, 23, 22, 22, 22, 21, 21, 21,
//142 143 144 145 146 147 148 149
21, 20, 20, 20, 19, 19, 19, 18,
//150 151 152 153 154 155 156 157
18, 18, 17, 17, 17, 16, 16, 15,
//158 159 160 161 162 163 164 165
15, 15, 14, 14, 14, 13, 13, 13,
//166 167 168 169 170 171 172 173
12, 12, 12, 11, 11, 11, 10, 10,
//174 175 176 177 178 179 180 181
10, 9, 9, 9, 8, 8, 7, 7,
//182 183 184 185 186 187 188 189
7, 6, 6, 6, 5, 5, 4, 4,
//190 191 192 193 194 195 196 197
4, 3, 3, 2, 2, 2, 1, 1,
//198 199 200 201 202 203 204 205
0, 0, 0, 0, 0, 0, 0, 0,
//206 207 208 209 210 211 212 213
0, 0, 0, 0, 0, 0, 0, 0,
//214 215 216 217 218 219 220 221
0, 0, 0, 0, 0, 0, 0, 0,
};
u8 adc_val;//溫度ADC值,ADC0832測得的數值
u8 adc_tmper;//溫度返回值,時間溫度
//這兩個變量覺得采集溫度的速率,也就是說溫度的刷新速率
u8 flag_get_dac = 0;
u16 flag_get_dac_time = 0;
//-----------------------------------------------------------------------
//----------------------變量初始化---------------------------------------
bit flag_timer0 = 0;//2ms中斷標志
//按鍵
u8 key1_time;
u8 key2_time;
u8 key3_time;
u8 key4_time;
u8 key5_time;
u8 key6_time;
u8 key7_time;
u8 key8_time;
u8 key9_time;
u16 key10_time;
u16 key10_time_long;
u8 key_val; //按鍵返回值
//1s中的時間
u16 time_1s = 0;
u8 time_1s_flag = 0;
//不同模式下的時間切換標志位
u8 time_mode_dat = 0;
//LED位選輪詢
u8 led_wei = 0;
//數碼管當前顯示的內容
u8 arr_led_now[9] = {11,2,3,4,5,6,7,8,1};
//數碼管碼字數字0-9,
u8 led_arr[16] = {
0xD7,/*0*/
0x90,/*1*/
0xA7,/*2*/
0xB5,/*3*/
0xF0,/*4*/
0x75,/*5*/
0x77,/*6*/
0x91,/*7*/
0xF7,/*8*/
0xF5,/*9*/
0x00,
};
//顯示時間點
u8 led_arr_1[16] = {
0xDF,/*0*/
0x98,/*1*/
0xAF,/*2*/
0xBD,/*3*/
0xF8,/*4*/
0x7D,/*5*/
0x7F,/*6*/
0x99,/*7*/
0xFF,/*8*/
0xFD,/*9*/
0x00,
0x00,
0x20,
};
-
繼電器
+關注
關注
132文章
5320瀏覽量
148573 -
單片機
+關注
關注
6032文章
44516瀏覽量
632983 -
控制系統
+關注
關注
41文章
6546瀏覽量
110479
發布評論請先 登錄
相關推薦
評論