智能自動豆漿機創新設計_第1頁
智能自動豆漿機創新設計_第2頁
智能自動豆漿機創新設計_第3頁
智能自動豆漿機創新設計_第4頁
智能自動豆漿機創新設計_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

機電工程系

機電創意小組

智能豆漿機的設計

系部名稱:機電工程系

學生姓名:劉鵬浩、劉鵬慧、李喬

專業:機械制造及其自動化

班級:1102

指導教師:王新海

設計思緒:

由于此前的豆漿機,磨漿要過濾豆渣,豆漿熬煮也要自己動手,還要尤

其注意豆漿溢鍋口勺問題,程序繁瑣麻煩,給人們帶來不便,針對這些狀況確

定開發家用豆漿機全自動控制電路裝置。

家用豆漿機全自動控制裝置是在單片機日勺程序控制下進行工作時。打漿

時,插上電源插頭,接通電源,直接按“啟動”鍵,控制電路控制豆漿機工

作。先給黃豆加熱,并由傳感器檢測溫度,當溫度到達80度左右時,停止

加熱。啟動磨漿電機開始磨漿,運轉20秒后停止轉運,間歇10秒后再啟動

打漿電機,如此循環進行打漿6次或者4次。磨漿完后,開始對豆漿加熱,

豆漿溫度到達一定值時,豆漿上溢。豆漿加工自動進入防溢延煮程序,豆漿

加工完畢后發出聲光報警信號。

關鍵詞:豆漿機,控制系統,全自動,傳感器。

Abstract

一、全自動豆漿機的工作原理

用STC12C5A60S2單板設計一款全自動豆漿機,豆漿機口勺工作原理如下:

