搜档网
当前位置:搜档网 › 单片机定时器汇编

单片机定时器汇编

单片机定时器汇编
单片机定时器汇编

我们在学单片机时我们第一个例程就是灯的闪烁,那是用延时程序做的,现在回想起来,这样做不很恰当,为什么呢?我们的主程序做了灯的闪烁,就不能再干其它的事了,难道单片机只能这样工作吗?当然不是,我们能用定时器来实现灯的闪烁的功能。例1:查询方式ORG 0000H

AJMP START

ORG 30H

START: MOV P1,#0FFH ;关所灯

MOV TMOD,#00000001B ;定时/计数器0工作于方式1

MOV TH0,#15H

MOV TL0,#0A0H ;即数5536

SETB TR0 ;定时/计数器0开始运行

LOOP: JBC TF0,NEXT ;如果TF0等于1,则清TF0并转NEXT处(LOOP:JNB TF0,$) AJMP LOOP ;不然跳转到LOOP处运行

NEXT: CPL P1.0

MOV TH0,#15H

MOV TL0,#9FH;重置定时/计数器的初值

AJMP LOOP

END

键入程序,看到了什么?灯在闪烁了,这可是用定时器做的,不再是主程序的循环了。简单地分析一下程序,为什么用JBC呢?TF0是定时/计数器0的溢出标记位,当定时器产生溢出后,该位由0变1,所以查询该位就可知宇时时间是否已到。该位为1后,要用软件将标记位清0,以便下一次定时是间到时该位由0变1,所以用了JBC指令,该指位在判1转移的同时,还将该位清0.以上程序是能实现灯的闪烁了,可是主程序除了让灯闪烁外,还是不能做其他的事啊!不对,我们能在LOOP:……和AJMP LOOP指令之间插入一些指令来做其他的事情,只要保证执行这些指令的时间少于定时时间就行了。那我们在用软件延时程序的时候不是也能用一些指令来替代DJNZ吗?是的,但是那就要求你精确计算所用指令的时间,然后再减去对应的DJNZ循环次数,很不方便,而现在只要求所用指令的时间少于定时时间就行,显然要求低了。当然,这样的办法还是不好,所以我们常用以下的办法来实现。程序2:用中断实现

ORG 0000H

AJMP START

ORG 000BH ;定时器0的中断向量地址

AJMP TIME0 ;跳转到真正的定时器程序处

ORG 30H

START: MOV P1,#0FFH ;关所灯

MOV TMOD,#00000001B ;定时/计数器0工作于方式1

MOV TH0,#15H

MOV TL0,#0A0H ;即数5536

SETB EA ;开总中断允许

SETB ET0 ;开定时/计数器0允许

SETB TR0 ;定时/计数器0开始运行

SJMP $

;LOOP: AJMP LOOP ;真正工作时,这里可写任意程序

TIME0:

PUSH ACC ;定时器0的中断处理程序

PUSH PSW ;将PSW和ACC推入堆栈保护

CPL P1.0

MOV TH0,#15H

MOV TL0,#0A0H ;重置定时常数

POP PSW

POP ACC

RETI

END

上面的例程中,定时时间一到,TF0由0变1,就会引发中断,CPU将自动转至000B处寻找程序并执行,由于留给定时器中断的空间只有8个字节,显然不足以写下所有有中断处理程序,所以在000B处安排一条跳转指令,转到实际处理中断的程序处,这样,中断程序能写在任意地方,也能写任意长度了。进入定时中断后,首先要保存当前的一些状态,程序中只演示了保存存ACC和PSW,实际工作中应该根据需要将可能会改变的单元的值都推入堆栈进行保护(本程序中实际不需保存护任何值,这里只作个演示)。上面的两个单片机程序运行后,我们发现灯的闪烁非常快,根本分辨不出来,只是视觉上感到灯有些晃动而已,为什么呢?我们能计算一下,定时器中预置的数是5536,所以每计60000个脉冲就是定时时间到,这60000个脉冲的时间是多少呢?我们的晶体震荡器是12M,所以就是60000微秒,即60毫秒,因此速度是非常快的。如果我想实现一个1S的定时,该怎么办呢?在该晶体震荡器濒率下,最长的定时也就是65。536个毫秒啊!上面给出一个例程。

ORG 0000H

AJMP START

ORG 000BH ;定时器0的中断向量地址

AJMP TIME0 ;跳转到真正的定时器程序处

ORG 30H

START: MOV P1,#0FFH ;关所灯

MOV 30H,#00H ;软件计数器预清0

MOV TMOD,#00000001B ;定时/计数器0工作于方式1

MOV TH0,#3CH

MOV TL0,#0B0H ;即数15536

SETB EA ;开总中断允许

SETB ET0 ;开定时/计数器0允许

SETB TR0 ;定时/计数器0开始运行

SJMP $

;LOOP: AJMP LOOP ;真正工作时,这里可写任意程序

TIME0: ;定时器0的中断处理程序

