单片机课程设计报告四路定时控制器_第1页
单片机课程设计报告四路定时控制器_第2页
单片机课程设计报告四路定时控制器_第3页
单片机课程设计报告四路定时控制器_第4页
单片机课程设计报告四路定时控制器_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论