基于单片机的“个性化电子钟”_第1页
基于单片机的“个性化电子钟”_第2页
基于单片机的“个性化电子钟”_第3页
基于单片机的“个性化电子钟”_第4页
基于单片机的“个性化电子钟”_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、材料与能源学院课程设计课程名称 单片机课程设计 题目名称 基于单片机的“个性化电子钟”专 业 微电子学 年级班别 学 号 学生姓名 指导教师 2015年1月8日课程设计任务书一 根据单片机原理及接口技术所学的内容及其他相关课程的知识,结合各生的基础,充分发挥个人的特长,设计个性化数字电子钟。具体要求以下:1 AT89S51CPU,12MHZ时钟,常规上电和手动复位电路。2 4位LED数码显示器(带钟点),分别显示“小时:分钟”或“分钟:秒”3 3个独立试按键,具体功能描述如下:MODE模式转换键,具有“正常小时(校准)分钟(校准)小时(闹铃)分钟(闹铃)”等5种模式,每按一次,转换一种模式。假

2、设当前处于正常模式,按一下此键,“小时”闪烁,表示进入“小时”调校模式,再按一次,转入分钟模式,如此类推,正常模式下不闪烁。 UP加“1”键,按下此键,被选中的项目加“1” DOWN减“1”键,按下此键,被选中的项目减“1”4 设计1路蜂鸣器输出驱动电路,用于报警或按键声5 电源:9V交流输入,全波整流,滤波,7805稳压电路,输出5V直流电源共给单片机系统。6 编写数字电字钟的所有软件,包括主程序,定时器中断计时程序,定时器中断扫描显示程序,键盘扫描及功能程序,BCD码转换程序,“二翻十拆字转码”程序,闹铃程序等等。将这些程序整合成一个完整的电子钟程序,在软件模拟器上调试,在MCS51学习机

3、上调试,并测试其功能及性能。在设计软件时,学生可充分发挥自己的特长和想象力,自行扩充功能,如“秒表”功能,通信功能,钟控功能等。7 在程序调试通过后,测试计时精度,分析误差来源,提出补偿方法。二 计报告要求:每人一份设计报告,要求独立完成,用统一的封面装订,设计报告的内容包括以下部分:1 设计任务书2 个性化电子钟功能要求3 单片机系统原理图及工作原理描述4 程序模块框图5 程序清单6 设计或调试过程中碰到的问题及决计方法7 测试数据,误差分析,补偿方法,补偿前后精度比较8 完成课程设计后的收获或体会,对单片机课程设计提出改进意见。三 课程设计验收标准:本次课程设计的成绩由大部分组成:即硬件设

4、计软件设计和课程设计报告。硬件设计主要是电路图设计(可以用手工画或计算机辅助设计)。软件部分在答辩时验收,并结合答辩情况进行评定。1 电路原理图设计(20%),包括以下知识点:CPU及时钟,复位电路显示接口电路键盘接口电路蜂鸣器驱动电路电源部分2 软件设计及答辩(60%),包括以下知识点:主程序及初始化程序定时中断及计时程序定时中断及显示程序键盘程序闹铃程序按键声程序3 课程设计报告(20%),具体要求见上面所述.四 基础较好的学生可以结合实际应用自拟题目,题目和具体设计内容定好后由指导老师比准。 指导老师:乐金松2014,12,28单片机系统原理图及工作原理描述单片机系统原理图及工作原理描述

5、1MCU:采用40个引脚的芯片。4个8位的并行I/o口:p0,p1,P2和P3,可以外接各种元器件和电路,控制各个I/O口高低电平的输出,以实现预期的功能。还有复位键,晶振时钟,EA口等组成单片机最小系统。 2晶振模块:晶振大小为11.0592MHZ。分析整个振荡槽路可知,利用Cv来改变频率是有限的:决定振荡频率的整个槽路电容C=Cbe,Cce,Cv三个电容串联后和Co并联再和C1串联。可以看出:C1越小,Co越大,Cv变化时对整个槽路电容的作用就越小。因而能“压控”的频率范围也越小。实际上,由于C1很小(1E-15量级),Co不能忽略(1E-12量级,几PF)。所以,Cv变大时,降低槽路频率