PUSH ACC

PUSH PSW ;将PSW和ACC推入堆栈保护

INC 30H

MOV A,30H

CJNE A,#20,T_RET ;30H单元中的值到了20了吗?

T_L1: CPL P1.0 ;到了,取反P10

MOV 30H,#0 ;清软件计数器

T_RET: MOV TH0,#15H

POP PSW

POP ACC

RETI

END

先自己分析一下,看看是怎么实现的?这里采用了软件计数器的概念,思路是这样的,先用定时/计数器0做一个50毫秒的定时器,定时是间到了以后并不是立即取反P10,而是将软件计数器中的值加1,如果软件计数器计到了20,就取反P10,并清掉软件计数器中的值,不然直接返回,这样,就变成了20次定时中断才取反一次P10,因此定时时间就延长了成了20*50即1000毫秒了。这个思路在工程中是非常有用的,有的时候我们需要若干个定时器,可51中总共才有2 个,怎么办呢?其实,只要这几个定时的时间有一定的公约数,我们就能用软件定时器加以实现,如我要实现P1.0口所接灯按1S每次,而P1.1口所接灯按2S每次闪烁,怎么实现呢?对了我们用两个计数器,一个在它计到20时,取反P10,并清零,就如上面所示,另一个计到40取反P11,然后清0,不就行了吗?这部份的程序如下

ORG 0000H

AJMP START

ORG 000BH ;定时器0的中断向量地址

AJMP TIME0 ;跳转到真正的定时器程序处

ORG 30H

START: MOV P1,#0FFH ;关所灯

MOV 30H,#00H ;软件计数器预清0

MOV TMOD,#00000001B ;定时/计数器0工作于方式1

MOV TH0,#3CH

MOV TL0,#0B0H ;即数15536

SETB EA ;开总中断允许

SETB ET0 ;开定时/计数器0允许

SETB TR0 ;定时/计数器0开始运行

SJMP $

;LOOP: AJMP LOOP ;真正工作时,这里可写任意程序

TIME0: ;定时器0的中断处理程序

PUSH ACC

PUSH PSW ;将PSW和ACC推入堆栈保护

INC 30H

INC 31H ;两个计数器都加1

MOV A,30H

CJNE A,#20,T_NEXT ;30H单元中的值到了20了吗?

T_L1: CPL P1.0 ;到了,取反P10

MOV 30H,#00H;清软件计数器

T_NEXT: MOV A,31H

CJNE A,#40,T_RET ;31h单元中的值到40了吗?

T_L2: CPL P1.1

MOV 31H,#0 ;到了,取反P11,清计数器,返回

T_RET: MOV TH0,#15H

POP PSW

POP ACC

RETI

END

您能用定时器的办法实现前面讲的流水灯吗?试试看。

STC89C52单片机定时器2的使用

STC89C52单片机定时器2的使用 实现定时和计数的方法一般有:软件定时、专用电路和可编程定时器/计数器三种方法。软件定时:执行一个循环程序进行时间延迟。定时准确,不需要外加硬件电路,但会增加CPU 开销。专用硬件电路定时:可以实现请精确 的定时和计数,但参数调节不方波。可编程定时器/计数器:不占用CPU 时间,能与CPU 并行工作,实现精确的定时和计数,又可以通过变成设置其工作方 式和其他参数,使用方便。以下说明仅试用宏晶的STC89C52!!定时器 2:T2MOD,T2CON,TH2,TL2,RC2H,RC2L.T2MOD:0C9H(不可位寻址) 000000T2OEDCENT2OE:定时器输出使能位DECN:向上/向下计数使能位。定时器2 可配制成向上/向下计数器。0:向上计数(模式状态) 1:向下计数(尽量不使用)T2CON:0XC8H(可位寻址) TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RL2TF2:7 上/下溢出标志位,定时器2 溢出时置位,必须有用软件清零!当RCLK 或TCLK=1 时,TF2 将不会 置位。EXF2:6 定时器2 外部标志,当EXEN2=1 且T2EX 的负跳变产生捕获或重装时,EXF2 置位。定时器2 中断使能时,EXF2=1 将使CPU 从中断向量处执行定时器2 中断子程序。EXF2 位必须用软件清零。在递增/递减计数器 模式(DCEN=1)中,EXF2 位不会引起中断。RCLK:5 接收时钟标志。RCLK 置位时,定时器2 的溢出脉冲作为串口模式1 和模式3 的接收时钟。RCLK=0 时,将定时器1 的溢出脉冲作为串口模式1 和模式3 的接收时钟。TCLK:4 发送时钟标志位。TCLK 置位时,定时器2 的溢出脉冲作为串口模式1 和模式3 的发送时钟。TCLK=0 时,将定时器1 的溢出脉冲作为串口模 式1 和模式3 发送时钟。EXEN2:3 定时器2 外部使能标志。当其置位且定时器2 未作为串口时钟时,允许T2EX 的负跳变产生捕获或重装。