先給電路上電,按下啟動鍵開始加熱;加熱到80。(2開始打漿(打15秒,停15

秒,共4次),磨漿完后,開始時豆漿加熱,豆漿溫度到達一定值時,豆漿上溢。

豆漿加工自動進入防溢延煮程序,豆漿加工完畢后發出聲光報警信號。

本設計原理如圖1所示

溫度檢測電路S

T聲光報警

C

1

2

顯示屏

cn

5

A

放十燒電路6I>>電機

0

S

2

加熱電路

按鍵

控制系統首先通過電源對系統供電,其中溫度傳感器、防溢電路、放干燒電

路、按鍵、均是輸入部分,聲光報警、顯示屏、電機、加熱電路均是輸出部

分。

二、方案設計

方案1:此方案由單片機、加熱電路、溫度檢測電路、打漿電路、報警電路、

顯示電路構成。其工作原理是先加熱,加熱到一定溫度后,開始打漿,打漿

完后,打漿停止,又開始加熱即煮沸后,立即停機,報警提醒。

打漿電路

加熱電路

溫度檢測電路

報警電路

顯示電路

表2.1方案一設計框圖

方案2:此方案由單片機、溫度檢測電路、加熱電路、沸騰檢測電路、打漿

電路、報警電路、顯示電路等構成。其工作原理是豆漿機加電后直接按“啟

動”鍵,控制電路控制豆漿機進行加熱,當溫度到達80度左右時,停止加

熱,開始打漿;打漿電機按間歇方式打漿:運轉15秒后停止轉運,間歇15

秒后再啟動打漿電機,如此循環進行打漿4次。打漿結束后開始對豆漿加熱,

豆漿溫度到達一定值時,豆漿上溢。當豆漿沫要溢出時,停止加熱,間歇20

秒后再開始加熱,如此循環4次,豆漿加工完畢后發出聲光信號。

單片機

防干燒、防溢電路

打漿電路

溫度檢測電路

報警電路

加熱電路

顯示電路

表2.2方案二設計框圖

3、方案論證

方案一如圖1.1所示,由單片機、溫度檢測電路、打漿電路、加熱電路、報

警電路等構成。工作過程是,接上電源,按下“功能鍵”,開始加熱,加熱

到一定溫度后,開始打漿,打漿漿結束后,又加熱直到豆漿沸騰煮熟,停止

加熱,發出報警聲,提醒豆漿已做好。其缺陷是:粉碎后煮漿時間過長所易

導致的糊鍋現象。

方案二如圖1.2所示,由單片機、溫度檢測電路、防干燒電路電路、防溢電

路、打漿電路、加熱電路、報警電路等構成。工作過程是,接上電源,蜂鳴

器長鳴一聲,提醒已接通電源,指示燈綠色LED亮,處在待命狀態。按下全

自動啟動鍵,開始加熱,溫度到達80度時,停止加熱;攪拌馬達運轉,將

黃豆粉碎,豆漿過濾,然后馬達停轉,又開始加熱,直到豆漿沸騰煮熟,停

止加熱,發出報警聲,提醒豆漿已做好。進行論證后,我選擇第二方案。其

原因是:間歇打漿方式可以提高工作效率;縮短粉碎后加熱至豆漿沸騰時間,

防止粉碎后煮漿時間過長所易導致歐I糊鍋現象。

三、硬件電路設計:

1、單片機的選用:

STC12c5A60s2/AD/PWM系列單片機是宏晶科技生產H勺單時鐘/機器周期

(1T)的單片機,是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼

完全兼容老式8051,但速度快8-12倍。內部集成MAX810專用復位電路,2

路PWM,8路高速10位A/D轉換(250K/S),針對電機控制,強干擾場所。

單片機簡介:

1,增強型8051CPU.1T,單時鐘/機器周期,指令代碼完全兼容老式8051

2.工作電壓:STC12c5A60s2系歹U工作電壓:5.5V?3.3V(5V單片機)

STC12LE5A60s2系列工作電壓:3.6V-2.2V(3V單片機)

3.工作頻率范圍:0-35MHz,相稱于一般8051口勺0?420MHz

4.顧客應用程序空間8K/16K/20K/32K/40K/48K/52K/60K/62K字

節……

5.片上集成1280字節RAM

6.通用I/O口(36/40/44個),復位后為:準雙向口/弱上拉(一般8051老

式I/O口)可設置成四種模式:準雙向口/弱上拉,推挽/強上拉,僅為輸入/

高阻,開漏每個I/O口驅動能力均可到達20mA,但整個芯片最大不要超過

55mA

7.時鐘源:外部高精度晶體/時鐘,內部R/C振蕩器(溫漂為+/-5%到+/-10%

以內)1顧客在下載顧客程序時,可選擇是使用內部R/C振蕩器還是外部晶體/

時鐘常溫下內部R/C振蕩器頻率為:5.0V單片機為:11MHz?15.5MHz3.3V

單片機為:8MHz?12MHz精度規定不高時,可選擇使用內部時鐘,但由于有

制造誤差和溫漂,以實際測試為準

8.2個時鐘輸出口,可由TO歐J溢出在P3.4/T0輸出時鐘,可由T1的溢出在

P3.5/T1輸出時鐘

9.A/D轉換,10位精度ADC,共8路,轉換速度可達250K/S(每秒鐘25萬次)

10.工作溫度范圍:-40?+85C(工業級)/0-75℃(商業級)21.封裝:

PDIP-40,LQFP-44,LQFP-48I/O口不夠時,可用2到3根一般I/O口線外

接74HC164/165/595(均可級聯)來擴展I/O口,還可用A/D做按鍵掃描來

節省I/O口,或用雙CPU,三線通信,還多了串口。

引腳圖:

STC12C5A60S2

40

]PJ.Ovcc

39

2Pl.lPO.O

RXD23P1.2/RXD2P0.1____

TXD2437

P1.3/TXD2P0.2

36

5Pl.4P0.3

6Pl.5P0.435

34

7Pl.6P0.5

8Pl.7P0.633

gPST/P4.7P0.732___

RXDIQP3.0mXDRST2/P46JJ___

TXDII,30____

