单片机倒计时秒表111
单片机60分钟倒计时秒表

60分钟倒计时秒表功能:1.带有启动键Start,暂停键Pause,停止键Stop,复位键Reset;2.4位数码管显示分(两位)秒(两位);3.按启动键启动从60分开始倒计时,按暂停键暂停,显示保持原来计时时间,再次按启动键继续计时,按停止键停止计时,复位键复位,到零停止计时.4.按停止键后,可按中间的4个键,分别对应分的十位(2键),个位(4键),和秒的十位(5键),个位(9键),按动一下,相应的位增1,并保证时间的正确值,再按一次停止键,保存设置值,按其它键则放弃设置时间值,恢复原来的时间.电路图:计时器工作模式:编码(54H单元) 当前工作模式00H Reset01H Start02H Pause03H Stop主程序流程:主程序代码段:ORG 0000HLJMP MAINORG 000BHLJMP TIMER0ORG 1000HMAIN: ACALL INIT ;初始化定时器SETB EA ;开总中断SETB ET0 ;开定时器0中断MOV A, #03H ;设置8155的工作模式, PA, PB输出, PC输入.MOV DPTR, #7F00HMOVX @DPTR, ABEGIN: ACALL DISACALL CLEARACALL CCSCANJNZ INK1AJMP BEGININK1: ACALL DISACALL CLEARACALL CCSCANJNZ INK2AJMP BEGININK2: MOV R2, #7FH ;从最左边列开始扫描MOV R4, #00HCOLUM: MOV DPTR, #7F02HMOV A, R2MOVX @DPTR, AINC DPTRMOVX A, @DPTRJB ACC.2, LONEMOV A, #00HAJMP KCODELONE: JB ACC.1, NEXTMOV A, #04HKCODE: ADD A, R4ACALL PUTBUFKON: ACALL DISACALL CLEARACALL CCSCANJNZ KONNEXT: INC R4MOV A, R2JNB ACC.4, KERRRR AMOV R2, AAJMP COLUMKERR: AJMP BEGINCCSCAN: MOV DPTR, #7F02HMOV A, #00HMOVX @DPTR, AINC DPTRMOVX A, @DPTRCPL AANL A, #03HRETCLEAR: MOV DPTR, #7F01HMOV A, #00HMOVX @DPTR, ARETINIT: MOV 53H, #06H ;分十位MOV 52H, #00H ;分个位MOV 51H, #00H ;秒十位MOV 50H, #00H ;秒个位MOV 54H, #00H ;存放当前工作模式, 00:Reset, 01 Start, 02 Pause, 03 StopMOV 55H, #0AH ;定时计数用, 定时器每次中断0.1s, 计数10次, 定时1sCLR TR0MOV TMOD, 01H ;定时器工作在方式1, 16位定时器MOV TH0, #3CHMOV TL0, #0B0HRETDIS: PUSH ACCPUSH 00HPUSH 03HMOV A, #03HMOV DPTR, #7F00HMOVX @DPTR, AMOV R0, #50HMOV R3, #0EFHMOV A, 54HCJNE A, #03H, DIS0MOV R0, #60HDIS0: MOV A, R3AGAIN: MOV DPTR, #7F02HMOVX @DPTR, AMOV A, @R0MOV DTPR, DAT ASMOVC A, @A+DPTRMOV DPTR, #7F01HMOVX @DPTR, AACALL DL1MSINC R0MOV A, R3JNB ACC.0, OUTRL AMOV R3, AAJMP AGAINOUT: POP 03HPOP 00HPOP ACCRETDAT AS: DB 03FH, 06H, 05BH, 04FH, 066H, 06DH, 07DH DB 07H, 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71HDL1MS: MOV R7, #01HDL0: MOV R6, #0FFHDL1: DJNZ R6, DL1DJNZ R7, DL0RETPUTBUF: MOV R1, AJNZ CHKSTAR TACALL RESETFUNCSJMP GOBACKCHKSTAR T: CJNE R1, #03H, CHKPAUSEACALL STAR TFUNCSJMP GOBACKCHKPAUSE: CJNE R1, #04H, CHKSTOPACALL PAUSEFUNCSJMP GOBACKCHKSTOP: CJNE R1, #07H, CHKOTHERACALL STOPFUNCSJMP GOBACKCHKOTHER: ACALL OTHERFUNCGOBACK: RETRESETFUNC: MOV R0, 54HCJNE R0, #00H, RESET0RETCJNE R0, #01H, RESET0RETRESET0: ACALL INITMOV 54H, #00HRETSTAR TFUNC: MOV R0, 54HCJNE R0, #01H, STAR T0RETSTAR T0: MOV 54H, #00HSETB TR0RETPAUSEFUNC: MOV R0, 54HCJNE R0, #01H, PAUSE0CLR TR0MOV 54H, #02HSJMP PAUSE1PAUSE0: CJNE R0, #02H, PAUSE1SETB TR0MOV 54H, #01HPAUSE1: RETSTOPFUNC: MOV R0, 54HCJNE R0, #03H, STOP0MOV 54H, #02HMOV R0, #50HMOV R1, #60HSTOP1: MOV A, @R1MOV @R0, AINC R0INC R1CJNE R0, #54H, STOP1RETSTOP0: CLR TR0MOV 54H, #03HMOV R0, #60HMOV R1, #50HSTOP2: MOV A, @R1MOV @R0, AINC R0INC R1CJNE R1, #54H, STOP2RETOTHERFUNC: MOV R0, 54HCJNE R0, #03H, OTHER0CJNE R1, #01H, OTHER1MOV R0, #63HINC @R0CJNE @R0, #06H, OTHER0MOV @R0, #00HSJMP OTHER0OTHER1: CJNE R1, #02H, OTHER2MOV R0, #62HINC @R0CJNE @R0, #0AH, OTHER0MOV @R0, #00HSJMP OTHER0OTHER2: CJNE R1, #05H, OTHER3MOV R0, #61HINC @R0CJNE @R0, #06H, OTHER0MOV @R0, #00HSJMP OTHER0OTHER3: CJNE R1, #06H, OTHER0MOV R0, #60HINC @R0CJNE @R0, #0AH, OTHER0MOV @R0, #00HSJMP OTHER0OTHER0: RET;使用定时器0, 工作模式1, 定时0.1s, 晶振频率为6MHz;定时器初值X = 65536 –50000 = 15536 = 3CB0HTIMER0: MOV TH0, #3CHMOV TL0, #0B0HDJNZ 55H, EXIT0 ;判断是否已定时中断10, 即1秒MOV 55H, #0AHMOV R0, #50HGOON0: DEC @R0CJNE @R0, #0FFH, EXIT0MOV @R0, #09HINC R0DEC @R0CJNE @R0, #0FFH, EXIT0MOV @R0, #05HINC R0DEC @R0CJNE @R0, #0FFH, EXIT0MOV @R0, #09HINC R0DEC @R0CJNE @R0, #0FFH, EXIT0 ; 倒计时结束, 停止计时, 显示全”0”ACALL INITMOV 53H, #00HMOV 54H, #03HEXIT0: RET。
单片机设计秒表

