文档库 最新最全的文档下载
当前位置:文档库 › FPGA的电子时钟显示程序

FPGA的电子时钟显示程序

FPGA的电子时钟显示程序
FPGA的电子时钟显示程序

/*========================================================================== *名称:可调电子时钟程序

*功能:电子时钟显示实验

*接口:

*说明:黑金II代FPGA开发板,一个主程序,两个子程序。

*编者时间: Ye.FuYao 2014-04-28 CycioneⅡEP2C8Q208C8

*===========================================================================*/ //主程序

module main(clk,RSTn,KEY,duan_xuan,wei_xuan);

//外部接口

input clk,RSTn; //时钟,复位输入

input [3:0]KEY; //物理按键key_in按为0,松开为1

output [7:0]duan_xuan;//数码管段选输出

output [5:0]wei_xuan; //数码管位选输出

//时钟//初始化时间

reg [7:0]hour=8'd12;//时

reg [7:0]min=8'd0; //分

reg [7:0]sec=8'd0; //秒

wire [3:0]key_val;//按键值

//调用子程序,获取按键值

key_value U1(.clk(clk),.RSTn(RSTn),.Key_in(KEY),.key_val(key_val));//key_val返回的按键值

//秒定时器

parameter T1S=25'd19_999_999;//定时值

reg [24:0]Count1; //计数值

always

@(posedge clk or negedge RSTn)

begin

if(!RSTn)

Count1<=25'd0;

else if(Count1==T1S)

Count1<=25'd0;

else

Count1<=Count1+1'b1;//脉冲累加end

//计算时间

always

@(posedge clk or negedge RSTn)

begin

if(!RSTn)

sec<=8'd0;

//秒计时器

else if(Count1 == T1S) //脉冲数满足T1S begin