6、的作用越来越小,Cv变小时,升高槽路频率的作用却越来越大。这一方面引起压控特性的非线性,压控范围越大,非线性就越厉害;另一方面,分给振荡的反馈电压(Cbe上的电压)却越来越小,最后导致停振。3数码管显示模块:此为共阴极的八个数码管,p0口控制各个数码管的段选;再通过P2.2,P2.3,P2.4口,控制138译码器输入来控制译码器的8个输出口,以达到数码管的位控制。如:当p2口输入为11100011时,则控制第一个数码管点着,即LED1被点亮,其他熄灭。 4复位模块:上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。上电后,由于电容C5的充电和反相门

7、的作用,使RST持续一段时间的高电平。当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。5.独立按键模块:分别为P3.0,P3.1,P3.2,P3.3口,为共阴极接法,当按键被按下时接入。6总电源模块:实现5V电压转换,给其他元器件与电路供电。7蜂鸣器模块:接入口为p1.5,当输入高电平时就会鸣响。工作原理见附页程序模块框图主程序:大概流程功能: 加键 开始 减键 按键 模式按键 初始化 闹铃分钟校准 正常模式 闹铃时钟校准 启动中断 时钟校准 分钟校准 等待中断中断程序:时间一致则P1.5取反判断闹铃时间与闹钟时间是否一致对时、分、秒计

8、数程序清单; 1、其中:P1.2,P1.3,P1.4,P1.5,P1.6,P1.7分别控制LED6,LED5,LED4 LED3 LED2 LED1的公共端;P0口位正序连接的LED数码管段控制端口; 2、产生2MS定时中断,每次中断调用扫描显示程序;3、系统时钟为12MHZ,N=1983;*LED1EQU7FHLED2 EQU7EHLED3EQU7DHLED4EQU7CHLED5EQU7BHLED6EQU7AHSCAN_COUNTEQU79H ;扫描显示计数器H_MEM1EQU78HM_MEM1EQU77HS_MEM1EQU76HH_MEMEQU75HM_MEMEQU74HS_MEMEQU7

9、3HTIMER_COUNTEQU72H ;定时器中断次数软件计数器TEMP EQU 6EH ;模式寄存器FLASH_FLAG EQU 20H.0 ;定义闪烁标志位;-ORG0000HLJMPMAINORG000BH ;安装中断向量 LJMPT0_INT ;和外部中断向量;-ORG0030HMAIN:MOVSP,#2FHMOVTL0,#(65536-1983)MOD 256 ;初始化时间常数MOVTH0,#(65536-1983)/256MOVTMOD,#00000001BSETB ET0 ;开放定时器0中断SETB TR0 ;开启定时器0SETB EALCALL CLR_MEM ;-键盘扫描程

10、序-KEYSCAN: JNB P3.0,RING1KEYSCAN1:JNB P3.1,RING2KEYSCAN2:JNB P3.2,RING3LJMP KEYSCAN;-按键声程序-RING1:CALLD10MSCPL P1.5 ;取反蜂鸣器JNB P3.0,$CPL P1.5LJMP MODERING2:CALLD10MSCPL P1.5JNB P3.1,$CPL P1.5LJMP UPSET_MODE11RING3:CALLD10MSCPL P1.5JNB P3.2,$CPL P1.5LJMP DOWNSET_MODE11;-MODE: INC TEMPMOV A,TEMPCJNE A,#

11、5,EXIT1 MOV TEMP,#0EXIT1:JNB P3.0,$LJMP KEYSCAN1;-加键-UPSET_MODE11: MOV A,TEMPCJNE A,#1,UPSET_MODE12;判断模式1,是就进入下一程序,否跳转另一模式判断JNB P3.1,$INC H_MEMMOV A,H_MEMCJNE A,#24,UP_EXIT MOV H_MEM,#0LJMP KEYSCAN2UPSET_MODE12: MOV A,TEMPCJNE A,#2,UPSET_MODE23JNB P3.1,$INC M_MEM MOV A,M_MEMCJNE A,#60,UP_EXITMOV M_M

