基於單片機的微波爐控製器設計
發布時間:2011-03-10
微波爐控製器的中心議題:
微波爐控製器的工作環境相對比較惡劣。首先是爐腔溫度比較高,控製器附近溫度也會比較高,達到60℃~70℃;另一方麵,微波輻射對單片機抗幹擾的要求也很高,在做多次快速開關門(men)試(shi)驗(yan)中(zhong),當(dang)少(shao)量(liang)微(wei)波(bo)泄(xie)露(lu)時(shi),對(dui)控(kong)製(zhi)器(qi)有(you)一(yi)定(ding)的(de)輻(fu)射(she),以(yi)及(ji)反(fan)複(fu)開(kai)通(tong)和(he)關(guan)斷(duan)大(da)功(gong)率(lv)負(fu)載(zai)會(hui)產(chan)生(sheng)較(jiao)強(qiang)的(de)幹(gan)擾(rao)。所(suo)以(yi)選(xuan)擇(ze)合(he)適(shi)的(de)單(dan)片(pian)機(ji)十(shi)分(fen)重(zhong)要(yao),在(zai)多(duo)年(nian)的(de)家(jia)電(dian)產(chan)品(pin)設(she)計(ji)中(zhong),經(jing)常(chang)用(yong)盛(sheng)群(qun)半(ban)導(dao)體(ti)(Holtek)的48係列及46係列8bitdanpianjishejiweibolukongzhiqi,wulunzaishiyinggongzuohuanjinghaishikangganraodengfangmiandouwanquanmanzuyaoqiu,zaichengbenjigonghuodengfangmianbiguowaixinpianyeyougengmingxiandeyoushi。
本文通過實際產品為例,以產品功能要求、方案確定和芯片選型、硬件設計、軟件規劃及編寫等幾部分介紹如何用單片機設計微波爐控製器。
功能要求
shejichanpinshouxianlejiechanpindeyaoqiu,lejieyuexiangxishejifanfuxiugaijiuyueshao,tebieshiguanyuyingxiangxinpianxuanxingjishuchukongzhidenggenyingjianzhijiexiangguandebufen。benwenjieshaodeweibolukongzhiqidezhuyaogongnengruxia:
方案確定和芯片選型
了解產品的詳細要求後,需要確定具體的實現方案,首先是選擇合適的單片機。選擇合適的型號主要要看兩個方麵:硬(ying)件(jian)資(zi)源(yuan)和(he)軟(ruan)件(jian)資(zi)源(yuan)。要(yao)選(xuan)擇(ze)合(he)理(li)的(de)單(dan)片(pian)機(ji)首(shou)先(xian)必(bi)須(xu)了(le)解(jie)單(dan)片(pian)機(ji)的(de)各(ge)係(xi)列(lie)及(ji)各(ge)款(kuan)的(de)資(zi)源(yuan),再(zai)了(le)解(jie)需(xu)要(yao)什(shen)麼(me)樣(yang)的(de)資(zi)源(yuan),下(xia)麵(mian)分(fen)別(bie)從(cong)硬(ying)件(jian)和(he)軟(ruan)件(jian)來(lai)說(shuo)明(ming)怎(zen)樣(yang)根(gen)據(ju)要(yao)求(qiu)選(xuan)擇(ze)單(dan)片(pian)機(ji)。在(zai)選(xuan)擇(ze)單(dan)片(pian)機(ji)時(shi),整(zheng)個(ge)產(chan)品(pin)的(de)方(fang)案(an)也(ye)基(ji)本(ben)確(que)定(ding)。
硬件相關資源
硬件相關的資源是指外圍硬件相關的如I/O數量、特殊驅動、工作電壓等。
首先,選擇合適的單片機係列。看供電電壓及工作溫度抗幹擾能力等是否滿足要求。盛群的MCU在係統振蕩頻率小於4MHz時供電電壓供電範圍為2.2V~5.5V,當8MHz時則為3.3V~5.5V,要提高係統的抗幹擾能力,最好用5V電壓供電,當供電電壓較高時,MCU內部所有邏輯電平幅值較高,容差電壓大,幹擾更強才能改變其邏輯狀態。工作溫度,選擇Holtek的48和46係列工業級單片機,工作溫度範圍為-40℃~85℃,完全能滿足微波爐控製器工作溫度的要求。在選擇合適的係列時,還要看特殊資源的要求,如中斷口、PWM、蜂鳴器驅動、A/D轉換等;在此產品的具體要求中,需要檢測爐腔的溫度以及在產品中需要對交流風扇調速,溫度檢測需要A/D轉換,交流風扇調速控製需要有過零中斷,所以,在這個產品中選擇了46係列單片機。但此產品不需要LCD驅動、高精度A/D轉換及比較器等資源,則不選擇HT46R6X、HT46R5X、HT46R1X等係列,而選擇HT46R2X係列。
再就是選擇的具體I/O要求和什麼樣封裝的單片機,在Holtek單片機中同型號的單片機有多種封裝,如HT46R23有DIP28或SOP28封裝,也有DIP24或SOP24封裝,其I/O分別為23個和19個。
根據前麵提到的功能要求,其I/O的需求列舉如下:
簡單加起來總共需要20個輸出port,16個輸入port。考慮複用I/O,將9個數碼驅動段和5個公共端同時做輸入檢測;溫度檢測隻能用A/D口PB.0,過零檢測隻能用單獨的中斷PA.5來檢測,所以總共需要22個I/O,所以選擇28PIN的HT46R2x可以滿足要求。
軟件相關資源
軟件相關的資源主要包括程序空間即ROM的大小和數據空間RAM的多少,當功能較多且複雜時需要更多的ROM和RAM;當然還有定時器、中斷、以及其它某些特殊的資源;前麵已經選擇了28PIN封裝的46R2X係列單片機,此產品功能相對比較豐富,程序空間要求比較多,選擇4K的ROM和192byteRAM的HT46R23應該能夠滿足要求,同樣封裝可以選擇28PIN的HT46R24,它有8K ROM和384byteRAM,可以做後備選擇,這樣不必擔心資源不夠時換IC,反複修改硬件就很麻煩。
總之,在選擇資源時,要軟硬兼顧,如果程序簡單,硬件資源要求高,則可以選擇封裝小、I/O少的單片機,另外增加擴展IC來擴展I/O;當程序複雜,硬件資源要求少時,則選擇較小封裝、軟件資源多的單片機。[page]
硬件電路設計
在選擇主芯片時,已經在考慮部分電路設計了,顯示、按鍵檢測、輸出驅動等都考慮好了,由於篇幅有限,隻簡單介紹幾個關鍵問題:
門檢測電路:給單片機檢測的門開關信號的同時,還要控製微波、燒烤、熱風烘烤繼電器的電源。
供電部分:考(kao)慮(lv)數(shu)碼(ma)管(guan)顯(xian)示(shi)內(nei)容(rong)較(jiao)多(duo),驅(qu)動(dong)電(dian)流(liu)大(da),變(bian)壓(ya)器(qi)盡(jin)量(liang)選(xuan)擇(ze)繼(ji)電(dian)器(qi)和(he)單(dan)片(pian)機(ji)獨(du)立(li)供(gong)電(dian),一(yi)方(fang)麵(mian)降(jiang)低(di)變(bian)壓(ya)器(qi)功(gong)率(lv),同(tong)時(shi)可(ke)以(yi)讓(rang)單(dan)片(pian)機(ji)的(de)電(dian)源(yuan)不(bu)受(shou)繼(ji)電(dian)器(qi)的(de)工(gong)作(zuo)狀(zhuang)態(tai)影(ying)響(xiang)。
過零檢測和觸發:選擇合適的光耦和可控矽驅動電路,實現過零驅動,過零檢測電路注意適當的濾波和隔離,減少通過電源耦合的幹擾。
另外,PCB設計時注意強弱電分開,注意電源與地的分布,注意生產的工藝性問題等。總之,合理的硬件設計和PCB布板對保證產品功能和性能十分重要。
軟件規劃及編寫
芯片配置選項設定
根據硬件電路,將按鍵、編碼開關及門檢測部分的內部設置上拉電阻;盛群單片機的LVD功能很可靠,所以複位電路直接接到VCC,那麼在設置配置選項時一定要開啟低電壓複位功能,不開啟容易上電複位不良。下麵將主要選項設定列舉如下:
PA3/PFD: Enable PFD
Pull-High PB: Enable
Pull-High PC: Disable
Pull-High PD: Enable
OSC: CRYSTAL
WDT clock source: WDTOSC
WDT: Enable
LVR: Enable
LVR voltage: 3.2V
CLRWDT: Two Instructions.
軟件整體規劃及模塊化分解
將jiang複fu雜za的de功gong能neng分fen解jie,通tong過guo變bian量liang傳chuan遞di各ge模mo塊kuai之zhi間jian的de關guan聯lian內nei容rong,模mo塊kuai內nei部bu則ze盡jin量liang獨du立li完wan成cheng,這zhe樣yang讓rang程cheng序xu的de可ke移yi植zhi性xing提ti高gao,調tiao試shi更geng快kuai。把ba複fu雜za的de問wen題ti簡jian單dan化hua是shi程cheng序xu編bian寫xie的de重zhong要yao原yuan則ze。
1)主程序
tongguotiaoyonggezichengxu,zhenghegemokuaidegongneng。shumaguansaomiaoxianshiduishijianyaoqiubijiaogao,erqiegegegonggongduanyaopingjunfenpeishijian,suoyizhuchengxuzhixingzhouqixuanzegudingzhouqi。lingwaibianmakaiguanyeshisaomiaojiancefangshi,dangbianmakaiguanxuanzhuanhenkuaishi,maichongpinlvjiaogao,saomiaozhouqiyebunengtaichang,zonghezhengti,zhuchengxuxuanze4ms為執行周期,但顯示和按鍵及編碼開關則執行2次,相當於2ms的掃描周期。
如果用4MHz的晶振,4ms時間可以執行4000條指令,程序設計合理情況下完全可以運行完各子程序,不擔心出現當處理事件多時顯示閃爍等問題。
2)編碼開關、按鍵及門狀態檢測
因編碼開關、按鍵及門狀態檢測I/O都同顯示驅動I/O複用,所以需統一處理。
先關閉顯示COM,檢測SEG上的狀態,再關閉SEG,再檢測COM上的狀態。
此部分程序還要完成按鍵檢測及消抖動處理、編碼開關的檢測、門狀態去抖動檢測,以有效按鍵變量、編碼開關左右旋轉標誌、門狀態等為輸出。其它子程序根據按鍵、編碼開關操作和門狀態執行對應的操作和功能。
3)過零檢測及過零觸發
過零檢測在外部中斷程序中完成,中斷後根據當前運行狀態設置散熱風扇半功率、全(quan)功(gong)率(lv)和(he)關(guan)三(san)種(zhong)狀(zhuang)態(tai)。開(kai)和(he)關(guan)狀(zhuang)態(tai)直(zhi)接(jie)設(she)置(zhi)控(kong)製(zhi)光(guang)耦(ou)狀(zhuang)態(tai),當(dang)需(xu)要(yao)半(ban)功(gong)率(lv)時(shi),需(xu)要(yao)記(ji)錄(lu)中(zhong)斷(duan)次(ci)數(shu),調(tiao)整(zheng)導(dao)通(tong)和(he)關(guan)閉(bi)周(zhou)期(qi),這(zhe)裏(li)沒(mei)有(you)用(yong)調(tiao)整(zheng)可(ke)控(kong)矽(gui)導(dao)通(tong)移(yi)相(xiang)的(de)方(fang)法(fa)調(tiao)功(gong),可(ke)減(jian)少(shao)電(dian)磁(ci)輻(fu)射(she)。
4)按鍵設置
按鍵操作設置程序的輸入條件為有效的按鍵和編碼開關左右旋轉標誌,再細分每個按鍵分別處理,在什麼條件下設置對應的工作時間、輸出模式、顯示模式、蜂鳴器鳴叫等。
5)顯示狀態設置
設置4字節保存顯示數字部分內容,另2字節保存四周圖標變量,由於四周的圖標有閃爍和不閃爍狀態,另2字節設置圖標的閃爍狀態。
6)顯示輸出掃描
根據顯示狀態變量的8字節變量內容,設置數碼管對應COM和SEG,掃描顯示輸出。
7)加熱輸出及功率控製設置
加熱和功率控製程序通過統一的變量輸入,設置當前的微波、燒烤、熱風還是幾種混合加熱,以及設置內燈及散熱風扇輸出等。
8)溫度檢測及計算
設置A/Dzhuanhuan,jianceremindianzudezhi,binglvbochuli,yijikailuduanlubaohujiance。qishuchuweiguzhangzhuangtaibiaozhihedangqianluqiangwendu。zairefenghongkaoshuchuchengxuzhonggenjuwendushezhiduiyingdejiarezhuangtai。
9)時鍾、定時及運行時間計算及對應輸出模式切換
程序中關於時間的設置很多,大多都在這個子程序中完成,如時鍾計算、預約比較、倒計時、自動功能的多段加熱模式切換等。
10)蜂鳴器設置
兩個變量buz_n,buz_long來設置蜂鳴器鳴叫次數和單聲鳴叫長度。可單獨設置buz_long值為單聲的鳴叫,在上電和按鍵操作時設置單聲鳴叫。當定時結束或定時啟動或故障提示等情況時,需要設置鳴叫多時,設置buz_n值就可以了。[page]
11)定時中斷子程序
定時中斷子程序相對很簡單,隻設置中斷次數記錄就可以了。由於蜂鳴器鳴叫頻率為2KHz,所以定時中斷時間為250us。
其中內容比較多的部分是:按鍵操作、顯示狀態設置、時鍾、定時及運行時間計算及對應輸出模式切換、加熱輸出及功率設置等部分。
在軟件的編寫中,變量規劃很重要,下麵還列出了幾個典型的變量規劃:
整個產品的主要工作模式用run_state來記錄:
run_state equ [40h]
s_hotfan equ run_state.0 ;熱風烘烤
s_micro equ run_state.1 ;微波
s_grill equ run_state.2 ;燒烤
s_mix equ run_state 3 ;混合模式
s_auto equ run_state.4 ;自動解凍
s_mu equ run_state.5 ;自動菜單工作模式
s_fast equ run_state.6 ;快速啟動模式
顯示模式用dsp_state來記錄:
dsp_state equ [41h]
s_time equ dsp_state.0 ;顯示時鍾狀態
s_timer equ dsp_state.1 ;顯示定時時間狀態
s_off_t equ dsp_state.2 ;顯示倒計時狀態
s_code equ dsp_state.3 ;顯示菜單或工作模式狀態
加熱模式heat_mode變量來控製當前的輸出,其具體數據說明如下:
當有混合狀態時,則同時設置對應的位就可以了。
合理設計變量對整個程序的編寫很有用,同時也是對產品功能的規劃和理解的具體化,找出主要的和關鍵的控製關係,設計合適的、適當通用的算法。而且對於經常編寫同類產品時,移植程序變得很簡單;比如將此產品數碼管換為LCD顯示時,基本上隻需要將顯示輸出部分修改為驅動顯示IC或顯示RAM就可以了,其顯示得內容還是顯示時間、定時、倒計時時間、菜單或模式,隻需要修改對應得顯示表就可以了。
程序編寫和程序調試
ruanjianjiandanguihuahou,jiuxuyaojutidebianxie,jiangrenwufenjiehou,meibufenyijingbijiaojiandanle,tiaoshishikeyikaolvgezichengxudandutiaoshi,renweimonishurugezhongqingkuangxiadeshujujizhuangtai,jianzhashuchushifouzhengque。zaijiangxiangguanliandeyiqitiaoshi。chufeihenyoubawo,buyaojiangchengxuquanbianxiewanlezaitiaoshi,nayangjiubuzhidaodaodinaliyouwenti。
程序簡單題綱如下:
定義常量,某些固定的值,多次用到或經常修改的常量,單獨定義後調用。
buz_l0 equ 50d;50*4=200ms設置所有默認蜂鳴器鳴叫聲音長度。
sw_t0 equ 70d;有效按鍵響應時間,按鍵去抖動時間
。。。。。。
定義I/O,將各輸入/輸出單獨按功能或原理圖網絡標號定義,當原理圖修改時方便軟件修改
buz_p equ pa.3
grill_p equ pc.0
micro_p equ pc.1
......
定義變量,
run_state equ [40h];或則用自動變量定義
......
程序開始
org 0h
jmp start_l
org 04H ;外部中斷向量
jmp int_set ;跳轉過零中斷處理程序
org 08H ;定時中斷向量,中斷周期為250us
mov temp_a,a ;保存
mov a,status
mov temp_s,a
inc t_int0;每次中斷0.25us
mov a,temp_s
mov status,a
mov a,temp_a
reti
中斷處理程序,注意先保存用到的ACC和標誌寄存器status,返回前恢複
int_set:
......;中斷處理程序,設置風扇輸出
reti[page]
主程序開始
start_l:
初始化RAM、I/O、timer、中斷等,一般先將通用RAM全清零
注意繼電器等關鍵變量的初始化,否則上電時繼電器可能會跳一下。
初始化某些特殊變量
主循環程序部分
main:
call sw_in_set ;注意按鍵設置會將顯示關閉,則顯示輸出程序在後
call dsp_out_set ;顯示掃描程序
call sw_out_set ;按鍵功能及狀態設置
call ad_tem_set ;A/D轉換及溫度計算
call dsp_state_set ;顯示狀態計算
main_delay_2ms:
mov a,t_int0 ;0.25*8=2 等待2ms時間到
sub a,8
snz c
jmp main_delay_2ms
call sw_in_set ;注意按鍵設置會將顯示關閉,則顯示輸出程序在後
call dsp_out_set ;調用顯示掃描程序
call heat_out _set ;調用加熱狀態及功率設置
call buz_set ;調用蜂鳴器設置子程序
call time_set
main_delay_4ms:
mov a,t_int0 ;0.25ms*16=4ms 等待4ms時間到
sub a,16
snz c
jmp main_delay_2ms
clr t_int0
jmp main
各子程序分列後麵
sw_in_set: ;按鍵檢測、編碼開關檢測、門狀態檢測
......
ret
dsp_out_set: ;顯示掃描程序
......
ret
sw_out_set: ;按鍵功能及狀態設置
......
ret
ad_tem_set: ;A/D轉換及溫度計算
......
ret
dsp_state_set: ;顯示狀態計算
......
ret
heat_out _set: ;調用加熱狀態及功率設置
......
ret
buz_set: ;蜂鳴器設置子程序
......
ret
time_set: ;時間及定時處理程序
......
ret
程序中會用到很多表,為調用方便,則將其放到最後頁麵
org 0f00h
dsp_code_l0:
dc 10011111b;0
......
end ;程序結束
- 產品功能要求介紹
- 方案確定和芯片選型
- 硬件設計
- 軟件規劃及編寫
- 采用單片機進行設計
微波爐控製器的工作環境相對比較惡劣。首先是爐腔溫度比較高,控製器附近溫度也會比較高,達到60℃~70℃;另一方麵,微波輻射對單片機抗幹擾的要求也很高,在做多次快速開關門(men)試(shi)驗(yan)中(zhong),當(dang)少(shao)量(liang)微(wei)波(bo)泄(xie)露(lu)時(shi),對(dui)控(kong)製(zhi)器(qi)有(you)一(yi)定(ding)的(de)輻(fu)射(she),以(yi)及(ji)反(fan)複(fu)開(kai)通(tong)和(he)關(guan)斷(duan)大(da)功(gong)率(lv)負(fu)載(zai)會(hui)產(chan)生(sheng)較(jiao)強(qiang)的(de)幹(gan)擾(rao)。所(suo)以(yi)選(xuan)擇(ze)合(he)適(shi)的(de)單(dan)片(pian)機(ji)十(shi)分(fen)重(zhong)要(yao),在(zai)多(duo)年(nian)的(de)家(jia)電(dian)產(chan)品(pin)設(she)計(ji)中(zhong),經(jing)常(chang)用(yong)盛(sheng)群(qun)半(ban)導(dao)體(ti)(Holtek)的48係列及46係列8bitdanpianjishejiweibolukongzhiqi,wulunzaishiyinggongzuohuanjinghaishikangganraodengfangmiandouwanquanmanzuyaoqiu,zaichengbenjigonghuodengfangmianbiguowaixinpianyeyougengmingxiandeyoushi。
本文通過實際產品為例,以產品功能要求、方案確定和芯片選型、硬件設計、軟件規劃及編寫等幾部分介紹如何用單片機設計微波爐控製器。
功能要求
shejichanpinshouxianlejiechanpindeyaoqiu,lejieyuexiangxishejifanfuxiugaijiuyueshao,tebieshiguanyuyingxiangxinpianxuanxingjishuchukongzhidenggenyingjianzhijiexiangguandebufen。benwenjieshaodeweibolukongzhiqidezhuyaogongnengruxia:
- 燒烤加熱,功率有2檔
- 微波加熱,功率有10檔
- 熱風烘烤加熱,溫度多檔
- 混合加熱,有三種組合模式:燒烤加微波、烘烤加微波、烘烤加燒烤
- 自動解凍,重量選擇有20檔
- 自動菜單,6大類,各類分別有重量選擇
- 顯示:88:88數碼管,四周帶14個圖標
- 按鍵:有功能選擇鍵、啟動鍵、取消鍵、熱風烘烤鍵,時鍾及定時鍵,自動菜單各功能鍵,總共11個
- 編碼開關:調節加熱時間
- 另有蜂鳴器、門檢測和門燈控製
方案確定和芯片選型
了解產品的詳細要求後,需要確定具體的實現方案,首先是選擇合適的單片機。選擇合適的型號主要要看兩個方麵:硬(ying)件(jian)資(zi)源(yuan)和(he)軟(ruan)件(jian)資(zi)源(yuan)。要(yao)選(xuan)擇(ze)合(he)理(li)的(de)單(dan)片(pian)機(ji)首(shou)先(xian)必(bi)須(xu)了(le)解(jie)單(dan)片(pian)機(ji)的(de)各(ge)係(xi)列(lie)及(ji)各(ge)款(kuan)的(de)資(zi)源(yuan),再(zai)了(le)解(jie)需(xu)要(yao)什(shen)麼(me)樣(yang)的(de)資(zi)源(yuan),下(xia)麵(mian)分(fen)別(bie)從(cong)硬(ying)件(jian)和(he)軟(ruan)件(jian)來(lai)說(shuo)明(ming)怎(zen)樣(yang)根(gen)據(ju)要(yao)求(qiu)選(xuan)擇(ze)單(dan)片(pian)機(ji)。在(zai)選(xuan)擇(ze)單(dan)片(pian)機(ji)時(shi),整(zheng)個(ge)產(chan)品(pin)的(de)方(fang)案(an)也(ye)基(ji)本(ben)確(que)定(ding)。
硬件相關資源
硬件相關的資源是指外圍硬件相關的如I/O數量、特殊驅動、工作電壓等。
首先,選擇合適的單片機係列。看供電電壓及工作溫度抗幹擾能力等是否滿足要求。盛群的MCU在係統振蕩頻率小於4MHz時供電電壓供電範圍為2.2V~5.5V,當8MHz時則為3.3V~5.5V,要提高係統的抗幹擾能力,最好用5V電壓供電,當供電電壓較高時,MCU內部所有邏輯電平幅值較高,容差電壓大,幹擾更強才能改變其邏輯狀態。工作溫度,選擇Holtek的48和46係列工業級單片機,工作溫度範圍為-40℃~85℃,完全能滿足微波爐控製器工作溫度的要求。在選擇合適的係列時,還要看特殊資源的要求,如中斷口、PWM、蜂鳴器驅動、A/D轉換等;在此產品的具體要求中,需要檢測爐腔的溫度以及在產品中需要對交流風扇調速,溫度檢測需要A/D轉換,交流風扇調速控製需要有過零中斷,所以,在這個產品中選擇了46係列單片機。但此產品不需要LCD驅動、高精度A/D轉換及比較器等資源,則不選擇HT46R6X、HT46R5X、HT46R1X等係列,而選擇HT46R2X係列。
再就是選擇的具體I/O要求和什麼樣封裝的單片機,在Holtek單片機中同型號的單片機有多種封裝,如HT46R23有DIP28或SOP28封裝,也有DIP24或SOP24封裝,其I/O分別為23個和19個。
根據前麵提到的功能要求,其I/O的需求列舉如下:
- 繼電器驅動:微波、燒烤、熱風烘烤、門燈/轉盤、散熱風扇共5個輸出ports
- 蜂鳴器驅動:1個輸出ports
- 按鍵有11個:11個輸入port
- 門狀態檢測:1個輸入port
- 編碼開關檢測:2個輸入port
- 顯示數碼管:5個COM,9個段,需14輸出port
- 過零中斷檢測:1個中斷輸入port
- 溫度檢測:1個A/D輸入port
簡單加起來總共需要20個輸出port,16個輸入port。考慮複用I/O,將9個數碼驅動段和5個公共端同時做輸入檢測;溫度檢測隻能用A/D口PB.0,過零檢測隻能用單獨的中斷PA.5來檢測,所以總共需要22個I/O,所以選擇28PIN的HT46R2x可以滿足要求。
軟件相關資源
軟件相關的資源主要包括程序空間即ROM的大小和數據空間RAM的多少,當功能較多且複雜時需要更多的ROM和RAM;當然還有定時器、中斷、以及其它某些特殊的資源;前麵已經選擇了28PIN封裝的46R2X係列單片機,此產品功能相對比較豐富,程序空間要求比較多,選擇4K的ROM和192byteRAM的HT46R23應該能夠滿足要求,同樣封裝可以選擇28PIN的HT46R24,它有8K ROM和384byteRAM,可以做後備選擇,這樣不必擔心資源不夠時換IC,反複修改硬件就很麻煩。
總之,在選擇資源時,要軟硬兼顧,如果程序簡單,硬件資源要求高,則可以選擇封裝小、I/O少的單片機,另外增加擴展IC來擴展I/O;當程序複雜,硬件資源要求少時,則選擇較小封裝、軟件資源多的單片機。[page]
硬件電路設計
在選擇主芯片時,已經在考慮部分電路設計了,顯示、按鍵檢測、輸出驅動等都考慮好了,由於篇幅有限,隻簡單介紹幾個關鍵問題:
門檢測電路:給單片機檢測的門開關信號的同時,還要控製微波、燒烤、熱風烘烤繼電器的電源。
供電部分:考(kao)慮(lv)數(shu)碼(ma)管(guan)顯(xian)示(shi)內(nei)容(rong)較(jiao)多(duo),驅(qu)動(dong)電(dian)流(liu)大(da),變(bian)壓(ya)器(qi)盡(jin)量(liang)選(xuan)擇(ze)繼(ji)電(dian)器(qi)和(he)單(dan)片(pian)機(ji)獨(du)立(li)供(gong)電(dian),一(yi)方(fang)麵(mian)降(jiang)低(di)變(bian)壓(ya)器(qi)功(gong)率(lv),同(tong)時(shi)可(ke)以(yi)讓(rang)單(dan)片(pian)機(ji)的(de)電(dian)源(yuan)不(bu)受(shou)繼(ji)電(dian)器(qi)的(de)工(gong)作(zuo)狀(zhuang)態(tai)影(ying)響(xiang)。
過零檢測和觸發:選擇合適的光耦和可控矽驅動電路,實現過零驅動,過零檢測電路注意適當的濾波和隔離,減少通過電源耦合的幹擾。
另外,PCB設計時注意強弱電分開,注意電源與地的分布,注意生產的工藝性問題等。總之,合理的硬件設計和PCB布板對保證產品功能和性能十分重要。
軟件規劃及編寫
芯片配置選項設定
根據硬件電路,將按鍵、編碼開關及門檢測部分的內部設置上拉電阻;盛群單片機的LVD功能很可靠,所以複位電路直接接到VCC,那麼在設置配置選項時一定要開啟低電壓複位功能,不開啟容易上電複位不良。下麵將主要選項設定列舉如下:
PA3/PFD: Enable PFD
Pull-High PB: Enable
Pull-High PC: Disable
Pull-High PD: Enable
OSC: CRYSTAL
WDT clock source: WDTOSC
WDT: Enable
LVR: Enable
LVR voltage: 3.2V
CLRWDT: Two Instructions.
軟件整體規劃及模塊化分解
將jiang複fu雜za的de功gong能neng分fen解jie,通tong過guo變bian量liang傳chuan遞di各ge模mo塊kuai之zhi間jian的de關guan聯lian內nei容rong,模mo塊kuai內nei部bu則ze盡jin量liang獨du立li完wan成cheng,這zhe樣yang讓rang程cheng序xu的de可ke移yi植zhi性xing提ti高gao,調tiao試shi更geng快kuai。把ba複fu雜za的de問wen題ti簡jian單dan化hua是shi程cheng序xu編bian寫xie的de重zhong要yao原yuan則ze。
1)主程序
tongguotiaoyonggezichengxu,zhenghegemokuaidegongneng。shumaguansaomiaoxianshiduishijianyaoqiubijiaogao,erqiegegegonggongduanyaopingjunfenpeishijian,suoyizhuchengxuzhixingzhouqixuanzegudingzhouqi。lingwaibianmakaiguanyeshisaomiaojiancefangshi,dangbianmakaiguanxuanzhuanhenkuaishi,maichongpinlvjiaogao,saomiaozhouqiyebunengtaichang,zonghezhengti,zhuchengxuxuanze4ms為執行周期,但顯示和按鍵及編碼開關則執行2次,相當於2ms的掃描周期。
如果用4MHz的晶振,4ms時間可以執行4000條指令,程序設計合理情況下完全可以運行完各子程序,不擔心出現當處理事件多時顯示閃爍等問題。
2)編碼開關、按鍵及門狀態檢測
因編碼開關、按鍵及門狀態檢測I/O都同顯示驅動I/O複用,所以需統一處理。
先關閉顯示COM,檢測SEG上的狀態,再關閉SEG,再檢測COM上的狀態。
此部分程序還要完成按鍵檢測及消抖動處理、編碼開關的檢測、門狀態去抖動檢測,以有效按鍵變量、編碼開關左右旋轉標誌、門狀態等為輸出。其它子程序根據按鍵、編碼開關操作和門狀態執行對應的操作和功能。
3)過零檢測及過零觸發
過零檢測在外部中斷程序中完成,中斷後根據當前運行狀態設置散熱風扇半功率、全(quan)功(gong)率(lv)和(he)關(guan)三(san)種(zhong)狀(zhuang)態(tai)。開(kai)和(he)關(guan)狀(zhuang)態(tai)直(zhi)接(jie)設(she)置(zhi)控(kong)製(zhi)光(guang)耦(ou)狀(zhuang)態(tai),當(dang)需(xu)要(yao)半(ban)功(gong)率(lv)時(shi),需(xu)要(yao)記(ji)錄(lu)中(zhong)斷(duan)次(ci)數(shu),調(tiao)整(zheng)導(dao)通(tong)和(he)關(guan)閉(bi)周(zhou)期(qi),這(zhe)裏(li)沒(mei)有(you)用(yong)調(tiao)整(zheng)可(ke)控(kong)矽(gui)導(dao)通(tong)移(yi)相(xiang)的(de)方(fang)法(fa)調(tiao)功(gong),可(ke)減(jian)少(shao)電(dian)磁(ci)輻(fu)射(she)。
4)按鍵設置
按鍵操作設置程序的輸入條件為有效的按鍵和編碼開關左右旋轉標誌,再細分每個按鍵分別處理,在什麼條件下設置對應的工作時間、輸出模式、顯示模式、蜂鳴器鳴叫等。
5)顯示狀態設置
設置4字節保存顯示數字部分內容,另2字節保存四周圖標變量,由於四周的圖標有閃爍和不閃爍狀態,另2字節設置圖標的閃爍狀態。
6)顯示輸出掃描
根據顯示狀態變量的8字節變量內容,設置數碼管對應COM和SEG,掃描顯示輸出。
7)加熱輸出及功率控製設置
加熱和功率控製程序通過統一的變量輸入,設置當前的微波、燒烤、熱風還是幾種混合加熱,以及設置內燈及散熱風扇輸出等。
8)溫度檢測及計算
設置A/Dzhuanhuan,jianceremindianzudezhi,binglvbochuli,yijikailuduanlubaohujiance。qishuchuweiguzhangzhuangtaibiaozhihedangqianluqiangwendu。zairefenghongkaoshuchuchengxuzhonggenjuwendushezhiduiyingdejiarezhuangtai。
9)時鍾、定時及運行時間計算及對應輸出模式切換
程序中關於時間的設置很多,大多都在這個子程序中完成,如時鍾計算、預約比較、倒計時、自動功能的多段加熱模式切換等。
10)蜂鳴器設置
兩個變量buz_n,buz_long來設置蜂鳴器鳴叫次數和單聲鳴叫長度。可單獨設置buz_long值為單聲的鳴叫,在上電和按鍵操作時設置單聲鳴叫。當定時結束或定時啟動或故障提示等情況時,需要設置鳴叫多時,設置buz_n值就可以了。[page]
11)定時中斷子程序
定時中斷子程序相對很簡單,隻設置中斷次數記錄就可以了。由於蜂鳴器鳴叫頻率為2KHz,所以定時中斷時間為250us。
其中內容比較多的部分是:按鍵操作、顯示狀態設置、時鍾、定時及運行時間計算及對應輸出模式切換、加熱輸出及功率設置等部分。
在軟件的編寫中,變量規劃很重要,下麵還列出了幾個典型的變量規劃:
整個產品的主要工作模式用run_state來記錄:
run_state equ [40h]
s_hotfan equ run_state.0 ;熱風烘烤
s_micro equ run_state.1 ;微波
s_grill equ run_state.2 ;燒烤
s_mix equ run_state 3 ;混合模式
s_auto equ run_state.4 ;自動解凍
s_mu equ run_state.5 ;自動菜單工作模式
s_fast equ run_state.6 ;快速啟動模式
顯示模式用dsp_state來記錄:
dsp_state equ [41h]
s_time equ dsp_state.0 ;顯示時鍾狀態
s_timer equ dsp_state.1 ;顯示定時時間狀態
s_off_t equ dsp_state.2 ;顯示倒計時狀態
s_code equ dsp_state.3 ;顯示菜單或工作模式狀態
加熱模式heat_mode變量來控製當前的輸出,其具體數據說明如下:
- 0則關閉所有輸出。
- bit0_bit3(10_1)保存微波100% /90% /80% /70% /60% /50% /40% /30% /20% /10% /10檔,即最後4bit來記錄微波輸出功率,在自動解凍、自動菜單、混合等非簡單微波模式時,加熱功率輸出時隻需要判斷此變量,就直接設置微波輸出。
- bit4_bit5保存燒烤功率100%和50%。
- bit7保存熱風烘烤輸出。
當有混合狀態時,則同時設置對應的位就可以了。
合理設計變量對整個程序的編寫很有用,同時也是對產品功能的規劃和理解的具體化,找出主要的和關鍵的控製關係,設計合適的、適當通用的算法。而且對於經常編寫同類產品時,移植程序變得很簡單;比如將此產品數碼管換為LCD顯示時,基本上隻需要將顯示輸出部分修改為驅動顯示IC或顯示RAM就可以了,其顯示得內容還是顯示時間、定時、倒計時時間、菜單或模式,隻需要修改對應得顯示表就可以了。
程序編寫和程序調試
ruanjianjiandanguihuahou,jiuxuyaojutidebianxie,jiangrenwufenjiehou,meibufenyijingbijiaojiandanle,tiaoshishikeyikaolvgezichengxudandutiaoshi,renweimonishurugezhongqingkuangxiadeshujujizhuangtai,jianzhashuchushifouzhengque。zaijiangxiangguanliandeyiqitiaoshi。chufeihenyoubawo,buyaojiangchengxuquanbianxiewanlezaitiaoshi,nayangjiubuzhidaodaodinaliyouwenti。
程序簡單題綱如下:
定義常量,某些固定的值,多次用到或經常修改的常量,單獨定義後調用。
buz_l0 equ 50d;50*4=200ms設置所有默認蜂鳴器鳴叫聲音長度。
sw_t0 equ 70d;有效按鍵響應時間,按鍵去抖動時間
。。。。。。
定義I/O,將各輸入/輸出單獨按功能或原理圖網絡標號定義,當原理圖修改時方便軟件修改
buz_p equ pa.3
grill_p equ pc.0
micro_p equ pc.1
......
定義變量,
run_state equ [40h];或則用自動變量定義
......
程序開始
org 0h
jmp start_l
org 04H ;外部中斷向量
jmp int_set ;跳轉過零中斷處理程序
org 08H ;定時中斷向量,中斷周期為250us
mov temp_a,a ;保存
mov a,status
mov temp_s,a
inc t_int0;每次中斷0.25us
mov a,temp_s
mov status,a
mov a,temp_a
reti
中斷處理程序,注意先保存用到的ACC和標誌寄存器status,返回前恢複
int_set:
......;中斷處理程序,設置風扇輸出
reti[page]
主程序開始
start_l:
初始化RAM、I/O、timer、中斷等,一般先將通用RAM全清零
注意繼電器等關鍵變量的初始化,否則上電時繼電器可能會跳一下。
初始化某些特殊變量
主循環程序部分
main:
call sw_in_set ;注意按鍵設置會將顯示關閉,則顯示輸出程序在後
call dsp_out_set ;顯示掃描程序
call sw_out_set ;按鍵功能及狀態設置
call ad_tem_set ;A/D轉換及溫度計算
call dsp_state_set ;顯示狀態計算
main_delay_2ms:
mov a,t_int0 ;0.25*8=2 等待2ms時間到
sub a,8
snz c
jmp main_delay_2ms
call sw_in_set ;注意按鍵設置會將顯示關閉,則顯示輸出程序在後
call dsp_out_set ;調用顯示掃描程序
call heat_out _set ;調用加熱狀態及功率設置
call buz_set ;調用蜂鳴器設置子程序
call time_set
main_delay_4ms:
mov a,t_int0 ;0.25ms*16=4ms 等待4ms時間到
sub a,16
snz c
jmp main_delay_2ms
clr t_int0
jmp main
各子程序分列後麵
sw_in_set: ;按鍵檢測、編碼開關檢測、門狀態檢測
......
ret
dsp_out_set: ;顯示掃描程序
......
ret
sw_out_set: ;按鍵功能及狀態設置
......
ret
ad_tem_set: ;A/D轉換及溫度計算
......
ret
dsp_state_set: ;顯示狀態計算
......
ret
heat_out _set: ;調用加熱狀態及功率設置
......
ret
buz_set: ;蜂鳴器設置子程序
......
ret
time_set: ;時間及定時處理程序
......
ret
程序中會用到很多表,為調用方便,則將其放到最後頁麵
org 0f00h
dsp_code_l0:
dc 10011111b;0
......
end ;程序結束
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 1200餘家企業齊聚深圳,CITE2026打造電子信息產業創新盛宴
- 掌握 Gemini 3.1 Pro 參數調優的藝術
- 築牢安全防線:電池擠壓試驗機如何為新能源產業護航?
- Grok 4.1 API 實戰:構建 X 平台實時輿情監控 Agent
- 電源芯片國產化新選擇:MUN3CAD03-SF助力物聯網終端“芯”升級
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
MHL
Micrel
Microchip
Micron
Mic連接器
Mi-Fi
MIPS
MLCC
MMC連接器
MOSFET
Mouser
Murata
NAND
NFC
NFC芯片
NOR
ntc熱敏電阻
OGS
OLED
OLED麵板
OmniVision
Omron
OnSemi
PI
PLC
Premier Farnell
Recom
RF
RF/微波IC
RFID