基于单片机数字时钟的设计

基于单片机数字时钟的设计 第一章绪论 1.1数字时钟的背景 1.2数字时钟的意义 1.3数字时钟的应用 第二章整体设计方案 2.1 单片机的选择 2.2 单片机的基本结构 第三章数字是中的硬件设计 3.1最小系统设计 3.2液晶显示电器 3.3键盘控制电路 第四章数字时钟的软件设计 4.1系统软件设计流程图 4.2数字是中的原理图 4.3主程序 4.4时钟设置子程序 4.5定时器中断子程序 4.6液晶显示子程序 4.7按键控制子程序 第五章系统仿真 1.1数字时钟的背景 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能及一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一时的耽误可能酿成大祸。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化,低功耗,小体积,大容量,高性能,低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势单片机应用的重要意义还在于,他从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次改革。

单片机模块中最常见的是数字时钟,数字钟是一种用数字电路实现时,分,秒计时的装置,与机械时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。 1.2数字时钟的意义 数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 1.3数字时钟的应用 数字时钟已成为人们日常生活中必不可少的,广泛用于个人家庭以及车站,码头,剧场办公室等公共场所,给人们的生活,学习,工作,娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确,性能稳定,携带方便等优点,它还用于计时,自动报时以及自动控制等各个领域。 第二章整体设计方案 2.1单片机的选择 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称微控制器 通常,单片机由单块集成电路芯片构成,内部包含计算机的基本功能部件;中央处理器,存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,成为一个单片机控制系统。 单片机经过1,2,3,3代的发展,正朝着多功耗CMOS化,微型单片化,低电压,低功耗,主流与多品种共存等方向发展。其发展趋势不外乎以下几个方面:, 1.低功耗CMOS化 MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW 左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。象80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗象电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途径 2.微型单片化 现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。 3.主流与多品种共存 现在虽然单片机的品种繁多,各具特色,但仍以80C51为核心的单片机占主流,兼容

实验三单片机定时计数器实验

实验三单片机定时/计数器实验 1、实验目的 1、学习计数器的使用方法。 2、学习计数器程序的编写。 3、学习定时器的使用方法。 4、学习定时器程序的编写。 5、熟悉汇编语言 2、实验说明 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。 2、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 3、实验仪器和条件 计算机 伟福实验箱(lab2000P) 4、实验内容 1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。 2、外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。 3、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转 4、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD

用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 5、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。 五、思考题 1、使用其他方式实现本实验功能; 2、改为门控方式外部启动计数; 3、如果改为定时间隔为200us,如何改动程序; 4、使用其他方式实现本实验功能,例如使用方式1,定时间隔为10ms,如何改动程序。 六、源程序修改原理及其仿真结果 思考题一:使用其他方式实现本实验功能 方法一: movTMOD, #00000100b;方式0,记数器 movTH0, #0 movTL0, #0 setbTR0;开始记数;由于方式0的特点是计数时使用TL0的低五位和八位 TH0,故用加法器a用“与”(ANL)取TL0的低五位,再用yiwei子程序实现TH0的低三位变为高三位与TL0相加,这样赋给P1时就是八位计数的结果。 Loop: mova,TL0 anla,#1fh

4实验四 单片机定时器的使用

姓名:学号:日期: 实验四单片机定时器的使用 一、实验名称:单片机定时器的使用 二、实验目的 1.掌握在Keil环境下建立项目、添加、保存源文件文件、编译源程序的方法; 2.掌握运行、步进、步越、运行到光标处等几种调试程序的方法; 3.掌握在Proteus环境下建立文件原理图的方法; 4.实现Proteus与Keil联调软件仿真。 三、使用仪器设备编号、部件及备件 1.实验室电脑; 2.单片机实验箱。 四、实验过程及数据、现象记录 1.在Proteus环境下建立如下仿真原理图,并保存为文件; 原理图中常用库元件的名称: 无极性电容:CAP 极性电容:CAP-ELEC 单片机:AT89C51 晶体振荡器:CRYSTAL 电阻:RES 按键:BUTTON 发光二极管:红色LED-RED 绿色LED-GREEN 蓝色LED-BLUE 黄色LED-YELLOW 2.在Keil环境下建立源程序并保存为.ASM文件,生成.HEX文件; 参考程序如下: ORG 0000H LJMP MAIN ORG H ;定时器T0的入口地址 LJMP TIMER0 MAIN: MOV TMOD,#01H

MOV R0,#05H MOV TH0,# H ;定时器的初值 MOV TL0,# H SETB ;开定时器T0的中断 SETB ;开CPU的中断 SETB ;启动定时器T0 MOV A,#01H LOOP: MOV P1,A RL A CJNE R0,#0,$ MOV R0,#05H SJMP LOOP TIMER0: DEC R0 MOV TH0,# H ;重装初值 MOV TL0,# H ;重装初值 RETI END 将以上程序补充完整,流水时间间隔为250ms。 3.将.HEX文件导入仿真图,运行并观察结果; 4.利用Keil软件将程序下载至实验箱,进行硬件仿真,观察实验结果。 五、实验数据分析、误差分析、现象分析 现象:实现流水灯,时间间隔250ms,由定时器实现定时250ms。 六、回答思考题 1.定时器由几种工作模式,各种模式的最大定时时间是多少? 2.各种模式下初值怎么计算?