12、EM,#0LJMP KEYSCAN2 UPSET_MODE23: MOV A,TEMPCJNE A,#3,UPSET_MODE24JNB P3.1,$INC H_MEM1MOV A,H_MEM1CJNE A,#24,UP_EXITMOV H_MEM1,#0LJMP KEYSCAN2 UPSET_MODE24: MOV A,TEMPCJNE A,#4,UP_EXITJNB P3.1,$INC M_MEM1MOV A,M_MEM1 CJNE A,#60,UP_EXITMOV M_MEM1,#0LJMP KEYSCAN UP_EXIT:JNB P3.1,$LJMP KEYSCAN2;-减键-DOWN

13、SET_MODE11: MOV A,TEMPCJNE A,#1,DOWNSET_MODE12JNB P3.2,$DEC H_MEMMOV A,H_MEMCJNE A,#0FFH,DOWN_EXITMOV H_MEM,#23LJMP KEYSCANDOWNSET_MODE12: MOV A,TEMPCJNE A,#2,DOWNSET_MODE21 JNB P3.2,$DEC M_MEM MOV A,M_MEMCJNE A,#0FFH,DOWN_EXITMOV M_MEM,#59LJMP KEYSCANDOWNSET_MODE21: MOV A,TEMPCJNE A,#3,DOWNSET_MODE

14、22JNB P3.2,$DEC H_MEM1MOV A,H_MEM1CJNE A,#0FFH,DOWN_EXITMOV H_MEM1,#23LJMP KEYSCANDOWNSET_MODE22: MOV A,TEMPCJNE A,#4,DOWN_EXITJNB P3.2,$DEC M_MEM1MOV A,M_MEM1CJNE A,#0FFH,DOWN_EXITMOV M_MEM1,#59LJMP KEYSCANDOWN_EXIT:JNB P3.2,$LJMP KEYSCAN;*定时中断程序*T0_INT:PUSHACC;保护现场PUSHPSWPUSHDPLPUSHDPHSETBRS1 ;选择2

15、区工作寄存器单元MOVTL0,#(65536-1983)MOD 256 ;恢复时间常数MOVTH0,#(65536-1983)/256LJMP MODE0 DIS:LCALLDISPLAYINCTIMER_COUNTMOVA,TIMER_COUNTCJNEA,#250,T0_INT1MOVTIMER_COUNT,#0CPLFLASH_FLAG ;每2MS*250=500MS取反闪烁标志位JNBFLASH_FLAG,T0_INT1INCS_MEMMOVA,S_MEMCJNEA,#60,T0_INT1 ;对秒,分,时单元加1MOVS_MEM,#0 ;满计数后清零INCM_MEMMOVA,M_MEM

16、CJNEA,#60,T0_INT1MOVM_MEM,#0INCH_MEMMOVA,H_MEMCJNEA,#24,T0_INT1MOVH_MEM,#0 ;-闹钟-T0_INT1: ;每一次中断MOVA,M_MEM ;将现在的时间跟闹铃模式CJNEA,M_MEM1,T0_INT2 ;设置的时间比较MOVA,H_MEMCJNEA,H_MEM1,T0_INT2CPL P1.5 ;取反蜂鸣器控制位T0_INT2: POPDPH ;中断结束恢复现场,注意出栈顺序POPDPLPOPPSWPOPACCRETI;* ;-MODE0(正常)-MODE0: MOV A,TEMPCJNE A,#0,MODE1 MOV

17、 R3,S_MEM ;秒单元二翻十MOV R2,#0 LCALL BTID MOV A,R6 ANL A,#0FH MOV DPTR,#LED_CODE MOVC A,A+DPTR MOV LED1,A MOV A,R6 ANL A,#0F0H SWAP AMOV DPTR,#LED_CODE MOVC A,A+DPTR MOV LED2,A MOV R3,M_MEM ;分钟单元二翻十MOV R2,#0 LCALL BTID MOV A,R6 ANL A,#0FHMOV DPTR,#LED_CODE MOVC A,A+DPTRJNB FLASH_FLAG,MODE0_BCD1CPL ACC.7

