隔一秒加一数码管
认识单片机的定时器计数器
void main(void) { TMOD=0x01;
TH0=-25000/256; TL0=-25000%256; TR0=1; ET0=1; EA=1; while(1); } void timer0(void) interrupt 1 { TH0=-25000/256;
TL0=-25000%256; P10=~P10; }
根据定时时间T,及公式(1)、(2)分别可以求出初 值N为:
方式1: N=216-T×fosc/12
(3)
方式2、方式3 :N=28-T×fosc/12 (4)
如果fosc=12MHZ,以上公式可简化为
方式1: N=216-T
方式2、方式3 :N=28-T
例如:系统的时钟频率是12MHz,在方式1下,如果希望定时 器/计数器T0的定时时间T为10ms,则初值N =216-T=6553610000=55536
任务一、认识单片机的定时器/计数器
一、定时器/计数器及其应用 在单片机应用系统中,定时或计数是必不可少的。例如: 测量一个脉冲信号的频率、周期,或者统计一段时间里 电机转动了多少圈等。常用的定时方法有:
1、软件定时 软件定时是依靠执行一段程序来实现的,这段程序本身 没有具体的意义,通过选择恰当的指令及循环次数实现 所需的定时,由于执行每条指令都需一定的时间,执行 这段程序所需总的时间就是定时时间。 软件定时的特点是无需硬件电路,但定时期间CPU被占 用,增加了CPU的开销,因此定时时间不宜过长,而且 定时期间如果发生中断,定时时间就会出现误差。
led=_crol_(led,1); 满10次变量led左移1位送P0口
P0=led;
}
}
[案例3] 用定时器的计数方式实现外部中断。如图 所示,P0口控制8只发光管轮流点亮,发光管点 亮时间为500ms,单脉冲电路控制发光管的移动 方向,按下单脉冲按钮,发光管左移,再按下发 光管右移 。
单片机课设60秒计时器
单片机课程设计说明书题目:00—60秒表设计学院:机电工程学院专业:机械设计制造及其自动化学生姓名:xxx学号:xxx指导教师单位:xxx姓名:xxx2013年12月13日摘要60秒计时器以单片机为核心,由计时器,控制器等组成。
系统采用模块化设计,主要分为计时器显示模块和按键控制模块。
每个模块的程序结构简单,任务明确,易于编写、调试和修改。
编程后利用Kcil软件来进行编译,在生成HEX文件装入芯片中,在通过调试实现60s计时功能。
本设计中系统硬件电路主要是由以下几个部分组成:单片机AT89C51、振荡电路、显示电路和按键开关。
该系统具有60s内准确计时和计时清零的功能。
关键字:单片机,计时,显示,60s计时,复位清零目录前言 (1)一、概述 (1)1.1、课程设计任务与目的 (1)1.2、总体方案设计 (2)1.2.1、设计方案框图 (2)1.2.2、硬件方案 (2)1.2.3、软件方案 (2)二、系统硬件设计 (3)2.1、电路总体设计方案 (3)2.2、电路原理图 (3)2.3、各硬件模块设计与制作 (3)2.3.1、AT89C51单片机设计 (3)2.3.2、晶振输入电路设计 (6)2.3.3、复位电路设计 (7)2.3.5、数码管显示部分电路 (8)2.3.6、绘制原理图. (10)2.3.7、生成PCB图 (11)2.3.8、制作PCB板 (11)2.3.9、钻孔,并焊接芯片 (12)2.4、遇到的问题与解决办法 (13)三、系统软件设计 (14)3.1、软件总体设计方案 (14)3.2、程序流程图 (16)3.3、部分重要模块汇编程序: (16)四、系统调试 (17)4.1、软件调试 (17)4.2、硬件调试 (18)五、系统功能 (19)六、总结 (19)七、附录 (19)八、参考文献 (21)前言我们的任务是设计60s秒表计时器,用AT89S51单片机的定时/计数器T0产生一秒的定时时间,作为秒计数时间,当一秒产生时,秒计数加1,秒计数到60时,自动从0开始,实现0到60秒的循环显示的功能。
专题七动态扫描电路设计
Q[7..0] RD 读数据控制
ARCHITECTURE a OF MEMO_RD_WR IS
SIGNAL Q0,Q1,Q2,Q3: STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL Q4,Q5,Q6,Q7: STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
扫描控制器时序图
ARCHITECTURE a OF SCAN_8 IS SIGNAL NUM: INTEGER RANGE 7 DOWNTO 0;
BEGIN PROCESS(CLK2)
BEGIN IF CLK2'EVENT AND CLK2=‘1' THEN
IF NUM<=7 THEN NUM<=NUM+1;
单片机课程设计报告
中州大学工程技术学院单片机课程设计说明书课题名称秒表专业机械制造与自动化学生XX 马振杨班级机制一班学号7指导教师沈娣丽完成日期2013年9月25日目录摘要 (1)一.系统设计要求 (2)二.设计思路分析 (2)三.秒表电路原理图设计 (2)3.1系统总电路图 (2)3.2时钟电路设计 (3)3.3 输入模块电路设计 (3)3.4显示模块电路设计 (3)四.系统硬件电路设计 (3)4.1秒表显示模块 (4)4. 2控制器模块单片机的选择 (4)4. 3键盘的选择 (5)五.简易秒表软件系统设计 (6)5.1定时模块 (6)5.2 主程序流程图 (8)六.系统的调试 (8)七.心得体会 (11)八.参考文献 (12)摘要单片机在日用电子产品中的应用日益广泛,单片机控制秒表是基于单片机技术、模拟电子技术、数字技术为一体的机电一体化高科技产品,具有功耗低、平安性高使用方便等优点。
秒表是人们日常生活中常常需要用到的一种工具。
本文采用AT89S51单片机从硬件和软件两方面介绍了一款简易的秒表设计过,并对硬件原理图和程序流程图作了简洁的描述。
关键字:单片机AT89C51,LED,秒表,计数器引言:随着单片机技术的不断开展,单片机在日用电子产品中的应用越来越广泛,而本文设计并制作了一款基于AT89C51的3位数码管显示的秒表,其电路简单,软硬件构造模块化,易于实现。
产品和技术革新的日新月异都让人非常惊讶。
在电子科学技术高速开展的今天,高科技产品越来越多的应用在我们的日常生活中,给我们的生活带来了非常大的方便,每时每秒我们都能感受到产品的更新换代。
像平常我们工作所用的电脑、手机和生活所用的电视机,收音机,Mp3等等,这些高科技产品给我们带来了极大的方便,但这要归功于科学技术的高速开展。
一、设计要求⑴硬件设计:根据任务要求,完成单片机最小系统及其扩展设计。
⑵软件设计:根据硬件设计完成显示功能要求,完成控制软件的编写与调试;⑶功能要求:用S1启动秒表和停顿秒表,S2键将秒表归零,按一下S1,即开场定时,在数码管上每秒加1,加到60,归零。
数码管显示数字
在第6课里,我们讲到数码管的静态显示,利用静态显示法,通过控制位选和段选,可以让数任意几位数码管显示任意字符,但由于所有位数码管的相同的段选全部接在一起,所以只能同时显示相同的数字,例如8位同时显示8字,1、3、5位同时显示3字。
但大家想一下,如果我们要让数码管同一时刻显示不同的数字,如图1所示的现象,用静态显示的方法就不能够实现,这里就只能用到动态显示的方法,今天这一节我们主要讲解数码管动态显示的原理的程序实现的方法。
图1 数码管同时显示123456在讲解动态显示方法之前,我们先介绍在种数码管及单片机程序开发过程常用的方法-数组编码法。
1、数组编码在跟数码管相关的程序中,可以对位进行编码,也可对段进行编码,这里我们以段编码进行讲解。
通过第8课的程序我们知道,在位选确定后,要显示数字8时,P0=0x80,显示数字3时P0=0xb0,也就是0xb0,0x80分别可以表示数字3和8,按此方法,我们把在数码管上显示0-f,16个数字全部用16制度表示出来,这16个16进制数就称为数码管可显示0-f的相应的编码,如图2所示(注意共阳和共阴极数码管相应的编码有所不同,这里以实验板上共阳极的为例)。
图2 共阳极数码管编码在编程中,编码的表示方法如下:unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e };这里编码表示的方法与C语言中数组定义的方法基本一样。
table是数组名,后面需加[],中括号中需加上数组中元素的个数,也可以不写。
等号的右边用一个大括号将所有元素包含起来,里面的元素之间用“,”隔开,在大括号外用“;”结束。
等号左边的unsigned char 是数据元素的数据类型,这里定义为无符号字符型,也就是元素的值范围只能是0-255之间。
数码管倒计时电路的设计
数码管倒计时电路的设计LED数码管倒计时电路采用24H计时方式,时分秒用6位数码管显示,分、秒之间为闪烁位,每0.5秒闪烁一次。
该电路采用AT89C51单片机,可按需求设计计时数。
数码管时钟电路如图1所示,其采用AT89C51单片机,LED先是采用动态扫描方式实现,P1口输出段码数据,P3.3~P3.5口接三八译码器作扫描输出,P0.0~P0.6口接按钮开关,为了提高秒计时的精确性,采用12MHz晶振。
1.主程序本设计中的计时采用定时器T0中断完成,其余状态循环调用显示子程序,当P0.6端口开关按下时,转入调时功能程序。
2.显示子程序数码管显示的数据存放在内存单元40H~45H中,其中40H~41H存放秒数据,42H~43H 存放分数据,44H~45H存放时数据,每一地址单元内均为十进制BCD码。
由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中。
显示时,先取出40H~45H某一地址中的数据,然后查得对应的显示用段码从P1口输出。
P3.3~P3.5口将对应的数码管选中,就能显示该地址单元的数据值。
3.定时器T0中断服务程序定时器T0用于时间计时。
定时溢出中断周期设为50ms,中断累计20次(即1秒)时对秒计数单元进行加1操作。
时间计数单元地址分别在40H~41H(s),46H~77H(min),78H~79H(h),20H单元内存放“熄灭符”数据。
在计数单元中采用十进制BCD码计数,满60进位。
4.设置计时数程序设置计时数程序的设计方法是,P0.0~P0.5分别对应秒个位秒十位,分个位分十位,时个位时十位,P0.6设置位,当P0.6为0时,进入设置状态,各位清0,设置结束,按P0.6开始计时。
5.汇编程序清单ORG 0000HLJMP STARTORG 000BHLJMP ZM0;*****************************; 主程序;*****************************START: MOV TMOD,#11H ;设置定时器为0工作方试1MOV TL0,#0B0HMOV TH0,#3CH ;设置定时器0为50msSETB EA ;开总中断SETB ET0 ;开定时器0中断MOV DPTR,#TAB ;表格地址MOV 20H,#0FFH ;设置闪烁位MOV 40H,#00H ;秒个位MOV 41H,#00H ;秒十位MOV 42H,#00H ;分个位MOV 43H,#00H ;分十位MOV 44H,#00H ;时个位MOV 45H,#00H ;时十位MOV 50H,#0C0H ;秒个位显示码MOV 51H,#0C0H ;秒十位显示码MOV 52H,#0C0H ;分个位显示码MOV 53H,#0C0H ;分十位显示码MOV 54H,#0C0H ;时个位显示码MOV 55H,#0C0H ;时十位显示码MOV R2,#20 ;计数用,20*50ms为一秒SETB TR0 ;定时器0开始计时MAIN: ACALL DISPLAY ;显示JB P0.6,MAIN ;调整键按下ACALL DISP ;除抖JB P0.6,MAINACALL SETTIME ;进入调时SJMP MAIN;****************************; 计时中断0;****************************ZM0: PUSH ACC ;保护现场PUSH PSWCLR ET0 ;关闭总中断CLR TR0 ;关计时器0中断MOV A,#0B7H ;中断响应时间同步修正ADD A,TL0MOV TL0,AMOV TH0,#3DHSETB TR0 ;开计时器0DEC R2 ;闪烁位每0.5秒闪烁一次MOV A,R2MOV b,#10DIV ABMOV A,BCJNE A,#0,NEXT ;到0.5秒了吗CPL 06h ;闪烁位取反NEXT: CJNE R2,#0,OUT ;到一秒钟对40H至45H各位进行调整MOV R2,#20MOV R0,#40H ;秒数减一ACALL DEC1MOV R3,41HCJNE R3,#255,OUTACALL CLSMOV R0,#42HACALL DEC1 ;秒数数到0时,分数减一MOV R3,43HCJNE R3,#255,OUTACALL CLSMOV R0,#44H ;分数减到0时,小时数减一ACALL DEC1MOV R3,45HCJNE R3,#255,OUTMOV 40H,#00H ;秒个位归0MOV 41H,#00H ;秒十位归0MOV 42H,#00H ;分个位归0MOV 43H,#00H ;分十位归0MOV 44H,#00H ;时个位归0MOV 45H,#00H ;时十位归0MOV 20H,#0BFHACALL OUT1 ;BCD码化为显示码CLR TR0CLR TR0 ;关闭计时器0SJMP MAIN ;都减为0时,程序结果,等待下一次设置时间OUT: MOV R5,#6;将40H至45H的BCD码译为相应的显示码存放在50H至55H中MOV R0,#45HMOV R1,#55HBIAN: MOV A,@R0MOVC A,@A+DPTRMOV @R1,ADEC R0DEC R1DJNZ R5,BIANPOP ACCPOP PSWSETB ET0RETI;**************************; 减一程序;**************************DEC1: CJNE @R0,#0,OUTT ;对相应的十位与个位进行减一处理MOV @R0,#9INC R0DEC @R0DEC R0RETOUTT: DEC @R0RET;**************************; 归位程序;**************************CLS: MOV @R0,#9INC R0MOV @R0,#5RET;***************************; BCD码化为显示码程序;***************************OUT1: MOV R5,#6 ;将40H至45H的BCD码译为相应的显示码存放在50H至55H中MOV R0,#45HMOV R1,#55HBIAN1: MOV A,@R0MOVC A,@A+DPTRMOV @R1,ADEC R0DEC R1DJNZ R5,BIAN1RET;**********************************; 设置计时数程序;**********************************SETTIME:CLR TR0 ;关闭计时器ACALL DISPLAYMOV 40H,#00H ;秒个位归0MOV 41H,#00H ;秒十位归0MOV 42H,#00H ;分个位归0MOV 43H,#00H ;分十位归0MOV 44H,#00H ;时个位归0MOV 45H,#00H ;时十位归0MOV 20H,#0BFHACALL OUT1 ;BCD码化为显示码ACALL DISP ;除抖JB P0.6,REI1SELF: JNB P0.6,SELF ;等待键释放PUSH ACC ;保护现场PUSH PSWMOV TL0,#0B0H ;重置计数器MOV TH0,#3CHWAIT: ACALL DISPLAY ;等待设置健按下MOV A,P0CPL AJZ WAITACALL DISP ;除抖MOV A,P0CPL AJZ WAITMOV B,A ;保存数据SELF1: MOV A,P0 ;等待健释放CJNE A,#0FFH,SELF1MOV A,B ;计算是哪个键按下,对相应的内存加一MOV R1,#3FHCLR CAGAIN: RRC AINC R1JNC AGAININC @R1MOV B,R1ACALL SETTIME0 ;对时间数据作相应的调整ACALL OUT1 ;BCD码化为显示码MOV R1,BCJNE R1,#46H,W AIT ;p0.6再次为0时,开始计时REI1: POP ACCPOP PSWSETB TR0RET ;返回;*********************************; 调整程序;**********************************SETTIME0:MOV A,40H ;秒个位满10归0CJNE A,#10,SET1MOV 40H,#0SET1: MOV A,41H ;秒十位满6归0CJNE A,#6,SET2MOV 41H,#0SET2: MOV A,42H ;分个位满10归0CJNE A,#10,SET3MOV 42H,#0SET3: MOV A,43H ;分十位满6归0CJNE A,#6,SET4MOV 43H,#0SET4: MOV A,44H ;时个位满4归0CJNE A,#4,SET5MOV 44H,#0SET5: MOV A,45H ;时十位满3归0 CJNE A,#3,SET6MOV 45H,#0SET6: RET;**********************************; 显示程序;**********************************DISPLAY:MOV P1,50H ;显示秒个位MOV P3,#0ACALL DISPMOV P1,#0FFHMOV P1,51H ;显示秒十位MOV P3,#8ACALL DISPMOV P1,#0FFHMOV P1,20H ;显示闪烁位MOV P3,#16ACALL DISPMOV P1,#0FFHMOV P1,52H ;显示分个位MOV P3,#24ACALL DISPMOV P1,#0FFHMOV P1,53H ;显示分十位MOV P3,#32ACALL DISPMOV P1,#0FFHMOV P1,20H ;显示闪烁位MOV P3,#40ACALL DISPMOV P1,#0FFHMOV P1,54H ;显示时个位MOV P3,#48ACALL DISPMOV P1,#0FFHMOV P1,55H ;显示时十位MOV P3,#56ACALL DISPMOV P1,#0FFHRET;*******************************; 0.5ms延时程序;*******************************DISP: MOV 30H,#5DD: MOV 31H,#50DJNZ 31H,$DJNZ 30H,DDRET;*************************************; 表格;*************************************TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0至9的共阳显示码END。
单片机数码管0到9编程间隔为1秒的实验报告
单片机数码管0到9编程间隔为1秒的实验报告
本次实验使用的是单片机数码管及定时器。
实验目的:
熟悉单片机数码管及定时器的编程方法,掌握基本的数码管数码显示及定时器操作。
实验材料:
单片机、LED数码管、跳线、电源、电动推杆。
实验原理:
基于单片机的GPIO控制与定时器编程实现数码管计数器的设计。
实验步骤:
1.连接电路如图所示(VCC连接到5V、GND连接到GND、COM连接到任意采用数字型数码管)。
2.完成电路后打开KEIL编译软件,新建一个工程文件并命名,选择C语言,按照所使用调试器的型号进行对应的选项设置,确定。
3.在编写代码前对单片机进行初始化配置,设定所需的端口进行数据的输入输出,主函数加入时钟初始化语句。
4.编写数码管显示代码,定时器中断触发的显示程序,以及定时器相关的中断服务程序。
5.在代码中加入宏定义,把需要显示的数字和时间间隔等参数进行定义,以便后期修改和使用。
6.调试程序,编译及下载程序到单片机中并运行,观察程序效果。
实验结果:
将数码管上的数字从0到9逐个显示,并每个数字停留1秒钟。
实验总结:
通过本次实验,我深入了解了单片机数码管和定时器的原理及编程技术。
对单片机编程的整个流程、基本控制语句和数据类型的使用有了更为深入全面的认识,并对实际项目的设计和开发也有了一定的指导性。
四位数码管显示时间的原理
四位数码管显示时间的原理
四位数码管是一种常见的显示器件,用于显示数字。
它由四个七段数码管组成,每个数码管有七个段(a-g)用于显示数字0-9。
通过控制这些段的亮灭,可以显示不同的数字。
数码管显示时间的原理如下:
1. 时钟信号:时钟信号是一个周期性的信号,用于控制数码管的刷新频率。
通常,数码管的刷新频率为几十赫兹,即每秒刷新几十次。
2. 数字转换:将当前的时间转换为需要显示的数字。
例如,将小时、分钟和秒分别转换为四个数字。
3. 数字显示:将转换后的数字依次显示在四位数码管上。
通过控制数码管的七段,可以让特定的段亮起,显示对应的数字。
4. 刷新:由于刷新频率较高,每个数码管只能持续亮起很短的时间,然后迅速切换到下一个数码管。
通过快速刷新,人眼会感觉到所有数码管都同时亮起。
这样,通过不断地刷新和更新显示的数字,就可以实现数码管显示时间的功能。
需要注意的是,数码管只能显示数字,不能直接显示字母和其他符号。
如果需要显示字母、符号或者更复杂的信息,可能需要使用其他类型的显示器件。
数码管动态显示及实现方法
数码管动态显示及实现方法作者:张成法孙月兴来源:《电子技术与软件工程》2016年第22期摘要本文讲述利用74HC573锁存器和定时器来实现对数码管的动态显示,通过从左向右让六位数码管中的每一位每隔一秒依次显示123456来阐述数码管动态显示具体实现方法。
【关键词】动态显示数码管锁存器数码管由于价格便宜,使用简单,在电器特别是家电领域(比如空调、热水器和冰箱等)得到了极为广泛的应用。
在高校电子信息类专业单片机的教学过程中,数码管动态显示及实现方法是学生普遍反映较难掌握的内容。
鉴于此,本文通过实际案例详细阐述了数码管的动态显示特点及实现方法。
1 系统整体设计本系统是由AT89C52单片机、2个74HC573锁存器U3和U4,1个10K的电阻排,6个7段共阴极数码管、电源电路和复位电路组成。
74HC573锁存器的锁存端LE是高电平的时候,它的输入端D0~D7和输出端Q0~Q7是直通的,此时输入端数据会直接输出给输出端。
74HC573锁存器的锁存端LE是低电平的时候,输入端和输出端断开,输出端保持原来的数值。
通过2个74HC573锁存器可以实现对数码管的段选和位选的选择。
所谓段选是表示数码管中亮的内容(比如 1,2,3,4,5.......),而位选是表示让哪一个数码管亮,本系统中同时接入了6个数码管,通过对位选的赋值,可以选择让哪一个数码管亮。
锁存器U3的输出WE1、WE2、WE3、WE4、WE5和WE6用来控制数码管的位选,锁存器U4的输出a、b、c、d、e、f、g和h用来控制数码管的段选,这两个锁存器的输入端全部接在了P0口上,P0口的内部无上拉电阻,需在它的外部加一个10K的上拉电阻排P1,这样的话,单片机一上电后,P0口就是高电平。
2 数码管显示分析如果想让哪个数码管亮,那么先将控制位选的锁存器U3的锁存端LE设为高电平,然后通过P0口送数值选择哪一位数码管亮,当这一位的数码管亮了以后,然后把锁存端LE设为低电平,锁存器的数据输出端的位选就保持住了,然后再把控制段选的锁存器U4的锁存端LE设置为高电平,然后通过P0口送数值,使数码管显示相应的数值,然后再把锁存器U4的锁存端LE设置为低电平,这时候段选和位选都赋上值了,数码管就亮了,并且显示相应的数值。
具有记忆功能的电子时钟(附程序)
一、题义分析及解决方案1、题意需求分析根据本设计给定的内容和要求可知:本实验要使用可编程的输入、输出接口8279A芯片来驱动一个八位的LED数码管显示器,本实验中LED驱动采用动态扫描方式显示,共用到八个数码管显示器,在显示的过程中是逐个点亮的,分别用来显示时钟的:时位-分位-秒位。
显示的初值设置为:23:59:59,每隔一秒,显示值改变一次。
其中一秒的控制可以通过循环执行扫描子程序来实现的。
在显示的过程中,通过键盘的设置可以进行时间的调整和暂停计数。
本实验中由于要实现断电存储功能故还需用到存储芯片AT24C02,它与CPU之间的通信时通过接口8255A芯片实现的,通过对SCL和SDA引脚与8255A的PC0和PC1引脚相连实现对电压的拉高、拉低,从而实现计时时钟的定时存储。
当断电重新启动后,电子时钟要求能够按照断电前的时间继续计数。
根据要求提出以下问题:(1)如何实现LED的动态扫描显示(2)8279A如何工作(3)1S如何控制(4)存储芯片如何存储数据2、解决问题的思路及方法1)硬件部分本实验采用8279A芯片、LED发光二极管、十六进制小键盘、8255A芯片、AT24C02存储芯片,由于8279A芯片的输出电流与LED不匹配,需采用74L240驱动电流。
8279芯片是一通用可编程键盘显示接口器件,可以实现对键盘/显示器的自动扫描,以减轻CPU负担。
与LED数码管、驱动器、按键可组成一个最基本键盘显示系统。
具有显示稳定,程序简单,不会出现误动作等特点。
AT24C02是记忆芯片,不能与CPU直接相连,要通过接口8255A芯片与CPU 实现通信。
2)软件部分初始值设置:在程序的数据段中定义秒、分、时的初值,并在LED上显示。
计时:上电后,数码管显示起始时间为23:59:59,通过键盘按键实现输入,当显示了1s时,秒位加1,并判断秒位是否为60,若不是,则直接显示时间;若是,则将秒位置0,分位加1,接着判断分位是否为60,若不是,则直接显示;若是,则将分位置0,时位加1,然后判断时位是否为24,若不是,则直接显示;若是,则将所有时间清零,重新计时。
百度多功能秒表的设计
多功能秒表的设计摘要本设计是通过使用单片机80C51来设计一个单片机控制的秒表系统。
利用单片机的定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及按键来设计计时器。
将软、硬件有机地结合起来,使得系统能够正确地进行加、减(倒)计时,数码管能够正确地显示时间。
在设计中定时器1用做1秒定时,从而实现每秒加1。
定时器0用做10毫秒定时,从而实现每10毫秒快加1。
中断0用做暂停键使用,中断1用做停止键使用。
该秒表可以每秒加一,每秒减一,快加1,快减1,独立存储四个数据并能进行查询。
在硬件设计中由于所需按键比较少,所以采用独立连接式电路,使用P0和P2口直接对两个数码管发送数据,在使用P0口时,由于输出级为漏级开路电路,若要驱动NMOS或其他拉电流负载时,引脚上应外接上拉电阻。
用软件法消除来抖动,LCD数码管采用共阴极的接法。
复位电路采用上电或开关复位电路,在电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。
时钟信号采用内部时钟法,在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。
目录1 概述 (2)1.1 设计意义 (2)1.2 设计任务 (2)1.3主要功能 (2)2 系统总体设计及硬件设计 (3)2.1单片机的设计 (3)2.2 电源 (3)2.3 钟及复位电路 (3)2.4 显示及键盘 (5)3 软件设计 (6)3.1主程序 (6)3.2设置子程序: (9)3.3加减1子程序 (11)3.4 快加减子程序 (14)4 PROTEUS软件仿真 (17)5 课程设计体会 (18)参考文献 (18)附1 源程序代码 (20)附2 秒表系统电气图 (26)1概述1.1 设计意义1、通过设计使学生进一步熟悉和掌握单片机的内部结构和工作原理,了解单片机应用系统设计的基本方法和步骤;2、通过利用MCS-51单片机,理解单片机在自动化仪表中的作用以及掌握单片机的编程方法;3、通过设计一个简单的计算器数字输入及显示模拟系统,掌握单片机仿真软件Proteus的使用方法;4、掌握键盘和显示器在的单片机控制系统中的应用。
数码管动态扫描显示实验综述
实验三定时器和中断实验一、实验目的1、学习51单片机内部定时器的使用方法。
2、掌握中断处理程序的方法。
3、掌握数码管与单片机的连接方法和简单显示编程方法。
4、学习和理解数码管动态扫描的工作原理。
二、实验内容1、使用定时器T0,定时1秒,控制P1口发光管循环点亮。
2、使用定时器T0,定时1秒,控制1个数码管循环显示数字0~9,每秒钟数字加一。
3、使用软件定时1秒,控制2个数码管循环显示秒数0~59,每秒钟数字加一。
4、使用定时器T0,定时1秒,控制2个数码管循环显示秒数0~59,每秒钟数字加一。
三、实验电路图四、实验说明1、数码管的基本概念(1)段码数码管中的每一段相当于一个发光二极管,8段数码管则具有8个发光二极管。
本次实验使用的是共阴数码管,公共端是1、6,公共端置0,则某段选线置1相应的段就亮。
公共端1控制左面的数码管;公共端6控制右面的数码管。
正面看数码管的引脚、段选线和数据线的对应关系为:图1 数码管封装图图2 数据线与数码管管脚连接关系段码是指在数码管显示某一数字或字符时,在数码管各段所对应的引脚上所加的高低电平按顺序排列所组成的一个数字,它与数码管的类型(共阴、共阳)(2)位码位码也叫位选,用于选中某一位数码管。
在实验图中要使第一个数码管显示数据,应在公共端1上加低电平,即使P2.7口为0,而公共端6上加高电平,即使P2.6口为1。
位码与段码一样和硬件连接有关。
(3)拉电流与灌电流单片机的I/O 口与其他电路连接时,I/O 电流的流向有两种情况:一种是当该I/O 口为高电平时,电流从单片机往外流,称作拉电流;另一种是该I/O 口为低电平时,电流往单片机内流,称为灌电流。
一般I/O 的灌电流负载能力远大于拉电流负载能力,对于一般的51 单片机而言,拉电流最大4mA,灌电流为20mA。
一般在数码管显示电路中采用灌电流方式(用共阳数码管),可以得到更高的亮度。
本实验电路中采用拉电流方式(用共阴数码管)。
第五节 七段数码管的使用.
第五节数码管的使用5.1 数码管简介同学们!相信你的流水灯也做的不错了吧,现在能玩出几种花样了?但是工程师们设计这么一个单片机,并不是只为了让它做流水灯的,那样也太浪费点了吧... ^_^ 。
数码管的一种是半导体发光器件,7段LED数码管是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,可以显示0~9等10个数字和小数点,使用非常广泛,数码管可以分为一位和多位它的外观如图5-1所示。
图5-15.2 数码管的显示原理数码管可以分为共阳极与共阴极两种,共阳极就是把所有LED的阳极连接到共同接点com,使用时com接正5伏电源,而每个LED的阴极分别为a、b、c、d、e、f、g及dp(小数点);共阴极则是把所有LED的阴极连接到共同接点com,使用时com要将其接地。
而每个LED的阳极分别为a、b、c、d、e、f、g及dp(小数点),8个LED的分布方式如图5-2所示。
图中的8个LED分别与上面那个图中的A~DP各段相对应,通过控制各个LED 的亮灭来显示数字。
那么,实际的数码管的引脚是怎样排列的呢?对于单个数码管来说,从它的正面看进去,左下角那个脚为1脚,以逆时针方向依次为1~10脚,左上角那个脚便是10脚了,上面两个图中的数字分别与这10个管脚一一对应。
注意,3脚和8脚是连通的,这两个都是公共脚。
它对应的引脚分布为图5-3所示。
图5-2 图5-3数码管的8段,对应一个字节的8位,a对应最低位,dp(小数点)对应最高位。
所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。
可以看出两个编码的各位正好相反。
如图5-4所示。
图5-4那么,一位数码管要显示字符0~F,则对应的编码如表2所示。
一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。
IO口并行口直接驱动LED显示 在数码管上循环显示0-9数字,时间间隔为1秒。剖析
单片机原理及应用技术课程设计任务书一、设计目的1. 学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。
2. 掌握汇编语言程序设计方法。
3.培养实践技能,提高分析和解决实际问题的能力。
二、课程设计题目:I/O口并行口直接驱动LED显示三、设计任务及要求1.利用单片机的P0端口的P0.0-P0.7连接到一个共阴极数码管的a-h的笔段上,数码管的公共端接地。
2.在数码管上循环显示0-9数字,时间间隔为1秒。
四、总体设计思路1.硬件设计思路及系统框图。
2.软件设计思路及流程框图。
五、设计步骤1.硬件设计(1)确定目标:设计整个系统是由哪些模块组成,各个模块之间的信号传输,并画出电路图。
(2)系统分析:根据系统功能,选择各模块所用电路形式。
(3)总电路图:连接各模块电路。
2.软件设计(1)分析系统功能,设计软件流程图并编写功能代码。
(2)运用Keil软件进行程序调试。
3.基于Proteus和Keil的软硬件联合仿真。
六、课程设计成果要求课程设计报告打印稿、电子稿,使用Keil、Proteus软件综合调试仿真产生的文件夹。
硬件电路图一份(A4)。
目录前言 (2)第1章课程设计的目的和任务要求 (3)1.1、设计目的 (3)1.2、课程设计题目 (3)1.3、设计任务及要求 (3)第2章系统设计原理 (3)2.1 AT89C51芯片的介绍 (3)2.2 LED数码显示原理 (3)2.3总体设计方案 (3)第3章系统设计内容 (4)3.1.硬件设计 (4)3.1.1单片机最小系统 (4)3.1.2数码管显示电路 (6)3.1.3直流稳压电源电路 (6)3.2软件设计 (8)3.2.1 程序框图 (8)3.2.2程序清单 (9)第4章使用Keil、preoteus软件调试仿真说明 (10)4.1 系统仿真 (10)4.2 仿真调试 (10)结束语 (12)参考文献 (13)前言单片机的应用介绍单片机全称叫单片微型计算机(Single Chip Microcomputer),是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
嵌入式技术与应用数码管静态显示123456大学编程
嵌入式技术与应用数码管静态显示123456大学编程一、实现的功能①实现3位数码管轮询显示显示0~F,每隔一秒显示一次;②编写数码管显示驱动,了解数码管显示原理;③了解74LS595芯片的串行数据变成并行数据作用,以及如何驱动数码管;二、根据功能实现代码1、主文件main.c主函数分析:添加数码管的初始化函数,并熄灭3位数码管的显示;3位数码管从0显示到f,每隔1s显示一个数,重复以上动作;2、数码管头文件“seg.h”74LS595对应的引脚进行初始化;3位数码管的显示函数;3、数码管源文件“seg.c”简要分析:74LS595对应SER、SRCLK、RCLK的3个引脚设置为推挽输出模式;3位数码管的串行数据封装为24位,3个字节组成,第几个字节数据对应第几个数码管;而小数点由三个字节组成,显示的方式和数码管数字相反;工作流程:①拉低RCK(锁存时钟)→②轮询24次,先拉低SCK移位寄存器时钟→③判断24位数据的最高位是否等于1,如果是,拉高SER(串行数据)高电平,否则拉低SER(串行数据)低电平→④ulData数据向左移一位,拉高SCK移位寄存器时钟,再次判断下一位→⑤轮询结束后,拉高RCK(锁存时钟),把数据进行输出。
数码管显示的数字,可以到网上查找进行移植,一般显示0 ~ 9和a ~ F字符;三、实现功能过程的注意与学习点1、注意点74LS595的串行数据转并行数据的过程中,得按照顺序进行;注意单片机连接到74LS595的引脚输出高低电平,否则无法正常显示数据;2、学习的知识点①学习74LS595芯片的串行数据转并行数据的操作,减少单片机IO引脚的使用;②掌握数码管的显示功能;③学会把三个单独字节的数据封装到long变量中;④通过循环和移位,实现每一位数据的数据判断;。
数字时钟系统
数字时钟系统摘要单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉。
但是却很少知道它的内部结构以及工作原理。
由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。
通过键盘可以进行校时、定时等功能。
输出设备显示器可以用液晶显示技术和数码管来显示技术。
本系统利用单片机实现具有计时、校时等功能的数字时钟,是以单片机AT89C51为核心元件同时采用LED数码管显示器动态显示“时”,“分”,“秒”的现代计时装置。
与传统机械表相比,它具有走时精确,显示直观等特点。
另外具有校时功能,秒表功能,和定时器功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。
关键词:数字钟系统;单片机;LED液晶显示器Digital clock systemAbstractSCM in multi-function digital clock in the application is already very common, people on the digital clock function and are very familiar with the work order. But very few know that its internal structure and working principles. SCM as a digital clock from the core controller, it can achieve the clock signal timing, its time data by the MCU output, use of monitors displayed. Keyboard can be carried out at the school, timing, and other functions. Output devices can be used liquidcrystal display monitors and digital technology to display the technology.The system uses MCU with time, the school features such as the digital clock, SCM AT89C51 is also used as the core components of the LED digital display dynamic display "when" and "points" and "seconds" of the modern time device . Compared with the traditional mechanical watches, it has a precise path that intuitive, and other characteristics. In addition a school function, stopwatch function, and the timer function to achieve MCU use of the digital clock with programming flexibility to facilitate the expansion of functional advantages.Key words: digital clock system; SCM; LED LCD Monitor目录设计任务书 (I)摘要 (III)ABSTRACT (I)V1.系统方案 (I)系统概述设计任务书 (I)摘要 (III)ABSTRACT (IV)1.系统方案 (1)系统概述 (1)方案论证 (1)扩展功能 (2)2.设计过程 (2)设计原理 (2)所需元器件 (2)3. 电路与程序 (2)电路设计 (2)程序设计 (3)3.2.1 程序流程图 (3)3.2.2 主要程序分析 (7)参考文献 (6)4. 总结体会 (16)1、系统方案系统概述本系统可模拟电子时钟,实现时钟,秒表,倒计时定时器功能,主从CPU数据处理、键盘控制与数据显示。
数码管1秒钟自动加1
数码管1秒钟自动加1看着里面的LED 灯变幻莫测的样子,真的想自己编点东西会动一动的,呵呵,所以把今天学到的数码管动态显示再加以应用了,虽然这个程序搞了很久,但却成功了,呵呵,得出的结论是,一个成功是由无数的失败换来的,值!下面是我编的一个程序,实现数码管在0 至100 之间,数码管以1 秒的速度自动加1;程序如下:#includeunsigned char table[]= {//数码管数组显示内容0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};int shi,ge,bai,a;//定义变量unsigned int temp=0;//给数码管赋初值void timer1();//显示程序调用声明void delay()//数码管位选定时约1MS{int i,j;for(i=1;i>0;i--)for(j=120;j>0;j--);}void main(){TMOD |= 0x10;//定时设置的打开TMOD &= 0xdf;TH1 = (65536-50000)/256;TL1 = (65536-50000)&256;ET1 = 1;TR1 = 1;while(1)//实现位选和段选的操作及调用{bai=temp/100;shi = temp%100/10;ge = temp%10;timer1();P0 = 0x00;P1 = table[bai];delay();P0 = 0x01;P1 = table[shi];delay();P0 = 0x02;P1 = table[ge];delay(); }}void timer1() //段选内容,实现1S 自动加1 功能{if(TF1==1){TF1=0;TH1 = (65536-50000)/256;TL1 = (65536- 50000)&256;a++;if(a==20){a=0;temp++;if(temp==100)temp=0;}}}当然,还是声明,我的开发板是由P0.1 至P0.3 控制位选的,由P1 口控制段选内容的。