




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
科信学院 课程设计说明书课程设计说明书 (2010 /2011 学年第二学期) 课程名称 :单片机原理及应用课程设计 题 目:基于单片机的教学用电子打铃器电路设计 专业班级 : 电子信息工程 0801 学生姓名 : 学 号: 指导教师 : 设计周数 : 两周 设计成绩 : 2011 年 6 月 23 日 1 目目 录录 1 1、课程设计目的、课程设计目的.2 2 2 2、总体设计、总体设计.2 2 2.12.1 模块模块设计设计.2 2 2.22.2 程序流程图程序流程图.2 2 3 3、硬件单元设计硬件单元设计.4 4 3.13.1 电路设计总原理图电路设计总原理图 .4 4 3.23.2 各模块电路设计各模块电路设计 .4 4 3.2.13.2.1 键盘扫描模块键盘扫描模块.4 4 3.2.23.2.2 时钟和复位模块时钟和复位模块.4 4 3.2.33.2.3 显示模块显示模块.5 5 3.2.43.2.4 响铃模块响铃模块.6 6 4 4、软件设计、软件设计.7 7 4 4. .1 1 键盘扫描程序键盘扫描程序.8 8 4.24.2 数码管显示程序数码管显示程序.1 10 0 4 4. .3 3 主程序主程序.1 11 1 4 4.4.4 响铃程序响铃程序.12 5 5、课程设计总结、课程设计总结.1 15 5 6 6、参考文献、参考文献.1 16 6 2 1 1课程设计目的课程设计目的 通过设计学习单片机最小系统的基本设计方法,掌握单片机应用系统的开发调试过程。 (1)学习常用单片机开发工具功能、特点和使用方法。 (2)学会单片机控制系统程序的编制和调试方法。 (3)设计单片机打铃器硬件电路,绘制出电路原理图。 (4)编制并调试出键盘扫描程序和显示驱动程序。 (5)掌握单片机定时器的基本用法,编制出定时中断程序。 (6)要求设计具有电子时钟功能,并能显示时间值、课程节数。 2 2总体设计总体设计 2.12.1 模块设计模块设计 教学用电子打铃器主要由80C51单片机、键盘扫描模块、时钟和复位模块、打铃器模 块、八段数码管显示模块等组成。运用汇编语言来控制单片机80C51来实现、动态数码显 示等功能。且本设计中的80C51单片机是整个工作过程的核心,是整个设计灵魂,它控制 了脉冲时序的产生,显示信号的发送控制显示LED的选择。 所用到的芯片元器件:80C51 单片机, 3 个按键,1 个蜂鸣器,4 个八段 LED 数码管 80C51是一种带4K字节存储器(的低电压、高性能CMOS 8位微处理器,俗称单片机。 2.22.2程序流程图程序流程图 图2.2(1) 主程序流 图2.2(1) 主程序程序流程图 开始 初始化参数设置 调用显示子程序 调用打铃对比程序 调用键盘子程序 3 图2.2(2) 定时中断程序流程图 4 3.3.硬件单元设计硬件单元设计 3.13.1 电路设计总原理图电路设计总原理图 图图3.13.1 总体原理图 3 3. .2 2 各各模模块块电电路路设设计计 3 3. .2 2. .1 1 键键盘盘扫扫描描模模块块 利用四个按键进行校时,按键 K是调整时间选择,按键 K进行小时加 1,按键 K进行分钟加 ,按键K4则调整时间结束返回主程序, K1接P1.1,K2接P1.2,K3接 P1.3,K4接P1.4。 5 3.2.23.2.2 时钟和复位模块时钟和复位模块 图3.2.2 时钟和复位模块 3.2.33.2.3 显示模块及芯片说明显示模块及芯片说明 根据设计要求系统需要 4 个共阳,数码管显示电路使用0的动态显示功 能。4 个八段(、) ,数码管分别显示: “时” 、 “分” ,用二极管的“点”作为时、分的间隔。该系统采用共阳极数码管,对于共阳极数码 管,其公共端必须接高电平。当打铃的时候四个数码管中前三个不显示数据,最后一个显 6 示课程节数。 图3.2.3 显示模块 3.2.43.2.4 响铃模块响铃模块 打铃电路(接 P3.7):当前时间与程序设定时间相同时,P3.7 端输出高电平的方波, 即打铃。每次响铃时间是 60S。 7 图 3.2.4 响铃模块 4 4软件设计软件设计 中断服务程序通过定时器T0(工作方式为1),实现一日的24小时,首先得初始化,正 常工作,主函数调用数码管显示程序显示当前时间,然后调用打铃对比函数,若当前时间 与系统设定打铃时间相同是,响应打铃程序。当需要对时间校正时,可以通过按键扫描处 理程序进行校时。 /程序初始化程序初始化/ ALBALB EQUEQU 20H20H/打铃设置标志打铃设置标志 BUFBUF EQUEQU 30H30H/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 K2K2 EQUEQU P1.2P1.2 K3K3 EQUEQU P1.3P1.3 K4K4 EQUEQU P1.4P1.4 ; ;蜂鸣器和指示灯引脚定义蜂鸣器和指示灯引脚定义 SPKSPK EQUEQU P1.5P1.5 8 WLEDWLED EQUEQU P1.0P1.0 /工作指示灯引脚定义工作指示灯引脚定义 ORGORG 00H00H lJMPlJMP MAINMAIN ORGORG 0BH0BH lJMPlJMP T0_SRVT0_SRV /主程序入口主程序入口/ MAIN:MAIN: CLRCLR ALBALB /清除闹铃标志清除闹铃标志 MOVMOV A,#80HA,#80H /加载显示器初始值数据加载显示器初始值数据 MOVMOV P0,AP0,A ACALLACALL BZBZ ;ACALL;ACALL BZBZ ACALLACALL LED_BLLED_BL ACALLACALL DELAY1DELAY1 ; ;定时器定时器T0T0的初始化的初始化 ACALLACALL INITINIT LOOP:LOOP: ACALLACALL CONVCONV ACALLACALL DISPDISP LOOP2:LOOP2: ACALLACALL CONVCONV ACALLACALL LD1LD1/查询打铃时间查询打铃时间 MOVMOV A,MINA,MIN CJNECJNE A,#10,AGNA,#10,AGN JMPJMP LOOP2LOOP2 AGN:AGN: 9 CJNECJNE A,#55,LOOP3A,#55,LOOP3 JMPJMP LOOP2LOOP2 LOOP3:LOOP3: JBJB K1,M1K1,M1 JNBJNB K1,$K1,$ ACALLACALL SETTIMESETTIME M1:M1: JMPJMP LOOPLOOP jmpjmp looploop ACALLACALL DISPDISP LD1:LD1: MOVMOV A,HOURA,HOUR CLRCLR C C SUBBSUBB A,#8A,#8 MOVMOV DPTR,#TALEDPTR,#TALE MOVCMOVC A,A+DPTRA,A+DPTR CJNECJNE A,HOUR,LLA,HOUR,LL MOVMOV A,MINA,MIN CJNECJNE A,#10,LA,#10,L ACALLACALL BZBZ MOVMOV A,HOURA,HOUR 10 CLRCLR C C SUBBSUBB A,#8A,#8 MOVMOV DPTR,#TABLE2DPTR,#TABLE2 MOVCMOVC A,A+DPTRA,A+DPTR MOVMOV P0,AP0,A ACALLACALL DELAYDELAY L:L: CJNECJNE A,#55,LLA,#55,LL ACALLACALL BZBZ MOVMOV A,HOURA,HOUR CLRCLR C C SUBBSUBB A,#8A,#8 MOVMOV DPTR,#TABLE2DPTR,#TABLE2 MOVCMOVC A,A+DPTRA,A+DPTR MOVMOV P0,AP0,A ACALLACALL DELAYDELAY LL:LL: RETRET TALE:TALE: DBDB 08H,09H,0AH,0BH08H,09H,0AH,0BH TABLE2:TABLE2: DBDB 0F9H,0A4H,0B0H,99H0F9H,0A4H,0B0H,99H /实现走动功能的的子程序实现走动功能的的子程序/ DELAY1:DELAY1: MOVMOV TMOD,#00000001BTMOD,#00000001B /延时延时60ms60ms的子程序的子程序 设置设置T0T0工作在模式工作在模式1 1 MOVMOV IE,#10000010BIE,#10000010B /启用定时器启用定时器T0T0中断产生中断产生 / MOVMOV TCON,#00010000BTCON,#00010000B /打开打开T0T0并将其设置为定时器并将其设置为定时器 MOVMOV TL0,#LOW(65536-5000)TL0,#LOW(65536-5000) /直接带公式法设置直接带公式法设置T0T0的初值,此方法为简便的初值,此方法为简便 11 方法方法 MOVMOV TH0,#HIGH(65536-5000)TH0,#HIGH(65536-5000) SETBSETB TR0TR0 /若若TF0TF0为为1 1时代表时代表T0T0定时器计数已满,有溢出程定时器计数已满,有溢出程 序往下进行序往下进行 /若若TF0TF0为为0 0时将一直循环这条程序语句;时将一直循环这条程序语句; RETRET ; ;中断服务程序中断服务程序 T0_SRV:T0_SRV:/定时器定时器T0T0计时中断程序每隔计时中断程序每隔5ms5ms中断一次中断一次 PUSHPUSH ACCACC MOVMOV TL0,#LOW(65536-5000)TL0,#LOW(65536-5000) /直接带公式法设置直接带公式法设置T0T0的初值,此方法为简便方法的初值,此方法为简便方法 MOVMOV TH0,#HIGH(65536-5000)TH0,#HIGH(65536-5000) /MOV/MOV TL0,#(8192-5000)MODTL0,#(8192-5000)MOD 3232/重加载初始值重加载初始值 /MOV/MOV TH0,#(8192-50000)/32TH0,#(8192-50000)/32 INCINC DEDADEDA ; ;秒输出秒输出 MOVMOV A,DEDAA,DEDA CJNECJNE A,#200,TT1A,#200,TT1 MOVMOV DEDA,#0DEDA,#0 CPLCPL WLEDWLED /LED/LED灯亮灭变换灯亮灭变换 INCINC SECSEC MOVMOV A,SECA,SEC CJNECJNE A,#60,TT1A,#60,TT1 /是否是否1 1分钟到了分钟到了 ; ;分输出分输出 INCINC MINMIN /分计数加一分计数加一 MOVMOV SEC,#0SEC,#0 /秒计数清零秒计数清零 12 MOVMOV A,MINA,MIN CJNECJNE A,#60,TT1A,#60,TT1 /看是否一小时到了看是否一小时到了 ; ;时输出时输出 INCINC HOURHOUR MOVMOV MIN,#0MIN,#0 MOVMOV A,HOURA,HOUR CJNECJNE A,#24,TT1A,#24,TT1 MOVMOV SEC,#0SEC,#0 MOVMOV MIN,#0MIN,#0 MOVMOV HOUR,#0HOUR,#0 TT1:TT1: POPPOP ACCACC RETIRETI /实现显示功能的子程序实现显示功能的子程序/ CONV:CONV: ; ;转换小时数据转换小时数据/通过通过DIVDIV指令进行十进制计时处理,并将中断程序处理后的数据分别存指令进行十进制计时处理,并将中断程序处理后的数据分别存 放入数码管显示内存中放入数码管显示内存中 /其中其中BUF,BUF+1BUF,BUF+1存放小时;存放小时;BUF+2,BUF+3BUF+2,BUF+3存放分钟存放分钟 、 MOVMOV A,HOURA,HOUR MOVMOV B,#10B,#10 DIVDIV ABAB/将将HOURHOUR内的值转换为十位和个位分别表示的十进制数字,便于用两位内的值转换为十位和个位分别表示的十进制数字,便于用两位 数码管显示出来小时值数码管显示出来小时值 MOVMOV DPTR,#TABLEDPTR,#TABLE /DPTR/DPTR指针指向表的首地址指针指向表的首地址 MOVCMOVC A,A+DPTRA,A+DPTR MOVMOV BUF,ABUF,A MOVMOV A,BA,B MOVCMOVC A,A+DPTRA,A+DPTR 13 MOVMOV BUF+1,ABUF+1,A MOVMOV A,MINA,MIN /开始转换分钟开始转换分钟 MOVMOV B,#10B,#10 DIVDIV ABAB MOVMOV DPTR,#TABLEDPTR,#TABLE MOVCMOVC A,A+DPTRA,A+DPTR MOVMOV BUF+2,ABUF+2,A MOVMOV A,BA,B MOVCMOVC A,A+DPTRA,A+DPTR MOVMOV BUF+3,ABUF+3,A RETRET /共阳极数码管字符转换笔段码表共阳极数码管字符转换笔段码表/ TABLE:TABLE: DBDB 0C0H,0F9H,0A4H,0B0H0C0H,0F9H,0A4H,0B0H DBDB 99H,92H,82H,0F8H99H,92H,82H,0F8H DBDB 80H,90H,88H,83H80H,90H,88H,83H DBDB 0C6H,0A1H,86H,8EH0C6H,0A1H,86H,8EH /共阴极共阴极/ / TABLE:TABLE: /DB/DB 3FH,06H,5BH,4FH,66H3FH,06H,5BH,4FH,66H /DB/DB 6DH,7DH,07H,7FH6DH,7DH,07H,7FH /DB/DB 6FH,77H,7CH,39H6FH,77H,7CH,39H /DB/DB 5EH,79H,71H5EH,79H,71H /扫描显示子程序扫描显示子程序/ /实际四个数码管是在轮流显示的,每一刻都只有一个数码管亮,利用人的视觉暂留来使实际四个数码管是在轮流显示的,每一刻都只有一个数码管亮,利用人的视觉暂留来使 14 人感觉是在同时显示人感觉是在同时显示 DISP:DISP: MOVMOV R0,#BUFR0,#BUF /指向显示器缓冲区起始地址,即存入十位上小时地址指向显示器缓冲区起始地址,即存入十位上小时地址 MOVMOV R2,#4R2,#4 /扫描四次扫描四次 MOVMOV A,#00001000BA,#00001000B /扫描初值,只是使扫描初值,只是使p2.3p2.3口打开口打开 S1:S1: MOVMOV P2,AP2,A MOVMOV A,R0A,R0 MOVMOV P0,AP0,A MOVMOV A,P2A,P2 MOVMOV R5,#2R5,#2 ACALLACALL DELAYDELAY /延时延时, ,以便显示字符稳定以便显示字符稳定 ;EX:XXXX1011;EX:XXXX1011 RRRR A A /A/A向右移动一位向右移动一位 INCINC R0R0 /指向指向BUF+1BUF+1 DJNZDJNZ R2,S1R2,S1 /判断是否执行了四次扫描判断是否执行了四次扫描 RETRET /实现调整时间子程序实现调整时间子程序/ ; ;设置目前时间设置目前时间 SETTIME:SETTIME: CLRCLR TR0TR0 /定时器暂停定时器暂停 MOVMOV SEC,#0SEC,#0 /秒钟变量清零秒钟变量清零 L0:L0: ACALLACALL DISPDISP /调用扫描显示子程序调用扫描显示子程序 JBJB K2,L1K2,L1 /K2/K2等于一时跳转到等于一时跳转到L1L1 JNBJNB K2,$K2,$ /若按下若按下K2K2则等待放开则等待放开 15 ;K2;K2小时调整小时调整 INCINC HOURHOUR MOVMOV A,HOURA,HOUR CJNECJNE A,#24,L11A,#24,L11 /是否到了是否到了2424小时,不到跳转到小时,不到跳转到L11L11 MOVMOV HOUR,#0HOUR,#0 /小时变量清零小时变量清零 L11:L11: ACALLACALL CONVCONV /转换显示数据转换显示数据 ACALLACALL DISPDISP /扫描显示扫描显示 JMPJMP L0L0 L1:L1: JBJB K3,L2K3,L2 JNBJNB K3,$K3,$ ;K3;K3分钟调整分钟调整 INCINC MINMIN MOVMOV A,MINA,MIN CJNECJNE A,#60,L21A,#60,L21 MOVMOV MIN,#0MIN,#0 L21:L21: ACALLACALL CONVCONV ACALLACALL DISPDISP JMPJMP L0L0 L2:JBL2:JB K4,L0K4,L0 /未按下未按下K4K4则继续扫描则继续扫描 JNBJNB K4,$K4,$ ACALLACALL BZBZ /蜂鸣器响一声蜂鸣器响一声 ;K4;K4设置完成设置完成 ACALLACALL LED_BLLED_BL /LED/LED闪动闪动 SETBSETB TR0TR0 /启动定时器启动定时器 RETRET /延时子程序延时子程序/ 16 /DELAY:MOV/DELAY:MOV R5,#20R5,#20 /延时延时0.5s0.5s的延时子程序;所输出的频率是下一个延时子的延时子程序;所输出的频率是下一个延时子 程序的程序的2 2倍;倍; /LAY2:/LAY2: MOVMOV R6,#100R6,#100 /LAY1:/LAY1: MOVMOV R7,#100R7,#100 / DJNZDJNZ R7,$R7,$ / DJNZDJNZ R6,LAY1R6,LAY1 / DJNZDJNZ R5,LAY2R5,LAY2 / RETRET DELAY:DELAY: /延时时间是:延时时间是:2msX(R5)2msX(R5) MOVMOV R6,#10R6,#10 D1:MOVD1:MOV R7,#100R7,#100 DJNZDJNZ R7,$R7,$ DJNZDJNZ R6,D1R6,D1 DJNZDJNZ R5,DELAYR5,DELAY RETRET /工作指示灯工作指示灯/ LED_BL:LED_BL: /工作指示灯闪烁工作指示灯闪烁 MOVMOV R4,#6R4,#6 LE1:CPLLE1:CPL WLEDWLED MOVMOV R5,#25R5,#25 /延时延时50ms50ms ACALLACALL DELAYDELAY DJNZDJNZ R4,LE1R4,LE1 RETRET /计数单元清计数单元清0 0子程序子程序/ INIT:INIT: MOVMOV DEDA,#0DEDA,#0 17 MOVMOV SEC,#0SEC,#0 MOVMOV MIN,#9MIN,#9 MOVMOV HOUR,#8HOUR,#8 RETRET /蜂鸣器蜂鸣器/ BZ:MOVBZ:MOV R6,#250R6,#250 /使蜂鸣器响一声使蜂鸣器响一声 B1:ACALLB1:ACALL DEXDEX CPLCPL SPKSPK DJNZDJNZ R6,B1R6,B1 MOVMOV R5,#50R5,#50 ; ; CLRCLR P2.2P2.2 ;CLR;CLR P2.3P2.3 ACALLACALL DELAYDELAY RETRET /蜂鸣器短暂延时子程序蜂鸣器短暂延时子程序/ DEX:MOVDEX:MOV R7,#180R7,#180 DE1:NOPDE1:NOP DJNZDJNZ R7,DE1R7,DE1 RETRET /加载打铃时间子程序加载打铃时间子程序/ CONVA:CONVA: MOVMOV A,HHA,HH MOVMOV B,#10B,#10 DIVDIV ABAB/将将HOURHOUR内的值转换为十位和个位分别表示的十进制数字,便于用两位内的值转换为十位和个位分别表示的十进制数字,便于用两位 数码管显示出来小时值数码管显示出来小时值 MOVMOV DPTR,#TABLEDPTR,#TABLE /DPTR/DPTR指针指向表的首地址指针指向表的首地址 MOVCMOVC A,A+DPTRA,A+DPTR MOVMOV BUF,ABUF,A MOVMOV A,BA,B MOVCMOVC A,A+DPTRA,A+DPTR 18 MOVMOV BUF+1,ABUF+1,A MOVMOV A,MMA,MM /开始转换分钟开始转换分钟 MOVMOV B,#10B,#10 DIVDIV ABAB MOVMOV DPTR,#TABLEDPTR,#TABLE MOVCMOVC A,A+DPTRA,A+DPTR MOVMOV BUF+2,ABUF+2,A MOVMOV A,BA,B MOVCMOVC A,A+DPTRA,A+DPTR MOVMOV BUF+3,ABUF+3,A RETRET /设置打铃时间子程序设置打铃时间子程序/ SET_ATIME:SET_ATIME: ACALLACALL CONVACONVA NO:NO: ACALLACALL DISPDISP ;K2;K2调整小时调整小时 JBJB K2,N1K2,N1 JNBJNB K2,$K2,$ INCINC HHHH MOVMOV A,HHA,HH CJNECJNE A,#24,N11A,#24,N11 MOVMOV HH,#0HH,#0 N11:N11: ACALLACALL CONVACONVA ACALLACALL DISPDISP JMPJMP NONO ;K3;K3调整分钟时间调整分钟时间 N1:JBN1:JB K3,N2K3,N2 JNBJNB K3,$K3,$ 19 INCINC MMMM MOVMOV A,MMA,MM CJNECJNE A,#60,N21A,#60,N21 MOVMOV MM,#0MM,#0 N21:ACALLN21:ACALL CONVACONVA /加载打铃时间数据加载打铃时间数据 ACALLACALL DISPDISP JMPJMP NONO ;K4;K4设置完成设置完成 N2:JBN2:JB K1,NOK1,NO JNBJNB K1,$K1,$ ; ;设置完成设置完成 ACALLACALL LED_BLLED_BL ACALLACALL CONVCONV /加载现在时间数据加载现在时间数据 CPLCPL ALBALB /此处为判断是否启用闹铃此处为判断是否启用闹铃 JNBJNB ALB,M31ALB,M31 ACALLACALL BZBZ ACALLACALL BZBZ ACALLACALL BZBZ/连鸣三声为启用闹铃连鸣三声为启用闹铃 JMPJMP LOOPLOOP M31:M31: ACALLACALL BZBZ /闹铃停止,发出一声闹铃停止,发出一声 JMPJMP LOOPLOOP RETRET /执行闹铃时间处理子程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初中科学教材教法考试测试卷及参考答案(共三套)
- 2025年小学语文课程标准模拟测试卷及答案
- 2025年新高一英语人教新版中等生专题复习《选择题》
- 中职英语Unit 8 Role Models of the Times课件
- 会计银行开户管理办法
- 企业用车供应管理办法
- 住房隐私安全管理办法
- 产品人群资料管理办法
- 临沧草坪灌溉管理办法
- 会议管理办法培训总结
- 系统补丁升级管理制度
- 先天性甲状腺功能减退症诊治指南解读
- 2025年公路养护工人职业技术知识考试题与答案
- 放疗基本知识介绍-1
- 2025小学科学新教材培训学习心得体会
- 阳光房制作安装合同协议书范本8篇
- 2025年供应链管理与优化专业考试试题及答案
- 租借医生执业证合同协议
- GB/T 45449-2025再生粉末高温合金原料
- 工程投资人合同协议
- 分娩期产妇的心理护理
评论
0/150
提交评论