if(sec < 8'd60) //0~59

begin

sec = sec+8'd1; //秒加1

if(sec == 8'd60)//第60秒

begin

sec = 8'd0;

if(min < 8'd60) //0~59

begin

min = min+8'd1; //分加1

if(min == 8'd60)//第60分

begin

min = 8'd0;

if(hour < 8'd24)//0~23

begin

hour=hour+8'd1; //时加1

if(hour == 8'd24)//第24时

hour = 8'd0;

end

end

end

end

end

end

//调时间,这段可以不用,直接初始化赋值

else if(key_val==4'd4) //key4按下

begin

if(hour<8'd23)

hour<=hour+8'd1;//+1

else

hour<=8'd0;

end

else if(key_val==4'd3) //key3按下begin

if(hour>8'd0)

hour<=hour-8'd1;//-1

else

hour<=8'd23;

end

else if(key_val==4'd2) //key2按下begin

if(min>0)

min<=min-8'd1; //+1

else

min<=8'd59;

end

else if(key_val==4'd1) //key1按下begin

if(min<8'd59)

min<=min+8'd1; //-1 else

min<=8'd0;

end

//调时结束

end

/*========================================================================== *名称:调用六位数码管显示子程序

*功能:

*输入:clk, RSTn, sec, min, hour, duan_xuan, wei_xuan

*输出:duan_xuan, wei_xuan

*==========================================================================*/ display_LED U2

(

.clk(clk),

.RSTn(RSTn),

.sec(sec),.min(min),.hour(hour), //input-时间参数

.duan_xuan(duan_xuan),.wei_xuan(wei_xuan) //in_out-段选位选

);

endmodule//==================================================================

/*========================================================================== *名称:电子时钟子程序

*功能:六位数码管显示时钟

*接口:

*说明:

*编者时间: Ye.FuYao 2014-04-23 CycioneⅡEP2C8Q208C8

*===========================================================================*/ //电子时钟子程序

module display_LED(clk,RSTn,sec,min,hour,duan_xuan,wei_xuan);

input clk,RSTn; //时钟,复位输入

//时分秒

input [7:0]sec;

input [7:0]min;

input [7:0]hour;

output [7:0]duan_xuan;//数码管段选输出

output [5:0]wei_xuan; //数码管位选输出

reg [7:0]duan_xuan;

reg [5:0]wei_xuan;

//段选码表

reg [7:0] SMG[9:0]; //10个8位的数组

initial

begin

SMG[0]<=8'hc0;

SMG[1]<=8'hf9;

SMG[2]<=8'ha4;

SMG[3]<=8'hb0;

SMG[4]<=8'h99;

SMG[5]<=8'h92;

SMG[6]<=8'h82;

SMG[7]<=8'hf8;

SMG[8]<=8'h80;

SMG[9]<=8'h90;

end

//位选码表

reg [5:0] wei[5:0]; //6个6位的数组

initial

begin

wei[0]<=6'b111_110;

wei[1]<=6'b111_101;

wei[2]<=6'b111_011;

wei[3]<=6'b110_111;

wei[4]<=6'b101_111;

wei[5]<=6'b011_111;

end

//====================================================== //分离数据

reg [3:0]rsec_One; //0~9

reg [3:0]rsec_Ten; //0~9

reg [3:0]rmin_One;

reg [3:0]rmin_Ten;

reg [3:0]rhour_One;

reg [3:0]rhour_Ten;

always

@(posedge clk or negedge RSTn)

begin

if(!RSTn)

begin

rsec_Ten<=4'd0;

rsec_One<=4'd0;

end

else

begin

rsec_Ten<=sec /10; //取十位

rsec_One<=sec %10; //取个位

rmin_Ten<=min /10; //取十位

rmin_One<=min %10; //取个位

rhour_Ten<=hour /10; //取十位

rhour_One<=hour %10; //取个位

end

end

//====================================显示

//扫描定时器

parameter T4MS = 17'd59_999; //4ms/20M*0.004=80000 reg [16:0]Count2;

always

@(posedge clk or negedge RSTn)

begin

if(!RSTn)

Count2 <= 17'd0;

else if(Count2 == T4MS)

Count2 <= 17'd0;

else

Count2 <= Count2 + 17'd1;

end

//标志位

reg [3:0]t=0; //0~7

reg [31:0]rData=0; //暂存数据

//送数据

always

@(posedge clk or negedge RSTn)

begin

if(!RSTn)//复位

begin

t <= 4'd0;

rData<=32'd0;

duan_xuan<=8'b1111_1111;

wei_xuan<=6'b111_111;

end

else if(t == 4'd7) //标志清0

t <= 4'd0;

else if(Count2 == T4MS) //等于4MS,标志位变化begin

case(t)

4'd5: rData<=rhour_Ten;

4'd0: rData<=rhour_One;

4'd1: rData<=rmin_Ten;

4'd2: rData<=rmin_One;

4'd3: rData<=rsec_Ten;

4'd4: rData<=rsec_One;

endcase

if(t < 4'd6) //0~5次

begin

duan_xuan <= SMG[rData]; //送段选

wei_xuan <= wei[t]; //送位选

end

if(t == 4'd6) //第6次,秒闪

begin

if(rsec_One%2)

begin

duan_xuan <= 8'h7f; //送段选

wei_xuan <= wei[1]; //送位选

end

else

begin

duan_xuan <= 8'hff; //送段选

wei_xuan <= wei[1]; //送位选

end

end

t <= t + 1'b1; //标志加1

end

end

endmodule

/*===================================================================================== *名称:按键子程序

*功能:

*接口:

*说明:物理按键key_in按为0,松开为1

*说明:参考https://www.wendangku.net/doc/f514673295.html,/yuphone/archive/2010/03/13/1684999.html

*编者时间: Ye.FuYao 2014-04-26 CycioneⅡEP2C8Q208C8

*=====================================================================================*/ //按键子程序

module key_value(clk,RSTn,Key_in,key_val);

input clk,RSTn;

input [3:0]Key_in; //读取按键

output [3:0]key_val; //返回按键值

reg [3:0]key_val;

//①按下开始

reg [3:0]key_samp1,key_samp1_locked;

always @(posedge clk or negedge RSTn)

if(!RSTn)

begin

key_samp1 <= 4'b1111;

key_samp1_locked <= 4'b1111;

end

else

begin

key_samp1 <= Key_in; //同一脉冲,现态(如按键Key_in[0]按下1110)

key_samp1_locked <= key_samp1;//同一脉冲,原态(如无按键按下1111)end

//当key_samp1由1变为0时

//key_changed1由0变为1,只维持一个时钟周期,下个周期key_changed1还是0;

wire [3:0]key_changed1; //按下标志

assign key_changed1 = key_samp1_locked & (~key_samp1); //目的:一有按键按下就标记一次//②延时20ms

reg [3:0]key_samp2,key_samp2_locked;

parameter T20MS=19'd399_999;

reg [18:0]count;

always @(posedge clk or negedge RSTn)

if(!RSTn)

count<=19'd0;

else if(key_changed1) //按键按下开始清一次0

count<=19'd0;

else

count<=count+1'b1; //按键按下直到按键松开,如果没有抖动

//③再次判断

//只有当按键不变化(不抖动),且维持20ms以上时

//才将i_key采集至key_samp2

always @(posedge clk or negedge RSTn)

if(!RSTn)

key_samp2<=4'b1111;

else if(count == T20MS) //20ms后,再判断

key_samp2<=Key_in;

always @(posedge clk or negedge RSTn)

if(!RSTn)

key_samp2_locked<=4'b1111;

else

key_samp2_locked<=key_samp2;

//当key_samp1由1变为0时

//key_changed1由0变为1,只维持一个时钟周期,下个周期key_changed1还是0;

wire [3:0]key_changed2;

assign key_changed2 = key_samp2_locked & (~key_samp2); //注意:这里按下为1松开为0 !!//④每次按键稳定后,输出键值

always @(posedge clk or negedge RSTn)

if(!RSTn)

key_val <= 4'b0;

else

case(key_changed2)

4'b0001: key_val <= 4'd1; //key1按下为4'd1

4'b0010: key_val <= 4'd2; //key2按下为4'd2

4'b0100: key_val <= 4'd3; //key3按下为4'd3

4'b1000: key_val <= 4'd4; //key4按下为4'd4

default: key_val <= 4'd0; //没有按键按下4'd0

endcase

endmodule//================================================================== //一个主程序,两个子程序,结束

单片机电子时钟程序

程序开始 ORG 0000H AJMP MAIN ORG 000BH AJMP CLOCK ORG 0100H 主程序开始: MAIN: MOV SP,#70H MOV 6EH,#00H ;显示缓存器初始值设定 MOV 6DH,#00H MOV 6CH,#00H MOV 6BH,#00H MOV 6AH,#00H MOV 69H,#00H MOV 50H,#00H ;秒,分,小时初始值设定 MOV 51H,#00H MOV 52H,#00H MOV DPTR,#0F003H ;8255端口定义,PA,PB为输出 MOV A,#80H MOVX @DPTR,A MOV 4FH,#00H MOV TMOD,#01H ;定时器T0及TL0,TH0初始值设定 MOV TH0,#3CH MOV TL0,#0B0H SETB EA ;开总中断 SETB ET0 ;开定时器中断 SETB TR0 循环程序开始,并显示时间: START: MOV A,50H LCALL BCD MOV 6AH,A ;显示秒十位 MOV 69H,B ;显示秒个位 MOV A,51H LCALL BCD MOV 6CH,A ;显示分十位 MOV 6BH,B ;显示分个位 MOV A,52H LCALL BCD ;调用十六进制至BCD码转换子程序 MOV 6EH,A MOV 6DH,B LCALL DIS ;调用显示子程序 LCALL KEY ;调用键盘子程序 AJMP START ;主程序结束

BCD: MOV B,#0AH ;BCD码转换子程序 DIV AB RET CLOCK: PUSH ACC ;保护现场 PUSH PSW CLR TR0 MOV TH0,#3CH ;定时参数重新设置 MOV TL0,#0B0H SETB TR0 INC 4FH ;100ms单元加1 MOV A,4FH CJNE A,#0AH,D0 ;100ms单元=10,就秒单元加1 MOV 4FH,#00H ;100ms单元内容清0 MOV A,50H ADD A,#01H ;秒单元加1 MOV 50H,A CJNE A,#3CH,D0 ;秒单元内容=60,则秒单元清0 MOV 50H,#00H MOV A,51H ;分,时单元代码 ADD A,#01H MOV 51H,A CJNE A,#3CH,D0 MOV 51H,#00H MOV A,52H ADD A,#01H LCALL RING ;报警子程序 MOV 52H,A CJNE A,#18H,D0 MOV 52H,#00H D0: POP PSW ;出栈,退出中断子程序 POP ACC RETI RING: MOV R3,A CLR P1.0 LCALL DELL50 SETB P1.0 LCALL DELL50 DJNZ R3,RING RET 键盘子程序: KEY: JB P1.7,MSET ;秒设定子程序 LCALL DELL ;防抖动延时 JB P1.7,MSET INC 50H

FPGACPLD数字电路设计经验

FPGA/CPLD数字电路设计经验分享 摘要:在数字电路的设计中,时序设计是一个系统性能的主要标志,在高层次设计方法中,对时序控制的抽象度也相应提高,因此在设计中较难把握,但在理解RTL电路时序模型的基础上,采用合理的设计方法在设计复杂数字系统是行之有效的,通过许多设计实例证明采用这种方式可以使电路的后仿真通过率大大提高,并且系统的工作频率可以达到一个较高水平。 关键词:FPGA数字电路时序时延路径建立时间保持时间 1 数字电路设计中的几个基本概念: 1.1 建立时间和保持时间: 建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。PLD/FPGA开发软件可以自动计算两个相关输入的建立和保持时间 注:在考虑建立保持时间时,应该考虑时钟树向后偏斜的情况,在考虑建立时间时应该考虑时钟树向前偏斜的情况。在进行后仿真时,最大延迟用来检查建立时间,最小延时用来检查保持时间。 建立时间的约束和时钟周期有关,当系统在高频时钟下无法工作时,降低时钟频率就可以使系统完成工作。保持时间是一个和时钟周期无关的参数,如果设计不合理,使得布局布线工具无法布出高质量的时钟树,那么无论如何调整时钟频率也无法达到要求,只有对所设计系统作较大改动才有可能正常工作,导致设计效率大大降低。因此合理的设计系统的时序是提高设计质量的关键。在可编程器件中,时钟树的偏斜几乎可以不考虑,因此保持时间通常都是满足的。

基于FPGA的数字时钟的设计1

基于FPGA的数字时钟的设计课题: 基于FPGA的数字时钟的设计 学院: 电气信息工程学院 专业: 测量控制与仪器 班级 : 08测控(2)班 姓名 : 潘志东 学号 : 08314239 合作者姓名: 颜志林 2010 年12 月12 日

综述 近年来随着数字技术的迅速发展,各种中、大规模集成电路在数字系统、控制系统、信号处理等方面都得到了广泛的应用。这就迫切要求理工科大学生熟悉与掌握常用中、大规模集成电路功能及其在实际中的应用方法,除通过实验教学培养数字电路的基本实验方法、分析问题与故障检查方法以及双踪示波器等常用仪器使用方法等基本电路的基本实验技能外,还必须培养大学生工程设计与组织实验能力。 本次课程设计的目的在于培养学生对基本电路的应用与掌握,使学生在实验原理的指导下,初步具备基本电路的分析与设计能力,并掌握其应用方法;自行拟定实验步骤,检查与排除故障、分析与处理实验结果及撰写实验报告的能力。综合实验的设计目的就是培养学生初步掌握小型数字系统的设计能力,包括选择设计方案,进行电路设计、安装、调试等环节,运用所学知识进行工程设计、提高实验技能的实践。数字电子钟就是一种计时装置,它具有时、分、秒计时功能与显示时间功能;具有整点报时功能。 本次设计我查阅了大量的文献资料,学到了很多关于数字电路方面的知识,并且更加巩固与掌握了课堂上所学的课本知识,使自己对数字电子技术有了更进一步的认识与了解。

1、课题要求 1、1课程设计的性质与任务 本课程就是电子与信息类专业的专业的专业基础必修课——“数字电路”的配套实验课程。目的在于培养学生的理论联系实际,分析与解决问题的能力。通过本课程设计,使学生在理论设计、计算机仿真、指标调测、故障排除等方面得到进一步的训练,加强学生的实践能力。学生通过设计、仿真、调试、撰写设计报告等过程,培养学生的动手能力与严谨的工作作风。 1、2课程设计的基本技术要求 1)根据课题要求,复习巩固数字电路有关专业基础知识; 2)掌握数字电路的设计方法,特别就是熟悉模块化的设计思想; 3) 掌握QUARTUS-2软件的使用方法; 4) 熟练掌握EDA工具的使用,特别就是原理图输入,波形仿真,能对仿真波形进行分析; 5) 具备EDA技术基础,能够熟练使用VHDL语言进行编程,掌握层次化设计方法; 6) 掌握多功能数字钟的工作原理,学会不同进制计数器及时钟控制电路的设计方法; 7) 能根据设计要求对设计电路进行仿真与测试; 8) 掌握将所设计软件下载到FPGA芯片的下载步骤等等。 9) 将硬件与软件连接起来,调试电路的功能。 1、3课程设计的功能要求 基本功能:能进行正常的时、分、秒计时功能,分别由6个数码管显示24小时,60分钟,60秒钟的计数器显示。 附加功能:1)能利用硬件部分按键实现“校时”“校分”“清零”功能; 2)能利用蜂鸣器做整点报时:当计时到达59’59’’时开始报时, 鸣叫时间1秒钟; 3)定时闹铃:本设计中设置的就是在七点时进行闹钟功能,鸣叫 过程中,能够进行中断闹铃工作。 本人工作:负责软件的编程与波形的仿真分析。 2、方案设计与分析

电子时钟单片机【完整版】

烟台南山学院 单片机课程设计题目电子时钟 姓名: 所在学院 所学专业: 班级: 学号: 指导教师: 完成时间:

随时代的发展,生活节奏的加快,人们的时间观念愈来愈强;随自动化、智能化技术的发展,机电产品的智能度愈来愈高,用到时间提示、定时控制的地方也会愈来愈多,因此,设计开发数字时钟具有良好的应用前景。 由于单片机价格的低成本、高性能,在自动控制产品中得到了广泛的应用。本设计利用Atmel公司的AT89S52单片机对电子时钟进行开发,设计了实现所需功能的硬件电路,应用汇编语言进行软件编程,并用实验板进行演示、验证。 在介绍本单片机的发展情况基础上,说明了本设计实现的功能,以及实验板硬件情况,并对各功能电路进行了分析。主要工作放在软件编程上,用实验板实现时间、日期、定时及它们的设定功能,详细对软件编程流程以及调试进行了说明,并对计时误差进行了分析及校正,提出了定时音与显示相冲突问题及解决方案。实验证明效果良好,可以投入使用。 本次仿真设计的目的就是让同学们在理论学习的基础上,通过完成一个涉及MCS—51单片机都种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。在本学期的开始我们进行了计算机工程实践,在实践中我们以微机原理与接口技术课程中所学知识为基础,设计了电子时钟系统。本系统为多功能数字钟的系统。本设计以单片机AT89c51为控制核心,选用DS1302串行时钟芯片,RT1602液晶显示器实现液晶显示当前时间、日期、星期。本电子时钟具有日期、时、分、秒的显示、调整功能,采用的时间制式为24小时制,时间显示格式为时(十位、个位)、分(十位、个位)、秒(十位、个位)。 关键词:单片机 AT89S52 电子时钟汇编语言

FPGA的数字电路设计综述

封面

作者:PanHongliang 仅供个人学习 1 数字电子基础4 1.1 导读4 1.2 数字电路概述4 1.2.1 数字信号与数字电路4 1.2逻辑函数及其表示方法5 1.2.1逻辑代数5

1.2.2逻辑函数的表示方法及相互转换5 1.3逻辑函数的公式化简法6 1.3.1逻辑函数的不同表达方式6 1.3.2逻辑函数的公式化简法6 1.4逻辑函数的卡诺图化简法7 1.4.1逻辑函数的最小项及其表达式7 1.4.2逻辑函数的卡诺图表示法7 1.4.3用卡诺图化简逻辑函数8 2逻辑门电路8 2.1 导读8 2.1逻辑门电路9 2.1.1三种基本门电路9 2.1.2 DTL与非门10 2.2 TTL逻辑门电路10 2.2.1 TTL与非门的电路结构10 2.2.2 TTL与非门的工作原理10 2.3 其他类型的TTL门电路11 2.3.1集电极开路与非门(OC门)11 2.3.2三态门(TSL门)11 2.4多余输入端的处理12 3组合逻辑13 3.1 导读13 3.2组合逻辑电路基础13 3.2.1组合逻辑电路的基本概念13 3.2.2组合逻辑电路的分析方法14 3.2.3组合逻辑电路的设计方法14 3.3常用组合逻辑建模14 3.3.1编码器14 3.3.2 译码器和数据分配器16 3.3.3数据选择器18 3.3.4数值比较器19 3.3.5加法器(减法器)20 3.3.6乘法器22 3.3.7除法器24 4触发器24 4.1导读24 4.2触发器的电路结构及工作原理24 4.2.1基本RS触发器(异步)24 4.2.2同步RS触发器25 4.2.3主从触发器和边沿触发器26 4.3触发器的功能分类及相互转换27 4.3.1触发器的功能分类27 4.3.2不同类型时钟触发器的相互转换28 5时序逻辑电路29

8位数码管显示电子时钟c51单片机程序

8位数码管显示电子时钟c51单片机程序 时间:2012-09-10 13:52:26 来源:作者: /* 8位数码管显示时间格式05—50—00 标示05点50分00秒 S1 用于小时加1操作 S2 用于小时减1操作 S3 用于分钟加1操作 S4 用于分钟减1操作 */ #include sbit KEY1=P3^0; //定义端口参数 sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3; sbit LED=P1^2; //定义指示灯参数 code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管0—9 unsigned char StrTab[8]; //定义缓冲区 unsigned char minute=19,hour=23,second; //定义并初始化为12:30:00 void delay(unsigned intt) { while(--cnt); } /******************************************************************/ /* 显示处理函数 */ /******************************************************************/ void Displaypro(void) { StrTab[0]=tab[hour/10]; //显示小时 StrTab[1]=tab[hour%10]; StrTab[2]=0x40; //显示"-" StrTab[3]=tab[minute/10]; //显示分钟 StrTab[4]=tab[minute%10]; StrTab[5]=0x40; //显示"-" StrTab[6]=tab[second/10]; //显示秒 StrTab[7]=tab[second%10]; } main()

基于FPGA的数字时钟的设计1

基于FPGA 的数字时钟的设计 课 题: 基于FPGA 的数字时钟的设计 学 院: 电气信息工程学院 专 业 : 测量控制与仪器 班 级 : 08测控(2)班 姓 名 : 潘 志 东 学 号 : 08314239 合作者姓名: 颜志林 2010 年 12 月 12 日

综述 近年来随着数字技术的迅速发展,各种中、大规模集成电路在数字系统、控制系统、信号处理等方面都得到了广泛的应用。这就迫切要求理工科大学生熟悉和掌握常用中、大规模集成电路功能及其在实际中的应用方法,除通过实验教学培养数字电路的基本实验方法、分析问题和故障检查方法以及双踪示波器等常用仪器使用方法等基本电路的基本实验技能外,还必须培养大学生工程设计和组织实验能力。 本次课程设计的目的在于培养学生对基本电路的应用和掌握,使学生在实验原理的指导下,初步具备基本电路的分析和设计能力,并掌握其应用方法;自行拟定实验步骤,检查和排除故障、分析和处理实验结果及撰写实验报告的能力。综合实验的设计目的是培养学生初步掌握小型数字系统的设计能力,包括选择设计方案,进行电路设计、安装、调试等环节,运用所学知识进行工程设计、提高实验技能的实践。数字电子钟是一种计时装置,它具有时、分、秒计时功能和显示时间功能;具有整点报时功能。 本次设计我查阅了大量的文献资料,学到了很多关于数字电路方面的知识,并且更加巩固和掌握了课堂上所学的课本知识,使自己对数字电子技术有了更进一步的认识和了解。

1、课题要求 1.1课程设计的性质与任务 本课程是电子与信息类专业的专业的专业基础必修课——“数字电路”的配套实验课程。目的在于培养学生的理论联系实际,分析和解决问题的能力。通过本课程设计,使学生在理论设计、计算机仿真、指标调测、故障排除等方面得到进一步的训练,加强学生的实践能力。学生通过设计、仿真、调试、撰写设计报告等过程,培养学生的动手能力和严谨的工作作风。 1.2课程设计的基本技术要求 1)根据课题要求,复习巩固数字电路有关专业基础知识; 2)掌握数字电路的设计方法,特别是熟悉模块化的设计思想; 3) 掌握QUARTUS-2软件的使用方法; 4) 熟练掌握EDA工具的使用,特别是原理图输入,波形仿真,能对仿真波形进行分析; 5) 具备EDA技术基础,能够熟练使用VHDL语言进行编程,掌握层次化设计方法; 6) 掌握多功能数字钟的工作原理,学会不同进制计数器及时钟控制电路的设计方法; 7) 能根据设计要求对设计电路进行仿真和测试; 8) 掌握将所设计软件下载到FPGA芯片的下载步骤等等。 9) 将硬件与软件连接起来,调试电路的功能。 1.3课程设计的功能要求 基本功能:能进行正常的时、分、秒计时功能,分别由6个数码管显示24小时,60分钟,60秒钟的计数器显示。 附加功能:1)能利用硬件部分按键实现“校时”“校分”“清零”功能; 2)能利用蜂鸣器做整点报时:当计时到达59’59’’时开始报时,鸣叫时间1秒钟; 3)定时闹铃:本设计中设置的是在七点时进行闹钟功能,鸣叫过程中,能够进行中断闹铃工作。 本人工作:负责软件的编程与波形的仿真分析。 2、方案设计与分析