单片机设计秒表
单片机设计秒表是一种常见的嵌入式系统应用。
秒表是一种简单但非常实用的设备,用于计时各种活动的时间,比如运动比赛、实验室实验、厨房烹饪等。
在单片机设计秒表中,可以使用一块微控制器(MCU)作为核心芯片,例如常见的基于8051系列的单片机。
此外,还需要一块显示器模块用于显示计时结果,以及一些按钮用于控制计时功能。
设计秒表的关键是编程。
通过使用单片机的GPIO(通用输入输出)口,可以连接按钮和显示器。
在编程方面,需要使用计时器功能来实现精确的计时。
可以使用定时器中断来控制计时的开始、暂停和停止。
此外,还可以使用按键中断来实现按钮的功能,比如开始、暂停、复位等。
在拓展设计中,可以增加更多的功能。
例如,可以添加一个倒计时功能,允许用户设置特定的时间,并在达到所设置的时间时触发警报。
还可以添加计圈功能,允许用户记录每一圈的时间,并显示圈速、平均速度等信息。
此外,还可以将秒表设计为可连接到计算机或其他设备的外部接口,以便将计时结果传输到其他设备进行分析或存储。
在实际应用中,秒表可以广泛用于运动场馆、体育比赛、科学实验室等。
它的简单性和准确性使其成为各种计时需求的理想选择。
总之,单片机设计秒表是一项有趣且实用的嵌入式系统应用。
通过合理的硬件设计和编程实现,可以设计出功能丰富、易于操作的秒表,满足各种计时需求。
倒计时秒表 单片机

