日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

基于单片机的智能电饭煲控制系统的设计(附代码)

發布時間:2024/1/1 windows 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于单片机的智能电饭煲控制系统的设计(附代码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基于單片機的智能電飯煲控制系統的設計


這篇博客主要是用15單片機(和51單片機差不多)做一個智能電飯煲系統。


文章目錄

  • 基于單片機的智能電飯煲控制系統的設計
  • 一、整體功能
  • 二、米粒識別
  • 三、FSR400壓力傳感器
  • 四、主程序
  • 五、需要注意的地方
  • 六、完整工程文件


一、整體功能

本篇博客介紹的系統功能如下:

  • 根據放入電飯煲谷物的類型和數量,計算出進水量和最佳工作溫度,并計算出加熱時間,最后將谷物類型,重量,和當前系統工作的溫度和當前剩余的加熱時間顯示出來。


如圖所示:

  • 攝像頭和K60芯片來對谷物拍照,并將照片以串口通信的形式傳送給15單片機;
  • 15單片機通過FSR400壓力傳感器計算出加入谷物的重量;
  • 根據谷物類型和重量,計算出所需加水量,適合的工作溫度,和加熱時間
  • DS18B20測試當前溫度
  • LCD1602液晶顯示屏將谷物類型,重量,和當前系統工作的溫度和當前剩余的加熱時間顯示出來

實物圖如圖所示:

  • 本來想只用15單片機做的,15單片機IO口又不夠給攝像頭用,就用了K60來連接攝像頭然后把照片發給15單片機。
  • 根據圖片識別米粒,牽扯到AI,咱當時也沒這水平,想了個辦法,盒子上面扣個洞,攝像頭塞進去,這樣放進盒子里不同大小的米粒,對應的圖片里米粒的大小就不同了,就能直接區分開了。
  • 加熱,沒有加熱電阻絲,留一個IO口給它,IO口高電平表示加熱,否則不加熱;
  • 水泵,額,也沒有,同上,留一個IO口給它,IO口高電平表示加水,否則不加水;

電路連接圖和算法流程圖如圖所示:


二、米粒識別

米粒識別是通過K60芯片,連接攝像頭拍照實現的, K60用串口通信發給15單片機;K60比較麻煩,而且這個攝像頭拍照和串口發送圖片數組,都是例程,沒啥可說的。這篇博客主要寫15單片機部分的內容;

15單片機串口中斷接收圖片數組的程序如下:

void serial() interrupt 4 {int p;if(RI){RI=0;p=SBUF; //串口通信接收圖片數組,一次接受8個像素點ch=ch+(p&0x01); ch=ch+((p>>1)&0x01);ch=ch+((p>>2)&0x01);ch=ch+((p>>3)&0x01);ch=ch+((p>>4)&0x01);ch=ch+((p>>5)&0x01);ch=ch+((p>>6)&0x01);ch=ch+((p>>7)&0x01); //ch為圖片中1的個數}

計算1的個數是因為,我采用的是二值化攝像頭,圖片只有黑白,1是黑色,0是白色,谷物越大,1的個數越多,因此我們可以通過統計接收到的‘1’的個數,將谷物分為三類;


三、FSR400壓力傳感器

FSR400壓力傳感器,是一個壓敏電阻,壓力和阻值有關,因此我們使用單片機的ADC來讀取模擬電壓,從而計算出加入谷物重量

init_ADC(); Delay10ms(); while(!(ADC_CONTR & ADC_FLAG)); ch=((ADC_RES*256)&0x300)+(ADC_RESL&0xff);

四、主程序

思路感覺差不多說清楚了,整體程序如下:

#include <STC15.h> #include "lcd1602.h" //這個文件里放著LCD1602的一些程序,網上都有 #include "UART.h" //這個文件里放著串口驅動的一些程序,網上都有 #include "ADC.h" //這個文件里放著15單片機ADC的驅動程序 #include "DS18b20.h" //這個文件里放著DS15B20的驅動 #define water_pin P23 //水泵控制引腳 #define R_pin P22 //加熱電阻控制引腳 int ch=0; int pwm=0; int T=0; void delay(unsigned int i) //延時函數 {while(i--); } void Delay2000ms() //延時函數 {unsigned char i, j, k;i = 85;j = 12;k = 155;do{do{while (--k);} while (--j);} while (--i); } void Timer0Init(void) //定時器中斷初始化 {AUXR |= 0x80; //?????1T??TMOD &= 0xF0; //???????TL0 = 0xCD; //??????TH0 = 0xD4; //??????TF0 = 0; //??TF0??TR0 = 1; //???0????EA=1; } void main() {int water=0;float f=0.0;int t=0;unsigned char pi[11]; //LCD1602液晶屏的顯示數組Init_UART1(115200); Enable_UART1_INT();LCD_Init();while(!RI);Delay2000ms(); Disable_UART1_INT(); //初始化LCD顯示屏和串口,并通過串口通信接收圖片數組,在中斷函數中計算圖片數組中黑色像素點的數量if(ch<45 && ch>0) pi[0]='1';else if(ch<110 && ch>50) pi[0]='2';else pi[0]='3'; //根據黑色像素點數量,將谷物分為三類;init_ADC(); //初始化ADCDelay10ms();while(!(ADC_CONTR & ADC_FLAG));ch=((ADC_RES*256)&0x300)+(ADC_RESL&0xff);//讀出ADC的模擬電壓(相當于谷物重量)pi[1]=' ';pi[2]=ch/100+'0';pi[3]=ch%100/10+'0';pi[4]=ch%10+'0';pi[5]=' '; // 將重量顯示在LCD上T=21*ch/100+pi[0]-'0'; //計算加熱時間water=ch/100+pi[0]-'0'; //加水量water_pin=1; //加水while(water--); water_pin=0; //停止加水Timer0Init(); while(1){ET0=0;f=Read_Temperature();//讀取DS18B20溫度傳感器的溫度ET0=1;t=(int)f;t=t*10;pi[6]=t%1000/100+'0'; //顯示溫度pi[7]=t%100/10+'0';pi[8]=' ';if(t>40) pwm=0; //動態調節溫度,pwm表示加熱電阻工作的占空比else pwm=(40-t)*25; if(T==0) //剩余加熱時間為0,停止工作{pi[9]='0';pi[10]=' ';ET0=0;R_pin=0;} else //否則顯示剩余加熱時間,倒計時通過定時器中斷來實現{pi[9]=T/10+'0';pi[10]=T%10+'0';}pi[11]=' ';LCD_Display(0,0,pi);} } void T0Function() interrupt 1 //定時器中斷 {static m=0;if(m<pwm) {m++;R_pin=1;}else if(m<1000){m++;R_pin=0;}else{T--;m=0;} } void serial() interrupt 4 //串口接收照片數組 {int p;if(RI){RI=0;p=SBUF;ch=ch+(p&0x01);ch=ch+((p>>1)&0x01);ch=ch+((p>>2)&0x01);ch=ch+((p>>3)&0x01);ch=ch+((p>>4)&0x01);ch=ch+((p>>5)&0x01);ch=ch+((p>>6)&0x01);ch=ch+((p>>7)&0x01);} }


實驗結果如圖,‘3’表示加入的是第三種類型谷物(最大),259表示谷物重量為259,‘24’表示當前工作溫度為24℃,‘53’表示還有53秒的加熱時間。

五、需要注意的地方

  • DSB18B20讀取溫度的過程不能被中斷,否則會出錯,所以讀取溫度時,要關閉其他中斷;

六、完整工程文件

驅動程序,各個模塊的測試程序已打包上傳:基于單片機的智能電飯煲控制系統的設計

  • 15.zip 為15單片機的項目文件,就比這篇博客里多了驅動文件
  • K60.zip 是K60芯片讀取攝像頭照片,并將照片數組以UART的方式發給15單片機
  • 其他的是一些小模塊的測試程序

總結

以上是生活随笔為你收集整理的基于单片机的智能电饭煲控制系统的设计(附代码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。