电子时钟程序代码

#include #define uchar unsigned char #define uint unsigned int uchar code weixuan[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; //位选,控制哪个数码管亮。(从右到左) uchar code duanxuan[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf, 0xff}; //0-9,'-','灭' uchar data timedata[3]={0x00,0x00,0x00}; //时间缓冲区,分别为:秒、时、分。 uchar data datetime[8]={0xc0,0xc0,0xbf,0xc0,0xc0,0xbf,0xc0,0xc0}; //时间缓冲区,初始化显示00-00-00。 uchar tt1,tt2,tt,tt0,num=0; uchar flag,flag1,flag2,flash; sbit key1=P1^3; sbit key2=P1^5; sbit key3=P1^7; //**************延时函数********************************* void delay(uint del) { uchar i, j; for(i=0; i

可调电子时钟程序

#include unsigned char led[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0 x00,0xFF}; //用一维数组定义0-9 unsigned char a[4]; unsigned char second=0,minute=0,hour=12; unsigned char minute1=0,hour1=0,zdbs=0; unsigned char b[4]={0xFE,0xFB,0xEF,0xBF}; //扫描 unsigned char k=0; unsigned int temp; // 记录1000毫秒为1秒的变量 unsigned char M,S_flag,md=0; //M是模式,更新时间的4种模式加上正常模式S_flag闪烁标志 sbit K1=P3^0; //设置键 sbit K2=P3^1; //增加键 sbit K3=P3^2; //减少键 void delay(unsigned n) //0.2毫秒 { int x,y;