目录一、设计目的 (1)二、设计任务及要求 (2)三、总体方案设计 (2)四、硬件电路设计 (3)1、各部分电路设计 (3)2、整体电路图 (8)五、软件设计 (9)1、程序流程图 (9)2、源程序 (9)六、仿真效果 (9)1、显示部分仿真效果 (9)2、报警装置仿真效果 (10)七、实物调试 (11)八、设计总结 (11)1、设计过程中遇到的问题及解决方法 (11)2、设计体会 (12)3、对设计的建议 (12)参考文献 (13)附录 (14)一、设计目的单片机课程设计中通过查阅资料、接口设计、程序设计、安装调试等环节,完成AT89S-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,是同学们将课堂上学到的理论知识与实际应用结合起来,并能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,增进对单片机的感性认识,加深对单片机理论方面的理解,掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通信等,强化单片机应用电路的设计与分析能力,提高学生在单片机应用方面的实践技能和科学作风,培育学生综合运用理论知识解决问题的能力,实现理论结合实际,学以至用的原则。
运用所学的知识和自身课外的拓展学习加深对专业课的理解和学习,锻炼综合运用电路设计及相关电子仪器、单片机软硬件结合的理论,结合生产实际分析和解决工作工程实际问题的能力,加固、加深和扩展有关电子类,汇编语言,相关电子电路和仿真软件方面的知识和能力。
通过本次课程设计,应加强培养如下能力:(1)加强自身独立的动手能力和思考解决问题的能力,提高创造能力。
(2)学会使用软件Proteus画原理图和仿真调试。
(3)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课的应用进一步的了解。
(4)掌握定时器、外部中断的设置和编程原理。
单片机数码管秒表

《电子系统创新设计与实践》课程期末论文(2016——2017年度第一期)题目单片机数码管秒表专业软件工程班级15F学号7姓名李国二〇一六年十二月摘要近年来随着科学技术的发展,单片机的应用正在不断走下面还深入。
本文简单阐述了基于单片机的数字秒表的的设计。
本设计的主要特点是计时精度达到0.01秒,是各种竞赛的必要设备之一。
本设计的数字秒表采用AT89C51单片机为主要器件,利用其定时器的原理,结合显示电路、LED数码管以及外部外部中断电路来设计计时器。
将软硬件结合起来,使得系统能实现0~99.99秒的计时,计时精度位0.01秒。
实验目的:数字秒表具有显示直观、读取方便、精度高等优点,在计时中广泛应用。
本设计中用单片机和数码管组成数字秒表力求结构简单。
设计中包括硬件电路的设计和系统程序的设计。
硬件电路主要有主控制器、控制按钮与显示电路组成。
主控制器采用单片机AT89C51,显示电路采用四位共阴极数码管显示计时时间。
本设计利用AT89C51单片机的定时器,使其能精确计时。
利用中断系统使其实现启动和暂停的功能,P0口输出段码数据,P2.0~P2.2连上译码器作为位选,P3.2和P3.3接口的两个按钮分别实现启动和暂停功能。
设计的基本要求是正确性。
计时器采用T0中断实现,定时溢出中断周期为1ms,当溢出中断后向CPU发出溢出中断请求,每发出10次中断请求就对10ms位(即最后一位)加一,达到100次就对100ms位加一,以此类推,直到99.99s为止。
再看按键的处理。
两个按键采用中断的方法,设置外部中断0和外部中断1位脉冲边沿触发方式,这样一来每当按键按下时便会触发中断,从而实现启动和暂停。
设计计时器的流程:程序源代码如下:#include<reg52.h>Unsigned int datatable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //显示码值unsigned int i,j,k,l,count;void delay(unsigned int z) //延时程序{unsigned int x,y;for(x=z;x!=0;x--)for(y=110;y!=0;y--);}void main(){TMOD=0x01; //设置定时器为模式1 TH0=(65536-1000)/256; //给定时器赋定时初值TL0=(65536-1000)%256;EA=1; //开中断EX0=1;EX1=1;ET0=1;IT0=1; //设置外部中断位 IT1=1;while(1) // 数码显示{P2=0x03;P0=table[i];delay(1);P2=0x02;P0=table[j];delay(1);P2=0x01;P0=(table[k]+0x80);delay(1);P2=0x00;P0=table[l];delay(1);};}void ex0() interrupt 0 //外部中断0 {TR0=1; //开定时器,开始计数}void ex1() interrupt 2 //外部中断0{TR0=0; //停止计数}void timer0() interrupt 1 //定时器T0溢出中断{TH0=(65536-1000)/256; //重装计数初值TL0=(65536-1000)%256;count++; //溢出中断次数加一if(count==10){count=0;i++; //溢出10次,0.01s位加一if(i==10){i=0; //0.01s位到10了,清零,0.1s位加一j++;if(j==10){j=0; //0.1s位到10了,清零,1s位加一k++;if(k==10){k=0; //1s位到10了,清零,10s位加一l++;}}}}}系统总体电路如下图所示:AT89S52单片机为主电路的核心部分,各个电路均与单片机相连,由单片机统筹协调各个电路的运行工作。
单片机设计倒计时器

