课程设计基于单片机的教学用电子打铃器电路设计.doc_第1页
课程设计基于单片机的教学用电子打铃器电路设计.doc_第2页
课程设计基于单片机的教学用电子打铃器电路设计.doc_第3页
课程设计基于单片机的教学用电子打铃器电路设计.doc_第4页
课程设计基于单片机的教学用电子打铃器电路设计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、目目 录录1 1、课程设计目的、课程设计目的.2 22 2、总体设计、总体设计.2 22 2。1 1 模块设计模块设计.2 22.22.2 程序流程图程序流程图.2 23 3、硬件单元设计硬件单元设计.4 43.13.1 电路设计总原理图电路设计总原理图 .4 43 3。2 2 各模块电路设计各模块电路设计 .4 43.2.13.2.1 键盘扫描模块键盘扫描模块.4 43 3。2.22.2 时钟和复位模块时钟和复位模块.4 43.23.2。3 3 显示模块显示模块.5 53.2.43.2.4 响铃模块响铃模块.6 64 4、软件设计、软件设计.7 74 4。1 1 键盘扫描程序键盘扫描程序.8

2、 84 4。2 2 数码管显示程序数码管显示程序.1 10 04 4。3 3 主程序主程序.1 11 14 4.4.4 响铃程序响铃程序.125 5、课程设计总结、课程设计总结.1 15 56 6、参考文献、参考文献.1 16 62 2总体设计总体设计 2.12.1 模块设计模块设计 教学用电子打铃器主要由AT89S51单片机、键盘扫描模块、时钟和复位模块、打铃器模块、八段数码管显示模块等组成。运用汇编语言来控制单片机80C51来实现、动态数码显示等功能。且本设计中的80C51单片机是整个工作过程的核心,是整个设计灵魂,它控制了脉冲时序的产生,显示信号的发送控制显示LED的选择.所用到的芯片元