P3.1/TXDALE\P4,5

12P3.2/INTONA/P4.4J2___

28____

13P3.3/INT1P2.7

1427CLK

P3.4/T0PZ6

26SID

15P3.5/T1P2.5

25CS

16P3.6/WRP2.4

24

nP3.7/RDP23

18XTAL2P2222___

22SDA

19XTAL1EM

2021SCL

GNDP2.0

2、溫度檢測電路的設計

當豆漿機正常工作時,需要先加熱到80℃左右的溫度,然后停止加熱繼續下

一步的工作,這就需要一種溫度檢測電路,我設計的溫度檢測電路由一種電

位器來替代,通過單片機接口的AD轉換功能,通過調整電位器的阻值來模

擬豆漿機溫度的變化,當電位器的阻值到達一定限值時,豆漿機停止加熱,

進行下一步工作。

3、加熱和打漿電路的設計:

加熱電路的作用是通過加熱管把磨成粉末的黃豆煮熟;打漿電路的作用是通

過電機把黃豆攪拌成粉沫。單片機輸出電流經三極管放大,來驅動繼電器

必合,使加熱管發熱把豆漿煮熟。同理,繼電器閉合使電機運轉把黃豆攪碎。

加熱及打漿電路H勺工作原理如圖1所示,加熱及磨漿電路由繼電器RL1、RL2,

三極管QI、Q2,電阻R14、R15以及二極管DI、D2,單片機AT89c51。當單

片機工作時,賦給PL1一種低電平,使三極管Q2飽和導通,電流流過繼電

港RL2,使觸點閉合,于是加熱管通電開始對水加熱,當溫度到達80度時,

溫度信號(電位器)傳給單片機,單片機檢測到這個信號后,使PL1腳變

為高電平,三極管Q2截止,繼電器觸點斷開,電阻停止加熱。加熱結束后,

單片機PL0腳變為低電平,使三極管RL1飽和導通,從而讓繼電器觸點閉

合,于是電機通電開始打漿,在系統程序得控制下,電機進行打漿。電機運

轉20秒或者15秒后,單片機P1.0腳變為高電平,使三極管Q1截止,繼電

器觸點斷開,電機停止打漿,問歇15秒后,單片機PL0腳又恢復為低電平,

從向繼續驅動電機工作,如此循環4次后打漿結束。

熱敏電阻一般有一種誤差范圍,用來規定樣品之間的一致性。根據使用

的材料不一樣,誤差值一般在1%至10%之間。有些熱敏電阻設計成應用時可

以互換,用于不能進行現場調整日勺場所,例如一臺儀器,顧客或現場工程師

只能更換熱敏電阻而無法進行校準,這種熱敏電阻比一般的精度要高諸多,

價格也要貴得多。

電位器

4、屏幕顯示電路的設計:

顯示屏n勺作用是顯示目前豆漿機口勺工作狀態,將LCD顯示屏按照圖2的接法和

單片機連接起來。

5、報警電路的設計:

報警電路的作州是通過蜂嗚器發出聲音信號,紅色LED點亮提醒豆漿己經煮好

了。通過事先編寫的程序,在單片機H勺控制下,系統開始工作,當加熱完畢后,

單片機P1.4、P1.5腳自動輸出一種高下平,使蜂鳴器、發光二極管通電導通,

于是蜂鳴器發出報警,紅色LED點亮提醒豆漿加熱

6、電源電路的設計:

7、防干燒及防溢出電路的設計:

防干燒及防溢出電路日勺作用是以傳感器作為信息采集系統日勺前端單元來

控制自動豆漿機缺水時干燒及沸騰溢出等問題。這單采用探針作為傳感器來

檢測水位及沸騰溢出,然后通過比較器輸出高下電平,這樣就可以通過單片

機檢測比較器輸出電平日勺高下來檢測水位及沸騰時的I溢出狀態。

水位檢測及沸騰溢出電路的原理如圖4.13所示,KI,K2分別是水位檢