for(x=0;x

电子时钟程序设计

1.设计目的 电子时钟是采用数字电路实现对日期、时、分、秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。电子时钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便。不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。而且是控制的核心部分。因此,研究电子时钟及扩大其应用,有着非常现实的意义。 2.设计内容 2.1设计思想 针对要实现的功能,拟采用AT89C51单片机进行设计,AT89C51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚

结构。这样,既能做到经济合理又能实现预期的功能。 在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。程序可分为闹钟的声音程序、显示程序、闹钟显示程序、调时显示、定时程序。运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

2.2设计元件

2.3设计图

2.4设计程序 #include #include #include char data time[6]; void delay(unsigned char k); sbit check=P0^0; sbit inter0=P3^2; sbit inter1=P3^3; char data which=0; char data count=0; void smadd(unsigned char k); void smsub(unsigned char n); char code buf[]={ 0x00,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xff,0x6f }; char code sel[]= {0x01,0x02,0x04,0x08}; void main() { char i; for(i=0;i<500;i++); time[0]=0; time[1]=1; time[2]=8; time[3]=0; time[4]=2; time[5]=1; TMOD=0X01; TH0=(65535-5000)/256; TL0=(65535-5000)%256; IP=0x07; IE=0X87; TR0=1; while(1) { for(i=0;i<6;i++) { P1=sel[i]; P2=buf[time[i]] ; delay(10); } if(check==0) { delay(8); TR0=0;

verilog数字钟设计FPGA

一、课程设计目标 1. 熟悉并掌握verilog 硬件描述语言 ;

是 总模块: module clock(clk,reset,MODE,Alarm_ctr,BT2,H12_24,DSH,DSL,DMH,DML,DHH,DHL,dian,bao _signal,nao_signal); input clk;//50MHz input reset,MODE,Alarm_ctr,BT2,H12_24;//复位键,模式选择按钮,闹钟开关档,调节按钮,12—24小时切换档 output [7:0]DMH,DML,DHH,DHL; //4个数码管显示输入信号 output dian,bao_signal,nao_signal; //时分间隔点,报时信号,闹钟信号 output [3:0]DSH,DSL; //秒钟输出信号 wire [3:0] SH,SL,MH,ML,HH,HL; wire [3:0] LED_mode; wire [3:0] HH12,HL12,HH24,HL24,MH24,ML24,SH24,SL24;

wire [3:0] set_HH,set_HL,set_MH,set_ML; wire _1HZ,_10ms,_250ms,_500ms; wire Keydone1; wire Keydone2; wire co1,co11,co111,co2,co22,co222,set_co2; wire [3:0]mode_flag; assign dian=1'b0; devide_f u1(_1HZ,_10ms,_250ms,_500ms,reset,clk); //分频,得到4种不同频率的时钟信号 key_press u2(_10ms,MODE,Keydone1); //模式档按钮去抖动 key_press u20(_10ms,BT2,Keydone2); //调节按钮去除抖动 mode u3(Keydone1,mode_flag); //通过模式按钮产生不同模式second u4(_1HZ,reset,mode_flag,Keydone2,SH24,SL24,co1); //秒计时 minute u5(co11,reset,MH24,ML24,co2); //分计时 hour u6(co22,reset,HH24,HL24); //小时计时 SEG7_LUT u7(DML,ML); //4个数码管显示

基于STC89C52多功能电子时钟系统程序+原理图

一、设计任务 设计制作一台以控制器为核心的多功能电子时钟系统 二、设计要求: ①.系统具有3种工作模式状态(正常时钟显示模式、系统校准模式、秒表计时模式);系统所有功能,均能够通过上位PC机对其操作修改与实时动态显示。(PC主机端可利用高级语言进行人机界面设计) ②.在正常时钟显示模式时,时钟具有显示年、月、日、时、分、秒的功能。 ③.在正常时钟显示模式时,系统具有整点报时的功能,在离整点前10秒时,自动发出鸣叫声,步长1秒,每间隔1秒鸣叫一次,前4响是低音,后1响为高音,共鸣叫5次,最后1响结束时为整点。高音频率为1KHz; ④.在系统校准模式时,系统具有快速校准时间的功能。 ⑤.在秒表计时模式时,可兼做比赛时间记录表。秒表记时的精度为0.1秒,由3个键分别控制秒表的启动、清零、记录功能,可连续记录3组时间,并能够显示记录时间。 ⑥.系统显示器采用LCD液晶显示器1602或其它显示器件,并采用键盘对相关数据进行设置与操作。 原理图 设计制作一台以控制器为核心的多功能电子时钟系统 二、设计要求: ①.系统具有3种工作模式状态(正常时钟显示模式、系统校准模式、秒表计时模式);系统所有功能,均能够通过上位PC机对其操作修改与实时动态显示。(PC主机端可利用高级语言进行人机界面设计)

(注:此三种模式可以通过SET键盘来回切换,在正常时钟模式,第二排显示S:time,校准模式显示S:adjst,秒表模式,是TN~T3:四个秒表模式); ②.在正常时钟显示模式时,时钟具有显示年、月、日、时、分、秒的功能。 (注:这个已经全部显示了,含星期) ③.在正常时钟显示模式时,系统具有整点报时的功能,在离整点前10秒时,自动发出鸣叫声,步长1秒,每间隔1秒鸣叫一次,前4响是低音,后1响为高音,共鸣叫5次,最后1响结束时为整点。高音频率为1KHz; (注:这个都实现了,要验证的话就是将时钟调整到59分后验证即可) ④.在系统校准模式时,系统具有快速校准时间的功能。 (注:按SET键进入校正模式可以对时钟进行校正,UP向上,DOWN键向下,按STOP键保存退出,遗憾的是,这个正在调节的参数无法反白显示) ⑤.在秒表计时模式时,可兼做比赛时间记录表。秒表记时的精度为0.1秒,由3个键分别控制秒表的启动、清零、记录功能,可连续记录3组时间,并能够显示记录时间。 (注:按SET键进入秒表模式,按0K键启动,STOP键清零,按UP键记录,可以对100ms的定时器开始计时,最大999.9秒,按下UP键盘,则记录一个,总共记3个,T1-T3,按SET键退出) ⑥.系统显示器采用LCD液晶显示器1602或其它显示器件,并采用键盘对相关数据进行设置与操作。 乖乖,真的是1602显示的啊。 /******************************************/ /*File Name: main.c */ /*Function : The entrance of all fuctions */ /*Author : WuYingjian */ /*V ersion : V1.0 */ /*Date : 2012.11.03 */ /* All Rights Reserved. */ /******************************************/ #include #include #define uint unsigned int #define uchar unsigned char #define nop _nop_ void write_command(uchar tempdata);

基于FPGA 的数字系统设计

《基于FPGA的数字系统设计》项目设计项目名称: 电子密码锁 姓名:蒋流洲 院系:应用技术学院 专业: 09电子信息工程(应电应本) 学号: 200915254137 指导教师:徐正坤 完成时间: 2011年6月 30日

目录 1 项目名称、内容与要求………………………………………… 1页1.1 设计内容……………………………………………………… 1页 1.2 具体要求……………………………………………………… 1页 2 系统整体架构(Architecture Description)…………………1页2.1 设计思路……………………………………………………… 1页2.2 系统原理(包含:框图等阐述)与设计说明等内容…………2页 2.3 创新点与原创性内容………………………………………… 3页 3 系统设计 (含HDL 或原理图输入设计)……………………… 3页注:此部分包含主要逻辑单元、模块、源代码等内容 3.1 HDL 代码……………………………………………………… 3页 3.2 系统整体电路图(或RTL 级电路图)……………………… 11页 4 系统仿真(Simulation Waveform)……………………………12页 5 FPGA 实现(FPGA Implementation)………………………… 12页注:此处应包含硬件验证、操作过程、结果等说明 6 总结(Closing)……………………………………………… 15页参考书目(Reference):………………………………………… 16页

1项目名称、内容与要求 1.1 设计内容 实验板上有10个按键k1~k10,其中k1~k10作为密码输入按键,k10作为复位按键,一便重新开始输入的密码。当然,这个电子密码锁与实际的电子密码锁的设计有一些不一样,也许实际的电子密码锁并不设置复位按键,而是当密码输入错误后,延长很长一段时间才接受新密码的输入。 假设电子密码锁的密码为四位数3216。利用实验板上的一个数码管显示输入密码次数,当输入密码正确时,在数码管上显示字符“H”;当输入密码不正确时,在数码管上显示字符“E”。 1.2 具体要求 1﹞.具有密码输入功能。 2﹞.设置复位按键,以便重新输入新的密码。 3﹞.在数码管上显示输入密码次数。 4﹞.拒绝接受超过规定次数的密码输入信号。 5﹞.当密码输入正确时,在数码管上显示字符“H”;当密码输入不正确时,在数码管上显示字符“E”; 2 系统整体架构 2.1 设计思路 电子密码锁在生活中十分常见,在这我将设计一个具有较低成本的电子密码锁,本文讲述了我整个设计过程及收获。讲述了电子密码锁的的工作原理以及各个模块的功能,并讲述了所有部分的设计思

面向对象程序设计课程设计报告《电子时钟》C

目录

1 前言 时钟在人们日常生活中必不可少,时钟的原理是怎么样的呢,本程序将模拟一个电子时钟。为了使程序更加美观,本程序是使用Visual C++编写一个可视化的模拟电子时钟程序。电子时钟的关键在于延时,为了达到延时的准确性,不受程序执行时间的影响,采用了系统两秒之间的间隔进行延时。该程序还加入了显示星期功能,在知道1901年每月1号是星期几的情况下,再根据年、月、日即可算出星期几。 2需求分析 要求 设计类结构,模拟电子时钟的行走,在屏幕上显示一个活动时钟。 任务 (1)显示日期的格式:XXXX年XX月XX日 (2)显示时间的格式:XX:XX:XX。 (3)添加显示星期的格式:星期X 运行环境 (1)WINDOWS2000/XP系统 (2)Visual C++ 编译环境或DEV C++ 编译环境 开发工具 C++语言 3分析和设计 + 系统分析及设计思路 为了使程序的显示更加美观,该程序使用了C++可视化程序设计方法进行设计。在可视化程序设计中,建立了一个MFC单文档应用程序工程,该工程包括了视图类、文档类对话框类和主框架类。在主框架类中修改窗口等属性,使整个时间的

显示更加协调。模拟电子时钟是一个显示和计时的小程序,因此只要在视图类和文档类添加相关的属性和方法即可完成模拟电子时钟的功能。 文档类定义时钟的相关属性,包括int类型的year、month、day、hour、minute、second,和包括CString类型的str_year、str_month、str_day、str_hour、str_minute、str_second等信息。int类型的时间日期属性用以计算,CSrting类型的时间日期属性用以显示,通过CString类中的成员函数Formart可以把int型的数据转成CString型的。 视图类实现时钟的主要功能,在该类的OnDraw函数里面对时间日期进行显示输出。向窗口输出信息时,为了保证高刷新率下绘图不闪烁,使用内存绘图的方法,在内存中创建一个与屏幕绘图区域一致的对象,使得重绘视图时可以大大提高运行速度。为了使计时能够达到几乎无误差,使用了一个获取系统两秒间隔作为计时间隔的方法,使得计时间隔和系统时间间隔一致。每次重绘视图的时候都重新获取系统时间,当该两次获得的秒不一致时,就对时间加一秒。通过一个计时器消息,使视图50ms刷新一次,以保证时间的准确性。 在视图类中需要添加几个方法:用于计算时间的方法RunTime()、计算星期的方法Week()、int型转CString型的方法Change()、获取系统时间的方法GetDateTime()、重获系统时间方法OnReset()和计时器消息。 在计算时间日期的时候,每达到1秒的时候对second进行加1,然后判断是否达到60秒,达到的话minute就加1,同样的方法对hour、day、month和year进行计算,在对day计数时,考虑到大小月和闰年,对day进行加1时,判断是哪一月和是否为闰年。在确定年、月、日之后,使用函数Week()进行对星期几的计算,根据1901年每月1号是星期几可以得出现在是星期几。 在这个程序中,还使用了一个对话框类,使用对话框来对时间日期的设置。在菜单栏里添加一个“设置时间”的选项和一个菜单消息,当点击这个选项就会弹出设置时间日期的对话框,对话框中编辑控件设定了每个值的取值范围,从而对输入错误进行排除。 主要类图 图主要类图

电子时钟(完整)

概述:加入世贸组织以后,中国会面临激烈的竞争。这种竞争将是一场科技实力、 管理水平和人才素质的较量,风险和机遇共存。于是老师在单片机理论课程学习的基础上,为我们安排了一个涉及MCS—51单片机多种资源应用及具有综合功能的电子时钟设计。 关键字:显示时间定时温度采集系统仿真 1引言 《单片原理及应用》是一门技术性、应用性很强的学科,实践教学是它的一个极为重要的环节。不论是硬件扩展、接口应用还是编程方法、程序调试,都离不开实验教学。如果不在切实认真地抓好学生的实践技能的锻炼上下功夫,单凭课堂理论课学习,势必出现理论与实践脱节的局面。任随书本上把单片机技术介绍得多么重要、多么实用多么好用,同学们仍然会感到那只是空中楼阁,离自己十分遥远,或者会感到对它失去兴趣,或者会感到它高深莫测无从下手,这些情况都会令课堂教学的效果大打折扣。 本次仿真设计的目的就是让同学们在理论学习的基础上,通过完成一个涉及MCS —51单片机都种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。 该电子时钟不但具有定时作用还有温度采集作用。定时部分可以显示时、分、秒,而且用按键还可以实现时间的调整和闹铃的设定。温度采集部分实现环境温度数据的采集。 在上一学期进行的EDA课程设计中,同学们完成了单片机数据采集与定时系统的硬件电路设计。本次综合实践是在此基础上,焊接制作电路板,完成该系统的软件设计与调试。待仿真成功后,再将程序烧写入单片机中。 2 系统结构 整个电子时钟系统电路可分为五大部分:中央处理单元(CPU)、电源电路部分、显示部分、键盘输入部分、温度采集部分。 2.1 中央处理单元 CPU选用A T89C—2051对整个系统进行控制: 1)它将定时数据输出到LED,实现时间的显示; 2)根据键盘输入调用相应键处理子程序,实现时间的调整和闹铃的设定; 3)接收温度传感器输入的温度数据,进行一定的转换,然后输出到2位的LED