基于单片机的时钟控制器设计论文

单片机原理与应用技术课程设计报告 基于单片机控制的时钟控制器 专业班级: _电气XX班_ __ 姓名:__ ___XXX__ ___ 时间:2013/11/25~12/15 指导教师: XXXX XXX 2013年12月11日

基于单片机控制的时钟控制器课程设计任务书1。设计目的与要求 设计出一个基于单片机控制的时钟控制器。通过向单片机输入不同的指令可以实现24小时制时钟的基本显示和连续的调时,调分和调秒的功能,同时又扩展了整点报时功能。该电路硬件较为简单、计时精度高、可控性好,可以随时调整和设定时间,并且调时间的误差小,操作简单、通用性强。 (1)基本功能 <1>、显示:可以显示时、分和秒 <2>、调时功能:时(0-24)、分和秒(0-60)可以连续可调 (2)性能:时间日误差< 2秒 (3)扩展功能 <1>.增加整点报时功能 <2>.增加闹钟任意设定功能 2.设计内容 (1)画出电路原理图,正确使用逻辑关系; (2)确定元器件及元件参数; (3)进行电路模拟仿真; (4)SCH文件生成与打印输出; 3.编写设计报告 写出设计的全过程,附上有关资料和图纸,有心得体会。 4.答辩 在规定时间内,完成叙述并回答问题。

目录 摘要 (1) 1. 引言 (1) 2. 设计目的和要求 (1) 3. 总体设计方案 (1) 3.1 方案设计要求 (1) 3.2 方案设计与论证 (1) 3.3 整体设计框图 (2) 3.4 系统设计流程图 (2) 4. 设计原理分析 (3) 4.1 外接晶振电路 (3) 4.2 复位电路 (3) 4.3 数码管显示电路 (3) 4.4 键盘控制电路 (4) 4.5 Proteus仿真电路 (4) 4.6 单片机程序的编写 (5) 4.7 电路的检测 (5) 4.8 CAD电路的连接及PCB电路布线并做出电路板 (5) 4.9 软件与硬件的调试 (5) 5. 总结与体会 (5) 6. 附录 (5) 6.1 CAD电路连接图 (5) 6.2 PCB电路布线图 (6) 6.3 时钟控制器参考源程序 (6) 7. 参考文献 (13)

单片机定时器详解

