十单片机应用系统设计_第1页
十单片机应用系统设计_第2页
十单片机应用系统设计_第3页
十单片机应用系统设计_第4页
十单片机应用系统设计_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

可编辑Kkkjjh课程名称:单片机原理与接口技术第十章 单片机应用系统设计1可编辑一、设计要求设计并制作出具有如下功能的电脑钟:

(1)自动计时,由6位LED显示器显示时、分、秒。

(2)具备校准功能,可以直接由0~9数字键设置当前时间。

(3)具备定时起闹功能。

(4)一天时差不超过1秒钟。第十章 单片机应用系统设计2可编辑二、总体方案1.计时方案方案一:采用实时时钟芯片。方案二:软件控制。2.键盘/显示方案方案一:串口扩展,LED静态显示。方案二:8155扩展,LED动态显示。显示方式框图

(a)静态显示框图;(b)动态显示框图

3可编辑三、硬件设计

1.电路原理图4可编辑2.系统工作流程本电脑钟具备以下功能:

(1)时钟显示:6位LED从左到右依次显示时、分、秒,采用24小时计时。

(2)键盘功能:采用4×3键盘,包括:0~9数字键,键号为00H~09HC/R键时间设定/启动计时键,键号为0AHALM键闹钟设置/启闹/停闹键,键号为0BH(1)时间显示:上电后,系统自动进入时钟显示,从00:00:00开始计时,此时可以设定当前时间。(2)时间调整:按下C/R键,系统停止计时,进入时间设定状态,系统保持原有显示,等待键入当前时间。按下0~9数字键可以顺序设置时、分、秒,并在相应LED管上显示设置值,直至6位设置完毕。系统将自动由设定后的时间开始计时显示。

(3)闹钟设置/启闹/停闹:按下ALM键,系统继续计时,显示00:00:00,进入闹钟设置状态,等待键入启闹时间。按下0~9数字键可以顺序进行相应的时间设置,并在相应LED管上显示设置值,直至6位设置完毕。这将启动定时启闹功能,并恢复时间显示。定时时间到,蜂鸣器鸣叫,直至重新按下ALM键停闹,并取消闹钟设置。5可编辑四、软件设计1.系统资源分配地址功能名称初始化值30H~35H显示缓冲区,小时、分、秒(高位在前)DISP0~DISP500H3CH~3FH计时缓冲区,时、分、秒、100msHOUR,MIN,SEC,MSEC00H40H~42H闹钟值寄存区,时、分、秒AHOUR,AMIN,ASECFFH50H~7FH堆栈区

PSW.5计时显示允许位(1:禁止,0:允许)F00PSW.1闹钟标志位(1:正在闹响,0:未闹响)F10电子钟控制软件片内RAM及标志位分配表62.软件流程

主程序流程图BeijingInstituteofPetro-chemicalTechnology7计时程序流程图BeijingInstituteofPetro-chemicalTechnology8时间设置/闹钟定时流程图

BeijingInstituteofPetro-chemicalTechnology9键盘设置子程序流程图BeijingInstituteofPetro-chemicalTechnology10键盘扫描流程图(4)键盘扫描程序模块KEYSCAN:流程图如图9.7所示。BeijingInstituteofPetro-chemicalTechnology11显示流程图

BeijingInstituteofPetro-chemicalTechnology12定时比较流程图BeijingInstituteofPetro-chemicalTechnology13可编辑ORG 0000HAJMP MAINORG 000BHAJMP CLOCKORG 0030HPORT EQU 8000HPORTAEQU 8001HPORTBEQU 8002H;*****************主程序MAIN******************14可编辑PORTC EQU 8003HDISP0 EQU 30HDISP1 EQU 31HDISP2 EQU 32HDISP3 EQU 33HDISP4 EQU 34HDISP5 EQU 35HHOUR EQU 3CH15MIN EQU 3DHSEC EQU3EHMSEC EQU3FHAHOUR EQU 40HAMIN EQU41HASEC EQU42HF1BITPSW.1MAIN:MOVSP,#50H ;设置堆栈区

MOVXDPTR,#PORT MOV A,#03HBeijingInstituteofPetro-chemicalTechnology16MOVX@DPTR,A ;8155初始化

CLR F1 ;清零闹钟标志位

CLR F0 ;允许计时显示

MOV AHOUR,#0FFHMOV AMIN,#0FFHMOV ASEC,#0FFHMOV R7,#10HMOV R0,#DISP0 CLR ABeijingInstituteofPetro-chemicalTechnology17LOOP:MOV @R0,AINC R0 DJNZR7,LOOP ;设置初值