基于FPGA的数字电子时钟设计与实现

课程设计(论文)说明书 题目:基于FPGA的数字电子时 钟设计 院(系):信息与通信学院 专业:微电子学 学生姓名: 学号:0900240115 指导教师: 职称:实验师 2012 年12 月25 日

一、所用设备与器材 1.1仪器设备 使用仪器设备有FPGA DE2-70开发板、PC机、信号发生器。 图1 FPGA DE2-70开发板图 二.系统方案 2.1 设计思想 利用数字电子技术、EDA设计方法、FPGA等技术,设计、仿真并实现一个基于FPGA的数字电子时钟基本功能,其基本组成框图如图1所示,振荡器采用ALTERA的DE2-70实验板的50MHz输出,分频器将50MHz的方波进行分频进而得到1Hz的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。扩展功能设计为倒计时功能,从59分55秒至59分59秒,每秒亮一盏灯报时。 2.1.1课题背景 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力的推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能更进一步,产品更新换代的节奏也越来越快。 20世纪80年代末,出现了FPGA(Field Progrommable Gate Array),CAE 和CAD技术的应用更为广泛,它们在PCB设计的原理图输入,自动布局布线及PCB分析,以及逻辑设计,逻辑仿真布尔综合和化简等方面担任了重要的角色,