一、MCS-51单片机的定时器/计数器概念 单片机中的定时器和计数器其实是同一个物理的电子元件,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单片机上连接的晶振部件;MCS-51单片机的晶振经过12分频之后提供给单片机的只有1MHZ的稳定脉冲;晶振的频率是非常准确的,所以单片机的计数脉冲之间的时间间隔也是非常准确的,这个准确的时间间隔是1微秒; MCS-51单片机外接的是12MHZ的晶振(实际上是,所以,MCS-51单片机内部的工作频率(时钟脉冲频率)是12MHZ/12=1MHZ=1000000次/秒=1000000条指令/秒=1000000次/1000000微秒=1次/微秒=1条指令/微秒;也就是说,晶振振荡一次,就会给单片机提供一个时钟脉冲,花费的时间是1微秒,此时,CPU会执行一条指令,经历一个机器周期;即:1个时钟脉冲=1个机器周期=1微秒=1条指令; 注:个人PC机上的CPU主频是晶振经过倍频之后的频率,这一点恰好与MCS-51单片机的相反,MCS-51单片机的主频是晶振经过分频之后的频率; 总之:MCS-51单片机中的时间概念就是通过计数脉冲的个数来测量出来的;1个脉冲=1微秒=1条指令=1个机器周期; MCS-51单片机定时器/计数器的简单结构图: 8051系列单片机有两个定时器:T0和T1,分别称为定时器和定时器T1,这两个定时器都是16位的定时器/计数器;8052系列单片机增加了第三个定时器/计数器T2;它们都有定时或事件计数功能,常用于时间控制、延时、对外部时间计数和检测等场合; 二、定时器/计数器的结构

单片机定时器实验程序

ORG 0000H LJMP START ORG 001BH ;定时器/计数器1中断程序入口地址 LJMP INT ORG 0100H START: MOV TMOD,#10H ;计数器置为方式1 MOV TL1,#0B0H ;装入时间常数 MOV TH1,#03CH SETB ET1 ;允许定时器T1中断 SETB EA ;允许总中断 SETB TR1 ;开始计数 MOV R0,#05H ;05是进入中断的次数LOOP: MOV R1,#00H MOV R2,#26H ;灯的状态循环次数LOOP1: MOV A,R1 ACALL TABLE MOV P1,A INC R1 LOOP2: CJNE R0,#00H,LOOP2 MOV R0,#05H DJNZ R2,LOOP1 LJMP LOOP TABLE: INC A ;从表中取显示码入累加器 MOVC A,@A+PC RET DB 0FFH,0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,80H,0H DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,00H,0FFH,0FEH DB 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH DB 0EFH,0F7H,0FBH,0FDH,0FEH,0FFH,00H,0FFH,00H INT: CLR TR1 ;停止计数 DEC R0 ;计数值减一 MOV TL1,#0B0H ;重置时间常数初值 MOV TH1,#03CH SETB TR1 ;开始计数 RETI ;中断返回 END

将T1改为T0,并且溢出间隔为0.05s ORG 0000H LJMP START ORG 001BH ;定时器/计数器1中断程序入口地址 LJMP INT ORG 0100H START: MOV TMOD,#01H ;计数器置为方式1 MOV TL1,#78H ;装入时间常数 MOV TH1,#0CH SETB ET0 ;允许定时器T1中断 SETB EA ;允许总中断 SETB TR0 ;开始计数 MOV R0,#05H ;05是进入中断的次数 LOOP: MOV R1,#00H MOV R2,#25H ;灯的状态循环次数 LOOP1: MOV A,R1 ACALL TABLE MOV P1,A INC R1 LOOP2: CJNE R0,#00H,LOOP2 MOV R0,#05H DJNZ R2,LOOP1 LJMP LOOP TABLE: INC A ;从表中取显示码入累加器 MOVC A,@A+PC RET DB 0FFH,07FH,3FH,1FH,0FH,07H,03H,01H,00H DB 80H,81H,0C1H,0C3H,0E3H,0E7H,0F7H,0FFH DB 00H,0FFH,00H,0FFH,0EFH,0E7H,0C7H,0C3H,83H,81H,01H,00H DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH INT: CLR TR1 ;停止计数 DEC R0 ;计数值减一 MOV TL1,#78H ;重置时间常数初值 MOV TH1,#0CH SETB TR1 ;开始计数 RETI ;中断返回 END

单片机定时器时钟

思路 1.硬件准备。备齐所需硬件。 2.软件模拟或开发板演示。 3.软件编写。 4.问题提出与解决。 5.焊接电路。 一、硬件准备 1.四个按键。用于调时、分、秒,一个备用。 2.单片机一片。STC。 3.1602液晶电路。1个液晶屏,1个10K电阻,1个10欧电阻,1个可变电阻。 4.排阻,10K。 5.晶振电路。含1个晶振、2个30pF电容。 6.复位电路。含1个按键、1个10K电阻,1个1K电阻,1个10uF电容。 7.电源电路。电源接口、1个1K电阻,1个发光二极管,1个10uF电容。 购买: 10个按键,10个30pF电容,10个发光二极管,10个10uF电容,10个1K电阻,10个10K 电阻。 二、开发板模拟 1.初步设计:按直觉感受下设计过程,感知到存在的问题,以便提高关注度。 1)显示初始时间:给定初始显示值,如12:34:52,分别使用1、2、4、5、7、8数码管显示。2)时间递增:用计时器计时,秒60则分进1,分60则时进1,时24则归零。 3)调时按键:用四个独立按键分别调时、分、秒,留一个备用。 4)复位归零:按复位按钮,则全部归零。 2.过程实施:根据直觉设想,分别实现模块功能并实际验证与修改 1)自由显示数码管:参照现有程序,阅读理解后直接拷贝。 ①共阳极数码管如下图: 静态显示时,每个数码管需要1组8个I/O口,而实际需要六个数码管,显然不够。译码器可以解决该问题。

②译码器实现动态显示数码管。 译码器三个输入端的8种组合,可以有8个输出端。这样单片机的3个I/O口就可以完成一个数码管显示。但是,要同时显示两个数码管,一个译码器是不可以解决的,这就需要两个译码器并能控制其通断,这就需要额外的I/O口。为解决此问题,下面提出一个规划:功能:6个单片机I/O口,最多能同时显示8个数码管,这就需要9个译码器。 方法:3个单片机口用于控制1个译码器,这样就可以有8个接口,用于控制其它8个译码器通断,另外3个单片机口用于同时提供给8个译码器数值,而谁要显示,由1个译码器的输出口控制。另外给予适当延时,以实现动态显示。 问题:这样就需要9个译码器,硬件需求比较大。假设能控制数码管的接口,这样1个译码器就够了。 ③多个数码管动态显示。 1个74HC138译码器,用于控制共阴数码管的位选取;1个74HC573锁存器,用于提供数码管数值。控制开断时间,可实现多个数码管动态显示。原理图如下: 原理简介:数码管共阴极位选由74HC138译码器控制,数据端由74HC573锁存器控制,单片机P0口控制锁存器数据端。译码器输出互斥值以决定哪个数码管显示,依次循环来动态显示数码管。P0口在每次循环赋予不同值,通过位选以传递给对应的数码管。另外,也可以不用译码器,用P2口直接作位选控制。 2)程序编写:编写时钟显示程序,下载到开发板显示时钟。 ①显示初始时间:12-34-52 建立一个数组,给8个数码管分别赋予对应值。赋值给P0口,通过锁存器传递给数码管;再通过译码器以控制位选依次循环以动态显示。小问题:1. 每个数值对应的16进制码是多少?(可根据已有程序查询)2. 译码器动态位选时有没有次序要求?(理论上应没有,实验时加以关注) 程序主体如下: //数码管数值代码0-9 unsigned char code Disp_Tab[] =