单片机设计倒计时器在我们的日常生活中,倒计时器有着广泛的应用,比如体育比赛、烹饪、考试等等。
通过单片机来设计倒计时器,不仅能够实现精准的计时功能,还能根据不同的需求进行灵活的定制和扩展。
接下来,让我们一起深入了解一下如何用单片机设计一个实用的倒计时器。
首先,我们需要明确倒计时器的基本功能和要求。
一般来说,倒计时器应该具备以下几个主要功能:1、设定倒计时的时间,时间范围可以根据实际需求进行调整,比如从几分钟到几小时。
2、能够清晰地显示剩余的时间。
3、具有启动、暂停和复位等操作按钮。
4、在倒计时结束时,能够发出提示信号,比如声音或者灯光提示。
为了实现这些功能,我们选择合适的单片机作为核心控制单元。
常见的单片机如 51 系列、STM32 系列等都可以满足需求。
以 51 单片机为例,它具有价格低廉、编程简单、资源丰富等优点。
在硬件设计方面,我们需要以下几个主要的组件:1、单片机最小系统:包括单片机芯片、晶振电路、复位电路等,为单片机的正常运行提供必要的条件。
2、显示模块:可以选择数码管或者液晶显示屏(LCD)来显示倒计时的时间。
数码管显示简单直观,适用于对显示效果要求不高的场合;LCD 显示屏则能够提供更丰富的信息显示,比如同时显示时间、日期等。
3、按键模块:用于输入操作指令,如设置时间、启动、暂停、复位等。
4、报警模块:可以使用蜂鸣器或者发光二极管(LED)在倒计时结束时发出提示信号。
下面我们来详细介绍一下各个模块的设计和实现。
单片机最小系统的设计是整个硬件系统的基础。
晶振电路为单片机提供时钟信号,保证其正常运行的时序。
复位电路则在系统出现异常时,能够将单片机恢复到初始状态。
对于显示模块,如果选择数码管,需要通过驱动芯片(如74HC595)来控制数码管的显示。
如果选择 LCD 显示屏,则需要根据显示屏的接口类型(如并行接口或串行接口)来进行相应的连接和编程。
按键模块可以采用独立按键或者矩阵按键的方式。
单片机倒计时