3、器件:80C51 单片机, 3 个按键,1 个蜂鸣器,4 个八段 LED 数码管80C51是一种带4K字节存储器(的低电压、高性能CMOS 8位微处理器,俗称单片机. 2.22.2程序流程图程序流程图图2。2(1) 主程序流图2。2(1) 主程序程序流程图开始初始化参数设置调用显示子程序调用打铃对比程序调用键盘子程序图2。2(2) 定时中断程序流程图3 3。硬件单元设计。硬件单元设计3.13.1 电路设计总原理图电路设计总原理图 图图3.13.1 总体原理图 3 3. .2 2 各各模模块块电电路路设设计计3 3. .2 2. .1 1 键键盘盘扫扫描描模模块块利用四个按键进行校时,按键 K是

4、调整时间选择,按键 K进行小时加 1,按键K进行分钟加 ,按键K4则调整时间结束返回主程序, K1接P1.1,K2接P1。2,K3接P1。3,K4接P1。4。 3 3。2 2。2 2 时钟和复位模块时钟和复位模块 图3.2.2 时钟和复位模块3.2.33.2.3 显示模块及芯片说明显示模块及芯片说明根据设计要求系统需要 4 个共阳,数码管显示电路使用0的动态显示功能。4 个八段(、) ,数码管分别显示: “时” 、“分,用二极管的“点”作为时、分的间隔.该系统采用共阳极数码管,对于共阳极数码管,其公共端必须接高电平。当打铃的时候四个数码管中前三个不显示数据,最后一个显示课程节数。 图3.2.3

5、 显示模块3.2.43.2.4 响铃模块响铃模块打铃电路(接 P3.7):当前时间与程序设定时间相同时,P3。7 端输出高电平的方波,即打铃.每次响铃时间是 60S。 图 3.2。4 响铃模块4 4软件设计软件设计 中断服务程序通过定时器T0(工作方式为1),实现一日的24小时,首先得初始化,正常工作,主函数调用数码管显示程序显示当前时间,然后调用打铃对比函数,若当前时间与系统设定打铃时间相同是,响应打铃程序.当需要对时间校正时,可以通过按键扫描处理程序进行校时。 /程序初始化程序初始化/ ALBALB EQUEQU 20H20H/打铃设置标志打铃设置标志 BUFBUF EQUEQU 30H3

6、0H/30-33h/30-33h连续四个字节存放显示器数据连续四个字节存放显示器数据 HOURHOUR EQUEQU 34H34H /存放小时变量存放小时变量 MINMIN EQUEQU 35H35H/ 存放分钟变量存放分钟变量 SECSEC EQUEQU 36H36H/存放秒钟变量存放秒钟变量 DEDADEDA EQUEQU 37H37H / 存放存放5ms5ms计数值计数值 HHHH EQUEQU 38H38H / 打铃设置小时变量打铃设置小时变量 MMMM EQUEQU 39H39H/打铃设置分钟变量打铃设置分钟变量 ;按键输入引脚;按键输入引脚 K1K1 EQUEQU P1.1P1.1

7、 K2K2 EQUEQU P1P1。2 2 K3K3 EQUEQU P1.3P1.3 K4K4 EQUEQU P1.4P1.4 ; ;蜂鸣器和指示灯引脚定义蜂鸣器和指示灯引脚定义 SPKSPK EQUEQU P1P1。5 5 WLEDWLED EQUEQU P1.0P1.0 /工作指示灯引脚定义工作指示灯引脚定义 ORGORG 00H00H lJMPlJMP MAINMAIN ORGORG 0BH0BH lJMPlJMP T0_SRVT0_SRV /主程序入口主程序入口/ MAINMAIN: CLRCLR ALBALB /清除闹铃标志清除闹铃标志 MOVMOV A,A,80H80H /加载显示

8、器初始值数据加载显示器初始值数据 MOVMOV P0,AP0,A ACALLACALL BZBZ ;ACALLACALL BZBZ ACALLACALL LED_BLLED_BL ACALLACALL DELAY1DELAY1 ;定时器;定时器T0T0的初始化的初始化 ACALLACALL INITINITLOOPLOOP: ACALLACALL CONVCONV ACALLACALL DISPDISPLOOP2:LOOP2: ACALLACALL CONVCONV ACALLACALL LD1LD1/查询打铃时间查询打铃时间 MOVMOV A A,MINMIN CJNECJNE A A,#1

9、0,AGN#10,AGN JMPJMP LOOP2LOOP2 AGNAGN: CJNECJNE A,A,55,LOOP355,LOOP3 JMPJMP LOOP2LOOP2 LOOP3:LOOP3: JBJB K1,M1K1,M1 JNBJNB K1K1,$ $ ACALLACALL SETTIMESETTIME M1M1: JMPJMP LOOPLOOP jmpjmp looploop ACALLACALL DISPDISP LD1:LD1: MOVMOV A A,HOURHOUR CLRCLR C C SUBBSUBB A A,8 8 MOVMOV DPTR,DPTR,TALETALE M

10、OVCMOVC A,A,A+DPTRA+DPTRCJNECJNE A A,HOURHOUR,LLLLMOVMOV A,MINA,MINCJNECJNE A,#10A,#10,L LACALLACALL BZBZ MOVMOV A A,HOURHOUR CLRCLR C C SUBBSUBB A,A,8 8 MOVMOV DPTR,DPTR,TABLE2TABLE2 MOVCMOVC A,A,A+DPTRA+DPTR MOVMOV P0P0,A AACALLACALL DELAYDELAY L L:CJNECJNE A,#55A,#55,LLLLACALLACALL BZBZ MOVMOV A,

11、HOURA,HOUR CLRCLR C C SUBBSUBB A A,#8#8 MOVMOV DPTR,DPTR,TABLE2TABLE2 MOVCMOVC A A,A+DPTRA+DPTR MOVMOV P0P0,A AACALLACALL DELAYDELAYLL:LL: RETRETTALE:TALE:DBDB 08H08H,09H,0AH09H,0AH,0BH0BHTABLE2:TABLE2:DBDB 0F9H0F9H,0A4H,0B0H,99H0A4H,0B0H,99H /实现走动功能的的子程序实现走动功能的的子程序/ DELAY1DELAY1: MOVMOV TMOD,TMOD,0

12、0000001B00000001B /延时延时60ms60ms的子程序的子程序 设置设置T0T0工作在模式工作在模式1 1MOVMOV IEIE,#10000010B#10000010B /启用定时器启用定时器T0T0中断产生中断产生/ MOVMOV TCONTCON,#00010000B#00010000B /打开打开T0T0并将其设置为定时器并将其设置为定时器 MOVMOV TL0,TL0,LOW(65536LOW(655365000)5000) /直接带公式法设置直接带公式法设置T0T0的初值的初值, ,此方法为简便此方法为简便方法方法 MOVMOV TH0,#HIGH(65536TH0

13、,#HIGH(655365000)5000) SETBSETB TR0TR0 /若若TF0TF0为为1 1时代表时代表T0T0定时器计数已满定时器计数已满, ,有溢出程有溢出程序往下进行序往下进行 /若若TF0TF0为为0 0时将一直循环这条程序语句时将一直循环这条程序语句; ; RETRET ;中断服务程序;中断服务程序 T0_SRVT0_SRV:/定时器定时器T0T0计时中断程序每隔计时中断程序每隔5ms5ms中断一次中断一次 PUSHPUSH ACCACC MOVMOV TL0,TL0,LOWLOW(65536655365000)5000) /直接带公式法设置直接带公式法设置T0T0的初

14、值的初值, ,此方法为简便方法此方法为简便方法 MOVMOV TH0,TH0,HIGH(65536-5000HIGH(65536-5000) /MOV/MOV TL0TL0,(,(8192-50008192-5000)MODMOD 3232/重加载初始值重加载初始值 /MOV/MOV TH0TH0,(,(8192-50000)/328192-50000)/32 INCINC DEDADEDA ;秒输出;秒输出 MOVMOV A,DEDAA,DEDA CJNECJNE A,A,200200,TT1TT1 MOVMOV DEDADEDA,#0#0 CPLCPL WLEDWLED /LED/LED灯

15、亮灭变换灯亮灭变换 INCINC SECSEC MOVMOV A,SECA,SEC CJNECJNE A A,6060,TT1TT1 /是否是否1 1分钟到了分钟到了 ;分输出;分输出 INCINC MINMIN /分计数加一分计数加一 MOVMOV SEC,#0SEC,#0 /秒计数清零秒计数清零 MOVMOV A,MINA,MIN CJNECJNE A A,6060,TT1TT1 /看是否一小时到了看是否一小时到了 ; ;时输出时输出 INCINC HOURHOUR MOVMOV MIN,#0MIN,#0 MOVMOV A,HOURA,HOUR CJNECJNE A A,2424,TT1T

16、T1 MOVMOV SECSEC,0 0 MOVMOV MIN,#0MIN,#0 MOVMOV HOURHOUR,#0#0 TT1TT1: POPPOP ACCACC RETIRETI/实现显示功能的子程序实现显示功能的子程序/CONVCONV:; ;转换小时数据转换小时数据/通过通过DIVDIV指令进行十进制计时处理指令进行十进制计时处理, ,并将中断程序处理后的数据分别存并将中断程序处理后的数据分别存放入数码管显示内存中放入数码管显示内存中 /其中其中BUFBUF,BUF+1BUF+1存放小时;存放小时;BUF+2,BUF+3BUF+2,BUF+3存放分钟存放分钟 、MOVMOV A A,

17、HOURHOURMOVMOV B,#10B,#10DIVDIV ABAB/将将HOURHOUR内的值转换为十位和个位分别表示的十进制数字,便于用两位内的值转换为十位和个位分别表示的十进制数字,便于用两位数码管显示出来小时值数码管显示出来小时值MOVMOV DPTRDPTR,#TABLE#TABLE /DPTR/DPTR指针指向表的首地址指针指向表的首地址MOVCMOVC A A,A+DPTRA+DPTRMOVMOV BUFBUF,A AMOVMOV A A,B BMOVCMOVC A A,A+DPTRA+DPTRMOVMOV BUF+1BUF+1,A AMOVMOV A A,MINMIN /开

18、始转换分钟开始转换分钟MOVMOV B,B,1010DIVDIV ABABMOVMOV DPTR,DPTR,TABLETABLEMOVCMOVC A,A+DPTRA,A+DPTRMOVMOV BUF+2,ABUF+2,AMOVMOV A A,B BMOVCMOVC A A,A+DPTRA+DPTRMOVMOV BUF+3BUF+3,A A RETRET /共阳极数码管字符转换笔段码表共阳极数码管字符转换笔段码表/TABLE:TABLE:DBDB 0C0H0C0H,0F9H,0A4H,0B0H0F9H,0A4H,0B0HDBDB 99H99H,92H,82H92H,82H,0F8H0F8HDBD

19、B 80H,90H,88H,83H80H,90H,88H,83HDBDB 0C6H,0A1H0C6H,0A1H,86H,8EH86H,8EH /共阴极共阴极/ / TABLE:TABLE:/DB/DB 3FH3FH,06H,5BH06H,5BH,4FH4FH,66H66H/DB/DB 6DH6DH,7DH7DH,07H,7FH07H,7FH/DB/DB 6FH,77H6FH,77H,7CH,39H7CH,39H/DB/DB 5EH5EH,79H79H,71H71H/扫描显示子程序扫描显示子程序/实际四个数码管是在轮流显示的,每一刻都只有一个数码管亮,利用人的视觉暂留来使实际四个数码管是在轮流显

20、示的,每一刻都只有一个数码管亮,利用人的视觉暂留来使人感觉是在同时显示人感觉是在同时显示DISP:DISP:MOVMOV R0,#BUFR0,#BUF /指向显示器缓冲区起始地址,即存入十位上小时地址指向显示器缓冲区起始地址,即存入十位上小时地址MOVMOV R2,#4R2,#4 /扫描四次扫描四次MOVMOV A,#00001000BA,#00001000B /扫描初值,只是使扫描初值,只是使p2.3p2.3口打开口打开S1:S1:MOVMOV P2P2,A AMOVMOV A A,R0R0MOVMOV P0P0,A AMOVMOV A A,P2P2MOVMOV R5R5,2 2ACALLA

21、CALL DELAYDELAY /延时,以便显示字符稳定延时,以便显示字符稳定;EX;EX:XXXX1011XXXX1011 RRRR A A /A/A向右移动一位向右移动一位 INCINC R0R0 /指向指向BUF+1BUF+1 DJNZDJNZ R2R2,S1S1 /判断是否执行了四次扫描判断是否执行了四次扫描 RETRET/实现调整时间子程序实现调整时间子程序/; ;设置目前时间设置目前时间SETTIME:SETTIME: CLRCLR TR0TR0 /定时器暂停定时器暂停 MOVMOV SEC,#0SEC,#0 /秒钟变量清零秒钟变量清零 L0:L0: ACALLACALL DISP

22、DISP /调用扫描显示子程序调用扫描显示子程序 JBJB K2,L1K2,L1 /K2/K2等于一时跳转到等于一时跳转到L1L1 JNBJNB K2,K2, /若按下若按下K2K2则等待放开则等待放开;K2;K2小时调整小时调整 INCINC HOURHOUR MOVMOV A A,HOURHOUR CJNECJNE A A,#24#24,L11L11 /是否到了是否到了2424小时,不到跳转到小时,不到跳转到L11L11 MOVMOV HOURHOUR,#0#0 /小时变量清零小时变量清零 L11L11: ACALLACALL CONVCONV /转换显示数据转换显示数据 ACALLACA

23、LL DISPDISP /扫描显示扫描显示 JMPJMP L0L0 L1:L1: JBJB K3K3,L2L2 JNBJNB K3K3, ;K3;K3分钟调整分钟调整 INCINC MINMIN MOVMOV A,MINA,MIN CJNECJNE A A,60,L2160,L21 MOVMOV MIN,#0MIN,#0 L21:L21: ACALLACALL CONVCONV ACALLACALL DISPDISP JMPJMP L0L0 L2L2:JBJB K4,L0K4,L0 /未按下未按下K4K4则继续扫描则继续扫描 JNBJNB K4K4,ACALLACALL BZBZ /蜂鸣器响一

24、声蜂鸣器响一声;K4;K4设置完成设置完成ACALLACALL LED_BLLED_BL /LED/LED闪动闪动SETBSETB TR0TR0 /启动定时器启动定时器RETRET/延时子程序延时子程序/DELAY:MOV/DELAY:MOV R5,R5,2020 /延时延时0 0。5s5s的延时子程序的延时子程序; ;所输出的频率是下一个延时所输出的频率是下一个延时子程序的子程序的2 2倍;倍;/LAY2:/LAY2: MOVMOV R6,#100R6,#100/LAY1:/LAY1: MOVMOV R7R7,#100#100/ DJNZDJNZ R7R7,$ $/ DJNZDJNZ R6,

25、LAY1R6,LAY1/ DJNZDJNZ R5,LAY2R5,LAY2/ RETRETDELAY:DELAY: /延时时间是:延时时间是:2msX(R5)2msX(R5) MOVMOV R6R6,1010D1:MOVD1:MOV R7R7,#100#100 DJNZDJNZ R7R7, DJNZDJNZ R6,D1R6,D1 DJNZDJNZ R5R5,DELAYDELAY RETRET/工作指示灯工作指示灯/LED_BLLED_BL: /工作指示灯闪烁工作指示灯闪烁MOVMOV R4R4,6 6LE1LE1:CPLCPL WLEDWLED MOVMOV R5R5,#25#25 /延时延时5

26、0ms50ms ACALLACALL DELAYDELAY DJNZDJNZ R4R4,LE1LE1 RETRET/计数单元清计数单元清0 0子程序子程序/INIT:INIT: MOVMOV DEDA,#0DEDA,#0 MOVMOV SECSEC,#0#0 MOVMOV MINMIN,9 9 MOVMOV HOUR,#8HOUR,#8 RETRET/蜂鸣器蜂鸣器/BZ:MOVBZ:MOV R6,#250R6,#250 /使蜂鸣器响一声使蜂鸣器响一声B1:ACALLB1:ACALL DEXDEX CPLCPL SPKSPK DJNZDJNZ R6,B1R6,B1 MOVMOV R5R5,#50

27、#50 ; CLRCLR P2P2。2 2 ;CLRCLR P2P2。3 3 ACALLACALL DELAYDELAY RETRET/蜂鸣器短暂延时子程序蜂鸣器短暂延时子程序/DEX:MOVDEX:MOV R7,#180R7,#180 DE1:NOPDE1:NOPDJNZDJNZ R7,DE1R7,DE1RETRET/加载打铃时间子程序加载打铃时间子程序/CONVACONVA: MOVMOV A A,HHHHMOVMOV B,B,1010DIVDIV ABAB/将将HOURHOUR内的值转换为十位和个位分别表示的十进制数字,便于用两位内的值转换为十位和个位分别表示的十进制数字,便于用两位数码

28、管显示出来小时值数码管显示出来小时值MOVMOV DPTR,DPTR,TABLETABLE /DPTR/DPTR指针指向表的首地址指针指向表的首地址MOVCMOVC A,A,A+DPTRA+DPTRMOVMOV BUFBUF,A AMOVMOV A,BA,BMOVCMOVC A,A+DPTRA,A+DPTRMOVMOV BUF+1,ABUF+1,AMOVMOV A A,MMMM /开始转换分钟开始转换分钟MOVMOV B,#10B,#10DIVDIV ABABMOVMOV DPTRDPTR,#TABLE#TABLEMOVCMOVC A A,A+DPTRA+DPTRMOVMOV BUF+2,AB

29、UF+2,AMOVMOV A,BA,BMOVCMOVC A A,A+DPTRA+DPTRMOVMOV BUF+3BUF+3,A A RETRET /设置打铃时间子程序设置打铃时间子程序/SET_ATIMESET_ATIME: ACALLACALL CONVACONVA NONO: ACALLACALL DISPDISP ;K2;K2调整小时调整小时 JBJB K2K2,N1N1 JNBJNB K2K2, INCINC HHHH MOVMOV A,HHA,HH CJNECJNE A A,#24,N11#24,N11 MOVMOV HHHH,#0#0 N11N11: ACALLACALL CONV

30、ACONVA ACALLACALL DISPDISP JMPJMP NONO ;K3;K3调整分钟时间调整分钟时间 N1N1:JBJB K3,N2K3,N2 JNBJNB K3K3, INCINC MMMM MOVMOV A A,MMMM CJNECJNE A,#60,N21A,#60,N21 MOVMOV MM,#0MM,#0 N21:ACALLN21:ACALL CONVACONVA /加载打铃时间数据加载打铃时间数据 ACALLACALL DISPDISPJMPJMP NONO;K4K4设置完成设置完成N2:JBN2:JB K1,NOK1,NO JNBJNB K1K1, ;设置完成;设置完成 ACALLACALL LED_BLLED_BL ACALLACALL CONVCONV /加载现在时间数据加载现在时间数据CPLCPL ALBALB /此处为判断是否启用闹铃此处为判断是否启用闹铃JNBJNB ALB,M31ALB,M31ACALLACALL BZBZACALLACALL BZBZACALLACALL BZBZ/连鸣三声为启用闹铃连鸣三声为启用闹

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论