为电子设计自动化必须解决的电路建模,标准文档及仿真测试奠定了基础。硬件描述语言是EDA技术的重要组成部分,VHDL是作为电子设计主流硬件的描述语言。本论文就是应用VHDL语言来实现秒表的电路设计。VHDL语言是标准硬件描述语言,它的特点就是能形式化抽样表示电路结构及行为,支持逻辑设计中层次领域的描述,借用了高级语言的精巧结构简化电路描述,具有电路模拟与验证及保证设计的正确性,支持电路由高层向底层的综合变换,便于文档管理,易于理解和设计重用。 EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。 利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。 现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA 技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。EDA 设计可分为系统级、电路级和物理实现级。 用VHDL语言开发的流程: (1)文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。 通常VHDL文件保存为.vhd文件。 (2)功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完 成以后,进行时序仿真)。 (3)逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和信号的连接关系。逻辑综合软件会生成.edf (edif)的EDA工业标准文件。 (4)布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA内。

电子钟程序及原理图

基于51单片机电子钟设计 利用如图所示电路,设计一个电子钟,要求如下: 1)显示内容:时-分-秒 2)具有闹铃设定功能、时间调整功能 3)具有按键设置功能 一、显示内容 显示时间:用六位7段数码管 闹铃提示:用8个发光二极管 设置提示:用8个发光二极管 二、按键功能 P3.2——功能设置键; P3.3——显示区切换键; P3.4——“+”键; P3.5——“-”键。 设置提示显示要求: 1)正常显示状态,8个发光二极管全灭; 2)时间调整状态,P1.7亮; 3)闹铃设定状态,P1.7和P1.6亮。 显示时间要求: 1)显示时-分-秒,分三个显示区。 功能设置键K1是一个多功能键: 按第一次,进入时间调整状态 按第二次,进入闹铃设定状态 按第三次,退出设置状态,时钟正常显示。 备注:其他键在K1退出设置状态时无效。 显示区切换键K2: 在设置状态,用于切换不同的显示区,每按一次,将切换一次。 “+”键K3:在设置状态,用于对相应的显示区数字进行累加,每按一次,数字加1。 “-”键K4:在设置状态,用于对相应的显示区数字进行自减,每按一次,数字减1。程序: K1 BIT P3.2 K2 BIT P3.3 K3 BIT P3.4 K4 BIT P3.5 L1 BIT P1.7 L2 BIT P1.6 KEZT EQU 30H HOUR EQU 31H MINU EQU 32H SECO EQU 33H NHOU EQU 34H NMIN EQU 35H K2ZT EQU 36H TIME EQU 37H

ORG 0000H AJMP START ORG 000BH AJMP DINGSHI ORG 100H START: ACALL RESET LOOP: ACALL KEYSET ACALL DISPLAY ACALL ZHISHI AJMP LOOP ;************************************** DINGSHI: MOV TH0,#3CH MOV TL0,#0B0H INC TIME MOV A,TIME CJNE A,#20,DINGEND MOV TIME,#0 INC SECO MOV A,SECO CJNE A,#60,DINGEND INC MINU MOV SECO,#0 MOV A,MINU CJNE A,#60,DINGEND INC HOUR MOV MINU,#0 MOV A,HOUR CJNE A,#24,DINGEND MOV HOUR,#0 DINGEND: RETI ;**************************************** RESET: MOV TMOD,#01H ;T0工作在方式1,12MHZ MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB ET0 MOV HOUR,#23 MOV MINU,#59 MOV SECO,#58 MOV NHOU,#12 MOV NMIN,#0 MOV KEZT,#0 MOV K2ZT,#0 MOV TIME,#0 CLR F0

相关文档
相关文档 最新文档