单片机产品设计.ppt_第1页
单片机产品设计.ppt_第2页
单片机产品设计.ppt_第3页
单片机产品设计.ppt_第4页
单片机产品设计.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

设计要求总体方案硬件设计软件设计系统调试与运行,第10章单片机的应用系统设计与开发,本章内容,SingleChipMicrocomputer,一、设计要求设计并制作出具有如下功能的电脑钟:(1)自动计时,由6位LED显示器显示时、分、秒。(2)具备校准功能,可以直接由09数字键设置当前时间。(3)具备定时起闹功能。(4)一天时差不超过1秒钟。,二、总体方案1.计时方案方案一:采用实时时钟芯片。方案二:软件控制。2.键盘/显示方案方案一:串口扩展,LED静态显示。方案二:8155扩展,LED动态显示。,显示方式框图(a)静态显示框图;(b)动态显示框图,三、硬件设计,1.电路原理图,2.系统工作流程,本电脑钟具备以下功能:(1)时钟显示:6位LED从左到右依次显示时、分、秒,采用24小时计时。(2)键盘功能:采用43键盘,包括:09数字键,键号为00H09HC/R键时间设定/启动计时键,键号为0AHALM键闹钟设置/启闹/停闹键,键号为0BH(1)时间显示:上电后,系统自动进入时钟显示,从00:00:00开始计时,此时可以设定当前时间。(2)时间调整:按下C/R键,系统停止计时,进入时间设定状态,系统保持原有显示,等待键入当前时间。按下09数字键可以顺序设置时、分、秒,并在相应LED管上显示设置值,直至6位设置完毕。系统将自动由设定后的时间开始计时显示。(3)闹钟设置/启闹/停闹:按下ALM键,系统继续计时,显示00:00:00,进入闹钟设置状态,等待键入启闹时间。按下09数字键可以顺序进行相应的时间设置,并在相应LED管上显示设置值,直至6位设置完毕。这将启动定时启闹功能,并恢复时间显示。定时时间到,蜂鸣器鸣叫,直至重新按下ALM键停闹,并取消闹钟设置。,四、软件设计,1.系统资源分配,电子钟控制软件片内RAM及标志位分配表,2.软件流程,图9.3主程序流程图,图9.4计时程序流程图,图9.5时间设置/闹钟定时流程图,图9.6键盘设置子程序流程图,图9.7键盘扫描流程图,(4)键盘扫描程序模块KEYSCAN:流程图如图9.7所示。,图9.8显示流程图,图9.9定时比较流程图,ORG0000HAJMPMAINORG000BHAJMPCLOCKORG0030HPORTEQU8000HPORTAEQU8001HPORTBEQU8002H,;*主程序MAIN*,PORTCEQU8003HDISP0EQU30HDISP1EQU31HDISP2EQU32HDISP3EQU33HDISP4EQU34HDISP5EQU35HHOUREQU3CH,MINEQU3DHSECEQU3EHMSECEQU3FHAHOUREQU40HAMINEQU41HASECEQU42HF1BITPSW.1MAIN:MOVSP,#50H;设置堆栈区MOVXDPTR,#PORTMOVA,#03H,MOVXDPTR,A;8155初始化CLRF1;清零闹钟标志位CLRF0;允许计时显示MOVAHOUR,#0FFHMOVAMIN,#0FFHMOVASEC,#0FFHMOVR7,#10HMOVR0,#DISP0CLRA,LOOP:MOVR0,AINCR0DJNZR7,LOOP;设置初值MOVTMOD,#01HMOVTL0,#0B0HMOVTH0,#3CH;定时器0初始化,定时时间100msSETBTR0;启动定时器SETBEASETBET0;开中断,BEGIN:ACALLALARM;调用定时比较ACALLKEYSCAN;调用键盘扫描CJNEA,#0AH,NEXT1;是CLR/RST键否?CLRTR0;是则暂时停止计时MOVR1,#HOUR;地址指针指向计时缓冲区首地址AJMPMOD,NEXT1:CJNEA,#0BH,BEGIN;是ALARM键否?JBF1,NEXT2;闹钟正在闹响否?MOVR1,#AHOUR;地址指针指向闹钟值寄存区首地址MOD:SETBF0;置位时间设置/闹钟定时标志,禁止显示计时时间ACALLMODIFY;调用时间设置/闹钟定时程序SETBTR0;重新开始计时CLRF0;清零时间设置/闹钟定时标志,恢复显示计时时间,AJMPBEGINNEXT2:SETBP1.0;闹钟正在闹响,停闹CLRF1;清零闹钟标志AJMPBEGIN;*时间设置/闹钟定时模块MODIFY*MODIFY:ACALLKEYIN;调用键盘设置子程序ACALLCOMB;调用合字子程序RET键盘设置子程序KEYIN:KEYIN:PUSHPSWPUSHACC,SETBRS1;保护现场MOVR0,#DISP0;R0指向显示缓冲区首地址MOVR7,#06H;设置键盘输入次数L1:CLRRS1ACALLKEYSCAN;调用键盘扫描程序取按下键的键号SETBRS1CJNEA,#0AH,L2;键入数合法性检测(是否大于9),L2:JNCL1;大于9,重新键入MOVR0,A;键号送显示缓冲区INCR0DJNZR7,L1;6位时间输入完否?未完继续,否则返回POPACCPOPPSWCLRRS1;恢复现场RET,;*键盘扫描子程序KEYSCAN*KEYSCAN:ACALLTEST;调判按键是否按下子程序TESTJNZREMOV;有键按下调消抖延时ACALLDISPLAYACALLALARMAJMPKEYSCAN;无键按下继续判是否按键REMOV:ACALLDISPLAY;调用显示子程序延时消抖ACALLTEST;再判是否有键按下,JNZLIST;有键按下转逐列扫描ACALLDISPLAYACALLALARMAJMPKEYSCAN;无键按下继续判是否按键LIST:MOVR2,#0FEH;首列扫描字送R2MOVR3,#00H;首列键号送R3LINE0:MOVDPTR,#PORTA;DPTR指针指向8155的A口,MOVA,R2;首列扫描字送R2MOVXDPTR,A;首列扫描字送8155的A口MOVDPTR,#PORTC;DPTR指针指向8155的C口MOVXA,DPTR;读入C口的行状态JBACC.0,LINE1;第0行键无键按下转第1行MOVA,#00H;第0行有键按下,行首键号送AAJMPTRYK;求键号,NEXT:INCR3;扫描下一列MOVA,R2;列扫描字送AJNBACC.3,EXIT;4列扫描完,重新进行下一轮扫描RLA;4列未扫描完,扫描字左移扫描下一列MOVR2,A;扫描字送AAJMPLINE0;转向扫描下一列,EXIT:AJMPKEYSCAN;等待下一次按键TRYK:ADDA,R3;按公式计算键码,求得键号PUSHACC;键号入栈保护LETK:ACALLTEST;等待按键释放JNZLETK;按键未释放,继续等待POPACC;按键释放,键号出栈RET;键盘扫描结束,返回,TEST:MOVDPTR,#PORTA;DPTR指针指向8155的A口MOVA,#00HMOVXDPTR,A;全扫描字00H送8155的A口MOVDPTR,#PORTC;DPTR指针指向8155的C口MOVXA,DPTR;读入C口行状态CPLA;A取反,以高电平表示有键按下ANLA,#07H;屏蔽高5位RET,;*显示子程序DISPLAY*DISPLAY:JBF0,DISP;允许时间显示标志F0=1转DISPACALLSEPA;否则调用SEPA刷新显示缓冲区DISP:pushpsw;动态扫描显示子程序Pushaccsetbrs0MOVdptr,#PORTA,MOVA,#0FFHMOVXDPTR,A;关显示movr0,#disp0movr7,#00hmovr6,#06hmovr5,#0fehdis1:movdptr,#tabmova,r0movca,a+dptrmovdptr,#portb,movxdptr,amovdptr,#portamova,r5movxdptr,ahere:djnzr7,hereincr0mova,r5rla,movr5,adjnzr6,dis1clrrs0popaccpoppswrettab:db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71h;共阴极字型码表,;*合字子程序COMB*COMB:MOVR0,#DISP1;R0指向显示缓冲区小时低位ACALLCOMB1;合字CJNEA,#24H,CHK;小时大于24否?CHK:JNCEXIT1;大于24则取消本次设置,退出MOVR1,A;否则小时送计时缓冲区/闹钟值寄存区小时单元INCR1,MOVR0,#DISP3;R0指向显示缓冲区分低位ACALLCOMB1CJNEA,#60H,CHK1CHK1:JNCEXIT1MOVR1,AINCR1MOVR0,#DISP5;R0指向显示缓冲区秒低位ACALLCOMB1CJNEA,#60H,CHK2,CHK2:JNCEXIT1MOVR1,ARETEXIT1:AJMPMAIN;输入不合法退出,重新清零计时COMB1:MOVA,R0ANLA,#0FH;取出低位MOV43H,A;暂存于43H单元DECR0;指向高位,MOVA,R0ANLA,#0FHSWAPA;高位送高4位ORLA,43H;高低位合并RET;*拆字子程序SEPA*SEPA:PUSHPSWPUSHACCSETBRS0,MOVR0,#DISP5;指向显示缓冲区秒低位MOVA,SECACALLSEPA1MOVA,MINACALLSEPA1MOVA,HOURACALLSEPA1POPACCPOPPSW,RETSEPA1:MOV44H,A;暂存44HANLA,#0FH;取出低位MOVR0,A;送显示缓冲区低位DECR0;指向显示缓冲区高位MOVA,44HANLA,#0F0H;取出高位SWAPA;高位送往低4位形成高位数据,MOVR0,A;高位数据送显示缓冲区高位RET;*定时比较模块ALARM*ALARM:MOVA,ASECCJNEA,SEC,BACK;秒单元相同则继续比较,否则返回MOVA,AMINCJNEA,MIN,BACK;分单元相同则继续比较,否则返回MOVA,AHOUR,CJNEA,HOUR,BACK;小时单元相同定时时间到CLRP1.0;启动闹钟鸣叫SETBF1;置位闹钟标志BACK:RET;*定时器0中断服务子程序CLOCK*CLOCK:MOVTL0,#0B7HMOVTH0,#3CH;重装初值,时间校正,PUSHPSWPUSHACC;保护现场INCMSECMOVA,MSECCJNEA,#0AH,DONEMOVMSEC,#00HMOVA,SECINCA,DAA;二十进制转换MOVSEC,ACJNEA,#60H,DONEMOVSEC,#00HMOVA,MININCADAAMOVMIN,A,CJNEA,#60H,DONEMOVMIN,#00HMOVA,HOURINCADAAMOVHOUR,ACJNEA,#24H,DONEMOVHOUR,#00H,DONE:POPACCPOPPSW;恢复现场RETI,四、系统调试与脱机运行,1.

温馨提示

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

评论

0/150

提交评论