数字逻辑 数字时钟汇编
汇编语言数字时钟设计【范本模板】
福建工程学院课程设计课程: 微机原理及接口课程设计题目:数字时钟专业:软件工程班级: 1101座号: 3110305110姓名:程康2013 年9 月18 日一、设计任务数字时钟:实时显示时间于LED数码管,并可以修改时间,包括上调,下调,复位等。
二、总体方案设计与方案论证1、时钟,前提需要脉冲的产生,根据8253能产生稳定的方波,故时钟脉冲的产生将由8253芯片实现.2、此实验只需要精确到秒,所以,产生的方波,将是频率为1HZ。
3、时间显示采用实验箱上的6个LED数码管分别显示时、分、秒,采用动态扫描方式实现.3、因为涉及到时钟显示和控制两大功能,还有对到来的时钟脉冲接收和处理,在这里,将选用8255芯片,作为中间介质,对用户要求和接收到的脉冲信号进行处理,设置时间通过开关产生单脉冲8255的PC0~PC2输入,通过PC0控制时间的暂停与继续,通过PC1控制时加1,通过PC2控制分加1,通过PC4控制秒加1,通过PC5控制复位。
最终产生达到用户要求的数字时钟,在微机接口实验台上模拟调试实现24小时走时的时钟,并将时间以HH。
MM。
SS显示在6位数码管上。
系统硬件设计主要利用微机实验箱上的电路模块,硬件电路主要有按键电路,单脉冲产生单元、8253定时计数、8255并行接口单元、LED显示电路。
三、总框图及总体软件设计说明四、接口电路逻辑图及硬件设计说明,或系统资源使用说明1、硬件整体电路图五、局部程序框图及其设计说明1、主入口2、时钟运行正常流程图六、源程序清单CODE SEGMENTASSUME CS:CODE,DS:CODE START:MOV AX,CSMOV DX,20BH ;8253MOV AL,36h ;0号定时器,方式3,二进制OUT DX,ALMOV DX,208HMOV AX,1000 ;1000 分频OUT DX,AL ;0号数据口MOV AL,AHOUT DX,ALMOV DX,20BH ;8253MOV AL,76h ;1号定时器,方式3,二进制OUT DX,ALMOV DX,209HMOV AX,1000 ;1000 分频OUT DX,AL ;1号数据口.3MOV AL,AHOUT DX,ALMOV AL,89H ;A。
51单片机数字钟汇编程序
SEC EQU 32H ;秒即时时间\伪指令MIN EQU 31H ;分HOUR EQU 30H ;时DAY EQU 35H ;日MON EQU 34H ;月YEAR EQU 33H ;年MIN_1 EQU 41H ;分定时器1路、开存储单元HOUR_1 E QU 42H ;时DAY_1 EQU 43H ;MON_1 EQU 44H ;YEAR_1 EQU 45H ;MIN_11 EQU 40H ;分定时器1路、关存储单元HOUR_11 EQU 46H ;时DAY_11 EQU 47H ;日MON_11 EQU 48H ;月YEAR_11 EQU 49H ;年ORG 0000HLJMP MAINORG 0003H ;中断转换显示年月日、INT0(SB4键)LJMP WB0ORG 000BH ;计数中断T0、方式1LJMP TT0ORG 0013HLJMP WB1; 调整时间、定时、INT1(SB0键);------主程序ORG 0030HMAIN: MOV YEAR,#02;初始化付值MOV MON,#05MOV DAY,#01MOV HOUR,#00MOV MIN,#00MOV SEC,#00CLR 40H ;定时单元1路清零CLR 41HCLR 42HCLR 43HCLR 44HCLR 45HCLR 46HCLR 47HCLR 48HCLR 49H;-------开中断MOV TMOD,#01H ;计数、模式1、T0MOV TL0,#0B0H ;100SM 计数定时MOV TH0,#3CH ;CLR P3.0MOV 20H,#0AH ;10次*100SMSETB PT0 ;T0为最高级SETB TR0 ;允许计数SETB ET0 ;允许T0中断SETB EX0 ;允许INT0中断SETB EX1 ;允许INT1中断SETB EA ;开总中断;------显示、定时器启动判断LOOP: MOV R1,#30H; 存储单元MOV R4,#01H; 位选通MOV R3,#03H; 三组显示NEXT: MOV A,@R1 ;MOV B,#10 ;将存储单元转换成两高低两组的BCD码DIV ABSWAP AORL A,BMOV P0,A;输出MOV P2,R4INC R1 ;下一单元MOV A,R4 ;RL A ;位移MOV R4,ALCALL DE5SM ;延时0.5SMDJNZ R3,NEXT ;全扫描显示一偏;------判断定时输出(只编写了一路)CJNE R7,#88H,LOOP ;是8则开,否则、定时已关、转;---------开MOV A,YEARCJNE A,YEAR_1,LOOP_1;年比较,不等转关MOV A,MONCJNE A,MON_1,LOOP_1MOV A,DAYCJNE A,DAY_1,LOOP_1MOV A,HOURCJNE A,HOUR_1,LOOP_1MOV A,MINCJNE A,MIN_1,LOOP_1CPL P3.0;---------关LOOP_1:MOV A,YEARCJNE A,YEAR_11, LOOP;年比较MOV A,MONCJNE A,MON_11,LOOPMOV A,DAYCJNE A,DAY_11,LOOPMOV A,HOURCJNE A,HOUR_11,LOOPMOV A,MINCJNE A,MIN_11,LOOPCPL P3.0LJMP LOOP;-----年月日显示中断子程序WB0: PUSH PSWPUSH ACCPUSH BPUSH 01HPUSH 02HPUSH 03HPUSH 04HMOV R2,#0FFH ;中断扫描次数TURN: MOV R1,#33HMOV R4,#01HMOV R3,#03HNEXT_1:MOV A,@R1MOV B,#10DIV ABSWAP AORL A,BMOV P0,AMOV P2,R4INC R1RL AMOV R4,ALCALL DE5SMDJNZ R3,NEXT_1DJNZ R2,TURN ;反复显示一定时间后返回POP 04HPOP 03HPOP 02HPOP 01HPOP BPOP ACCPOP PSWRETI;-----计数中断服务子程序TT0: PUSH PSWPUSH ACCPUSH BPUSH 06HMOV TH0,#3CH;重装计数MOV TL0,#0BH;DJNZ 20H,OUT ;转到中断跳出pop程序MOV 20H,#0AH ; 重装:100*10=1000;-----进位程序INC S ECMOV R6,SEC ;CJNE R6,#60,OUT;比较MOV SEC,#00 ;INC MINMOV R6,MINCJNE R6,#60,OUTMOV MIN,#00INC HOURMOV R6,HOURCJNE R6,#25,OUTMOV HOUR,#00INC DAYMOV R5,MONCJNE R5,#1,MON_22;是否1月、不是转2 月MOV R5,DAYCJNE R5,#32,OUT ; 本月是否益出INC MONMOV DAY,#1LJMP OUTOUT: P OP 06HPOP BPOP ACCPOP PSWRETIMON_22:MOV R5,MONCJNE R5,#2,MON_33;是否2月、不是转3月MOV A,YEAR ;判断是否瑞年MOV B,#4DIV ABMOV A,BJNZ OUT_1;不是则转(A不为零则转)MOV R5,DAYCJNE R5,#30,OUT;如是瑞年、判断是否到29天INC M ONMOV DAY,#1LJMP OUTOUT_1:MOV R5,DAYCJNE R5,#29,OUT ;平年二月判断INC MONMOV DAY,#1LJMP OUTMON_33:MOV R5,MONCJNE R5,#3,MON_44MOV R5,DAYCJNE R5,#32,OUTINC MONMOV DAY,#1LJMP OUTMON_44:MOV R5,MONCJNE R5,#4,MON_55MOV R5,DAYCJNE R5,#31,OUTINC M ONMOV DAY,#1LJMP OUTMON_55:MOV R5,MONCJNE R5,#5,MON_66MOV R5,DAYCJNE R5,#32,OUTINC M ONMOV DAY,#1LJMP OUTMON_66:MOV R5,MONCJNE R5,#6,MON_77MOV R5,DAYCJNE R5,#31,OUTINC M ONMOV DAY,#1LJMP OUTMON_77:CJNE R5,#7,MON_88MOV R5,DAYCJNE R5,#32,L1INC M ONMOV DAY,#1L1: LJMP OUTMON_88:MOV R5,MONCJNE R5,#8,MON_99MOV R5,DAYCJNE R5,#32,L2INC M ONMOV DAY,#1L2: LJMP OUTMON_99:MOV R5,MONCJNE R5,#9,MON_00MOV R5,DAYCJNE R5,#31,L3INC M ONMOV DAY,#1L3: LJMP OUTMON_00:MOV R5,MONCJNE R5,#10,MON_AAMOV R5,DAYCJNE R5,#32,L4INC M ONMOV DAY,#1L4: LJMP OUTMON_AA:MOV R5,MONCJNE R5,#11,MON_BBMOV R5,DAYCJNE R5,#31,L5INC M ONMOV DAY,#1L5: LJMP OUTMON_BB:MOV R5,DAYCJNE R5,#32,L6INC Y EARMOV MON,#1L6: LJMP OUT;-----校对时间、定时调整中断WB1 : PUSH PSWPUSH ACCPUSH BPUSH 00HMOV P2,#00HSHOW_1:MOV A,#01H;显示1MOV P0,AMOV P2,#0FFH;三组数码管都显示1路LCALL READ ;调用读p1口键程序CJNE A,01H,SHOW_1;去抖后比较LCALL DE250SM ; 延时250秒CJNE A,#0FBH,ttT1LJMP SB3_1ttT1: CJNE A,#0FEH,SHOW_1AJMP SHOW_2;-------二组显示SHOW_2:MOV A,#02H; 显示2MOV P0,AMOV P2,#0FFH;LCALL READCJNE A,01H,SHOW_2 ;去抖后比较LCALL DE250SM; 延时250秒CJNE A,#0FBH,T2;不等转去判断此时SB3按了没LJMP SB3_2T2: CJNE A,#0FEH,SHOW_2AJMP SHOW_3;_------三组显示SHOW_3:MOV A,#03H; 显示3MOV P0,AMOV P2,#0FFH;位码LCALL READCJNE A,01H,SHOW_3;去抖后比较LCALL DE250SM;延时250秒CJNE A,#0FBH,T3;不等转去判断此时SB3按了没LJMP SB3_3T3: CJNE A,#0FEH,SHOW_3AJMP SHOW_4;------即时年单元调时、显示SHOW_4:MOV A,YEAR ;调出年单元MOV B,#10 ;BCD转换DIV A BSWAP AORL A,BMOV P0,A ;MOV P2,#01H;LCALL READLCALL DE250SMCJNE A,01H,SHOW_4 ;去抖CJNE A,#0FEH,KEY2_1 ;按SB2 转年调整AJMP MON_CH ;按SB1往下调月单元KEY2_1:CJNE A,#0FDH,SHOW_4LCALL YEAR_AD ; 调用年调整AJMP SHOW_4 ;MON_CH:MOV A,MON ; 月单元调整MOV B,#10DIV A BSWAP AORL A,BMOV P0,A ;MOV P2,#02H;LCALL READLCALL DE250SMCJNE A,01H,MON_CH ;去抖CJNE A,#0FEH,KEY2_2 ;按SB2 转月调整LJMP DAY_CH ;按SB1往下调日单元KEY2_2:CJNE A,#0FDH,MON_CHLCALL MON_AD ; 调用月调整LJMP MON_CH ;DAY_CH:MOV A,DAY ; 日单元调整MOV B,#10DIV A BSWAP AORL A,BMOV P0,A ;MOV P2,#04H;LCALL READLCALL DE250SMCJNE A,01H,DAY_CH ;去抖CJNE A,#0FEH,KEY2_3 ;按SB2 转日调整LJMP HOUR_CH ;按SB1往下调时单元KEY2_3:CJNE A,#0FDH,DAY_CHLCALL DAY_AD ; 调用日调整LJMP DAY_CHHOUR_CH:MOV A,HOUR ; 时单元调整MOV B,#10DIV A BSWAP AORL A,BMOV P0,A ;MOV P2,#01H;LCALL READLCALL DE250SMCJNE A,01H,HOUR_CH ;去抖CJNE A,#0FEH,KEY2_4 ;按SB2 转时调整AJMP MIN_CH ;按SB1往下调分单元KEY2_4:CJNE A,#0FDH,HOUR_CHLCALL HOUR_AD ; 调用时调整AJMP HOUR_CH ;MIN_CH:MOV A,MIN ; 分单元调整MOV B,#10DIV A BSWAP AORL A,BMOV P0,A ;MOV P2,#02H;LCALL READLCALL DE250SMCJNE A,01H,MIN_CH ;去抖CJNE A,#0FEH,KEY2_5 ;按SB2 转分调整AJMP SEC_CH ;按SB1往下调秒单元KEY2_5:CJNE A,#0FDH,MIN_CHLCALL MIN_AD ; 调用分调整LJMP MIN_CH ;SEC_CH:MOV A,SEC ; 秒单元调整MOV B,#10DIV A BSWAP AORL A,BMOV P0,A ;MOV P2,#04H;LCALL READLCALL DE250SMCJNE A,01H,SEC_CH ;去抖CJNE A,#0FEH,KEY2_6 ;按SB2 秒调整LJMP OUT_A ;按SB1跳出KEY2_6:CJNE A,#0FDH,SEC_CHCLR SEC ; 归零LJMP SEC_CH ;;-------按SB2\定时器年单元加1子程序SB3_2:LJMP SHOW_2 ;二路没编返回SB3_3:LJMP SHOW_3 ;三路没编返回SB3_1:MOV A,YEAR_1 ; 调时年单元MOV B,#10DIV A BSWAP AORL A,BMOV P0,AMOV P2,#01HLCALL READLCALL DE250SMCJNE A,01H,SB3_1CJNE A,#0FBH,KEY2_7 ;按SB2 转年调整LJMP MON_111 ;按SB1往下调月单元KEY2_7:CJNE A,#0FDH, SB3_1INC Y EAR_1 ; 1路年单元加1MOV R5,YEAR_1CJNE R5,#09,SB3_1 ;益出MOV YEAR_1,#00HAJMP SB3_1 ;;-------月单元加1子程序MON_111:MOV A,MON_1 ; 调时月单元显示MOV B,#10DIV A BSWAP AORL A,BMOV P0,AMOV P2,#02HLCALL READLCALL DE250SMCJNE A,01H,MON_111CJNE A,#0FBH,KEY2_8 ;按SB2 转月调整LJMP DAY_111KEY2_8:CJNE A,#0FDH,MON_111INC M ON_1 ;1路月单元加1MOV R5,MON_1CJNE R5,#13,MON_111;益出MOV MON_1,#01HAJMP MON_111 ; 转到月显;_------日单元加1子程序DAY_111:MOV A,DAY_1 ; 调时日单元显示提示MOV B,#10DIV A BSWAP AORL A,BMOV P0,AMOV P2,#04HLCALL READLCALL DE250SMCJNE A,01H,DAY_111CJNE A,#0FBH,KEY2_9 ;按SB2 转日调整LJMP HOUR_111KEY2_9:CJNE A,#0FDH,DAY_111INC D AY_1 ;1组日单元加1MOV R5,DAY_1CJNE R5,#32,DAY_111;益出MOV DAY_1,#01HAJMP DAY_111 ; 转到日显;-------按SB2时单元加1子程序HOUR_111:MOV A,HOUR_1 ; 调时时单元显示提示MOV B,#10DIV A BSWAP AORL A,BMOV P0,AMOV P2,#01HLCALL READLCALL DE250SMCJNE A,01H,HOUR_111CJNE A,#0FBH,KEY2_10 ; 按SB2 转时调整LJMP MIN_111KEY2_10:CJNE A,#0FDH,HOUR_111INC H OUR_1MOV R5,HOUR_1CJNE R5,#24,HOUR_111;益出MOV HOUR_1,#00HAJMP HOUR_111 ; 转到时显;-------分单元加1子程序MIN_111:MOV A,MIN_1 ; 调时分单元、并显示提示MOV B,#10DIV A BSWAP AORL A,BMOV P0,AMOV P2,#02HLCALL READLCALL DE250SMCJNE A,01H,MIN_111CJNE A,#0FBH,KEY2_11 ;按SB2 转分调整AJMP OFF_CH ;按SB3往下调定时:关单元KEY2_11:CJNE A,#0FDH, MIN_111INC M IN_1 ;1路分单元加1MOV R5,MIN_1CJNE R5,#60,MIN_111;益处MOV MIN_1,#00HAJMP MIN_111 ; 转到分显;年单元调整OFF_CH:MOV A,YEAR_11 ; 调时年单元MOV B,#10DIV A BSWAP AORL A,BMOV P0,AMOV P2,#01HLCALL READLCALL DE250SMCJNE A,01H,OFF_CHCJNE A,#0FBH,KEY2_F7 ;按SB2 转年调整LJMP MON_OFF ;按SB1往下调月单元KEY2_F7:CJNE A,#0FDH,OFF_CHINC Y EAR_11 ; 1路年单元加1MOV R5,YEAR_11CJNE R5,#09,OFF_CH ;益出MOV YEAR_11,#00HAJMP OFF_CH ;;-------月单元加1子程序MON_OFF:MOV A,MON_11 ; 调时月单元显示MOV B,#10DIV A BSWAP AORL A,BMOV P0,AMOV P2,#02HLCALL READLCALL DE250SMCJNE A,01H,MON_OFFCJNE A,#0FBH,KEY2_F8 ;按SB2 转月调整LJMP DAY_OFFKEY2_F8:CJNE A,#0FDH,MON_OFFINC M ON_11 ;1路月单元加1MOV R5,MON_11CJNE R5,#13,MON_OFF;益出MOV MON_11, #01HAJMP MON_OFF ; 转到月显;_------日单元加1子程序DAY_OFF:MOV A,DAY_11 ; 调时日单元显示提示MOV B,#10DIV A BSWAP AORL A,BMOV P0,AMOV P2,#04HLCALL READLCALL DE250SMCJNE A,01H,DAY_OFFCJNE A,#0FBH,KEY2_F9 ;按SB2 转日调整LJMP HOUR_OFFKEY2_F9:CJNE A,#0FDH,DAY_OFFINC D AY_11 ;1组日单元加1MOV R5,DAY_11CJNE R5,#32,DAY_OFF;益出MOV DAY_11,#01HAJMP DAY_OFF ; 转到日显;-------按SB2时单元加1子程序HOUR_OFF:MOV A,HOUR_11 ; 调时时单元显示提示MOV B,#10DIV A BSWAP AORL A,BMOV P0,AMOV P2,#01HLCALL READLCALL DE250SMCJNE A,01H,HOUR_OFFCJNE A,#0FBH,KEY2_F10 ; 按SB2 转时调整LJMP MIN_OFFKEY2_F10:CJNE A,#0FDH,HOUR_OFFINC H OUR_11MOV R5,HOUR_11CJNE R5,#24,HOUR_OFF;益出MOV HOUR_11,#00HAJMP HOUR_OFF ; 转到时显;-------分单元加1子程序MIN_OFF:MOV A,MIN_11 ; 调时分单元、并显示提示MOV B,#10DIV A BSWAP AORL A,BMOV P0,AMOV P2,#02HLCALL READLCALL DE250SMCJNE A,01H,MIN_OFFCJNE A,#0FBH,KEY2_F11 ;按SB2 转分调整LJMP ON_1 ;按SB3往下调定时:开与关KEY2_F11:CJNE A,#0FDH, MIN_OFFINC M IN_11 ;1路分单元加1MOV R5,MIN_11CJNE R5,#60,MIN_OFF;益处MOV MIN_11,#00HLJMP MIN_OFF ; 转到分显;-------开、关定时ON_1: CJNE A,#0FBH,MIN_OFFK1: MOV A,#88HMOV R7,AMOV P0,AMOV P2,#0FFH;三组都显示开LCALL READLCALL DE250SMCJNE A,01H,ON_1;去抖后比较CJNE A,#0FBH,KEY2_12 ;按SB2 转关LJMP OUT_A ;按SB3调出、处于开状态KEY2_12:CJNE A,#0FDH, K1k2: MOV A,#00H; 显示0关MOV R7,AMOV P0,AMOV P2,#0FFH;LCALL READLCALL DE250SMCJNE A,01H,K2;去抖后比较CJNE A,#0FBH,KEY2_13 ;按SB2 转开LJMP OUT_A ;SB3调出、处关状态KEY2_13:CJNE A,#0FDH,K2 ; 比较按了没LJMP K1 ; 按了SB2、转开OUT_A:POP 00HPOP BPOP ACCPOP PSWRETI;_------读取按键程序READ: MOV A,P1;读取按键MOV R1,ALCALL DE10MSMOV A,P1RET;_----延时程序DE5SM:PUSH 01HMOV R1,#0FFHDJNZ R1,$POP 01HRETDE10MS:PUSH 04HPUSH 05HMOV R4,#0AHDl1: MOV R5,#0FFHDl2: DJNZ R5,$DJNZ R4,Dl1POP 05HPOP 04HRETDE250SM:PUSH 02HPUSH 00HMOV R0,#0FFH DEL: MOV R2,#0FFHDJNZ R2,$DJNZ R0,DELPOP 00HPOP 02HRET;_---调整时间进位程序MIN_AD:INC MINMOV R6,MINCJNE R6,#60,OU1MOV MIN,#00OU1: RETHOUR_AD:INC HOURMOV R6,HOURCJNE R6,#25,OU2MOV HOUR,#00OU2: RETDAY_AD:INC DAYMOV R6,DAYCJNE R6,#32,OU3 ; 是否益出MOV DAY,#01HOU3: RETMON_AD:INC MONMOV R6,MONCJNE R6,#13,OU4 ; 是否益出MOV MON,#01HOU4: RETYEAR_AD:INC YEARMOV R6,YEARCJNE R6,#09,OU5;是否益出MOV YEAR,#00HOU5: RETEND。
数字钟汇编程序
MOV NUM,#8
RETI
/*********************设置闹钟**********************/
SET_ALARM:
MOV A,ALARM_X
CJNE A,#1,SET_ALARM_BACK
SET_ALARM1:
ORG 0013H
LJMP SERVE_ALARM
ORG 0020H
MAIN:
MOV TMOD,#11H
MOV NUM_D1,#20
MOV SEC,#59 ;时间初始化
MOV MIN,#59
MOV HOU,#12
MOV NUM,#0
MOV NUM_KEY,#0
MOV ALARM_2_SEC,#00 ;闹钟2
MOV ALARM_2_MIN,#58
MOV ALARM_2_HOU,#12
MOV ALARM_3_SEC,#00 ;闹钟3
MOV ALARM_3_MIN,#05
MOV ALARM_3_HOU,#13
MOV ALARM_4_SEC,#00 ;闹钟4
CPL P1.0
RETURN4:
RETI
/******************外部中断0重置秒分时位置选择************/
ORG 0200H
SERVE_PLACE:
MOV MODE,#0 ;标记为外部中断0
LCALL DELAY
LCALL DELAY
MOV SECX,40H
MOV MINX,41H
MOV HOUX,42H
LCALL CHECK_KEY14
数字逻辑电路课设—简易数字钟设计
数字逻辑电路课程设计报告多功能数组钟设计一、设计要求:通过Maxplus II使用VHDL语言编写设计一款多功能数字钟,具体功能如下:1、时钟时,分,秒分别显示且能正确计数。
2、整点报时,时钟在将要到达整点的最后十秒,给予蜂鸣提示。
3、校时,可以通过相应开关按钮对时钟的时分秒进行调整。
4、闹钟,用户可以预设闹铃时刻,当时间到达该时刻时,发出蜂鸣提示。
二、总体设计:1、设计框图:2、外部输入输出要求:外部输入要求:输入信号有1024Hz时钟信号、低电平有效的秒清零信号CLR、低电平有效的调分信号SETmin、低电平有效的调时信号SEThour;外部输出要求:整点报时信号SOUND(59分51/3/5/7秒时未500Hz低频声,59分59秒时为1kHz高频声)、时十位显示信号h1(a,b,c,d,e,f,g)、时个位显示信号h0(a ,b,c,d,e,f,g)、分十位显示信号m1及分个位m0、秒十位s1及秒个位s0;数码管显示位选信号SEL0/1/2等三个信号。
3、各模块功能:1)FREQ分频模块:整点报时用的1024Hz与512Hz的脉冲信号,这里的输入信号是1024Hz信号,所以只要一个二分频即可;时间基准采用1Hz输入信号直接提供(当然也可以分频取得,这里先用的是分频取得的信号,后考虑到精度问题而采用硬件频率信号。
2)秒计数模块SECOND:60进制,带有进位和清零功能的,输入为1Hz脉冲和低电平有效的清零信号CLR,输出秒个位、时位及进位信号CO。
3)分计数模块MINUTE60进制,带有进位和置数功能的,输入为1Hz脉冲和高电平有效的使能信号EN,输出分个位、时位及进位信号CO。
4)时计数模块HOUR:24进制,输入为1Hz脉冲和高电平有效的使能信号EN,输出分个位、时位。
5)扫描模块SELTIME:输入为秒(含个/十位)、分、时、扫描时钟CLK1K,输出为D和显示控制信号SEL。
6)整点报时功能模块ALERT:输入为分/秒信号,输出为高频声控Q1K和Q500。
江苏大学数字逻辑课程设计数字时钟【范本模板】
JIANGSU NIVERSITY 课程设计报告学院:计算机科学与通信工程班级:网络工程姓名:学号:指导老师:报告日期:2016年1月15日目录Ⅰ.设计目的 0Ⅱ。
设计内容 0Ⅲ.设计原理 0Ⅳ.具体实现 (1)(1)顶层图 (1)(2)代码 (1)1。
24进制: (1)2. 60进制: (2)3。
动态显示: (3)4。
分频器: (4)5。
二路选择器: (5)6。
整点报时: (6)7。
闹钟设置: (7)8.alarmcmp: (8)9。
消抖: (8)Ⅴ。
心得体会 (9)Ⅰ.设计目的设计一个拥有:正常的时分秒计数功能,实现校时校分清零的功能,利用扬声器实现整点报时和闹钟功能的多功能数字钟.Ⅱ.设计内容整个系统分成七个模块进行:计时模块、校时模块、整点报时模块、分频模块、动态扫描模块,动态显示模块、闹钟模块。
l、能进行正常的时、分、秒计时功能,分别由6个数码显示24小时、60分钟的计数器显示。
2、能利用实验系统上的按钮实现“校时”、“校分”功能;3、能利用扬声器做整点报时:4、定时闹钟功能5、用层次化设计方法设计该电路,用硬件描述语言编写各个功能模块。
6、报时功能。
报时功能用功能仿真的仿真验证,可通过观察有关波形确认电路设计是否正确.Ⅲ。
设计原理1 计时模块:使用一个二十四进制和两个六十进制计数器级联,构成数字钟的基本框架。
二十四进制用于计时,六十进制用于计分和计秒.给秒计数器一个1hz的时钟脉冲,分计数器以秒计数器的进位作为计数脉冲,时计数器以分计数器的进位作为计数脉冲。
2 校时模块:分别按下校时键和校分键,计数器增至所需时分数,按下清零键,秒计数器归零。
此处注意事项:①按键“抖动"消除。
利用触发器,如D触发器,利用D 触发器边沿触发的特性,在除去时钟边沿来之前一瞬间之外的绝大部分时间都不能接受输入,从而实现“消抖"。
②校分时,分计数器计数不应对小时位产生影响,因而需要屏蔽此时分计数器的进位信号.③需要设计二路选择器对于正常计数以及校时进行选择。
数字电子钟实现小数点闪烁(汇编语言)
MOV BUF+4, A
RET
DM : DB 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
WM : DB 0x7f,0xBF,0xdF,0xef,0xf7,0xfb
END
MOV BUF+2, A
MOV A, HOUR // (时)
MOV B, #10
DIV AB
MOV DPTR,#DM
MOVC A, @A+DPTR
MOV BUF+5, A
MOV A, B
MOV A,SEC
CJNE A,#60,RT
MOV SEC,#0
INC MIN
MOV A,MIN
CJNE A,#60,RT
MOV MIN ,#0
INC HOUR
MOV A,HOUR
CJNE A,#24,RT
/*********************************************
以下注释部分 为 实现 小数点 闪烁功能
小数点 每隔1秒 闪烁一次
*********************************************/
CJNE R0,#BUF+2,NT //判断 R0 是否为 分 个位 如果是
MOV TH0,#0D8H
INC COUNT
MOV A,COUNT
CJNE A,#64H,RT // 判断 COUNT 是否为 100
CPL FLOAT // FLOAT 取反
MOV COUNT,#0
汇编语言实现电子闹钟思路详解
汇编语⾔实现电⼦闹钟思路详解2.1 设计思路⾸先使⽤8255、8254、8259 三个芯⽚实现电⼦时钟的功能,让闹钟可以正常⾛时;其次,在时钟的基础上添加闹铃功能、整点报时功能、设置当前时间功能;完成设计。
2.2 设计⽅案1. 电⼦时钟部分:此次设计是通过对计数器8254设定计数值对脉冲进⾏计数,在程序⾥,8254⼯作于计数器0,⽅式3。
接⼊的CLK为1MHz,设计数初值为10000,每100次中断计数⼀次,产⽣的记数时间正好是时钟每秒⾛过的时间。
通过对中断控制器8259设置初始化命令字初值来控制中断。
程序中通过移位指令来实现时、秒、分的个位和⼗位的独⾃存储,将分、秒的个位⼗位分别存⼊指定的寄存器中。
⽐较转移指令来完成秒和分的累加。
七段数码管由8255并⾏接⼝的A⼝进⾏位的选择,通过B⼝输出要显⽰的段码。
这样就在6个七段数码管上分别显⽰时、分和秒。
当1S时间到时,修改当前数码管数值,10秒时将秒的低位清零,⾼位加1,分和时亦是如此;到达60秒时,将秒清零,分加1,到达60分时,将分清零,⼩时加1,到达24⼩时则全部清零。
2. 闹钟响铃部分:对于闹钟部分,我们⾸先要完成数码管显⽰单元按键的连接和设计,让16个按键分别为0-F;再利⽤实验平台的单次脉冲输⼊KK1产⽣⼀次中断,这样就可以设置时间了。
将设置好的时间储存起来,时刻与当前的时间进⾏⽐较,当时间⼀样时,计数器1⼯作,蜂鸣器蜂鸣,播放⾳乐,这就完成了闹钟响铃功能。
3. 整点报时部分:整点报时,就是在整时的时候响⼀次铃,当时钟整点时,⽆论是⼏点,时钟的分和秒部分都为零,所以,只要让时钟的分和秒部分与零进⾏⽐较,当他们都相等时,就代表到达整点了,可以响铃了。
整点报时就完成了,本闹钟设置的整点报时时长为5秒。
4. 设置当前时间:本部分也⽤到了数码管显⽰单元的按键部分,只要利⽤之前的设计就好了,这次使⽤单次脉冲输⼊的KK2产⽣中断设置时间,再将设置的时间存储在时间变量中,时间就设置好了。
基于汇编语言的数字时钟
一摘要单片计算机即单片微型计算机。
( Single-Chip Microcomputer ),是集CPU ,RAM ,ROM , 定时,计数和多种接口于一体的微控制器。
他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。
而51 单片机是各单片机中最为典型和最有代表性的一种。
这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
二说明系统由AT89C51 、LED 数码管、按键、发光二极管等部分构成,能实现时间的调整、定时时间的设定,输出等功能。
系统的功能选择由SB0、SB1 、SB2、SB3、SB4 完成。
其中SB0为时间校对,定时器调整功能键,按SB 0 进入调整状态。
SB1 为功能切换键。
第一轮按动SB1 依次进入一路、二路、三路定时时间设臵提示程序,按SB3 进入各路定时调整状态。
定时时间到,二极管发亮。
到了关断时间后灭掉。
如果不进入继续按SB1 键,依次进入时间?年?位校对、?月?位校对、?日?位校对、?时?位校对、? 分?位校对、? 秒? 位校对状态。
不管是进入那种状态,按动SB2 皆可以使被调整位进行不进位增量加 1 变化。
各预臵量设臵完成后,系统将所有的设臵存入RAM 中,按SB1 退出调整状态。
上电后,系统自动进入计时状态,起始于?00? 时?00? 分。
SB4 为年月日显示转换键,可使原来显示时分秒转换显示年月日。
三、电路原理分析1. 显示原理电原理图见附图1。
由6 个共阴极的数码管组成时、分、秒的显示。
P0 口的8 条数据线P0.0 至P0.7分别与两个CD4511 译码的ABCD 口相接,P2 口的P2.0 至P2.2 分别通过电阻R10至R13与VT1至VT3的基极相连接。
这样通过P0 口送出一个存储单元的高位、低位BCD显示代码,通过P2 口送出扫描选通代码轮流点亮LED1至LED6,就会将要显示的数据在数码管中显示出来。
从P0 口输出的代码是BCD码,从P2 口输出的就是位选码。
基于51单片机汇编语言的数字钟课程设计报告(含有闹钟万年历)
单片微型计算机课程设计报告多功能电子数字钟姓 名 许伟敏学 号 060301021124班 级 电气二班指导教师 林卫2009-06-25目录一:概述 (1)二:设计基本原理简介 (2)三:设计要求及说明 (3)四:整体设计方案 (4)系统硬件电路设计 4系统软件总流程设计 5模块划分及分析 6五:单模块流程设计 (8)各模块设计概述、流程图 8模块源程序集合及注释 13六:单模块软件测试 (23)七:系统检测调试 (24)硬件电路调试软件部分烧写调试八:系统优化及拓展 (26)九:心得体会 (28)单片微型计算机课程设计 基于汇编语言的电子数字钟 概述课程设计流程图↑一、概述课程设计题目:电子数字钟应用知识简介:● 51单片机单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
作为嵌入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。
51系列单片机是国内目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51系列单片机的发展又进入了一个新的阶段。
在今后很长一段时间内51系列单片机仍将占据嵌入式系统产品的中低端市场。
● 汇编语言汇编语言是一种面向机器的计算机低级编程语言,通常是为特定的计算机或系列计算机专门设计的。
汇编语言保持了机器语言的优点,具有直接和简捷的特点,其代码具有效率高实时性强等优点。
但是对于复杂的运算或大型程序,用汇编语言编写将非常耗时。
汇编语言可以与高级语言配合使用,应用十分广泛。
● ISPISP (In-System Programming )在系统可编程,是当今流行的单片机编程模式,指电路板上的空白元器件可以编程写入最终用户代码,而不需要从电路板上取下元器件。
已经编程的器件也可以用ISP 方式擦除或再编程。
本次课程设计便使用ISP 方式,直接将编写好的程序下载到连接好的单片机中进行调试。
数字钟流程图(汇编语言)
Mov hour,#0
Mov min,#0
Mov sec,#0
Mov xsstate,#0
Clr addflag
Clr decflag
Mov seccs,#0
Mov tmod,#01h
Mov th0,#03ch
Mov tl0,#0b0h
Setb tr0
Clr sectime
秒表流程图及相应的程序
(汇编语言版)
定义(资源分配):
显示的数据:
秒的高位、秒的低位、毫秒的高位、毫秒的低位。秒数据、毫秒数据定义。
数码管的段输入、位控制定义。
按键的定义、显示状态定义。
时间状态定义:
hour_h data 30h
hour_l data 31h
min_h data 32h
min_l data 33h
key1bit p3.2
key2 bit p3.3
key3 bit p3.4
addflag bit 20h
decfalg bit 21h
xsstate data 39h
secflagdata 3ah;定义50ms的次数
sectime bit 22h;定义1s到
主程
Org 0000h
Ajmp main
Cjnz a,60,shujuchuliend
Mov sec,#0
Inc min
Jnb decflag,anjianchuliend
Dec min
Clr decflag
Mov a,min
Cjnz a,255,anjianchuliend
Mov min,#59
Acall anjianchuliend
单片机数字时钟(汇编语言)
单片机课程设计目录前言 (3)一、系统方案选择与论证 (4)1.1数字电子钟设计的要求及技术指标 (4)1.2设计方案论证 (5)1.3元器件清单 (5)1.4电路说明 (6)二、安装与调试 (9)2.1准备元件和工具 (9)2.2 安装元件 (9)2.3测试与调试 (10)三、主程序设计 (14)3.1主程序设计 (14)四、总结 (21)前言20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。
忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。
但是,一旦重要事情,一时的耽误可能酿成大祸。
例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间。
尤其在医院,每次护士都会给病人作皮试,测试病人是否对药物过敏。
注射后,一般等待5分钟,一旦超时,所作的皮试试验就会无效。
手表当然是一个好的选择,但是,随着接受皮试的人数增加,到底是哪个人的皮试到时间却难以判断。
所以,要制作一个定时系统。
随时提醒这些容易忘记时间的人。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
数字集成电路的出现和飞速发展,以及石英晶体振荡器的广泛应用,使得数字钟的精度稳定度远远超过了老式的机械表,用数字电路实现对“时”、“分”、“秒”数字显示的数字钟在数字显示方面,目前已有集成的计数、译码电路,它可以直接驱动数码显示器件,也可以直接采用才COMS--LED光电组合器件,构成模块式石英晶体数字钟。
汇编数字钟-8位数码管显示
汇编数字钟(8位数码管显示)这款数字钟是笔者亲自试验过的作品,电路图和程序都经过优化,供爱好者制作参考。
显示格式依然是23-59-59(同样是小时十位如果为0则不显示),调整时间增加了一只按钮,通过调整选择键SET_KEY选择调整位,选中位开始闪烁,此时再按增加键ADD_KEY或减少键DEC_KEY调整选中位,如果长按ADD_KEY或DEC_KEY,系统识别后则进行调时快进,此时停止闪烁,方便人眼观察。
同时还增加了调秒功能:如果选中位是秒,则按增加键或减少键都是将秒清零。
汇编程序设计:/**************************************************************程序名称:51单片机8位数码管数字钟汇编程序简要说明:实现24小时制电子钟,8位数码管显示,显示时分秒显示格式:23-59-59(小时十位如果为0则不显示)通过3只按键来调整时间调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁增加键ADD_KEY:P1.1;按一次使选中位加1减少键DEC_KEY;P1.2;按一次使选中位减1如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁如果选中位是秒,则按增加键或减少键都是将秒清零P0口输出数码管段选信号,P2口输出数码管位选信号。
晶振12M编写:最后更新:08/12/31晚**************************************************************/ ORG 0000H ;程序入口地址LJMP STARTORG 000BH ;定时器0中断入口地址LJMP TIMER_0ORG 0300H/*****程序开始,初始化*****/START:SETB 48H ;使用一个bit位用于调时闪烁标志SETB 47H ;使用一个bit位用于产生脉冲用于调时快进时基MOV R1,#0 ;调整选择键功能标志:0正常走时、1调时、2调分、3调秒MOV 20H,#00H ;用于控制秒基准时钟源的产生MOV 21H,#00H ;清零秒寄存器MOV 22H,#00H ;清零分寄存器MOV 23H,#00H ;清零时寄存器MOV 24H,#00H ;用于控制调时闪烁的基准时钟的产生MOV IP,#02H ;IP,IE初始化MOV IE,#82HMOV TMOD,#01H ;设定定时器0工作方式1MOV TH0,#3CHMOV TL0,#0B0H ;赋定时初值,定时50msSETB TR0 ;启动定时器0MOV SP,#40H ;重设堆栈指针/*****主程序*****/MAIN:LCALL DISPLAY ;调用显示子程序LCALL KEY_SCAN ;调用按键检测子程序JZ MAIN ;无键按下则返回重新循环LCALL SET_KEY ;调用选择键处理子程序JB 46H,MAIN ;如果已进行长按调整(调时快进),则不再执行下面的单步调整LCALL ADD_KEY ;调用增加键处理子程序,加一LCALL DEC_KEY ;调用减少键处理子程序,减一LJMP MAIN ;重新循环/*****定时器中断服务程序*****/TIMER_0:PUSH ACCPUSH PSW ;保护现场MOV TH0,#3CHMOV TL0,#0B0H ;重新赋定时初值CPL 47H ;产生脉冲用于调时快进时基INC 24HMOV A,24HCJNE A,#10,ADD_TIME ;产生0.5秒基准时钟,用于调时闪烁CPL 48H ;取反调时闪烁标志位MOV 24H,#00HADD_TIME: ;走时INC 20HMOV A,20HCJNE A,#20,RETI1 ;产生1秒基准时钟MOV 20H,#00H ;一秒钟时间到,清零20H MOV A,21HADD A,#01HDA A ;作十进制调整MOV 21H,ACJNE A,#60H,RETI1MOV 21H,#00H ;一分钟到MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,RETI1MOV 22H,#00H ;一小时到MOV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,RETI1MOV 23H,#00H ;到24点,清零小时RETI1:POP PSWPOP ACC ;恢复现场RETI ;中断返回/*****显示处理*****/DISPLAY:MOV A,21H ;秒ANL A,#0FHMOV 2FH,A ;转换出秒个位,存入2FHMOV A,21HANL A,#0F0HSWAP AMOV 2EH,A ;转换出秒十位,存入2EHJB 46H,MIN ;如果长按按键(调时快进),则跳过闪烁处理程序CJNE R1,#3,MIN ;如果R1为3,闪烁秒位待调整JB 48H,MINMOV 2FH,#0AH ;使该位为10,查表得到使该位不显示的输出MOV 2EH,#0AHMIN:MOV A,22H ;分ANL A,#0FHMOV 2DH,A ;转换出分个位,存入2DHMOV A,22HANL A,#0F0HSWAP AMOV 2CH,A ;转换出分十位,存入2CHJB 46H,HOUR ;如果长按按键(调时快进),则跳过闪烁处理程序CJNE R1,#2,HOUR ;如果R1为2,闪烁分位待调整JB 48H,HOURMOV 2DH,#0AH ;使该位为10,查表得到使该位不显示的输出MOV 2CH,#0AHHOUR:MOV A,23H ;时ANL A,#0FHMOV 2BH,A ;转换出时个位,存入2BHMOV A,23HANL A,#0F0HSWAP AMOV 2AH,A ;转换出时十位,存入2AHJB 46H,DISP ;如果长按按键(调时快进),则跳过闪烁处理程序CJNE R1,#1,DISP ;如果R1为1,闪烁时位待调整JB 48H,DISPMOV 2BH,#0AH ;使该位为10,查表得到使该位不显示的输出MOV 2AH,#0AH/*****数码管动态扫描显示*****/DISP:MOV DPTR,#TABLEMOV A,2FHMOVC A,@A+DPTRMOV P0,ACLR P2.7LCALL DELAYSETB P2.7 ;显示秒个位MOV A,2EHMOVC A,@A+DPTRMOV P0,ACLR P2.6LCALL DELAYSETB P2.6 ;显示秒十位MOV A,#0BFHMOV P0,ACLR P2.5LCALL DELAYSETB P2.5 ;显示“-”MOV A,2DHMOVC A,@A+DPTRMOV P0,ACLR P2.4LCALL DELAYSETB P2.4 ;显示分个位MOVC A,@A+DPTRMOV P0,ACLR P2.3LCALL DELAYSETB P2.3 ;显示分十位MOV A,#0BFHMOV P0,ACLR P2.2LCALL DELAYSETB P2.2 ;显示“-”MOV A,2BHMOVC A,@A+DPTRMOV P0,ACLR P2.1LCALL DELAYSETB P2.1 ;显示时个位MOV DPTR,#TABLE1 ;该位使用TABLE1以消除前置0MOV A,2AHMOVC A,@A+DPTRMOV P0,ACLR P2.0LCALL DELAYSETB P2.0 ;显示时十位RET/*****按键检测子程序*****/KEY_SCAN:CLR 46H ;关闭长按调整(调时快进)标志MOV P1,#0FFH ;将P1口设置成输入状态MOV A,P1CPL AANL A,#07H ;P1口低3位连接3个按键,只判断该3位JZ EXIT_KEY ;无键按下则返回LCALL DELAY ;延时去抖动MOV A,P1 ;重新判断CPL AJZ EXIT_KEY ;键盘去抖动MOV R5,A ;临时将键值存入R5MOV R4,#00H ;用于控制调时快进速度;设置为00H是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进LOOP: ;进入长按处理LCALL DISPLAY ;使长按时显示正常MOV A,P1CPL AANL A,#07HJB 47H,LOOP1INC R4 ;调时快进间隔时间基准加1LOOP1:CJNE R1,#03H,LOOP2 ;如果调秒时长按,则不处理LJMP LOOP3LOOP2:CJNE R4,#99H,LOOP3MOV R4,#70H ;确认用户长按后,重新设定起始值,加快调时快进速度SETB 46H ;长按调整(调时快进)标志LCALL ADD_KEYLCALL DEC_KEYLOOP3:JNZ LOOP ;等待键释放MOV A,R5 ;输出键值RETEXIT_KEY:RET/*****延时子程序*****/DELAY:MOV R7,#150DJNZ R7,$RET/*****选择键处理子程序*****/SET_KEY:CJNE R5,#01H,EXIT ;选择键键值INC R1 ;调整选择功能标志加一CJNE R1,#4,EXITMOV R1,#0MOV 24H,#00H ;调时闪烁基准清零RET/*****增加键处理子程序*****/ADD_KEY:CJNE R5,#02H,EXIT ;增加键键值CJNE R1,#01H,NEXT1 ;选择键功能标志为1,调时,否则跳出MOV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,EXITMOV 23H,#00HNEXT1:CJNE R1,#02H,NEXT2 ;选择键功能标志为2,调分,否则跳出MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,EXITMOV 22H,#00HNEXT2:CJNE R1,#03H,EXIT ;选择键功能标志为3,调秒,否则跳出MOV 21H,#00H ;如增加键按下直接清零秒RET/*****减少键处理子程序*****/DEC_KEY:CJNE R5,#04H,EXIT ;减少键键值CJNE R1,#01H,NEXT3 ;选择键功能标志为1,调时,否则跳出MOV A,23HADD A,#99HDA AMOV 23H,ACJNE A,#99H,EXITMOV 23H,#23HNEXT3:CJNE R1,#02H,NEXT4 ;选择键功能标志为2,调分,否则跳出MOV A,22HADD A,#99HMOV 22H,ACJNE A,#99H,EXIT MOV 22H,#59HCJNE R1,#03H,EXIT ;选择键功能标志为3,调秒,否则跳出MOV 21H,#00H ;如较少键按下直接清零秒RET/*****万用返回子程序*****/EXIT:RET/*****数码管字形编码表*****/TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;字形显示编码TABLE1:DB 0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;小时位的十位数编码,该位如果为0则不显示END ;程序结束(注:可编辑下载,若有不当之处,请指正,谢谢!)。
数字逻辑课程设计 —数字钟综述
数字逻辑课程设计—数字钟班级:计114学号:119074122姓名:石险峰指导老师:苏小虎一、任务与要求设计任务:设计一个具有整点报时功能的数字钟要求:1、设计一个有“时”、“分”、“秒”(23小时59分59秒)显示且有校时功能的数字钟。
2、有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间。
3、计时过程具有整点报时功能,当时间到达整点前10秒进行报时。
4、用中小规模集成电路组成数字钟,并在实验箱上进行组装、调试。
5、画出框图和逻辑电路图。
功能:1、计时功能:要求准确计时,以数字形式显示时、分、秒的时间。
小时的计时要求为“23翻1”。
2、校时功能:当数字钟接通电源或者计时出现误差时,需要校正时间(简称校时)。
校时是数字钟应具备的基本功能,一般电子手表都具有时、分、秒等校时功能。
3、整点报时:每当数字钟计时快要到整点时发出声响,此实验设计当时钟计时到59分50秒时开始报时,持续10秒。
二、设计方案电路组成框图:图1 数字钟电路组成框图数字钟电路是一个典型的数字电路系统,其由时、分、秒计数器以及校时和显示电路组成。
其主要功能为计时、校时和报时。
利用60进制和24进制递增计数器子电路构成数字钟系统,由2个60进制同步递增计数器完成秒、分计数,由24进制同步递增计数器完成小时计数。
秒、分、时之间采用同步级联的方式。
按键func_sel 产生单脉冲,控制数字钟在计时/校时/校分/校秒四个状态间切换。
报时功能为整点来临时蜂鸣器发出声响。
三、设计和实现过程 1. 各部分电路的设计过程 (1)时分秒计数器的设计时间计数电路由秒个位和秒十位计数器、分个位和分十位计数器主体电路扩展电路时显示器时译码器 时计数器 分显示器分译码器 分计数器 校时电路振荡器 分频器秒显示器秒译码器秒计数器定时控制仿电台报时报整点时数触摸整点报时1s及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器、分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为24进制计数器。
单片机汇编数字时钟
1.前言1.1设计意义近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本系统是基于AT89C51单片机设计的一个具有六位LED 显示的数字时实时钟,该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。
此次设计电子数字钟是为了了解电子数字钟的原理,从而学会制作电子数字钟。
而且通过电子数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。
通过它可以进一步学习与掌握单片机原理与使用方法。
1.2系统功能数字钟是一个将时分秒在数码管上显示的计时装置,计时方式为24h ,另外还有启动、暂停功能。
1.3使用方法程序运行后始终显示初始值00:00:00。
当按下开始键后开始计时,再按下暂停键后时钟暂停工作,数码管显示暂停时刻的计数数值。
2.硬件电路设计及描述2.1总体设计此次实习的的电子钟由单片机AT89C51、74LS373、8D 锁存器、8255芯片、7407缓冲器、73LS138译码器、数码管组成。
运用汇编语言来控制单片机AT89C51来实现动态数码管显示。
(见下图2-1)图2-1 电路总体设计2.2 硬件电路运行原理单片机烧入HEX 文件后开始工作,通过单片机P0口与8255数据总线相连与8255传送数据,设定8255PB 口送段选码,PC 口送位选码,PC 口接3-8译码器,不停的扫描8单片机 AT89C51 74LS373 锁存地址8255A PB 口 接口控制 PC 口7407段选 74LS138位选七段 数码 管个数码管实现数码管动态扫描功能,P1.0、P1.1接2个独立键盘实现P1.0启动时钟P1.1暂停时钟的功能。
数字钟--verilog,C,汇编语言的代码
各工作模式同上,需要注意的是定时中断里内容尽量少,必要部分才放里面,提高走时精确度;程序尽量模块化,比如显示模块、按键处理模块等,不仅清晰易读,而且方便以后直接调用,很好利用C的可移植性。
汇编数字钟:在C的基础上,动手用汇编写多功能数字钟,感觉还是要生疏一些吧,很多语法在C里直接用if、else,case等表达就行了,可在汇编里,却要跳来跳去的,不过投入去写了,看自己也能写出几百行的代码出来,还是挺带劲的,田老师也说过建议我们用汇编写个数字钟,驱动几个数码管,按键什么的,对我们以后收益很大。花了好几天才完整的把它弄出来,感觉对一个程序的编译查错比把它写出来要费尽得多,所以在查错时大家一定要细心耐心才行,这样慢慢的就会积累很多经验的。
模式4 闹钟调分,分钟位闪烁,时钟位显示闹钟的时钟时间,秒钟位显示HA,以示和校分区别,按加减键设置闹钟时间。
经验总结:在理解原理,形成清晰流程图的基础上来写的配对问题;若对某个模块有改动,一定要对该模块重新编译一下;一个always里有多个脉冲沿时注意要加信号延迟。
在这里也想把我的一些心得体会说一下:
1.汇编数字钟程序刚开始我是在keil3里写的,结果第一次编译时提示这样的错误: FATAL ERROR L210 IO ERROR ON INPUT FILE
EXCEPTION 0021H PATH OR 不是完整版的,缺少一个,导致不能编译有浮点运算的源程序,于是我下了一个“c51fps.lib” 文件放进去,可还是存在这个错误;有的说是设置上的问题,在程序里屏蔽掉#pragma src即可,还有的说是编译环境没设置好,找不到这个函数所在库位置,要在系统属性环境变量里重新设置一下,我一一试过,还是没有解决;最后看到一个人说有可能是因为程序太大,keil3装不下,于是我把keil3卸载了,重新安装了一个完整版的keil4,然后这个问题居然多意外的东西。
汇编语言数字时钟设计
院程学福建工课程设计微机原理及接口课程设计课程:题目:数字时钟专业:软件工程1101 级:班3110305110 座号:程康名:姓月2013 年9 18 日一、设计任务数字时钟:实时显示时间于LED数码管,并可以修改时间,包括上调,下调,复位等。
二、总体方案设计与方案论证1、时钟,前提需要脉冲的产生,根据8253能产生稳定的方波,故时钟脉冲的产生将由8253芯片实现。
2、此实验只需要精确到秒,所以,产生的方波,将是频率为1HZ。
3、时间显示采用实验箱上的6个LED数码管分别显示时、分、秒,采用动态扫描方式实现。
3、因为涉及到时钟显示和控制两大功能,还有对到来的时钟脉冲接收和处理,在这里,将选用8255芯片,作为中间介质,对用户要求和接收到的脉冲信号进行处理,设置时间通过开关产生单脉冲8255的PC0~PC2输入,通过PC0控制时间的暂停与继续,通过PC1控制时加1,通过PC2控制分加1,通过PC4控制秒加1,通过PC5控制复位。
最终产生达到用户要求的数字时钟,在微机接口实验台上模拟调试实现24小时走时的时钟,并将时间以HH.MM.SS显示在6位数码管上。
系统硬件设计主要利用微机实验箱上的电路模块,硬件电路主要有按键电路,单脉冲产生单元、8253定时计数、8255并行接口单元、LED显示电路。
三、总框图及总体软件设计说明接口电路逻辑图及硬件设计说明,或系统资源使用说明四、1、硬件整体电路图五、局部程序框图及其设计说明、时钟运行正常流程图2六、源程序清单SEGMENTCODEASSUME CS:CODE,DS:CODE START:MOV AX,CSMOV DS,AXMOV DX,20BH ;8253MOV AL,36h ;0号定时器,方式3,二进制OUT DX,ALMOV DX,208HMOV AX,1000 ;1000 分频OUT DX,AL ;0号数据口MOV AL,AHOUT DX,ALMOV DX,20BH ;8253MOV AL,76h ;1号定时器,方式3,二进制OUT DX,ALMOV DX,209HMOV AX,1000 ;1000 分频OUT DX,AL ;1号数据口.3MOV AL,AHOUT DX,ALMOV AL,89H ;A.B口方式0输出,PC0-3输入,PC4-7输入MOV DX,203HOUT DX,AL ;写8255工作方式控制字go:CALL BEGIN ;时间走动CALL SET ;修改时间JMP go;对时间拆字split PROCLEA DI,RESMOV DX,00H;时间的小时位MOV DL,HMOV CL,4SHR DL,CL ;通过移位获取时的高位MOV BX,DXMOV DL,BUF[BX] ;查定义好的数据段获取对应数字数码管的值MOV [DI],DL ;保存到RES对应单元INC DIMOV DL,HAND DL,0FH ;获取时的低位ADD DL,0AH ;小时和分钟低位都是加点数MOV BX,DXMOV DL,BUF[BX] ; 查定义好的数据段获取对应数字数码管的值MOV [DI],DL;时间的分钟高位,无点存储INC DIMOV DL,MSHR DL,CLMOV BX,DXMOV DL,BUF[BX]MOV [DI],DL; 时间的分钟低位,有点存储INC DIMOV DL,MAND DL,0FHADD DL,0AHMOV BX,DXMOV DL,BUF[BX]MOV [DI],DL;时间的秒位,高低位都按无点存储INC DIMOV DL,SSHR DL,CLMOV BX,DXMOV DL,BUF[BX]MOV [DI],DLINC DIMOV DL,SAND DL,0FHMOV BX,DXMOV DL,BUF[BX]MOV [DI],DLRETsplit ENDP;判断k0是否按下并弹起,暂停ISK0 PROCMOV DX,202H ;判断K0按下,且放开IN AL,DX ;把c口数据写入ALAND AL,01H ;判断K0是被按下CMP AL,01HJNZ DOWNJMP RETURN;被按下DOWN:MOV DX,202HIN AL,DXAND AL,01H ;被按下是否弹起CMP AL,01HJZ UPJMP DOWN;按下之后又弹起,K0不等于0UP:INC K0MOV AH,00HMOV AL,K0MOV BL,03HDIV BLMOV K0,AHRETURN:RETISK0 ENDPDELAY PROC NEARPUSH CXMOV CX,65535LOOP $POP CXDELAY ENDP;以按下为准,进行时间的递增ISK1 PROCMOV DX,202H ;判断K1按下,且放开IN AL,DXAND AL,02HCMP AL,02HJNZ UP1JMP RETURN1UP1:;CALL SHOWMOV DX,202HIN AL,DXAND AL,02HCMP AL,02HJZ DOWN1JMP UP1DOWN1:CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动MOV AL,K1ADD AL,01HDAAMOV K1,ALMOV AH,00HMOV BL,24HDIV BLMOV K1,AHRETURN1:RETISK1 ENDP;分钟调节上升ISK2 PROCMOV DX,202H ;判断K2按下,且放开IN AL,DXAND AL,04HCMP AL,04HJNZ UP2JMP RETURN2UP2: MOV DX,202HIN AL,DXAND AL,04HCMP AL,04HJZ DOWN2JMP UP2DOWN2:CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动MOV AL,K2ADD AL,01HDAAMOV AH,00HMOV BL,60HDIV BLMOV AL,AHADD AL,00HDAAMOV K2,ALRETURN2: RETISK2 ENDP;秒调节上升ISK5 PROCMOV DX,202H ;判断K4按下,且放开IN AL,DXAND AL,10HCMP AL,10HJNZ UP5JMP RETURN5UP5: MOV DX,202HIN AL,DXAND AL,10HCMP AL,10HJZ DOWN5JMP UP5DOWN5:CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动MOV AL,K4ADD AL,01HDAAMOV AH,00HMOV BL,60HDIV BLMOV AL,AHADD AL,00HDAAMOV K4,ALRETURN5: RETISK5 ENDP;以按下为准,进行时间的递减小时ISK3 PROCMOV DX,202H ;判断K1按下,且放开IN AL,DXAND AL,02HCMP AL,02HJNZ UP3JMP RETURN3UP3:MOV DX,202HIN AL,DXAND AL,02HCMP AL,02HJZ DOWN3JMP UP3DOWN3:CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动MOV AL,K1CMP AL,00HJA JIAN3JMP BIAN3JIAN3:SUB AL,01H;ADD AL,00HDASMOV K1,ALRETBIAN3:MOV AL,23HMOV K1,ALRETURN3: RETISK3 ENDP;分钟调节下降ISK4 PROCMOV DX,202H ;判断K2按下,且放开IN AL,DXAND AL,04HCMP AL,04HJNZ UP4JMP RETURN4UP4: MOV DX,202HIN AL,DXAND AL,04HCMP AL,04HJZ DOWN4JMP UP4DOWN4:CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动MOV AL,K2CMP AL,00HJA JIAN4JMP BIAN4JIAN4:SUB AL,01HDASMOV K2,ALRETBIAN4:MOV AL,59HMOV K2,ALRETURN4: RETISK4 ENDP;秒调节下降ISK6 PROCMOV DX,202H ;判断K2按下,且放开IN AL,DXAND AL,10HCMP AL,10HJNZ UP6JMP RETURN6UP6: MOV DX,202HIN AL,DXAND AL,10HCMP AL,10HJZ DOWN6JMP UP6DOWN6:CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动MOV AL,K4CMP AL,00HJA JIAN6JMP BIAN6JIAN6:SUB AL,01HDASMOV K4,ALRETBIAN6:MOV AL,59HMOV K4,ALRETURN6: RETISK6 ENDP;以按下为准,对时分秒进行初始化的操作ISK7 PROCMOV DX,202H ;判断K5按下,且放开IN AL,DXAND AL,20HCMP AL,20HJNZ UP7JMP RETURN7UP7:MOV DX,202HIN AL,DXAND AL,20HCMP AL,20HJZ DOWN7JMP UP7DOWN7:CALL DELAY ;加入延时子程序,消除在一定时间内的按钮波动MOV AL,00HMOV H,ALMOV K1,ALMOV M,ALMOV K2,ALMOV S,ALMOV K4,ALRETURN7:RETISK7 ENDPSHOW PROC ;8255显示时间子程序LOP2:CALL splitLEA DI,RESMOV CX,6MOV AL,K ;AL=DFH 1101 1111 控制Y1~Y5 循环点亮MOV X1,ALLOP:MOV DX,201HMOV AL,0FFHOUT DX,ALMOV DX,200H ;A口输出段码MOV AL,[DI]OUT DX,ALINC DIMOV AL,X1口输出;B MOV DX,201HOUT DX,ALROR X1,1 循环右一位;LOOP LOP RETENDP SHOW;修改时间的子程序SET PROCMOV AL,HMOV K1,ALMOV AL,MMOV K2,ALMOV AL,SMOV K4,ALDU5:CALL SHOWMOV DX,201HMOV AL,7FHOUT DX,ALCALL ISK0MOV AL,K0CMP AL,0JA ZHIZONGJMP JIE1ZHIZONG:CMP AL,1JA ZHI1JMP ZHIZHI1:CALL ISK3CALL ISK4CALL ISK6CALL ISK7MOV AL,K1MOV H,ALMOV AL,K2MOV M,ALMOV AL,K4MOV S,ALCALL SHOWMOV DX,201HMOV AL,7FHOUT DX,AL;CALL ISK7JMP DU5ZHI:CALL ISK2CALL ISK1CALL ISK5CALL ISK7MOV AL,K1MOV H,ALMOV AL,K2MOV M,ALMOV AL,K4MOV S,ALCALL SHOWMOV DX,201HMOV AL,7FHOUT DX,AL;CALL ISK7JMP DU5JIE1:RETSET ENDP;时间开始走动的子程序BEGIN PROCDU:CALL SHOWMOV DX,201HMOV AL,0FFHOUT DX,ALCALL ISK7CALL ISK0MOV AL,K0CMP AL,0JZ XIANJMP JIE;没有按k0XIAN:MOV DX,202HIN AL,DXAND AL,08HCMP AL,00HJZ DUADD S,01HMOV AL,SDAAMOV S,ALCMP S,60HJNZ DU1MOV S,00HADD M,01HMOV AL,MDAAMOV M,ALCMP M,60HJNZ DU1MOV M,00HADD H,01HMOV AL,HDAAMOV H,ALCMP H,24HJNZ DU1JMP LOP1 ;时等于24时DU1:CALL SHOWMOV DX,201HMOV AL,0FFHOUT DX,ALMOV DX,202HIN AL,DXAND AL,08HCMP AL,00HJNZ DU1JMP DULOP1:MOV H,00HJMP DUJIE:RETBEGIN ENDPCLOCK PROCRETCLOCK ENDPBUF DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;不加点的数DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH ;加点的数RES DB 6 DUP(?) ;定义时分秒的存储单元,用于显示;存放时钟的时分秒,H DB 00H ;时M DB 00H ;分S DB 00H ;秒K DB 0DFH ;循环移位的控制X1 DB 00HK0 DB 0 ;暂停开关,标志位K1 DB 0 ;调整时的开关,标志位K2 DB 0 ;调整分钟的开关,标志位K4 DB 0 ;调整秒的开关,标志位CODE ENDSEND START系统功能及操作说明七、功能:实现24小时制的时钟的显示,暂停和调整操作说明:当接通电源,编译运行后,会从默认时间00:00:00开始,以秒为单位计时。
数字时钟的汇编程序(1).
电子钟(程序设计)CONTROL EQU 0C003H ;8253控制口COUNT0 EQU 0C000HCOUNT1 EQU 0C001HCOUNT2 EQU 0C002HMD8255 EQU 82H ;8255控制字PA8255 EQU 8000HCTL8255 EQU 8003HOUTBIT EQU 08002H ;位控制口OUTSEG EQU 08004H ;段控制口ICW1 EQU 00010011B ;8259,上升沿中断,要写ICW4 ICW2 EQU 00100000B ;中断号为20HICW4 EQU 00000001B ;工作在8086/88方式OCW1 EQU 11111110B ;只响应INT0中断CS8259A EQU 0D000H ;8259地址CS8259B EQU 0D001HDATA SEGMENTCNT DB 0LEDBUF DB 6 DUP(?) ;显示缓冲NUM DB 1 DUP(?) ;显示的数据DELAYT DB 1 DUP(?)HOUR DB 0MINUTE DB 0SECOND DB 0LEDMAP: ;八段管显示码DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATADELAY PROC NEAR ;延时子程序PUSH AXPUSH CXMOV AL,0MOV CX,AXLOOP $POP CXPOP AXRETDELAY ENDPDISPLAYLED PROC NEARMOV BX,OFFSET LEDBUFMOV CL,6 ;共6个八段管MOV AH,00100000B ;从左边开始显示DLOOP:MOV DX, OUTBITMOV AL, 0OUT DX, AL ;关所有八段管MOV AL, [BX]MOV DX, OUTSEGOUT DX, ALMOV DX, OUTBITMOV AL, AHOUT DX, AL ;显示一位八段管PUSH AXMOV AH,1CALL DELAYPOP AXSHR AH,1INC BXDEC CLJNZ DLOOPMOV DX,OUTBITMOV AL,0OUT DX,AL ;关所有八段管RETDISPLAYLED ENDPIENTER PROC NEARPUSH AXPUSH DXINC SECOND ;秒加1MOV AL,SECONDCMP AL,60 ;秒数与60比较JNE EXITMOV SECOND,0 ;秒清零INC MINUTE ;分加1MOV AL,MINUTECMP AL,60 ;分数与60比较JNE EXITMOV MINUTE,0 ;分清零INC HOUR ;时加1MOV AL,HOURCMP AL,24 ;时数与24比较JNE EXITMOV HOUR,0 ;时清零EXIT:MOV DX,CS8259AMOV AL,20HOUT DX,AL ;结束本次中断POP DXPOP AXIRETIENTER ENDPIINIT PROC ;初始化8259的命令字和操作命令字 MOV DX,CS8259AMOV AL,ICW1OUT DX,ALMOV DX,CS8259BMOV AL,ICW2OUT DX,ALMOV AL,ICW4OUT DX,ALMOV AL,OCW1OUT DX,ALRETIINIT ENDPSTART:MOV AX,DATAMOV DS,AXMOV HOUR,0 ;时、分、秒清零MOV MINUTE,0MOV SECOND,0CLI ;清除中断标志位MOV AX,0MOV DS,AXMOV AL,76H ;8253控制字MOV DX,CONTROLOUT DX,ALMOV AX,62500 ;利用8253计数器1分频MOV DX,COUNT1OUT DX,ALMOV AL,AHOUT DX,ALMOV AL,MD8255MOV DX,CTL8255OUT DX,ALMOV BX,4*ICW2 ;中断号MOV AX,CODESHL AX,4 ;*16ADD AX,OFFSET IENTER ;中断入口地址(段地址为0)MOV AX,0INC BXINC BXMOV [BX],AX ;代码段地址为0CALL IINITMOV AX,DATAMOV DS,AXMOV CNT,0 ;计数值初始为0MOV AL,CNTMOV DX,PA8255OUT DX,ALSTI ;开中断LP: MOV AL,HOURMOV AH,0MOV CL,10DIV CLMOV CH,AHMOV AH,0MOV BX,OFFSET LEDMAPADD BX,AXMOV AL,[BX] ;时的十位转换成显示码MOV LEDBUF,AL ;显示码存入显示缓冲区MOV BX,OFFSET LEDMAPMOV AL,CHMOV AH,0ADD BX,AXMOV AL,[BX] ;时的个位转换成显示码OR AL,80HMOV LEDBUF+1,AL ;显示码存入后一位显示缓冲区 MOV AL,MINUTEMOV AH,0MOV CL,10DIV CLMOV CH,AHMOV AH,0MOV BX,OFFSET LEDMAPADD BX,AXMOV AL,[BX] ;分的十位转换成显示码MOV LEDBUF+2,ALMOV BX,OFFSET LEDMAPMOV AL,CHADD BX,AXMOV AL,[BX] ;分的个位转换成显示码 OR AL,80HMOV LEDBUF+3,ALMOV AL,SECONDMOV AH,0MOV CL,10DIV CLMOV CH,AHMOV AH,0MOV BX,OFFSET LEDMAPADD BX,AXMOV AL,[BX] ;秒的十位转换成显示码 MOV LEDBUF+4,ALMOV BX,OFFSET LEDMAPMOV AL,CHMOV AH,0ADD BX,AXMOV AL,[BX] ;分的个位转换成显示码 OR AL,80HMOV LEDBUF+5,ALCALL DISPLAYLEDJMP LPCODE ENDSEND START。
数字钟汇编语言程序
MOV TH0,#3CH ;50MS定时初值
MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)
;; 1秒计时程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;T0中断服务程序
INTT0: PUSH ACC ;累加器入栈保护
PUSH PSW ;状态字入栈保护
MOV 73H,77H ;
MOV 74H,78H ;
MOV 75H,79H ;
INTT1OUT: POP PSW ;恢复现场
OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移
MOV 73H,77H ;入对应显示单元
MOV 74H,78H ;
MOV 20H,#00H ;清20H(标志用)
MOV 7AH,#0AH ;放入"熄灭符"数据
MOV TMOD,#11H ;设T0、T1为16位定时器
CPL 02H ;0.3秒定时到对闪烁标志取反
JB 02H,FLASH1 ;02H位为1时显示单元"熄灭"
MOV 72H,76H ;02H位为0时正常显示
CLR ET0 ;关T0中断允许
CLR TR0 ;关闭定时器T0
MOV A,#0B7H ;中断响应时间同步修正
ADD A,TL0 ;低8位初值修正
第一个: ORG 0000H ;程序执行开始地址
LJMP START ;跳到标号START执行
ORG 0003H ;外中断0中断程序入口
RETI ;外中断0中断返回
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
武汉工程大学计算机科学与工程学院综合设计报告设计名称:信息硬件综合设计设计题目:数字钟的设计与实现学生学号:1205110204专业班级:12信技02班学生姓名:陈振学生成绩:指导教师(职称):陈艳(讲师)完成时间:2014年5月6日至2014年6月6日武汉工程大学计算机科学与工程学院制说明:1、报告中的第一、二、三项由指导教师在综合设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。
2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。
3、指导教师评语一栏由指导教师就学生在整个设计期间的平时表现、设计完成情况、报告的质量及答辩情况,给出客观、全面的评价。
4、所有学生必须参加综合设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。
答辩小组成员应由2人及以上教师组成。
5、报告正文字数一般应不少于5000字,也可由指导教师根据本门综合设计的情况另行规定。
6、平时表现成绩低于6分的学生,其综合设计成绩按不及格处理。
7、此表格式为武汉工程大学计算机科学与工程学院提供的基本格式(适用于学院各类综合设计),各教研室可根据本门综合设计的特点及内容做适当的调整,并上报学院批准。
答辩记录表成绩评定表学生姓名:陈振学号:1205110204 班级:12信技02班指导教师评语目录摘要 (1)Abstract (2)第一章课题背景和设计要求 (3)1.1课题背景 (3)1.2设计要求和指标 (3)第二章开发工具和环境 (4)2.1 开发环境简介 (4)2.2 multisim软件工作界面简介 (4)第三章详细设计 (6)3.1 数字时钟的功能和器材需求 (6)3.2 数字时钟的详细设计 (6)第四章运行和测试 (16)4.1校准电路 (16)4.2 整点报时 (16)4.3定时 (17)总结 (19)致谢 (20)参考文献 (21)摘要数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
因此,设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解在制作中用到的各种中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时序电路.通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。
关键字:数字电路;时序电路;机械式AbstractDigital clock is a digital circuit technology, minutes and seconds, timing devices, and mechanical clock, compared with higher accuracy and intuitive, and no mechanical devices, with more longer life, so it has been widely used.From the principle of digital clock is a kind of typical digital circuits, including the assembly logic circuit and the sequential circuits.Therefore, the design and making of digital clock is to understand the principle, thus to make a digital clock. And through the digital clock make further understanding of used in the production of a variety of small and medium scale integrated circuit and practical method. And as the digital clock including combinational logic circuit and sequential circuit. Through its further study and master the various combinations of logic circuits and sequential circuits using the principle and method.Keywords: digital circuit; sequence circuit; mechanical第一章课题背景和设计要求1.1课题背景电子钟是人们日常生活中常用的计时工具,而数字式电子钟又有其体积小、重量轻、走时准确、结构简单、耗电量少等优点而在生活中被广泛应用,因此本次设计就用数字集成电路和一些简单的逻辑门电路来设计一个数字式电子钟,使其完成时间及星期的显示功能。
多功能数字钟采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。
具有时间显示、走时准确、显示直观、精度、稳定等优点。
电路装置十分小巧,安装使用也方便。
同时在日期中,它以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱。
1.2设计要求和指标1.2.1设计要求(1)由晶振电路产生1HZ标准秒信号。
(2)秒、分为00-59六十进制计数器。
(3)时为00-23二十四进制计数器。
(4)可手动校正:能分别进行秒、分、时的校正。
只要将开关置于手动位置。
可分别对秒、分、时进行连续脉冲输入调整。
(5)整点报时。
整点报时电路要求在每个整点时灯泡亮一分钟。
(6)定点报时。
当设定的时间到时,灯泡亮一下。
1.2.2元器件(1)74290,74LS47,数码显示器BS202各6片。
(2)74LS153 2片,74LS373 3片,555定时器 1片。
(3)电阻若干,电容,开关若干个,probe灯泡2个,导线若干。
第二章开发工具和环境2.1 开发环境简介NI Multisim软件结合了直观的捕捉和功能强大的仿真,能够快速、轻松、高效地对电路进行设计和验证。
凭借NI Multisim,您可以立即创建具有完整组件库的电路图,并利用工业标准SPICE模拟器模仿电路行为。
借助专业的高级SPICE分析,您能在设计流程中提早对电路设计进行的迅速验证,从而缩短建模循环。
与NI LabⅥEW和SignalExpress软件的集成,完善了具有强大技术的设计流程,从而能够比较具有模拟数据的实现建模测量。
2.2 multisim软件工作界面简介图2-1 multisim工作界面界面由多个区域构成:菜单栏,各种工具栏,电路输入窗口,状态条,列表框等。
通过对各部分的操作可以实现电路图的输入、编辑,并根据需要对电路进行相应的观测和分析。
用户可以通过菜单或工具栏改变主窗口的视图内容。
菜单栏位于界面的上方,通过菜单可以对Multisim的所有功能进行操作。
不难看出菜单中有一些与大多数Windows平台上的应用软件一致的功能选项,如File,Edit,View,Options,Help。
此外,还有一些EDA软件专用的选项,如Place,Simulation,Transfer以及Tool等。
2.2.1 multisim工具栏Multisim 2001提供了多种工具栏,并以层次化的模式加以管理,用户可以通过View菜单中的选项方便地将顶层的工具栏打开或关闭,再通过顶层工具栏中的按钮来管理和控制下层的工具栏。
通过工具栏,用户可以方便直接地使用软件的各项功能。
顶层的工具栏有:Standard工具栏、Design工具栏、Zoom工具栏,Simulation 工具栏。
⒈Standard工具栏包含了常见的文件操作和编辑操作,如下图所示:⒉Design工具栏作为设计工具栏是Multisim的核心工具栏,通过对该工作栏按钮的操作可以完成对电路从设计到分析的全部工作,其中的按钮可以直接开关下层的工具栏:Component中的Multisim Master工具栏,Instrument工具栏。
⑴作为元器件(Component)工具栏中的一项,可以在Design工具栏中通过按钮来开关Multisim Master工具栏。
该工具栏有14个按钮,每个每一个按钮都对应一类元器件,其分类方式和Multisim元器件数据库中的分类相对应,通过按钮上图标就可大致清楚该类元器件的类型。
具体的内容可以从Multisim的在线文档中获取。
这个工具栏作为元器件的顶层工具栏,每一个按钮又可以开关下层的工具栏,下层工具栏是对该类元器件更细致的分类工具栏。
以第一个按钮为例。
通过这个按钮可以开关电源和信号源类的Sources工具栏如下图所示:⑵Instruments工具栏集中了Multisim为用户提供的所有虚拟仪器仪表,用户可以通过按钮选择自己需要的仪器对电路进行观测。
⒊用户可以通过Zoom工具栏方便地调整所编辑电路的视图大小。
⒋Simulation工具栏可以控制电路仿真的开始、结束和暂停。
第三章详细设计3.1 数字时钟的功能和器材需求功能的需求如下:能够有计时的基本功能,从00:00:00到23:59:59的每一个时间(以秒为最小单位计时)都能表示出来,而且计时的时间间隔也要的实际的一秒相等除了时钟的基本功能外,还必须要有一些扩展的功能,例如需要定时的功能,整点报时的功能,这也是一些基本的电子钟的应该有的功能当电子钟的时间不正确的时候还要具有矫正时间的功能器材的需求如下:由于使用的计时的功能我选用的是74ls90 2/5计数器有时、分、秒需要两片一共需要6片,要显示时间就必须要有数码管7SEG-BCD 6个要想驱动这些数码管必须要译码芯片74ls47 6片;使用了定时的功能就需要将数据输入其中,并且要将数据保存起来,以便定时器响应,这就需要使用锁存器74ls373芯片2片(考需要没有必要将时间定时精确到秒只需要到分钟就可以了所以使用了2片);要想校正时钟肯定要将输入脉冲切换到手动的脉冲,这就需要数据选择器74ls153四选一的数据选择器。
除了以上的器件之外还有一些必备的与门和同或门。
3.2 数字时钟的详细设计3.2.1 计数器部分在计数的部分使用的是74290芯片,74290的功能表如下图2-1它的A引脚是脉冲输入端,然后引脚QA是输出端是一个二进制计数器,而B输入引脚则是一个5进制的计数器,它的输出是QB,QC,QD三个输出,要实现十进制只需要将QA输出接到B引脚的位置就可以实现十进制计数器。