測傳感器和沸騰溢出傳感器,為了減少成本,這單采用探針來替代這兩個傳

感器,使用中將接控制電路口勺公共點“地”,探針分別通過傳播。單片機的

P3.2,PL3端連接。王常工作時,K1被水沉沒,它和地之問日勺電阻較小,

與R13共同對+5V分壓,U+得到比U-低的電平,比較器輸出低電平。缺水時,

K1露出水面,它日勺電阻很大,R13共同對+5V分壓,U+得到比U-高的電壓,

比較器輸出高電平,通過非門后輸出低電平產生下降沿。用軟件檢測比較器

的電平變化,便知與否缺水

用同樣日勺措施檢測豆漿與否沸騰溢出。豆漿沸騰之前,電極K2遠離水

而,它和地之間日勺電阻很大,與R9共同對+5V分壓,U+得到比U-高日勺電壓,

比較器輸出高電平。豆漿沸騰時,泡沫沉沒K2,電阻小,與R14共同對+5V

分壓,U+得到比U-低的電壓,比較器輸出低電平。用軟件檢測比較器的輸出

電平,便知豆漿與否沸騰溢出。。

三、軟件設計

豆漿機控制系統日勺流程圖:

通電

N

報警提醒

程序:

#include<STC12c5a60s2.h>

sbitkey=P2A();〃全自動開關

sbitLED1=P2A1;〃加熱豆漿

sbitLED=P2A2;//

sbitBEEP二P2人3;〃蜂鳴

sbitM=P2八4;〃攪拌豆漿

sbiljre=P2八5;〃力口熱豆漿

#include<intrins.h>〃51基本運算(包括_nop_空函數?

typedefunsignedcharuint8;//無符號8位整型變量〃

/^2^斗...??*.斗.斗...“■,■

訃:*5*:K:*:*1*:K*3*x:*:

//引腳定義〃(使用者根據實際更改)

,),,、>,7.、!,、!■,、[,、/、>,、!,7.、、>7.

II*7?(7、,卜rjw??£2?,*?*,7卜■rj?r%j??*2*?7J?,?卜!rj??*24?7,卜,卜,?卜t?rj?rj?,卜rj???S£?*rjw,卜rjw7.,卜rj??£?ej*rjwrj?*2*r7|?rj?4rjw/rjwrjw*ry2?*7,卜r?ji?*r7?*5**1*,卜j?*7*?£?,卜,卜r???J?,卜

#defineLCM2402_DB0_DB7Pl//定義LCM2402的數據總

sbitLCM2402_RS=P3A2;〃定義LCM2402的RS控制線

sbitLCM2402_RW=P3A3;//定義LCM2402的RW控制線

sbitLCM2402_E=P3A4;〃定義LCM24021付E控制線

sbitLCM2402_Busy=PIA7;〃定義LCM2402的測忙線(與

LCM2402_DB0_DB7關聯)

dataunsignedchar

TIME_DD,T1ME_MO,T1ME_YY,TIME_WW,TIME_HH,TIME_MM,TIME_SS://設

置日、月、年、周、時、分、秒和溫度寄存區

databitDAY_B1T=0;〃天數增長標志位(用于日期進位的后動)

dataunsignedcharDIS_BIT=0;〃多種信息的I切換顯示

dataunsignedcharcou=0;//軟計數器,對10ms時基信號累加到1s

/:K:長:長彳::長:長

r7j,*,卜,J*?*7£?*q,,、卜1,rj%rj?*2*7,,卜rjw*r£j*?4,*Jw,hrj??y?7rj??八rjwej?、r[j■、

//定義LCM2402指令集〃(詳細請見技術手冊)

/ijC5^C5^Crjwr^C?jC?{Cr^w5jC?^C5^C?^Crjw5§?5^C;¥;rj?55Cr}?rjCr^w?jC?JCrj?rjwJ{C5^Crjwrj?Sjw5^Crjwrjw?5C5{CrjwrjwrjwrjwrjwrjC5{Crj?rjw5^Cr^wr^C?^Cr}?VfC

2^C^Jc5}?X?J*?'jC/

#defineCMD_clear0x01//清除屏幕

#defineCMD_back0x02//DDRAM回零位

#defineCMD_decl0x04//讀入后AC(指針)減1,

向左寫

#defineCMD_addl0x06//讀入后AC(指針)力口1,

向右寫

#defineCMD_dis_gblOxOf//開顯示_開光標一開光

標閃爍

#defineCMD_dis_gb2OxOe//開顯示_開光標一關光

標閃爍

#defineCMD_dis_gb3OxOc//開顯示_關光標.關光

標閃爍

#defineCMD_OFF_dis0x08〃關顯不_關光標_關光

標閃爍

#dcfincCMD_sct820x38〃8位總線_2行顯示

#dcfincCMD_set810x30〃8位總線」行顯示(上邊

行)

#defineCMD_set420x28//4位總線_2行顯不

#defineCMD_set410x20〃4位總線」行顯示(上邊

行)

#definelin_l0x80〃4位總線」行顯示(上邊

行)

#definelin_2OxcO〃4位總線」行顯示(上邊

行)