基于单片机电子时钟的设计

单片机课程设计 姓名:刘韶辉 学号:32 班级:自动化11402 成绩: 指导老师:吴玉蓉 设计时间:2016年12月26日~2017年1月5日目录

STC89C51是公司生产的一种低功耗、高性能CMOS8位微控制器,具有 4K 在系统可编程Flash存储器。STC89C51使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统不具备的功能。在单芯片上,拥有灵巧的8 位和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的。支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被 (5) 图5 单片机系统冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。 (5) 将所有数码管的8个显示段码"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,电路如下图: (5) 图6 数码管显示电路 (6) 一、设计要求 利用51单片机开发电子时钟,实现时间显示、调整功能。具体要求如下:(1)按以上要求制定设计方案,并绘制出系统工作框图; (2)按要求设计部分外围电路,并与单片机仿真器、单片机实验箱、电源等正确可靠的连接,给出电路原理图; (3)用仿真器及单片机实验箱进行程序设计与调试; (4)利用键盘输入调整秒、分和小时时刻,数码管显示时间; 二、系统总体方案

51单片机定时器秒表设计程序

51单片机定时器秒表设计程序 #include typedef unsigned char UINT8; typedef unsigned int UINT16; code UINT8 SEGMENT[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; code UINT8 SHU[10] ={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; code UINT8 SELECT[8] ={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; #define S1 0x0e #define S2 0x0d #define S3 0x0b #define S4 0x07 sbit SPEAK=P3^5; sbit P3_3=P3^3; UINT8 mSecond,Second; void Delay(UINT16 t) { UINT16 i,j; for(i=0;i

单片机试验之定时器计数器应用试验二

一、实验目的 1、掌握定时器/计数器计数功能的使用方法。 2、掌握定时器/计数器的中断、查询使用方法。 3、掌握Proteus软件与Keil软件的使用方法。 4、掌握单片机系统的硬件和软件设计方法。 二、设计要求 1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。 三、电路原理图 六、实验总结 通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD,初值的计算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。 七、思考题 1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对 P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。 答:程序见程序清单。 . . . . 四、实验程序流程框图和程序清单。 1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数,每计

满100个脉冲,则取反P1.0口线状态。 开始汇编程序开始 ORG 0000H START: LJMP MAIN TMO初始化 ORG 0100H 初始TMOD MAIN: MOV IE, #00H MOV TMOD, #60H计数初值初始计数初值初始化MOV TH1, #9CH MOV TL1, #9CH SETB TR1 中断初始中断初始化LOOP: JNB TF1, LOOP CLR TF1 CPL P1.0 启动定时器 AJMP LOOP 启动计数器 END

电子综合设计-基于单片机多功能数字时钟的设计(附完整程序)

课题:基于51单片机的多功能数字时钟系统设计 一、概述、设计思路 该设计方案是以MC51单片机为核心,采用LCD液晶屏幕显示系统,辅以闹钟模块,温度采集模块、日期提醒、键盘时间调整预设置等模块,所构建的数字时钟系统,能动态显示实时时钟的时、分、秒,数据显示(误差限制在30每天),对闹铃方式与温度调节模块进行了重点设计实现SB0、SB1、SB2、SB3四个键实现时钟正常显示,调时,及闹钟时间设置。本系统设计大部分功能有软件来实现,使电路简单明了,系统稳定性也得大大提高。 二、系统组成与工作原理 1、工作原理: 本设计采用STC89C51单片机作为本次课程设计的控制模块。单片机可把由DS18B20、DS1302、AT24C02中的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度、日历和闹铃的显示。以LCD液晶显示器为显示模块,把单片机传来的的数据显示出来,并且显示多样化,在显示电路中,主要靠按键来实现各种显示要求的选择与切换。 2、总是设计框架图:

图二:系统总体电路图 三、单元电路的设计与分析 整个电子时钟系统电路可分为六大部分:中央处理单元(CPU)、复位电路部分、显示部分、键盘输入部分、温度采集部分。 1、MCS-51单片机 VCC: 89S51 电源正端输入,接+5V。 VSS: 电源地端。