18、 ;点亮小数点MODE0_BCD1: MOV LED3,AMOV A,R6 ANL A,#0F0H SWAP A MOVC A,A+DPTR MOV LED4,AMOV R3,H_MEM ;时钟单元二翻十MOV R2,#0 LCALL BTID MOV A,R6 ANL A,#0FHMOV DPTR,#LED_CODE MOVC A,A+DPTRJNB FLASH_FLAG,MODE0_BCD2CPL ACC.7 ;点亮小数点MODE0_BCD2: MOV LED5,AMOV A,R6 ANL A,#0F0H SWAP A MOVC A,A+DPTR MOV LED6,ALJMP DIS ;-

19、MODE1(时钟小时校准)-MODE1: MOV A,TEMPCJNE A,#1,MODE2 MOV R3,S_MEM;秒单元二翻十MOV R2,#0 LCALL BTID MOV A,R6 ANL A,#0FH MOV DPTR,#LED_CODE MOVC A,A+DPTR MOV LED1,A MOV A,R6 ANL A,#0F0H SWAP AMOV DPTR,#LED_CODE MOVC A,A+DPTR MOV LED2,A MOV R3,M_MEM;分钟单元二翻十MOV R2,#0 LCALL BTID MOV A,R6 ANL A,#0FHMOV DPTR,#LED_CODE

20、 MOVC A,A+DPTRJNB FLASH_FLAG,MODE1_BCD1CPL ACC.7 ;点亮小数点MODE1_BCD1: MOV LED3,A MOV A,R6 ANL A,#0F0H SWAP A MOVC A,A+DPTR MOV LED4,AMOV R3,H_MEM;时钟单元二翻十MOV R2,#0 LCALL BTID MOV A,R6 ANL A,#0FHMOV DPTR,#LED_CODE MOVC A,A+DPTRJNB FLASH_FLAG,MODE1_BCD2CPL ACC.7 ;点亮小数点MOV A,#00H MODE1_BCD2: MOV LED5,AMOV

21、A,R6 ANL A,#0F0H SWAP A MOVC A,A+DPTRJNB FLASH_FLAG,MODE1_BCD3 ;另时钟单元数码管闪烁MOV A,#00H ;对数码管熄灭MODE1_BCD3: MOV LED6,A ;送显示到数码管LJMP DIS ;-MODE2(时钟分钟校准)- MODE2: MOV A,TEMPCJNE A,#2,MODE3MOV R3,S_MEM ;秒单元二翻十MOV R2,#0 LCALL BTID MOV A,R6 ANL A,#0FH MOV DPTR,#LED_CODE MOVC A,A+DPTR MOV LED1,A MOV A,R6 ANL A

22、,#0F0H SWAP AMOV DPTR,#LED_CODE MOVC A,A+DPTR MOV LED2,A MOV R3,M_MEM ;分钟单元二翻十MOV R2,#0 LCALL BTID MOV A,R6 ANL A,#0FHMOV DPTR,#LED_CODEMOVC A,A+DPTRJNB FLASH_FLAG,MODE2_BCD1CPL ACC.7 ;点亮小数点MOV A,#00H MODE2_BCD1: MOV LED3,A MOV A,R6 ANL A,#0F0H SWAP A MOVC A,A+DPTRJNB FLASH_FLAG,MODE2_BCD3 ;另分钟单元闪烁M

23、OV A,#00H ;熄灭数码管 MODE2_BCD3:MOV LED4,AMOV R3,H_MEM ;时钟单元二翻十MOV R2,#0 LCALL BTID MOV A,R6 ANL A,#0FHMOV DPTR,#LED_CODE MOVC A,A+DPTRJNB FLASH_FLAG,MODE2_BCD2CPL ACC.7 ;点亮小数点MODE2_BCD2: MOV LED5,AMOV A,R6 ANL A,#0F0H SWAP A MOVC A,A+DPTRMOV LED6,ALJMP DIS ;-MODE3(闹铃小时校准)- MODE3: MOV A,TEMPCJNE A,#3,MO