/彳.?J??J?彳.?^?斗:?J??J**J?”:?J?*Jj彳.?J*?^??J>?J?

?1^X,4,^U?24?j,kl*q,■].^UV*4,“/

*1**J、*j?[、?I?q、*J**j?[、<?**J、<、q、*J、*J*?,**1*?*?*4??,??、*J?

函數名:亳秒級CPU延時函數

調ffl:DELAY_MS(?);

參數:1-65535(參數不可為0)

返回值:無

結果:占用CPU方式延時與參數數值相似的毫秒時間

備注:應用于1T單片機時iv600,應用于12T單片機時i<125

/rj?5}?5^?jjc?}??jc?^Cijc55c5^?5jc?{C5^Cjjc5^C?jcrj?55c?{?5^C

3^25^Cyjj2>C彳.jXj*J?aj^彳.彳:/

voidDELAY_MS(unsignedinta)(

unsignedinti;

while(-a!=O){

for(i=();i<600;i++);

/*?■sjc2^C2^C5^??}?SgC2^?2^2jjl2^?2^C2^C2^C?J?SjC2^C5^?2^??J?SjC2^Cjjl2^22^C5^??J?ijc2{C5^??}?2^C2^C5j?2^C2^C5^?SjC2^CJ^C?}?5}?2^C2^C

S^Cijcjjc2^C5^1/

上■],?{??],?!?^!!?■£/",曲立■"?!*也“/?!?,,

ff?7??T?*T??*7**7*??&j??“*1,***!T***1*.、*1??1?*7*.、*T?rna^?“T/***T1**?4**7*.、*T?*??*7*?T??T**T?*71**7**7**T??*T?*7*[、*T?*?1??*7?*T**T*?j?*7*[、*r?rT*rn?T??T*?*71W*?*?1?**7*?*T£?**T?*7*?T?■?£r**T?*??*}*.、??1、?*7la*

*Crjwrjw5^?f*rj?rj??{C?^wrjwrj?rj^S^Cr^Crjwrjw?{C?^CXrj?rji

//讀LCM忙程序[底層協議]〃(所有底層協議都無需關注)

“LCM2402測忙,若LCM2402處在忙狀態,本函數將等待至非忙狀態//

,:jj:,::長*2*彳:/

voidLCM2402_TestBusy(void){

LCM2402_DB0_DB7=Oxff;〃設備讀狀態

LCM2402_RS=0;

LCM2402_RW=1;

LCM2402_E=1;

while(LCM2402_Bjsy);〃等待LCM不忙

LCM2402_E=0;//

1

/yij:長斗,彳:*:二,彳:,,:長彳,,::/*:斗:':,:彳.,,彳::長

*******************x****

//寫指令程序〃

//向LCM2402寫命令本函數需要1個指令集/、J入口參數//

/?}?jjc5}?2^C5}?SjCJ^C?}?55?2^C2^C?}?5^C2^Cijc2^CS^C5jC5}CJ^C5jC2^CS^C?}?2jCS^CS^C5}??^C5^C?J?5jC2^C2^25jC5^CS^C

5^C5^55^5:長彳::長/

voidLCM2402_WriteCMD(uint8LCM2402_command){

LCM2402_TestBusy();

LCM2402_RS=0;

LCM2402.RW=0;

LCM2402_DR0_DB7=(IrM2402_conimand/l6)?4;//0x450x40

LCM2402_E=1;

LCM2402_E=0;

LCM2402_DB0_DB7=(LCM2402_command%16)?4;//0x450x50

LCM2402_E=1;

LCM2402_E=0;

1

/::::長彳;?J?:長?J?,::長彳::長

*V*1**4^Y?£x

rj、rg%,J?*1*,,、rj*(、,[、,n[、**?rg^*,**J、,、,h[、*J、

//寫數據程序〃

//向LCM2402寫數據〃

/r}??jc5^?jjc5^Cjjc5jCjjC?^C?^C5^2jjc?jc?^C?^C5jc5^C?}??j?5^C?^C5}?5^C?^C5^C5jc?{?5^?jjcrj?SjCJ^C?JCjjc5^C5^C?}??^Cjjc5^CS^C5^?

j2^》■,.,.,■>■JXJJJJ?./

voidLCM2402_WriteData(uint8LCM2402_data)(

LCM2402_TestBusy():

LCM2402_RS=1;

LCM2402.RW=0;

LCM2402_DB0_DB7=(LCM2402_dat<i/16)?4;

LCM2402_E=1;

LCM2402_E=0;

LCM2402_DB0_DB7=(LCM2402_data%16)?4;

LCM2402_E=I;

LCM2402_E=0;

)

/ej?a^???????**^a*^

*******************x****

//打印字符串程序〃(本函數調用指針函數)

//向LCM發送一種字符串,長度48字符之內

//第一行位置0X()0~0K17第二行位置0x40~()x57

//應用舉例:print(0x80,u);〃在第一行第一位處從左向右打印

字符串

/*3**{??J??jc?^Crjcsjc5^Cjjcjjc?^C5^C5jc?{C5^CSjC5^€5^C5jc?jC?^C5^?jjc?^C5^Cjjcjjc5^C?^C5^?

voidprint(uint8a,uint8*str){

LCM2402_WriteCMD(a|0x80);

while(*str!=*\0')(

LCM2402_WriteData(*str++);

*str=0;

)

,,,

tlrj??7卜.,卜,卜?卜,[?rj?4,,卜rj*嚇,,卜,〉?y**J*,hrj?rj??卜,卜rj?q.*,!卜?7,卜,卜,J?q..卜,[?rj?*2*?7!*rj?,卜?}?,卜〃??y**7|*,卜?2?7.,1?,J?r?j£?q.?卜,[?rj?,7「,r、j1*X

Re5^C,C2^2力?sjc?^C?^C2^C?^CXRe

//打印單字符程序〃

//第一行位置0x00?0K17第二行位置0x40?0x57

//向LCM發送一種字符,以十六進制(0x00)表達

//應用舉例:prim(0xc0,0x30);〃在第二行第一位處打印字符“0”

/jXja^?a^a*^aa^?a^aa2>e*^????^aa*^

*******************x****/

voidprint2(uinl8a,uint8t){

LCM2402_WriteCMD(a|0x80);

LCM2402_WriteData(t);

)

Z^C?J?5*C2^C5^?53c2^C2^C2^CS^C5^?2JC2^?X?}?5jC2^CJ^C

//定義小中文〃

//可寫入8個自字義字符,寫入后可用其CGRAM代碼直接提取顯示。

//字符定義措施請參照技術手冊

/r}??jc5^?jjc5^Cjjc5jCjjC?^C?^C5^2jjc?jc?^C?^C5jc5^C?}??j?5^C?^C5}?5^C?^C5^C5jc?{?5^?jjcrj?SjCJ^C?JCjjc5^C5^C?}??^Cjjc5^CS^C5^?