模拟电视播放中插播广告倒计时方莹目录摘要 (1)1绪论 (1)1.1功能需求 (1)1.2数据需求 (2)2硬件设计 (2)2.1电路设计 (2)2.2LCD液晶屏坐标图及外形尺寸图 (3)2.3功能模块设计 (4)3 系统工作原理 (6)3.1型液晶显示屏(奥可拉中文集成模块)工作原理 (6)3.2串行接口与串行传输介绍 (7)3.3字形显示模块 (8)4 线路连接 (9)5 软件设计 (9)5.1主程序 (9)5.2LCD显示模块设计 (10)6 调试分析 (10)7结论 (11)8结束语 (11)参考文献 (11)附录一 (12)附录二 (34)摘要液晶屏在现代人们日常生活中的使用已经非常广泛,例如飞机场里使用液晶屏来显示各个航班的情况,火车站和汽车站里用其来显示车次,商业街里使用液晶屏来显示各种各样的广告标语等。
本次课程设计要求使用液晶屏在第一页电视画面显示节目图片信息,随后插播10秒广告倒计时,使用到了OCMJ4X8C_3型LCD液晶屏,在这一次的课程设计中是将LCD液晶屏和单片机相结合使用,因此,还涉及到了51单片机的编程方式及实现方法。
本报告中包含了系统工作原理:OCMJ4X8C_3型液晶显示屏(奥可拉中文集成模块)工作原理、串行接口与串行传输资料、汉字图形显示步骤;硬件设计:电路设计、LCD液晶屏外形尺寸图及坐标图、功能模块设计;线路连接;软件设计:主程序、LCD显示模块设计等内容,并给出了硬软件的调试。
关键词:扫描;51单片机;字码库;1绪论LCD电子显示屏是近年来得到广泛应用的重要信息设备。
这种显示屏具有耗电省、成本低、清晰度高、寿命长、显示内容的信息量大,外形美观大方,操作使用方便灵活,用户可随时任意自行编辑修改显示内容,显示方式图文并茂等优点,因此被广泛应用于商场、学校、银行、邮局。
由于显示屏具有色彩鲜艳、亮度高、寿命长、工作稳定可靠等优点, 在许多行业都得到了广泛的应用, 如在车站、码头、商场、银行等公共场所将显示屏用于信息发布。
单片机课程设计秒倒计时

单片机课程设计秒倒计时概述在单片机课程设计中,秒倒计时是一个常见的实践项目。
本文将介绍如何使用单片机设计一个简单的秒倒计时电路,并使用Markdown文本格式进行说明。
硬件设备•单片机(例如STC89C52)•七段数码管•按钮•电阻、电容等基础元器件功能设计本文设计的秒倒计时电路具有以下功能: 1. 系统上电后,自动开始倒计时; 2. 使用按钮控制启动/暂停倒计时; 3. 使用按钮控制归零操作; 4. 显示倒计时的秒数。
硬件连接七段数码管将7个IO口分别连接到七段数码管的对应引脚,使用共阳极数码管时,将数码管的共阳极引脚连接到VCC,使用共阴极数码管时,将数码管的共阴极引脚连接到GND。
按钮使用一个按钮作为启动/暂停倒计时的按键,使用另一个按钮作为归零操作的按键。
将按钮引脚连接到单片机的GPIO口,并通过上拉电阻将按钮引脚连接到VCC。
软件设计引脚定义首先,需要定义单片机的输入输出引脚。
根据硬件连接,假设七段数码管的引脚分别连接到P0口,启动/暂停按钮连接到P1.0口,归零按钮连接到P1.1口。
可以使用以下代码进行引脚定义:// 引脚定义sbit LED = P0; // 七段数码管连接到P0口sbit KEY1 = P1^0; // 启动/暂停按钮连接到P1.0口sbit KEY2 = P1^1; // 归零按钮连接到P1.1口然后,需要设计倒计时的逻辑。
在每个时钟周期,需要判断是否需要启动/暂停倒计时,以及是否需要进行归零操作。
具体的倒计时逻辑可以使用以下代码实现:// 秒倒计时逻辑void countdown() {static unsigned int seconds = 60; // 倒计时的秒数,默认为60秒static bit running = 0; // 表示倒计时是否运行中,默认为停止状态if (running) {if (seconds > 0) {seconds--;} else {running = 0;}}if (KEY1 == 0) { // 按下启动/暂停按钮running = !running;delay(10); // 延时去抖动}if (KEY2 == 0) { // 按下归零按钮seconds = 60;running = 0;delay(10); // 延时去抖动}}最后,需要设计显示倒计时的逻辑。
单片机课程设计——电子秒表