MOVTMOD,#01H MOVTL0,#0B0H MOV TH0,#3CH ;定时器0初始化,定时时间100ms SETB TR0 ;启动定时器

SETB EA SETBET0 ;开中断

BeijingInstituteofPetro-chemicalTechnology18BEGIN:ACALLALARM ;调用定时比较

ACALLKEYSCAN ;调用键盘扫描

CJNEA,#0AH,NEXT1;是CLR/RST键否?

CLRTR0 ;是则暂时停止计时

MOVR1,#HOUR ;地址指针指向计时缓冲区首地址

AJMP MODBeijingInstituteofPetro-chemicalTechnology19NEXT1:CJNEA,#0BH,BEGIN;是ALARM键否?

JB F1,NEXT2 ;闹钟正在闹响否?

MOV R1,#AHOUR;地址指针指向闹钟值寄存区首地址

MOD:SETB F0 ;置位时间设置/闹钟定时标志,禁止显示计时时间

ACALL MODIFY;调用时间设置/闹钟定时程序

SETB TR0 ;重新开始计时

CLR F0 ;清零时间设置/闹钟定时标志,恢复显示计时时间BeijingInstituteofPetro-chemicalTechnology20AJMP BEGIN NEXT2:SETB P1.0 ;闹钟正在闹响,停闹

CLR F1 ;清零闹钟标志

AJMP BEGIN;**************时间设置/闹钟定时模块MODIFY************MODIFY:ACALL KEYIN ;调用键盘设置子程序

ACALLCOMB ;调用合字子程序

RET键盘设置子程序KEYIN:KEYIN: PUSH PSW PUSH ACCBeijingInstituteofPetro-chemicalTechnology21SETB RS1 ;保护现场

MOV R0,#DISP0 ;R0指向显示缓冲区首地址

MOV R7,#06H ;设置键盘输入次数L1:CLR RS1ACALL KEYSCAN ;调用键盘扫描程序取按下键的键号

SETB RS1CJNE A,#0AH,L2;键入数合法性检测(是否大于9)BeijingInstituteofPetro-chemicalTechnology22L2: JNC L1 ;大于9,重新键入

MOV @R0,A ;键号送显示缓冲区

INC R0 DJNZ R7,L1 ;6位时间输入完否?未完继续,否则返回

POP ACC POP PSW CLR RS1 ;恢复现场

RETBeijingInstituteofPetro-chemicalTechnology23

;**********键盘扫描子程序KEYSCAN***********KEYSCAN:ACALL TEST ;调判按键是否按下子程序TESTJNZREMOV;有键按下调消抖延时

ACALL DISPLAY ACALL ALARM AJMPKEYSCAN;无键按下继续判是否按键

REMOV:ACALL DISPLAY;调用显示子程序延时消抖

ACALL TEST ;再判是否有键按下BeijingInstituteofPetro-chemicalTechnology242023/12/725JNZ LIST ;有键按下转逐列扫描

ACALL DISPLAYACALL ALARMAJMP KEYSCAN ;无键按下继续判是否按键

LIST: MOV R2,#0FEH ;首列扫描字送R2 MOV R3,#00H ;首列键号送R3LINE0:MOV DPTR,#PORTA;DPTR指针指向8155的A口BeijingInstituteofPetro-chemicalTechnology26MOVA,R2 ;首列扫描字送R2 MOVX @DPTR,A ;首列扫描字送8155的A口

MOVDPTR,#PORTC;DPTR指针指向8155的C口

MOVX A,@DPTR ;读入C口的行状态

JB ACC.0,LINE1 ;第0行键无键按下转第1行

MOV A,#00H;第0行有键按下,行首键号送A AJMP TRYK ;求键号BeijingInstituteofPetro-chemicalTechnology27NEXT:INC R3 ;扫描下一列

MOV A,R2 ;列扫描字送A JNB ACC.3,EXIT;4列扫描完,重新进行下一轮扫描

RL A ;4列未扫描完,扫描字左移扫描下一列

MOV R2,A ;扫描字送A AJMPLINE0 ;转向扫描下一列BeijingInstituteofPetro-chemicalTechnology28EXIT:AJMPKEYSCAN ;等待下一次按键TRYK:ADD A,R3 ;按公式计算键码,求得键号

PUSHACC ;键号入栈保护LETK: ACALLTEST ;等待按键释放

JNZ LETK ;按键未释放,继续等待

POP ACC ;按键释放,键号出栈