24、DE4 MOV R3,S_MEM1 ;秒单元二翻十MOV R2,#0 LCALL BTID MOV A,R6 ANL A,#0FH MOV DPTR,#LED_CODE MOVC A,A+DPTR MOV LED1,A MOV A,R6 ANL A,#0F0H SWAP AMOV DPTR,#LED_CODE MOVC A,A+DPTR MOV LED2,A MOV R3,M_MEM1 ;分钟单元二翻十MOV R2,#0 LCALL BTID MOV A,R6 ANL A,#0FHMOV DPTR,#LED_CODE MOVC A,A+DPTRJNB FLASH_FLAG,MODE3_BCD1

25、CPL ACC.7 ;点亮小数点MODE3_BCD1: MOV LED3,A MOV A,R6 ANL A,#0F0H SWAP A MOVC A,A+DPTR MOV LED4,AMOV R3,H_MEM1 ;时钟单元二翻十MOV R2,#0 LCALL BTID MOV A,R6 ANL A,#0FHMOV DPTR,#LED_CODE MOVC A,A+DPTRJNB FLASH_FLAG,MODE3_BCD2CPL ACC.7 ;点亮小数点MOV A,#00H MODE3_BCD2: MOV LED5,A MOV A,R6 ANL A,#0F0H SWAP A MOVC A,A+DPT

26、RJNB FLASH_FLAG,MODE3_BCD3MOV A,#00H MODE3_BCD3: MOV LED6,ALJMP DIS ;-MODE4(闹铃分钟校准)- MODE4: MOV A,TEMP CJNE A,#4,MODE4 MOV R3,S_MEM1 ;秒单元二翻十MOV R2,#0 LCALL BTID MOV A,R6 ANL A,#0FH MOV DPTR,#LED_CODE MOVC A,A+DPTR MOV LED1,A MOV A,R6 ANL A,#0F0H SWAP AMOV DPTR,#LED_CODE MOVC A,A+DPTR MOV LED2,A MOV

27、R3,M_MEM1 ;分钟单元二翻十MOV R2,#0 LCALL BTID MOV A,R6 ANL A,#0FHMOV DPTR,#LED_CODE MOVC A,A+DPTRJNB FLASH_FLAG,MODE4_BCD1CPL ACC.7 ;点亮小数点MOV A,#00H MODE4_BCD1: MOV LED3,A MOV A,R6 ANL A,#0F0H SWAP A MOVC A,A+DPTRJNB FLASH_FLAG,MODE4_BCD3MOV A,#00H MODE4_BCD3:MOV LED4,AMOV R3,H_MEM1 ;时钟单元二翻十MOV R2,#0 LCALL

28、 BTID MOV A,R6 ANL A,#0FHMOV DPTR,#LED_CODE MOVC A,A+DPTR JNB FLASH_FLAG,MODE4_BCD2CPL ACC.7 ;点亮小数点MODE4_BCD2: MOV LED5,A MOV A,R6 ANL A,#0F0H SWAP A MOVC A,A+DPTRMOV LED6,A LJMP DIS;-以下是子程序-;R2R3 TO R4(0,万位),R5(千位 百位),R6(十位 个位);INPUT=R2R3 (BIN);OUT =R4R5R6 (BCD);USER REGISTER:R2 R3 R4 R5 R6 R7 ACC

29、PSW;BTID: CLR A MOV R4,A MOV R5,A MOV R6,A MOV R7,#16IBTL: CLR C MOV A,R3 RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A MOV A,R6 ADDC A,R6 DA A MOV R6,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A DJNZ R7,IBTL RET;-显示程序-DISPLAY: MOVP0,#00000000B ;消影 MOVA,SCAN_COUNTADDA,ACCMOVDPTR,#LED_SCAN_TABLE ;读取第二字节地址MOVC A,A+DPTRANLP2,#11100011B ORLP2,AMOVA,SCAN_COUNTADDA,ACCINCAMOVC A,A+DPTR ;读取第二字节地址MOVR0,AMOVA,R0;间接寻址读取缓冲区的显示内容 MOVP0,A INCSCAN_COUNTMOVA,SCAN_COUNTCJNE A,#6,DISPLAY1 ;6位显示 MOV SCAN_COUNT,#0DISPLAY1: RET ;-清内存子程序-CLR_MEM:MOVR0,#40H;从40H单元开

温馨提示

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

评论

0/150

提交评论