




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、湄洲灣職業技術學院單片機課程設計報告微機控制與應用課程設計報告書題 目:四路定時控制器姓 名:學 指導老日 單片機課程設計報告摘要: 近年來隨著科技的飛速發展,單片機的應用正在不斷地走向深入,同時帶動傳統控制檢測日新月異更新. 在實時檢測和自動控制的單片機應用系統中,單片機往往是作為一個核心部件來使用,僅單片機方面知識是不夠的,還應根據具體硬件結構,以及針對具體應用對象特點的軟件結合,加以玩善。四路定時控制器,可以更簡單、方便的使用。本系統采用單片機at89c51為中心器件來設計四路定時控制器,系統實用性強、操作簡單、擴展性強。目錄一、 設計任務 3二、 四路定時控制器設計程序框圖 3三、 四
2、路定時控制器的主程序 3四、 功能說明 16五、 原理圖 17六、 檢測與調試 18七、 總結與體會 18一、設計任務(一)、功能及技術指標要求設計四路定時控制器的基本要求:設計一個四路定時控制器,要應用untitledisisprofessional實驗系統(二)、設計內容按設計技術指標進行四路定時控制器的硬件和軟件設計。(三)、設計思路及關鍵技術 一個完整的四路定時控制器想當于一個簡單的單片機系統,該系統四路定時控制器設置電路、單片機、顯示電路等構成。單片機是集成ic芯片,只需根據實際設計要求選型。其他部分都需要根據應用要求和性能指標自行設計。 二、四路定時控制器的設計程序框圖 開始設置時
3、間和路線開始計時 到達時間響鈴所有線路定時完畢三、四路定時控制器的主程序 程序如下:16rs equ p2.0rw equ p2.1e equ p2.2d0_d7 equ p0beep bit p3.7org 0000hajmp readyorg 000bhajmp int_0org 001bhajmp int_1;30h-37h 循環顯示;3ah鍵值 3bh是否已進入設置狀態;40h-47h time0;48h-4fh time1;50h-57h time2;58h-5fh time3int_ready:mov ie,#8ahmov tmod,#11h mov th0,#4chmov tl0
4、,#00hmov th1,#00hmov tl1,#00hsetb tr0setb tr1retint_0:mov th0,#4ch mov tl0,#00h push acc inc 38h mov a,38h cjne a,#20d,int_0_exit mov 38h,#00h ajmp time_0;* int_0_exit: pop acc reti;*time_0: mov a,44h cjne a,#01h,time_1 dec 45h mov a,45h cjne a,#0ffh,check0 mov 45h,#59d dec 43h mov a,43h cjne a,#0ff
5、h,check0 mov 43h,#59d dec 42h mov a,42h cjne a,#0ffh,check0 mov 42h,#99dcheck0: mov a,#00h add a,45h add a,43h add a,42h cjne a,#00h,time_0_exit mov 44h,#00h mov c,00h cpl c mov 00h,c mov p2.7,c mov a,41h cjne a,#01h,no_beep0 mov 64h,#01h ajmp time_0_exitno_beep0:mov 64h,#00htime_0_exit:mov a,3eh cj
6、ne a,#01h,time_1 mov r1,#40h lcall disp_data_loop;*time_1: mov a,4ch cjne a,#01h,time_2 dec 4dh mov a,4dh cjne a,#0ffh,check1 mov 4dh,#59d dec 4bh mov a,4bh cjne a,#0ffh,check1 mov 4bh,#59d dec 4ah mov a,4ah cjne a,#0ffh,check1 mov 4ah,#99dcheck1: mov a,#00h add a,4dh add a,4bh add a,4ah cjne a,#00h
7、,time_1_exit mov 4ch,#00h mov c,01h cpl c mov 01h,c mov p2.6,c mov a,49h cjne a,#01h,no_beep1 mov 64h,#01h ajmp time_1_exitno_beep1:mov 64h,#00htime_1_exit:mov a,3eh cjne a,#02h,time_2 mov r1,#48h lcall disp_data_loop ajmp time_2 ;*time_2: mov a,54h cjne a,#01h,time_3 dec 55h mov a,55h cjne a,#0ffh,
8、check2 mov 55h,#59d dec 53h mov a,53h cjne a,#0ffh,check2 mov 53h,#59d dec 52h mov a,52h cjne a,#0ffh,check2 mov 52h,#99dcheck2: mov a,#00h add a,55h add a,53h add a,52h cjne a,#00h,time_2_exit mov 54h,#00h mov c,02h cpl c mov 02h,c mov p2.5,c mov a,51h cjne a,#01h,no_beep2 mov 64h,#01h ajmp time_2_
9、exitno_beep2:mov 64h,#00htime_2_exit:mov a,3eh cjne a,#03h,time_3 mov r1,#50h lcall disp_data_loop ;*time_3: mov a,5ch cjne a,#01h,exit_int_0 dec 5dh mov a,5dh cjne a,#0ffh,check3 mov 5dh,#59d dec 5bh mov a,5bh cjne a,#0ffh,check3 mov 5bh,#59d dec 5ah mov a,5ah cjne a,#0ffh,check3 mov 5ah,#99dcheck3
10、: mov a,#00h add a,5dh add a,5bh add a,5ah cjne a,#00h,time_3_exit mov 5ch,#00h mov c,03h cpl c mov 03h,c mov p2.4,c mov a,59h cjne a,#01h,no_beep3 mov 64h,#01h ajmp time_3_exitno_beep3:mov 64h,#00htime_3_exit:mov a,3eh cjne a,#04h,exit_int_0 mov r1,#58h lcall disp_data_loopexit_int_0:ajmp int_0_exi
11、t ;*int_1:push acc inc 3dh mov a,3dh cjne a,#50d,int_1_exit mov 3dh,#00h inc 3eh mov a,3eh;*disp_time0:cjne a,#01h,disp_time1 mov r1,#40h lcall disp_data_loop ajmp int_1_exit;*disp_time1:cjne a,#02h,disp_time2 mov r1,#48h lcall disp_data_loop ajmp int_1_exit;*disp_time2:cjne a,#03h,disp_time3 mov r1
12、,#50h lcall disp_data_loop ajmp int_1_exit;*disp_time3:cjne a,#04h,clr_time mov r1,#58h lcall disp_data_loop ajmp int_1_exit;*clr_time:mov 3eh,#01h mov a,3eh ajmp disp_time0;*int_1_exit:pop acc mov th1,#00h mov tl1,#00h reti;*disp_data_loop:mov r2,#8d mov r0,#30hloop0: mov a,r1 mov r0,a inc r0 inc r
13、1 djnz r2,loop0 ret;* ready:mov a,#00111000b ;功能設置指令,8位接口,顯示2行,57字符 lcall writeir ;調寫指令寄存器子程序 mov a,#00001100b ;顯示開關控制指令,顯示器開,光標開,光標閃爍 lcall writeir mov a,#00000110b ;輸入方式設置指令,字符不動,光標自動右移一格 lcall writeir mov a,#00000001b ;清屏指令,將ddram數據全部填入空白 lcall writeir ;* 顯示make of pp,time time controller mov a,#
14、10000000b lcall writeir mov dptr,#data3 lcall lcd_disp mov a,#11000000b lcall writeir mov dptr,#data0 lcall lcd_disp ;* mov r4,#00h lcall delay ;* mov 30h,#00h ;mode mov 31h,#00h ;beep mov 32h,#00h ;小時 mov 33h,#00h ;分鐘 mov 34h,#00h ;是否已開啟 mov 35h,#00h ;秒 mov 36h,#3ah ;冒號 mov 37h,#01h ;序號 mov 38h,#00
15、h ;定時器0計時 mov 39h,#01h ;循環顯示狀態還是設置狀態 mov 3ch,#00h ;按鍵 mov 3dh,#00h; 定時器1計時 mov 3eh,#01h ;定時器1 mov 3bh,#00h mov 60h,#40h mov sp,#70h mov r2,#32d mov r0,#40hdata_loop:mov r0,#00h inc r0 djnz r2,data_loop mov 46h,#3ah mov 47h,#01h mov 4eh,#3ah mov 4fh,#02h mov 56h,#3ah mov 57h,#03h mov 5eh,#3ah mov 5fh
16、,#04h mov a,#00000001b ;清屏指令,將ddram數據全部填入空白 lcall writeir lcall int_ready ;* main:lcall disp lcall key lcall key1 mov a,64h cjne a,#01h,main mov 64h,#00h acall beep_bl acall beep_bl acall beep_bl acall beep_bl ajmp main;*;-;蜂鳴器響一聲子程序;-beep_bl: mov r6,#50 bl1: call dex1 cpl beep djnz r6,bl1 mov r5,#1
17、0 call delay2 ret dex1: mov r7,#180 dex2: nop djnz r7,dex2 retdelay2: ;延時r510ms mov r6,#50delay1: mov r7,#100 djnz r7,$ djnz r6,delay1 djnz r5,delay2 ret;-key1:mov p1,#0ffh mov a,p1anl a,#00001111bcjne a,#00001111b,key1_panduankey1_exit: retkey1_panduan:mov 3ah,a mov r4,#15d lcall delay mov a,p1 anl
18、 a,#00001111b cjne a,3ah,key1_exit lcall key1_chuli lcall beep_bl retkey1_chuli:cjne a,#00001110b,key1_2 mov 44h,#00h mov c,00h cpl c mov 00h,c mov p2.7,ckey1_2: cjne a,#00001101b,key1_3 mov 4ch,#00h mov c,01h cpl c mov 01h,c mov p2.6,ckey1_3: cjne a,#00001011b,key1_4 mov 54h,#00h mov c,02h cpl c mo
19、v 02h,c mov p2.5,ckey1_4: cjne a,#00000111b,key1_chuli_exit mov 5ch,#00h mov c,03h cpl c mov 03h,c mov p2.4,ckey1_chuli_exit: ret;* disp: mov a,#10000000b lcall writeir mov a,37h add a,#48d lcall writeddr;顯示序號 mov a,#10000010b lcall writeir mov dptr,#data1 lcall lcd_disp mov a,30h add a,#48d lcall w
20、riteddr ;顯示“mode:0/1 mov a,#10001001b lcall writeir mov dptr,#data2 lcall lcd_disp mov a,31h add a,#48d lcall writeddr ;顯示“beep:0/1 mov a,#11000010b lcall writeir mov a,32h mov b,#10d div ab add a,#48d lcall writeddr mov a,b add a,#48d lcall writeddr mov a,36h lcall writeddr mov a,33h mov b,#10d div
21、 ab add a,#48d lcall writeddr mov a,b add a,#48d lcall writeddr mov a,39h cjne a,#01h,disp1 mov a,36h lcall writeddr mov a,35h mov b,#10d div ab add a,#48d lcall writeddr mov a,b add a,#48d lcall writeddrdisp1:mov a,#11001100b lcall writeir mov a,34h cjne a,#01h,off mov dptr,#data_on lcall lcd_disp
22、retoff: mov dptr,#data_off lcall lcd_disp ret;*key:mov p1,#0ffh mov a,p1anl a,#11110000bcjne a,#11110000b,key_panduankey_exit: retkey_panduan:mov 3ah,a mov r4,#15d lcall delay mov a,p1 anl a,#11110000b cjne a,3ah,key_exit lcall key_chuli ret;*;按鍵處理key_chuli:cjne a,#11100000b,set_data clr tr1 mov 3eh
23、,#05h mov 3bh,#01h mov 61h,#00h acall beep_bl inc 3ch mov a,3ch;*set1: cjne a,#01h,set2 mov 62h,60h mov 39h,#00h mov a,#01h lcall writeir mov r1,#40h lcall disp_data_loop lcall key_disp lcall key_loop ret;*set2: cjne a,#02h,set3 mov a,60h add a,#8d mov 60h,a mov 62h,60h mov 39h,#00h mov a,#01h lcall
24、 writeir mov r1,#48h lcall disp_data_loop lcall key_disp ret;*set_data: mov a,3bh cjne a,#01h,key_chuli_exit lcall beep_blkey2: mov a,3ah cjne a,#11010000b,key3 lcall key2_chuli ret;*set3: cjne a,#03h,set4 mov a,60h add a,#8d mov 60h,a mov 62h,60h mov 39h,#00h mov a,#01h lcall writeir mov r1,#50h lc
25、all disp_data_loop lcall key_disp ret;*set4: cjne a,#04h,key_chuli_exit mov a,60h add a,#8d mov 60h,a mov 62h,60h mov 39h,#00h mov a,#01h lcall writeir mov r1,#58h lcall disp_data_loop lcall key_disp ret;*key_disp:lcall disp mov a,#10000111b lcall writeir mov a,#00001111b lcall writeir ret;* *key3:
26、cjne a,#10110000b,key4 lcall key3_chuli ret;* key4: cjne a,#01110000b,key_chuli_exit lcall key4_chulikey_chuli_exit:ret;* key_loop:lcall key mov a,3ch cjne a,#05h,key_loop mov 39h,#01h mov 3ch,#00h mov 3eh,#01h mov 3bh,#00h mov 60h,#40h mov a,#00001100b lcall writeir mov r1,#40h lcall disp_data_loop
27、 setb tr1 ret;*key2_chuli:inc 61h mov a,61h cjne a,#5d,then1 mov a,#00hthen1: mov 61h,a cjne a,#00h,set_bit1 add a,60h mov 62h,a mov a,#10000111b lcall writeir retset_bit1:cjne a,#01h,set_bit2 add a,60h mov 62h,a mov a,#10001110b lcall writeir retset_bit2:cjne a,#02h,set_bit3 add a,60h mov 62h,a mov
28、 a,#11000011b lcall writeir retset_bit3:cjne a,#03h,set_bit4 add a,60h mov 62h,a mov a,#11000110b lcall writeir retset_bit4:cjne a,#04h,key2_chuli_exit add a,60h mov 62h,a mov a,#11001100b lcall writeirkey2_chuli_exit:ret;*key3_chuli: mov a,61h; cjne a,#00h,set_data1mov r1,62hinc r1mov a,r1cjne a,#0
29、2h,set_then0mov a,#00hset_then0:mov r1,a mov 63h,#10000111b ajmp key3_chuli_exit;set_data1: cjne a,#01h,set_data2mov r1,62hinc r1mov a,r1cjne a,#02h,set_then1mov a,#00hset_then1:mov r1,a mov 63h,#10001110b ajmp key3_chuli_exit;set_data2: cjne a,#02h,set_data3 mov r1,62hinc r1mov a,r1cjne a,#100d,set
30、_then2mov a,#00hset_then2:mov r1,a mov 63h,#11000011b ajmp key3_chuli_exit;set_data3: cjne a,#03h,set_data4mov r1,62hinc r1mov a,r1cjne a,#60d,set_then3 mov a,#00hset_then3: mov r1,a mov 63h,#11000110b ajmp key3_chuli_exit;set_data4: cjne a,#04h,key3_chuli_exit mov r1,62hinc r1mov a,r1cjne a,#02h,se
31、t_then4 mov a,#00hset_then4: mov r1,a mov 63h,#11001100b mov a,#05h add a,60h mov r1,a mov r1,#00h mov a,60h;*mode_1: cjne a,#40h,mode_2 mov a,40h cjne a,#01h,mode_1_then clr 00h mov c,00h mov p2.7,c ajmp key3_chuli_exitmode_1_then:setb 00h mov c,00hmov p2.7,c ajmp key3_chuli_exit;*mode_2: cjne a,#4
32、8h,mode_3 mov a,48h cjne a,#01h,mode_2_then clr 01h mov c,01h mov p2.6,c ajmp key3_chuli_exitmode_2_then:setb 01h mov c,01hmov p2.6,cajmp key3_chuli_exit;*mode_3: cjne a,#50h,mode_4 mov a,50h cjne a,#01h,mode_3_then clr 02h mov c,02h mov p2.5,c ajmp key3_chuli_exitmode_3_then:setb 02h mov c,02hmov p
33、2.5,c ajmp key3_chuli_exit;*mode_4: cjne a,#58h,key3_chuli_exit mov a,58h cjne a,#01h,mode_4_then clr 03h mov c,03h mov p2.4,c ajmp key3_chuli_exitmode_4_then:setb 03h mov c,03hmov p2.4,cajmp key3_chuli_exit;*key3_chuli_exit:mov r1,60h lcall disp_data_loop lcall dispmov a,63hlcall writeir ret;*key4_
34、chuli: mov a,61hset2_data0:cjne a,#00h,set2_data1 mov 63h,#10000111b ajmp key4_chuli_exitset2_data1:cjne a,#01h,set2_data2 mov 63h,#10001110b ajmp key4_chuli_exit;set2_data2: cjne a,#02h,set2_data3 mov r1,62hdec r1mov a,r1cjne a,#0ffh,set2_then2mov a,#99dset2_then2:mov r1,a mov 63h,#11000011b ajmp k
35、ey4_chuli_exitset2_data3: cjne a,#03h,set2_data4mov r1,62h dec r1mov a,r1cjne a,#0ffh,set2_then3 mov a,#59dset2_then3: mov r1,a mov 63h,#11000110b ajmp key4_chuli_exit;set2_data4:cjne a,#04h,key4_chuli_exit mov 63h,#11001100b;key4_chuli_exit:mov r1,60h lcall disp_data_loop lcall dispmov a,63hlcall w
36、riteir ret;*lcd_disp:mov a,#00h movc a,a+dptr jz lcd_disp_exit lcall writeddr inc dptr ajmp lcd_displcd_disp_exit:ret; 檢查忙碌子程序checkbusy:push accloop: clr rs ;選擇指令寄存器setb rw ;選擇讀模式mov d0_d7,#0ffh ;p0口寫1,準備寫入setb e ;使能lcdmov a,d0_d7 clr e ;禁止lcdlcall checkbusy_delay ;調延時子程序pop accret ; 寫入ir寄存器子程序write
37、ir:push acclcall checkbusy ;調檢查忙子程序clr e ;禁止lcdclr rs ;選擇指令寄存器clr rw ;選擇寫模式setb e ;使能lcdmov d0_d7,a ;將控制指令寫入lcdsetb e ;使能lcdclr e ;禁止lcdpop accret ; 寫入dr寄存器子程序writeddr:push acclcall checkbusy ;調檢查忙子程序clr e ;禁止lcdsetb rs ;選擇數據寄存器clr rw ;選擇寫模式setb e ;使能lcdmov d0_d7,a ;將數據寫入lcdsetb e ;使能lcdclr e ;禁止lcd
38、pop accret ;以下是2.5ms延時子程序checkbusy_delay:mov r5,#5d2: mov r4,#248d1: djnz r4,d1djnz r5,d2retdelay:mov r6,#10de_lp:mov r5,#250djnz r5,$djnz r6,de_lpdjnz r4,delayretdata0:db make of pp ,00hdata1:dbmode:,00hdata2:dbbeep:,00hdata3:dbtime controller ,00hdata_on:dbon ,00hdata_off:dboff,00hend四、功能說明本定時控制器有
39、四個定時控制組,每個定時組最長可定時100小時,基本上滿足了各種場合的需要。 提供兩種定時模式選擇。 模式0:定時開始時,斷開相應的繼電器,定時結束后,閉合繼電器,需要手動斷開繼電器 模式1:定時開始時,閉合相應的繼電器,定時結束后,斷開繼電器。 蜂鳴器提醒:定時結束后蜂鳴器鳴叫以起到提醒作用(必須設置了蜂鳴器提醒功能,具體方法見下文“操作方法”)(一)操作方法1. 上電后,定時控制器處于通常狀態,此時循環顯示4個定時組的信息。(如圖2所示) 圖2 左上角的“1”表示該定時組的序號,“mode”表示定時模式,“beep”表示定時結束后是否鳴叫,設為0時關閉這個功能,1則開啟。“00:00:00
40、”表示定時時間的小時、分鐘和秒。“off”表示該定時組處于關閉狀態。2. 按一次k4則進入設置狀態,此時對定時組1進行設置,再按一次k4則對定時組2進行設置,如此類推。按5次后,則退出設置,.回到通常狀態循環顯示4個定時組的信息。k2的功能是切換要設置的項目(光標閃爍的項目),即定時模式、蜂鳴器、定時時間、定時組的開啟/關閉。k3的功能是將對應的設置項目加1。但設置的數據不會一直加下去,即定時模式的設置數據只是0或1,定時時間的小時在099之間k4的功能是將對應的設置項目減1。(為避免與k3功能重復,k4只用于定時時間的小時、分鐘減1) 圖33. k1k4可以對對應的繼電器進行取反操作,即閉合變為斷開,斷開變為閉合。這
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 25年公司安全管理人員安全培訓考試試題【培優】
- 2024-2025企業員工安全培訓考試試題(一套)
- 2024-2025公司安全培訓考試試題答案4A
- 2025家居裝修合同示范文本
- 2025家具采購合同范本
- 2025員工違反保密合同泄露商業機密詐騙賠償金法律途徑維權被判刑
- 2025心理咨詢師合同協議書范本
- 2025年燒結釹鐵硼永磁材料合作協議書
- 2025技術合作開發合同模板樣本
- 2025企業貸款合同簡化版
- 2024華能四川能源開發有限公司下屬單位招聘筆試參考題庫附帶答案詳解
- 2025怎樣正確理解全過程人民民主的歷史邏輯、實踐邏輯與理論邏輯?(答案3份)
- 鋼結構高處作業安全管理
- JJF 2221-2025導熱系數瞬態測定儀校準規范
- 華為手機協議合同
- 甘肅省隴南市禮縣第六中學2024-2025學年八年級下學期第一次月考數學試卷(無答案)
- 公司兩班倒管理制度
- 完整版高中古詩文必背72篇【原文+注音+翻譯】
- 2025年武漢數學四調試題及答案
- 人教版小學四年級語文下冊2024-2025學年度第二學期期中質量檢測試卷
- 七年級下冊道德與法治(2025年春)教材變化詳細解讀
評論
0/150
提交評論