RET ;键盘扫描结束,返回BeijingInstituteofPetro-chemicalTechnology29TEST: MOV DPTR,#PORTA;DPTR指针指向8155的A口

MOV A,#00H MOVX@DPTR,A;全扫描字00H送8155的A口

MOV DPTR,#PORTC;DPTR指针指向8155的C口

MOVXA,@DPTR ;读入C口行状态

CPL A ;A取反,以高电平表示有键按下

ANL A,#07H ;屏蔽高5位

RET BeijingInstituteofPetro-chemicalTechnology30;**************显示子程序DISPLAY*************DISPLAY: JBF0,DISP;允许时间显示标志F0=1转DISP ACALLSEPA;否则调用SEPA刷新显示缓冲区

DISP:push psw ;动态扫描显示子程序

Push acc setb rs0 MOV dptr,#PORTABeijingInstituteofPetro-chemicalTechnology31 MOV A,#0FFH MOVX @DPTR,A ;关显示

mov r0,#disp0 mov r7,#00hmov r6,#06h mov r5,#0fehdis1: mov dptr,#tab mov a,@r0 movc a,@a+dptr mov dptr,#portbBeijingInstituteofPetro-chemicalTechnology32 movx @dptr,a mov dptr,#porta mov a,r5 movx @dptr,ahere: djnz r7,here inc r0 mov a,r5 rl aBeijingInstituteofPetro-chemicalTechnology33 mov r5,a djnz r6,dis1 clr rs0 pop acc pop psw rettab: db3fh,06h,5bh,4fh,66h,6dh,7dh,07h db7fh,6fh,77h,7ch,39h,5eh,79h,71h ;共阴极字型码表BeijingInstituteofPetro-chemicalTechnology34;*****************合字子程序COMB******************COMB:MOVR0,#DISP1;R0指向显示缓冲区小时低位

ACALLCOMB1 ;合字

CJNEA,#24H,CHK ;小时大于24否?CHK:JNC EXIT1 ;大于24则取消本次设置,退出

MOV @R1,A ;否则小时送计时缓冲区

/闹钟值寄存区小时单元

INC R1BeijingInstituteofPetro-chemicalTechnology35MOV R0,#DISP3 ;R0指向显示缓冲区分低位

ACALL COMB1CJNE A,#60H,CHK1CHK1:JNC EXIT1 MOV@R1,A INC R1 MOVR0,#DISP5 ;R0指向显示缓冲区秒低位

ACALLCOMB1 CJNE A,#60H,CHK2BeijingInstituteofPetro-chemicalTechnology36CHK2: JNC EXIT1MOV @R1,A RETEXIT1:AJMP MAIN ;输入不合法退出,重新清零计时COMB1:MOVA,@R0 ANLA,#0FH ;取出低位

MOV 43H,A ;暂存于43H单元

DEC R0 ;指向高位BeijingInstituteofPetro-chemicalTechnology37MOV A,@R0 ANL A,#0FH SWAP A ;高位送高4位

ORL A,43H ;高低位合并

RET;***************拆字子程序SEPA***************SEPA:PUSHPSW PUSHACC SETB RS0 BeijingInstituteofPetro-chemicalTechnology38MOV R0,#DISP5 ;指向显示缓冲区秒低位

MOV A,SEC ACALL SEPA1MOV A,MINACALL SEPA1MOV A,HOURACALL SEPA1POP ACCPOP PSWBeijingInstituteofPetro-chemicalTechnology39 RETSEPA1:MOV44H,A ;暂存44H ANLA,#0FH ;取出低位

MOV@R0,A ;送显示缓冲区低位

DEC R0 ;指向显示缓冲区高位

MOVA,44H ANL A,#0F0H ;取出高位

SWAP A ;高位送往低4位形成高位数据BeijingInstituteofPetro-chemicalTechnology40MOV @R0,A ;高位数据送显示缓冲区高位

RET;**************定时比较模块ALARM****************ALARM: MOV A,ASEC CJNE A,SEC,BACK ;秒单元相同则继续比较,否则返回

MOV A,AMIN CJNE A,MIN,BACK ;分单元相同则继续比较,否则返回

MOV A,AHOUR

BeijingInstituteofPetro-chemicalTechnology41CJNEA,HOUR,BACK;小时单元相同定时时间到

CLR P1.0 ;启动闹钟鸣叫

SETB F1 ;置位闹钟标志BACK:RET;***************定时器0中断服务子程序CLOCK***************CLOCK:MOVTL0,#

温馨提示

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

评论

0/150

提交评论