XTAL1: 单芯片系统时钟的反相放大器输入端。 XTAL2: 系统时钟的反相放大器输出端,一般在设计上只要在XTAL1 和XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。 RESET: 89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。 EA/Vpp: "EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。 ALE/PROG: 端口3的管脚设置: P3.0:RXD,串行通信输入。 P3.1:TXD,串行通信输出。 P3.2:INT0,外部中断0输入。

单片机定时器2的使用

/*----------------------------------------------- 名称:定时器2 内容:通过定时让LED灯闪烁,数据口为:P0口 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sfr T2MOD=0xC9; //定时器2模式控制寄存器地址;可以在头文件中定义 /*------------------------------------------------ 定时器初始化子程序 ------------------------------------------------*/ void T2_init(void) { T2CON=0; //配置定时器2控制寄存器,这里其实不用配置,T2CON上电默认就是0,这里赋值只是为了演示这个寄存器的配置 T2MOD=0; //配置定时器2工作模式寄存器,这里其实不用配置,T2MOD 上电默认就是0,这里赋值只是为了演示这个寄存器的配置 RCAP2H = (65536-60000)/256;//晶振12M 60ms 16bit 自动重载 RCAP2L = (65536-6000)%256; ET2=1; //打开定时器中断 EA=1; //打开总中断 TR2=1; //打开定时器开关 } /*------------------------------------------------ 主程序 ------------------------------------------------*/ main() { T2_init(); while(1); } /*------------------------------------------------ 定时器中断子程序 ------------------------------------------------*/ void T2_ISR(void) interrupt 5 using 1//定时器2中断 { //自动重装,无需再次赋初值! TF2=0;//!!!注意!!! 定时器2必须由软件对溢出标志位清零,硬件不能清零,这里与定时器0和定时器1不同!!! P0=~P0; }

基于单片机的数字时钟

郑州科技学院 《单片机原理及应用》课程设计

目 录 0 引言3 1 设计方案4 2 系统设计7 2.1 硬件原理12 2.2 软件原理16 3 实验与仿真19 4 结论21 参考文献22 附录1 程序23 附录2 仿真电路图26 0 引言 近年来,随着电子产品的发展,随着社会竞争的激烈,人们对数字时钟的要求越来越高。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间,忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 因此从人们的日常生活到工厂的自动控制,从民用时钟到科学发展所需的时钟,现代人对时间的精度和观察时间的方便有了越来越多的需求。人们要求随时随地都能快速准确的知道时间,并且要求时钟能够更直观、更可靠、价格更便宜。这种要求催生了新型时钟的产生。 除此之外,由于对社会责任的更多承担,人们要求所设计的产品能够产生尽量少的垃圾、能够消耗尽量少的能量。因此人们对时钟的又有

了体积小、功耗低的要求。 传统的机械表由于做工的高精细要求,造价的昂贵,材料的限制,时间指示精度的限制,使用寿命方面,以及其它方面的限制,已不能满足人们的需求。另外,近些年随着科技的发展和社会的进步,人们对时钟的要求也越来越高,而使得新型电子钟表成了大势所趋。 另外单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 1 设计方案 1.1 任务及要求 ①通过单片机内定时器控制走时,准确持续走时,调时不影响走时。 ②在八个数码管上显示时、分、秒及两个小数点。 ③含有闹钟功能,可以选择闹钟开关,可以设定闹铃时间。 ④到达闹钟时刻蜂鸣器警报,可以关掉警报。 1.2 系统功能说明 电子钟的格式为:XX.XX.XX ,由左向右分别为:时、分、秒。完成显示由秒01一直加1至59,再恢复为00;分加1,由00至01,一直加1至59,再恢复00;时加1,时由00加至23之后秒、分、时全部清清零。该钟使用T0作250us的定时中断。 走时调整:走时过程中直接调整且不影响走时准确性,按下时间选择键对“时、分、秒”显示进行调整,每按一下时间加,即加1,时间减,即减1。

STC89C52单片机定时器2的使用

52单片机有3个定时器,T2是一个16位自动重载的,像T0和T1的方式2一样,只不过它是16位重载,如果作为计数器或定时用,中断用的是5,就是interrupt 5,T2的引脚是P1.0口。P1.0作为I/O 口用了以后T2计数是不行了,不过定时或是作为串口时钟还是可以的。 T2CON(T2的控制寄存器),字节地址0C8H: 0CFH 0CEH 0CDH 0CCH 0CBH 0CAH 0C9H 0C8H TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RT2 各位的定义如下: TF2:定时/计数器2溢出标志,T2溢出时置位,并申请中断。只能用软件清除,但T2作为波特率发生器使用的时候,(即RCLK=1或TCLK=1),T2溢出时不对TF2置位。 EXF2:当EXEN2=1时,且T2EX引脚(P1.0)出现负跳变而造成T2的捕获或重装的时候,EXF2置位并申请中断。EXF2也是只能通过软件来清除的。RCLK:串行接收时钟标志,只能通过软件的置位或清除;用来选择T1(RCLK=0)还是T2(RCLK=1)来作为串行接收的波特率产生器 TCLK:串行发送时钟标志,只能通过软件的置位或清除;用来选择T1(TCLK=0)还是T2(TCLK=1)来作为串行发送的波特率产生器 EXEN2:T2的外部允许标志,只能通过软件的置位或清除;EXEN2=0:禁止外部时钟触发T2;EXEN2=1:当T2未用作串行波特率发生器时,允许外部 时钟触发T2,当T2EX引脚输入一个负跳变的时候,将引起T2的捕获 或重装,并置位EXF2,申请中断。 TR2:T2的启动控制标志;TR2=0:停止T2;TR2=1:启动T2 C/T2:T2的定时方式或计数方式选择位。只能通过软件的置位或清除;C/T2=0:选择T2为定时器方式;C/T2=1:选择T2为计数器方式,下降沿触发。CP/RT2:捕获/重装载标志,只能通过软件的置位或清除。CP/RT2=0时,选择重装载方式,这时若T2溢出(EXEN2=0时)或者T2EX引脚(P1.0)出现负跳变

基于单片机及时钟芯片DS1302的电子时钟设计

目录 摘要 一、引言 (1) 二、硬件电路设计 (2) 2.1 主要芯片 (2) 2.1.1 微处理器 (2) 2.1.2 DS1302简介 (4) 2.1.3 DS1302引脚说明 (5) 2.1.4 74ls245简介及引脚说明 (5) 2.2 时钟硬件电路设计 (6) 2.2.1 时钟电路设计 (7) 2.2.2 整点报时功能 (8) 2.2.3 硬件原理图 (9) 三、proteus和keil软件仿真及调试 (9) 3.1 电路的仿真 (9) 3.2 软件调试 (9) 四、C语言程序 (10) 五、参考文献 (13)

电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。 本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。本设计应用AT89C52芯片作为核心,6位LED数码管显示,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能。这种实现方法的优点是电路简单,性能可靠,实时性好,时间精确,操作简单,编程容易。 本设计主要为实现一款可正常显示时钟/日历、带有定时闹铃的多功能电子时钟。该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。 关键词:电子钟;多功能;AT89C52;时钟芯片

一、引言 时间是人类生活必不可少的重要元素,如果没有时间的概念,社会将不会有所发展和进步。从古代的水漏、十二天干地支,到后来的机械钟表以及当今的石英钟,都充分显现出了时间的重要,同时也代表着科技的进步。致力于计时器的研究和充分发挥时钟的作用,将有着重要的意义。 1.1 多功能电子时钟研究的背景和意义 20世纪末,电子技术获得了飞速的发展。在其推动下,现代电子产品几乎渗透到了社会的各个领域,有力的推动和提高了社会生产力的发展与信息化程度,同时也使现代电子产品性能进一步提升,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂容易使人忘记当前的时间。然而遇到重大事情的时候,一旦忘记时间,就会给自己或他人造成很大麻烦。平时我们要求上班准时,约会或召开会议必然要提及时间;火车要准点到达,航班要准点起飞;工业生产中,很多环节都需要用时间来确定工序替换时刻。所以说能随时准确的知道时间并利用时间,是我们生活和工作中必不可少的[1]。 电子钟是采用电子电路实现对时、分、秒进行数字显示的计时装置,广泛应用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、0按时自动打铃、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。

单片机定时器设计

摘要 摘要 随着时代的进步,电子行业的发展,定时器的应用也越来越广泛,单片机以其强大的功能,成为许多功能电子产品的首选。本次电子定时器电路根据设计要求采用AT89C51单片机来实现最大99秒倒计时,采用两位数码管显示。文章的核心主要是硬件介绍及连接和软件编程两个大的方面。硬件电路主要包括AT89C51、晶振电路、数码管,发光二级管,按键。软件用汇编语言实现,主要包括主程序、倒计时、重启控制程序等软件模块。采用软硬件配合基本能实现设定定时时间倒计时功能,达到了设计的要求和目的。并在Proteus软件上进行了仿真和调试。 关键词 AT89C51单片机;定时器;倒计时

目录 摘要…………………………………………………………………………………………… 第一章绪论......................................................... 1.1定时器的发展................................................. 1.2 电子定时器的应用............................................... 1.3选题的目的和意义................................................ 1.4 本章小结 第二章单片机的基础知识 (3) 2.1单片机简介 (3) 2.2单片机的特点 (3) 2.3 本章小节 第三章功能实现及硬件介绍 (4) 3.1 设计功能实现 (4) 3.2 C51单片机引脚介绍 (9) 3.3时钟和复位电路 3.4数码管显示 (10) 3.5键盘 (12) 3.6电气原理图……………………………………………………… 3.7本章小结 第四章软件设计 (15) 4.1 程序流程图 (15) 4.2定时1秒设计 (16) 4.3重新启动 (17) 4.4程序 (17) 4.5 本章小结 结论................................................................ 参考文献............................................................ 致谢.........................................................................

相关主题