安徽科技学院电气与电子工程学院设计说明书题目: 秒表姓名(学号) ************************************专业: 电气工程及其自动化班级: 133指导教师:***2016 年5 月9 日目录摘要 (1)关键字 (1)第一章硬件的选择与设计 (1)第二章软件设计 (9)第三章调试结果 (19)参考文献 (20)秒表摘要:本次课程设计,我们组设计的是秒表。
使用AT89C51单片机设计一个2位的LED数码显示作为“秒表”:显示时间为00—99秒,每秒自动加1,另设计一个“开始计时/时间锁定”键和一个“复位”键。
通过对键盘的扫描对时钟的走时/停止进行控制,项目采用定时器T0作为计时器,每10ms发生一次中断,每100次中断加1s。
在此期间,如“开始计时/时间锁定”按键按下,程序方将TR0置为1,从而开启中断,秒表开始计时,再按一次“开始计时/时间锁定”按键,则将TR0置0,秒表停止计时;如“复位”按键按下,程序将TR0置为0,同时将存储时间的变量清零,从而中断停止,并实现复位。
我们设计的秒表完成了准确计时,和当前时间的显示。
通过Keil uvison4进行程序软件的编译,通过proteus进行仿真,最后调试通过,完成此次课程设计。
关键字:秒表51单片机MAX7219 定时第一章硬件选择与设计1、芯片简介(1)8051单片机MCS-51是指美国Inter公司生产的一系列单片机的总称。
这一系列单片机包括8031、8051、8751、8032、8052、8752等。
其中8051是最早、最典型的产品,该系列其他单片机都是以8051为核心发展起来的,都具有8051的基本结构和软件特征。
8051单片机内部包含了作为微型计算机所必需的基本功能部件,各部件相互独立地集成在一块芯片上,其基本功能特性如下:a、8位CPU;b、32条双向可独立寻址的I/O线;c、4KB程序存储器(ROM),外部可扩充至64KB;d、12KB数据存储器(RAM),外部可扩充至64KB;e、两个16位定时/计数器;f、五个中断源;g、全双工的串行通信口;h、具有布尔运算能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机控制系统设计与调试实训指导说明书单片机倒计时秒表系、部:机电工程学院学生姓名:指导教师:职称专业:班级:完成时间:摘要本文通过倒计时秒表的设计,阐述了单片机最小系统的概念与设计,对单片机的定时、中断等功能模块的应用有进一步的理解;本文还阐述了单片机编程的一些方法。
关键字:单片机、电子秒表、定时、中断目录一、设计课题1.1课程设计题目 (4)1.2课程设计任务 (4)1.2课程涉及研究内容 (4)二、硬件分析设计 (4)2.1单片机的选择 (4)2.2 LED显示器 (5)2.2.1 LED显示器结构及分类 (5)2.2.2 LED显示原理 (5)2.3键盘输入 (6)三、关键技术 (6)3.1定时器的使用 (6)3.1.1 作用 (6)3.1.2技术方案 (6)3.1.3具体程序实现 (7)3.2 显示与键盘 (8)3.2.1显示 (8)3.2.2键盘 (9)3.2.3利用定时中断实现显示与查键 (11)四、电路 (13)4.1复位电路 (14)4.2电路元件 (14)4.3 I/O口线连接 (15)五、程序设计 (16)5.1程序功能 (16)5.2主要变量说明 (16)5.3程序流程图 (16)5.4程序源代码 (16)六、设计总结 (26)七、参考文献 (26)一、设计课题1.1课程设计题目本课程设计的课题是单片机倒计时秒表的设计1.2课程设计任务本课题的电子秒表系统需要实现以下的功能:1.用开关控制两种计时模式的选择。
分别是单计时模式和连续计8个的计时模式。
2.用开关控制电子秒表的启动/停止/复位,七段数码管的高2位显示秒表的秒值,低2位显示秒表的百分秒值。
3.可实现设定初值的倒计时功能。
其中设计了三种初值调整方式,分别是增1(减1)、连续增(连续减)和快速增(快速减)。
上述功能主要是为了讲述单片机定时器、键盘和LED显示器的使用方法。
1.3课题涉及研究内容:1.定时器的使用:本实例通过秒表的计时详细说明了定时器的使用方法,可以使读者对单片机定时器的使用有比较深刻的理解。
2.键盘的使用:本实例通过秒表的启动/停止/复位、计时模式的选择,以及倒计时初值的设定,讲述了独立式键盘的设计方法和关键技术。
3.LED的使用:本实例比较详细地介绍了LED的显示原理和方法,并对其编程方法做了一般性的总结。
二、硬件分析设计一个完整的电子秒表电路就是一个单片机的最小系统,该系统由键盘输入电路、单片机、晶振和复位电路和LED显示电路四个方面构成。
下面从单片机的选型,LED显示器的选择以及按键功能的设计这几个方面来对该系统进行进一步的分析。
2.1 单片机的选择对于本实例,由于电子秒表系统在数据处理和存储方面要求不高,所以选取片内带RAM和ROM的单片机即可,而并不需要在片外扩展RAM和ROM。
在本实例中,选取的是ATMEL公司的AT89S52单片机。
AT89S52单片机是ATMEL公司新近推出的高档型AT89S系列单片机中的增强型产品。
AT89S52具有以下标准功能:8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8 位微控制器 8K 字节在系统可编程 Flash AT89S52。
2.2 LED显示器2.2.1 LED显示器的结构及分类。
发光二极管芯片的适当连接的光学结构,可构成发光显示器的发光段和发光点,由这些发光段或发光点可以组成数码管、符号管、米字管、矩阵管等。
通常把数码管、符号管、米字管共称为笔画显示器;而把笔画显示器和矩阵管统称为字符显示器。
数码管可以按字高、颜色、结构、各发光段的连接方式等进行分类。
按照各发光段的连接方式,数码管可分为共阳极和共阴极两种。
所谓的共阳方式就是笔画显示器各段发光管的阳极是公共的,而阴极是互相隔离的。
所谓的共阴方式就是笔画显示器各段发光管的阴极是公共的,而阳极是互相隔离的。
2.2.2 LED显示的原理。
如图2-1所示为七段LED数码管的原理图,通过该图可以很容易看出共阳极和共阴极的七段LED的工作原理的不同点。
对于共阴极的数码管,所有发光二极管的阴极共连后接地,而阳极引出脚用于控制LED 是否点亮。
若阳极引出脚接地,则LED被熄灭;若阳极引出脚接高电平,则LED 被点亮。
图2-1 LED数码管原理图共阳极的LED正好相反,所有发光二极管的阳极共连后接高电平,而阳极引出脚用于控制LED是否点亮。
若阴极引出脚接高电平,则LED被熄灭;若阴极引出脚接地,则LED被点亮。
因此共阳极和共阴极所需要的字型码正好相反。
单片机对LED管的显示可以分为静态和动态两种。
静态显示的特点是各LED 管能同时稳定地显示出各自字符;动态显示是指各LED轮流一遍一遍显示各自字符,但由于显示的切换较快,在人的视觉看来是各LED管同时显示不同字符。
静态显示和动态显示各有利弊:静态显示较稳定,占用CPU的时间少,但是每个显示单元都需要单独的显示驱动电路,使用的电路硬件较多;动态显示虽然有闪烁感,战胜CPU时间多,但是使用的硬件少,能节省线路板的空间。
相对而言,动态显示在单片机中的应用更加广泛。
2.3键盘输入外部指令对单片机的输入一般是通过按键、键盘等输入器来实现的,而键盘的设计以及编程方法在本例中将会重点介绍。
在本例中,是利用键盘来实现秒表的启停控制及功能的选择:1.按键K1。
按键K1有两个功能,第一个是在单计时状态下控制秒表的启停;第二个是在倒计时初值设定的时候用于增加初值。
2.按键K2。
按键K2同样有两个功能,第一个是在连续计8个的计时模式下控制秒表的启停;第二个是在倒计时初值设定的时候用于减少初值。
3.按键K3。
按键K3的功能是设定秒表的工作方式。
在默认状态下,秒表始终处于准备计时的状态,按下K3后秒表进入倒计时的状态,这时通过按键K1和K2可以进行倒计时初值的调整,再按下K3则进入倒计时。
4.按键RESET.起程序复位作用。
三、关键技术单片机电子秒表设计需要解决三个主要问题:一是有关单片机定时器的使用;二是如何实现LED的动态扫描显示;三是编写倒计时秒表程序。
编程可用汇编,也可使用C语言。
3.1 定时器的使用3.1.1 作用电子秒表的计数频率取决于单片机的定时器,而定时器的使用也是单片机应用中的一个关键的技术。
在本例中,秒表的计时和倒计时的实现以及键盘的延时消抖都是由单片机中的定时器来实现的。
3.1.2 技术方案单片机中定时器的使用是一项重要的内容,也是一项基本的内容。
关于定时器/计数器的基本结构与操作方式,在此不再赘述。
此次设计重点主要是想通过电子秒表这一实例来说明单片机中定时器的使用。
为了实现秒表的计时,需要利用单片机实现百分之一秒(10ms)的中断,在中断程序中实现数字的变化,并动态显示出来。
该程序的流程图如图3-1图3-1 流程图3.1.3具体程序实现1.定义//定义共阳极字符编码表uchar codeTABLE[10]={0xa0,0xf9,0xc4,0xd0,0x99,0x92,0x82,0xf8,0x80,0x98};uint m; //计数值uint LED0,LED1,LED2,LED3;//各位的数值uchar ms; //用于表示数码管显示位及计算是否10ms到设定定时器T0的工作方式TMOD=0x01; //T0方式1计时1msTL0=0x18;TH0=0xfc;EA=1; //开中断,启动定时器ET0=1;TR0=1;2.动态显示字符的子程序void display(void){switch(ms%4){case 0;P3=0xfe; //点亮百分一秒位的LED数码管P1=table[LED3]; //输出百分一秒位数值P1_7=1;break;case 1;P3=0xfd;P1=table[LED2]; //点亮十分之一秒位的LED数码管P1_7=1; //输出十分之一秒位数值break;case 2;P3=0xfb; //点亮秒位的LED数码管P1=table[LED1]; //输出秒位数值P1_7=0; //点亮小数点位break;case 3;P3=0xf7; //点亮十秒位的LED数码管P1=table[LED0]; //输出十秒位数值P1_7=1;break;default:return;}}3.计算各位显示字符的子程序void add1(time)uint time;{uint n,a;a =time/1000;LED0=a; //计算十秒位数值n=time%1000;LED1=(n/100); //计算秒位数值n=n%100;LED2=(n/10); //计算十分一秒位数值LED3=n%10; //计算百分一秒位数值}3.2 显示与键盘3.2.1 显示显示与键盘是单片机应用中的两个非常重要的方面。
对于本例,显示采用的是动态扫描的方法。
动态扫描的方法其实很简单,就是轮流点亮各数码管,同时把各数码管所需要的字符送到对应的I/O口;而中间需要有一定的延时,原因是单片机每一条指令执行的时间很短,如果切换得太快的话,发光二极管都来不及反应,在编程上可以加上一个延时子程序来解决。
具体的程序如下:uchar delay;for(;;){display(); //调用显示子程序for(delay=0;delay<=200;delay++); //延时程序ms++; //点亮下一个数码管}这是一个很简单的动态显示程序,完全按照动态显示的规则来编写的,一般单片机的显示都采用类似的编程方法。
但是这个程序有一个很大的问题,就是延时程序的出现。
延时程序实际上就是使单片机不断地时行递减或递加计数,而在这一段时间内单片机是不能做其他任何事情的。
这显然不符合我们实际应用的要求,因为在实际的应用中单片机除了显示外还有很多其他的事情是要处理的。
实际应用时这个显示程序要进行改写,改写方法和程序将在后面提到。
3.2.2 键盘单片机系统中为了实现对系统的控制和数据的输入,应用系统设置了键盘等输入设备,包括单片机复位作用的复位键,功能转换键及数字输入键等。
在这些按键里面,除了复位键是专门的复位电路和复位功能外,其他的按键都是以开关状态来实现功能的。
关于单片机的复位电路及复位键会在后面的复位电路分析中提到,这里只是对其他的按键的工作原理作讲解。
1)键盘的工作原理键盘的最根本的功能就是当该按键按下后,单片机应用系统能够完成该按键所设定的功能。