j2^》■,.,.,■>■JXJJJJ?./

uint8codeXword[]=(

0xff,0x00,0x1f,0x11,0x1f,0xl1,Oxff,OxOO,//℃,代碼OxOO

0x00,0x00,0x00,0x00,Oxlf,0x00,0x00,0x00,〃一,代碼0x01

0x00,0x00,0x00,OxOe,0x0(),Oxff,0x0(),0x00,〃二,代碼0x02

0x0(),0x0(),Oxff;()xOO,()x()e,0x0(),Oxff,0x00,〃三,代碼0x03

0x00,0x00,0xff;()xl5,()xfb,Oxfl,Oxff,0x00,〃四,代碼0x04

0x00,Oxfe,0x08,0xfe,0x0a,0x0a,0xff,0x00,〃五,代碼0x05

0x0(),0x()4,0x0(),()xff;()x()(),()x()a,Ox11,0x00,〃六,代碼0x06

0x00,Ox1f,()x11,Ox1f,()x11,Ox11,()x1f,()x()(),//日,代碼0x07

1;

voidCgramWrite(void){//裝入CGRAM//

uint8i;

LCM2402_WriteCMD(0x06);//CGRAM地址自動加1

LCM2402_WriteCMD(0x40);//CGRAM地址設為00處

for(i=0;i<64;i++){

LCM2402_WriteData(Xword[i]);//按數組寫入數據

}

)

/ySj彳:?***■?J>斗:

*1??1*?1??1??£**£??£**1?<_>?2?*1>

?1?,;、rzw?卜?卜?'?rj??<??[??卜rj?rlwrj??卜???:?rr?4,

“LCM2402初始化〃(使用者可自定義,加*號程序行必須保留但可修改)

/彳.,■,?彳S22^彳;?■<2^彳:*.*^a....>.>.a^斗.#.?.4.*.*.*.

,:,,”:j.彳.,:/

voidLCM2402_Init(void){

LCM2402_WriteCMD(CMD_set42);〃*顯示模式設置:顯示2行,每個字符

為5*7個像素

LCM2402_WritcCMD(CMD_set42);〃*顯示模式設置:顯示2行,每個字符

為5*7個像素

LCM2402_WriteCMD(CMD_clear);//顯示清屏

LCM2402_WriteCMD(CMD_back);〃*數據指針指向第1行第1個字符

位置

LCM2402_WriteCMD(CMD_add1);//顯示光標移動設置:文字不動,

光標右移

LCM2402_WriteCMD(CMD_dis_gb3);//顯示開及光標設置:顯示開,光

標開,閃爍開

CgramWrile();//向CGRAM寫入自定義字符

1

/afj“,^!/??[,*1*?!!??],?i?、],“,?£*?{,“,X,q,?>V%!/?■],

/*,*q、*7*[、*1*,j、q、*J、?、*J、*1*q、*1**|、*,**J、q、[、*1**5**J、*1*?、*J、*(**1**7**7*?,*?、,j、

?^wrjw?JC5*^r^Crj?rJCrjwrj?r^Crjwrjw?{?Xrj??jC/

//以上是LCM2402驅動程序//

/^3^^Jcjjcijc^Jc>}cjjc^|c^Jcjjc^}c^jcJjCi{€^}c^|cjjc^}c^Jcjjcjjcsjcijcjjcjjcjjc^jcijcsjc^|c^Csjc^}c^jc5j€^|cJJCsjc^Jc

*1??1*?1??1??£**£??£**1?<_>?2?*1>?t??2??1??1??L??t??(??1??1??£?*1??2??1??1?%1??£*?{??1??1*?t??£>?/??t??£?

,1,.卜?'、rj?rjw?>??工、?Tw.卜.:?彳*?J??[?rlw?>】??Z<..rj?ej??Jw.卜I/rjw?Jw.1?.:??1?rlwrl?rj??Yw?Jw.:?M?rl?.J?rj、?;、.卜.;?rj?*J<rj??卜?[?.;?rjw?Jw.卜.:?rj?,[??<?.;?.J*彳、

a^?e^J*^a

函數名:10位A/D轉換初始化函數

調用:Read_init(?);

參數:輸入的端口(00000XXX其中XXX是設置輸入端口號,可用十進制

0?7表達,0表達P1.0,7表達P1.7)

返回值:無

結果:啟動ADC功能并設置ADC的輸入端口

備注:使用ADC功能時需要將對應H勺IO接口設置為高阻輸入方式(例如:

P1M1=0x01;)

/********************************************************************

rj?ijc5^C?}??jcrj?jjc5{CX5}C5{Crj?SjC/

voidRead_init(unsignedcharCHA){

unsignedcharAD_FIN=0;〃存儲A/D轉換標志

CHA&=0x07;//選擇ADC的8個接口中H勺一種(00000111清

0高5位)

ADC.CONTR=0x40;//ADC轉換H勺速度(0XX00000其中XX控制速

度,請根據數據手冊設置)

_nop_();

ADC_CONTR|=CHA;〃選擇A/D目前通道

_nop_();

ADC_CONTR|=0x80;//啟動A/D電源

DELAY_MS(1);〃使輸入電壓到達穩定(1ms即可)

/彳.彳S^2^彳;》■<2^彳:*.....>.>.a^斗.#.?.4...*.*.,.

,:,,?J<”:j.彳.,:]

fI<2*q*5.**7!,*?*1t??*rjt%???s7?7*1,*7rj?,〃*1?*、r}>?r*£^*7rj,*rj?、rj)w?£*3,r7j,?,、「>r?}V?k£**7X,**、1!*rJ**£?*?■7rj?,?r1j.?、*7”?彳q、.ryj?,r?j>?rjwr7j,**〃1?^、>?£?q,r7f,.r%jt*?、r}>?*£?7rj*.、r]j.?、rj>w?esj?q.7rj,.、rj>??rj>?7.*J??r>j??2??,7rjw.?rjt.?、r>j???*7,、],,、卜>rj?7rj,*、*J!?*

5^C?jcJ^C?}?ijc?{?5^??}?52c?{?5^Cjjc5^CX?}?<J?

函數名:10位A/D轉換函數

調用:?=ADC_Read();

參數:無

返回值:10位ADC數據高(從0到1023(十進制))

結果:讀出指定ADC接口日勺A/D轉換值,并返回數值

備注:合用于STC12C5A60S2系列單片機(必須使用STC12C5A60S2.h頭文

獻)

/)::;:斗::長:K:斗:斗:計:*5^:K斗:H::/*2^#::,::l:)::長?j?4::*2^]:

、!■?>y,、!,、>??>y,、>

r7j,?,卜rj?*7*q,,,、,卜rj?r|?,卜rjwrjwrjwrj?r|?八,卜*}?ej.,卜rj?Ji

unsignedintADC_Read(void){

unsignedcharAD_FIN=0;//存儲A/D轉換標志

ADC_CONTR|=0x08;〃啟動A/D轉換(00001000令ADCS=1)

_nop_();

_nop_();

_nop_();

_nop_();

while(AD_FIN==()){〃等待A/D轉換結束

AD_FIN=(ADC_CONTR&0x10);//OOOl0000測試A/D轉換結束否

ADC_CONTR&=0xE7;//llll0111清ADC_FLAG位,關閉A/D轉

換,

return(ADC_RES*4+ADC_RESL);//igM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論