




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业论文(设计)可预置电子时钟学 生 姓 名: 指导教师: 合作指导教师: 专业名称: 电气自动化技术 所在学院: 职业技术学院 2013 年 5 月大连海洋大学专科毕业论文(设计) 可预置电子时钟前 言EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计,然后由计算机自动地完成逻辑编译,化简,分割,综合,优化,布局,布线和仿真,提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。电子时钟的时间过程就是一个充分利用EDA软件的过程,利用VHDL语言对硬件进行描述,充分用软件的逻辑综合与仿真的功能完成对电子时钟的设计,然后将程序的入实验箱,实现电子时钟的各种功能。单片机即单片微机。是集CPU RAM ROM定时等多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于工业自动化上和智能产品上,时钟,自从它被发明的那天起,就成为了人类的好朋友,但随着时间的推移,科学技术的不断发展,时钟的应用愈来愈高,怎么让时钟更好的服务人民,于是我们利用单片机功能集成高,和设计做出了可预置电子时钟。- 21 -目 录一 课程设计的目的和意义1二 设计任务1三 设计思想1四 设计内容1五 硬件连线图2六 芯片介绍3 1. 8255的初始化字3 2. 8255的初始化字3七 设计方案4 1.系统框图4 2.主程序模块4 3.小键盘模块4 4.显示模块4 5.定时模块5 6.流程图5八 源程序7九 设计总结19 参考文献21一、课程设计目的和意义通过本次课程设计要掌握两种芯片使用的方法,灵活运用课本知识,加深所学的知识,对所学的相关芯片的原理、内部结构、使用方法等有更加深刻的了解,学会利用课本知识联系实际应用及编程。同时并了解综合问题的程序设计掌握实时处理程序的编制和调制方法,掌握一般的设计步骤和流程,使我们以后做设计时逻辑更加清晰。二、设计任务1.电子时钟,具有十分、分、十秒和秒的计时功能,并可以在数码管上显示。2.电子时钟具有启动键、停止键、复位键,而且可以随时通过键盘进行各位时间的设置。三、设计思想本系统设计的电子时钟以8088微处理器作为CPU,用8254做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路。在此系统中,8254的功能是定时计数,接入8254的CLK信号为周期性时钟信号。8254采用计数器0,工作于方式3,使8254的OUT0端输出周期性的负脉冲信号;8254还采用计数器0,工作于方式2,产生18432分频信号。8255的功能是扫描键盘并使LED灯显示,工作于方式0,使A口B口输出,C口低四位输入。 四、设计内容本程序的主要设计内容是用主程序完成键盘按键的扫描,实现计时结果的数码管显示,实现秒与分之间的转换。通过判断键盘按键调用相应功能程序段以实现相应功能,即实现了启动、暂停、复位功能,以及通过键盘进行十分、分、十秒、秒时间的手动设置功能。 每百分之一秒对百分之一秒寄存器的内容加1,当加到100时,秒显示位加1,这样依次对个位秒、十位秒、个位分、十位分寄存器的内容加1,四个数码管动态显示分、秒的当前值。五、硬件连线图ABCDE 键 盘F 及 数G 码 管DP 显 示 单 元X1X2X3X4Y1Y2Y3Y4D7 PB0D6 PB1D5 PB2D4 PB3D3 PB4D2 PB5D1 PB6D0 8255 PB7 单 元A1 PA0A0 PA1 PA2WR PA3RDCS PC0 PC1PC2PC3 XD7 XD6 XD5 XD4 XD3 XD2 XD1 XD0系 XA3 XA2 XIOW XIOR IOY0 IOY1 INTR CLK统 D7D6D5D4D3D2 8254D1 单 元D0A1A2WRRDCSOUT0CLK0 总 线5-1图六、芯片介绍1.8254的初始化字 6-1图 本设计中的8254的初始化为: MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H ;计数器0,方式3 OUT DX,AL MOV DX,MY8254_COUNT0 ;装入计数初值 MOV AL,00H ;18432分频 OUT DX,AL MOV AL,54H OUT DX,AL2.8255的初始化字6-2图本设计中的8255的初始化为: MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,81H ;方式0,A口、B口输出,C口低4位输入 OUT DX,AL七、设计方案1、系统框图如下:键盘读入的数显示缓冲的值秒脉冲显示模块主控模块计时模块定时模块小键盘模块四个LED小键盘8255A82548254 系统框图2、主程序模块主控模块是核心模块,对8254、8255A进行初始化,设置中断向量,扫描键盘根据按键值作相应的处理,主要由软件实现。它的主要功能是调用其它模块对系统工作进行协调,它的主要功能是读小键盘输入键值并执行要做的工作,如果键值为0,则启动动态显示;如果键值为1,则暂停显示;如果键值为2,则将显示初始值0000置入显示缓冲,并调用显示模块显示。3、小键盘模块小键盘模块送入主控模块的子功能模块。由软件和硬件实现,硬件上由小键盘和8255互连,将小键值由8255送入主控模块。软件上使用行扫描法获得键值并送回主控模块。4、显示模块显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由四个字节构成,分别保存分钟的高位和低位,秒钟的高位和低位。硬件上由四个LED构成,软件上由扫描显示的方法实现。5、定时模块定时模块由一片8254实现,选用定时器0,工作在方式3,产生10ms负脉冲,这样10*100=1000ms,即1s,以此计时。6、流程图(1)主程序流程图开 始程 序 初 始 化判断小键盘是否有键按下 N Y若按键值为7,则要转至时间设置处理程序若按键值为1,则要转至STOPKEYTAG处理程序若按键值为2,则要转至CLEARKEYTAG处理程序若按键值为0,则要转至STARTISRUNING处理程序 PC机上面是不是有键按下调 用 子 程 序 N Y返回DOS结 束 7-1图(2)电子时钟处理流程图开 始SEC秒加1SEC秒是否到10? N YSEC秒清零,TENSEC十秒加1TENSEC十秒是否到6? N YTENSEC十秒清零,MINT个位分加1MINT个位分是否到10? N YMINT个位分清零,TENMINT十位分加1TENMINT十位分到6? N YTENMINT十位秒分清零调用LED动态显示程序结 束 7-2图八、源程序;*根据CHECK配置信息修改下列符号值*IOY0 EQU 0A000H ;片选IOY0对应的端口始地址IOY1 EQU 0A040H;*MY8255_A EQU IOY0+00H*4 ;8255的A口地址MY8255_B EQU IOY0+01H*4 ;8255的B口地址MY8255_C EQU IOY0+02H*4 ;8255的C口地址MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址MY8254_COUNT0 EQU IOY1+00H*4 ;8254计数器0端口地址MY8254_COUNT1 EQU IOY1+01H*4 ;8254计数器1端口地址MY8254_COUNT2 EQU IOY1+02H*4 ;8254计数器2端口地址MY8254_MODE EQU IOY1+03H*4 ;8254控制寄存器端口地址STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENTDTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;键值表,0F对应的7段数码管的段位值STATUS DB 0 ;8254OUT端口状态键ISRUNING DB 0WSEC DB 0WMSEC DB 0TENMINT DB 0MINT DB 0TENSEC DB 0SEC DB 0DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV SI,3000H ;建立缓冲区,存放要显示的键值 MOV AL,00H ;先初始化键值为0 MOV SI,AL MOV SI+1,AL MOV SI+2,AL MOV SI+3,AL MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H ;计数器0,方式3 OUT DX,AL MOV DX,MY8254_COUNT0 ;装入计数初值 MOV AL,00H ;18432分频 OUT DX,AL MOV AL,54H OUT DX,AL MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,81H ;方式0,A口、B口输出,C口低4位输入 OUT DX,ALBEGIN: CALL DIS ;显示刷新 CALL CLEAR ;清屏 CALL CCSCAN ;扫描按键 JZ NOKEYDOWN ;有键按下则跳置GETKEY1 JMP GETKEY1 NOKEYDOWN: MOV AH,1 ;判断PC键盘是否有按键按下 INT 16H JZ KEYSCANEND ;无按键则跳回继续循环,有则退出 JMP QUIT KEYSCANEND: CMP ISRUNING,1 JNE BEGINTIMESTART: MOV AL,11100010B ;设置回读命令 MOV DX,MY8254_MODE OUT DX,AL MOV DX,MY8254_COUNT0 ;读0端口状态控制字 IN AL,DX CMP STATUS,1 JNE NOTSTATUS TEST AL,80H JZ CHANGEWMSEC JMP BEGINNOTSTATUS: TEST AL,80H JNZ CHANGEWMSEC JMP BEGINCHANGEWMSEC: TEST AL,80H JZ CHANGESTATUS MOV STATUS,1 JMP HASCHANGECHANGESTATUS: MOV STATUS,0HASCHANGE: INC WMSEC CMP WMSEC,0AH ;百分秒到10,十分秒加1 JNE CHANGESEC MOV WMSEC,0 INC WSECCMP WSEC,0AH ;十分秒秒到10,个位秒加1JNE CHANGESECMOV WSEC,0INC SECCMP SEC,0AH ;个位秒秒到10,十位秒加1JNE CHANGESECMOV SEC,0INC TENSECCMP TENSEC,06H ;十位秒到6,清零JNE CHANGESECMOV TENSEC,0INC MINTCMP MINT,0AH ;分钟个位到10,十位加1JNZ CHANGESECMOV MINT,0INC TENMINTCMP TENMINT,06H ;十位分到6,清零JNE CHANGESECMOV TENMINT,0CHANGESEC:MOV SI,3000H;存储时间MOV AL,TENMINT;十位分MOV SI,ALINC SIMOV AL,MINT;个位分MOV SI,ALINC SIMOV AL,TENSEC;十位秒MOV SI,ALINC SIMOV AL,SEC;个位秒MOV SI,ALINC SIJMP BEGINQUIT: MOV AX,4C00H ;返回到DOS INT 21HGETKEY1:CALL DIS ;显示刷新 CALL DALLY CALL DALLY CALL CCSCAN ;再次扫描按键JNZ GETKEY2 ;有键按下则跳置GETKEY2JMP BEGIN ;否则跳回开始继续循环GETKEY2:MOV CH,0FEHMOV CL,00H ;设置当前检测的是第几列COLUM: MOV AL,CH ;选取一列,将X1X4中一个置0 MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C ;读Y1Y4,用于判断是哪一行按键闭合 IN AL,DXL1:TEST AL,01H ;是否为第1行 JNZ L2 ;不是则继续判断 MOV AL,00H ;设置第1行第1列的对应的键值 JMP KCODEL2:TEST AL,02H ;是否为第2行 JNZ L3 ;不是则继续判断 MOV AL,04H ;设置第2行第1列的对应的键值 JMP KCODEL3:TEST AL,04H ;是否为第3行 JNZ L4 ;不是则继续判断 MOV AL,08H ;设置第3行第1列的对应的键值 JMP KCODEL4:TEST AL,08H ;是否为第4行 JNZ NEXT ;不是则继续判断 MOV AL,0CH ;设置第4行第1列的对应的键值KCODE: ADD AL,CL ;将第1列的值加上当前列数,确定按键值CALL WHICHKEY ;保存按键值PUSH AXKON:CALL DIS ;显示刷新CALL CLEAR ;清屏CALL CCSCAN ;扫描按键,判断按键是否弹起JNZ KON ;未弹起则继续循环等待弹起POP AXNEXT: INC CL ;当前检测的列数递增 MOV AL,CHTEST AL,08H ;检测是否扫描到第4列JZ KERR ;是则跳回到开始处 ROL AL,1 ;没检测到第4列则准备检测下一列MOV CH,ALJMP COLUMKERR: JMP BEGINCCSCAN PROC NEAR ;扫描是否有按键闭合子程序 MOV AL,00H MOV DX,MY8255_A ;将4列全选通,X1X4置0OUT DX,AL MOV DX,MY8255_C IN AL,DX ;读Y1Y4NOT AL AND AL,0FH ;取出Y1Y4的反值RETCCSCAN ENDPCLEAR PROC NEAR ;清除数码管显示子程序 MOV DX,MY8255_B ;段位置0即可清除数码管显示 MOV AL,00H OUT DX,ALRETCLEAR ENDPDIS PROC NEAR ;显示键值子程序 PUSH AX ;以缓冲区存放的键值为键值表偏移找到键值并显示 MOV SI,3003H MOV DL,0F7H MOV AL,DLAGAIN: PUSH DX MOV DX,MY8255_A OUT DX,AL ;设置X1X4,选通一个数码管 MOV AL,SI ;取出缓冲区中存放键值 MOV BX,OFFSET DTABLEAND AX,00FFHADD BX,AX MOV AL,BX ;将键值作为偏移和键值基地址相加得到相应的键值 MOV DX,MY8255_B OUT DX,AL ;写入数码管ADPCALL DALLYDEC SI ;取下一个键值 POP DX MOV AL,DLTEST AL,01H ;判断是否显示完? JZ OUT1 ;显示完,返回ROR AL,1 MOV DL,ALJMP AGAIN ;未显示完,跳回继续OUT1: POP AX RETDIS ENDPWHICHKEY PROC NEAR ;保存键值子程序CMP AL,00HJNZ J1 CALL STARTKEY JMP KERR J1:CMP AL,01HJNZ J2CALL STOPKEYJMP KERRJ2:CMP AL,02HJNZ J3CALL CLEARKEYJMP KERRJ3:CMP AL,04HJNZ J4CALL ADD_TMJMP KERRJ4:CMP AL,05HJNZ J5CALL ADD_MJMP KERRJ5:CMP AL,06HJNZ J6CALL ADD_TSJMP KERRJ6:CMP AL,07HJNZ BACKCALL ADD_SBACK :RETWHICHKEY ENDPSTARTKEY PROCMOV ISRUNING,1JMP TIMESTARTRETSTARTKEY ENDPSTOPKEY PROCMOV ISRUNING,0JMP TIMESTARTSTOPKEY ENDPCLEARKEY PROCPUSH AXMOV TENMINT,0MOV MINT,0MOV TENSEC,0MOV SEC,0 MOV SI,3000HMOV AL,00HMOV SI,ALMOV SI+1,ALMOV SI+2,ALMOV SI+3,AL POP AXRETCLEARKEY ENDPADD_TM PROCPUSH AXCMP TENMINT,6JNZ Z1MOV TENMINT,0Z1:MOV SI,3000HMOV AL,TENMINTMOV SI,ALINC TENMINTPOP AXRETADD_TM ENDPADD_M PROCPUSH AXCMP MINT,0AHJNZ Z2MOV MINT,0Z2:MOV SI,3000HMOV AL,MINTMOV SI+1,ALINC MINTPOP AXRETADD_M ENDPADD_TS PROCPUSH AXCMP TENSEC,6JNZ Z3MOV TENSEC,0Z3:MOV SI,3000H MOV AL,TENSEC MOV SI+2,AL INC TENSECPOP AXRET ADD_TS ENDP ADD_S PROCPUSH AXCMP SEC,0AHJNZ Z4MOV SEC,0Z4:MOV SI,3000HMOV AL,SECMOV SI+3,ALINC SECPOP AXRETADD_S ENDPDALLY PROC NEAR ;软件延时子程序 PUSH CX MOV CX,00FFHD1: MOV AX,00FFHD2: DEC AXJNZ D2LOOP D1POP CXRETDALLY ENDPCODE ENDS END START;设置十位分钟加子程序SETTMADD PROC NEARADD TENMINT,1MOV AL,TENMINTMOV SI,0MOV TIMETABLESI,ALRETSETTMADD ENDP;设置个位分钟加子程序SETMADD PROC NEARADD MINT,1MOV AL,MINTMOV SI,1MOV TIMETABLESI,ALRETSETMADD ENDP;设置十位秒加子程序SETTSADD PROC NEARADD TENSEC,1MOV AL,TENSECMOV SI,2MOV TIMETABLESI,ALRETSETTSADD ENDP;设置个位秒加子程序SETSADD PROC NEARADD SEC,1MOV AL,SECMOV SI,3MOV TIMETABLESI,ALRETSETSADD ENDP;设置十位分钟减子程序SETTMSUB PROC NEARSUB TENMINT,1MOV AL,TENMINTMOV SI,0MOV TIMETABLESI,ALRETSETTMSUB ENDP;设置个位分钟减子程序SETMSUB PROC NEARSUB MINT,1MOV AL,MINTMOV SI,1MOV TIMETABLESI,ALRETSETMSUB ENDP;设置十位秒减子程序SETTSSUB PROC NEARSUB TENSEC,1MOV AL,TENSECMOV SI,2MOV TIMETABLESI,ALRETSETTSSUB ENDP;设置个位秒减子程序SETSSUB PROC NEARSUB SEC,1MOV AL,SECMOV SI,3MOV TIMETABLESI,ALRETSETSSUB ENDP;电子表复位子程序CLEARCLOCK PROC NEARMOV TENMINT, 0MOV MINT, 0MOV TENSEC, 0MOV SEC, 0MOV SI,0MOV TIMETABLESI,0INC SIMOV TIMETABLESI,0INC SIMOV TIMETABLESI,0INC SIMOV TIMETABLESI,0RETCLEARCLOCK ENDPCODE ENDSEND START九、设计总结在课程设计过程中,我深刻地体会到:微机原理与接口技术这门课程对于我们的要求不仅限于对书本知识的理解,更重要的是对书本知识的运用。这次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 口腔技术士考试题及答案
- 工商银行2025玉林市数据分析师笔试题及答案
- 农业银行2025通辽市秋招结构化面试经典题及参考答案
- 交通银行2025鄂尔多斯市秋招笔试价值观测评题专练及答案
- 2025年3D打印技术的工业革命
- 农业银行2025半结构化面试15问及话术广西地区
- 2025基因编辑技术的疾病治疗突破
- 建设银行2025台州市结构化面试15问及话术
- 工商银行2025遂宁市秋招无领导小组面试案例题库
- 2025软件工程新发展方向
- 《法律职业伦理》课件-第二讲 法官职业伦理
- 大学生劳动教育概论知到智慧树章节测试课后答案2024年秋南昌大学
- 2025苏教版小学数学二年级上册教学计划
- 盆底肌筋膜筛查及手法治疗
- 景观设计客户需求洞察
- 第五讲铸牢中华民族共同体意识-2024年形势与政策
- 车用驱动电机原理与控制基础(第2版)课件:三相交流绕组及其磁场
- 加油站安全费用提取、使用台账
- 高考政治一轮复习:统编版必修1《中国特色社会主义》必背考点提纲填空练习版(含答案)
- 译林版小学英语二年级上册全册课件
- 2024年卷烟封装设备操作工职业鉴定考试题库(浓缩500题)
评论
0/150
提交评论