数字钟实验报告
数字钟实训报告心得体会(模板20篇)

数字钟实训报告心得体会(模板20篇)心得体会是我们在实践中领悟到的感悟和体验,能够帮助我们更好地理解和应用所学知识。
接下来,小编为大家分享一些优秀的心得体会范文,供大家参考和借鉴。
数字秒表实训报告心得体会第一段:引言(150字)。
数字秒表实训是我在大学期间参与的一次实践课程。
通过这次实训,我学到了很多有关数字秒表的知识和技巧,并且深刻体会到了数字秒表在实际生活中的重要性和应用价值。
在这篇报告中,我将分享我的实训经历,以及对数字秒表实训的心得体会。
第二段:实训内容与过程(250字)。
在实训开始之前,我们首先了解了数字秒表的基本原理和功能。
我们学习了数字秒表的设计和制造过程,以及如何使用它来测量时间。
然后,我们分为小组,每个小组负责设计一个数字秒表的实训项目。
在设计过程中,我们要考虑到秒表的准确性、易操作性和实用性。
我们通过分析市场需求和用户群体的需求,进行了多次修改和改进。
最后,我们使用传感器、电池和显示屏等部件,将设计好的秒表制成实物,并进行了功能测试。
第三段:实训收获(300字)。
通过这次实训,我深刻认识到了数字秒表在生活中的重要性。
它不仅可以为人们提供准确的时间测量,还可以用于运动训练、科学实验、竞技比赛等领域。
在实训过程中,我学习到了团队合作的重要性。
每个小组成员都有不同的专业背景和技能,我们通过充分的讨论和合作,最终实现了一个功能完善的数字秒表。
这次实训也锻炼了我的动手能力和解决问题的能力,提高了我的实践技能和创新意识。
第四段:实训反思(250字)。
在实训过程中,我也遇到了一些挑战。
首先是时间管理方面的问题,由于实训的时间紧张,我们需要合理安排时间,确保每个阶段都能够顺利进行。
其次是技术问题,数字秒表的设计和制造需要一定的专业知识和技能,我们需要不断学习和改进,以提高实训成果的质量和实用性。
最后是团队协作方面的问题,每个小组成员都有自己的观点和想法,我们需要协商一致,充分发挥每个人的优势,才能最终成功完成实训项目。
数字钟实验报告_4

华中科技大学《电子线路设计、测试与实验》实验报告实验名称: 多功能数字钟设计院(系): 自动化学院专业班级:实验成绩:****: ***2014 年6 月11 日一、实验目的1.掌握可编程逻辑器件的应用开发技术, 设计输入、编译、仿真和器件编程;2.熟悉EDA软件使用;3.掌握Verilog HDL设计方法;4.分模块、分层次数字系统设计二、实验器材QUARTUS II软件PC DEO实验板三、实验要求1.能显示小时、分钟、秒钟(小时以24进制,时、分用显示器, 秒用LED)2.能调整小时、分钟的时间3.复位四、实验原理五、程序设计过程数字钟由2个60进制计数器和1个24进制计数器和4个译码器共7个模块构成,3个计数器公用一个时钟信号CP。
2个选择器分别用于选择分计数器和时计数器的使能控制信号,对时间进行校正时,在控制器的作用下,使能信号接高电平,此时每来一个时钟信号,计数器加一计数,从而实现对小时和分钟的校正.正常计时时,使能信号来自低位计数器的输出,即秒计数器达到59秒时,产生输出信号使分计数器加1,分秒计数器同时计到最大值时即59分59秒时,产生输出信号使小时计数器加一。
1.顶层模块:module clock (led0, led1, led2, led3, led_sec, _50mhzin, adjminkey, adjhrkey, ncr, h12, hour12);input _50mhzin;input adjminkey, adjhrkey;input h12;input ncr;output [6:0]led0, led1, led2, led3;wire [7:0] led_a, led_b;wire _1hz, _1khz, _5hz;wire [7:0] hour, minute, second, set_hr, set_min;output hour12;wire h12;output [7:0]led_sec;assign hour12 = h12;divided_frequency u0(_1hz,ncr,_50mhzin);top_clock u1(hour, minute, second, _1hz, ncr, adjminkey, adjhrkey, _50mhzin);display u2(_50mhzin, _5hz, ncr, led_a, led_b, led_sec, hour, minute, second,h12);SEG7_LUT u3(led_a[7:4], led3);SEG7_LUT u4(led_a[3:0], led2);SEG7_LUT u5(led_b[7:4], led1);SEG7_LUT u6(led_b[3:0], led0);endmodule2.分频模块:module divided_frequency(_1hzout,ncr,_50mhzin);input _50mhzin, ncr;output _1hzout;supply1 vdd;wire[11:0] q;wire _1khzin;wire en1, en2;divfreq50M_1Khz du00(_1khzin, ncr, _50mhzin);//先调用1khz分频counter10 du0(q[3:0], ncr, vdd, _1khzin);counter10 du1(q[7:4], ncr, en1, _1khzin);counter10 du2(q[11:8], ncr, en2, _1khzin);//再调用三个10计数器,将1khz分为1hzassign en1=(q[3:0] == 4'h9);assign en2=(q[7:4] == 4'h9) && (q[3:0] == 4'h9);assign _1hzout = q[11];assign _500hzout = q[0];endmodule3.时钟运行模块module top_clock(hour, minute, second, _1hz, ncr, adjminkey, adjhrkey, _50mhzin);input _1hz, _50mhzin, ncr, adjminkey, adjhrkey;output [7:0] hour, minute, second;wire [7:0] hour, minute, second;//时、分、秒每个用八位二进制表示两位BCD 码supply1 vdd; //高电平, 是使能一直打开wire mincp, hrcp, _5hz;//_5hz用于快速校时divfreq50M_5hz ut0(_5hz, ncr, _50mhzin);counter60 ut1(second, ncr, vdd, _1hz);counter60 ut2(minute, ncr, vdd, ~mincp);//秒和分使用60进制counter24 ut3(hour[7:4], hour[3:0], ncr, vdd, ~hrcp);//时钟为24进制(默认)assign mincp = adjminkey ? _5hz : (second==8'h59);assign hrcp = adjhrkey? _5hz : ({minute,second}==16'h5959);//进位或校时使能控制endmodule4.显示模块:module display(_50mhz,_5hz,cr,led_a,led_b,led_sec,hour,minute,second,h12);input [7:0]hour,minute,second;//时分秒input _50mhz,cr,_5hz;output [7:0]led_a,led_b,led_sec;//数码管显示缓存input h12;//12,24小时制切换reg [7:0]led_a,led_b,led_sec;reg [2:0]mod;//模式变量always@(posedge _50mhz)beginled_b=minute;led_sec=second;//模式0,显示时分秒if(~h12)beginled_a=hour;led_b=minute;led_sec=second;endelsebegincase(hour)8'h13,8'h14,8'h15,8'h16,8'h17,8'h18,8'h19,8'h22,8'h23,8'h24:led_a=hour-8'h12;8'h20:led_a=8'h08;8'h21:led_a=8'h09;default:led_a=hour;endcaseend//12/24小时切换,24到12,相应BCD码减endendmodule5.数码管操作模块module SEG7_LUT (iDIG,oSEG);input [3:0] iDIG;output [6:0] oSEG;reg [6:0] oSEG;always @(iDIG)begincase(iDIG)4'h1: oSEG = 7'b1111001; // ---t----4'h2: oSEG = 7'b0100100; // | |4'h3: oSEG = 7'b0110000; // lt rt4'h4: oSEG = 7'b0011001; // | |4'h5: oSEG = 7'b0010010; // ---m----4'h6: oSEG = 7'b0000010; // | |4'h7: oSEG = 7'b1111000; // lb rb4'h8: oSEG = 7'b0000000; // | |4'h9: oSEG = 7'b0010000; // ---b----4'ha: oSEG = 7'b0001000;4'hb: oSEG = 7'b0000011;4'hc: oSEG = 7'b1000110;4'hd: oSEG = 7'b0100001;4'he: oSEG = 7'b0000110;4'hf: oSEG = 7'b0001110;4'h0: oSEG = 7'b1000000;endcaseendendmodule六、功能仿真1.六进制2.十进制3.六十进制(分了几张图截图)4.24进制5.异步清零仿真6.正常计时仿真秒计时●分计时●小时计时23:59:59秒返07 手动校小时和分钟仿真ADJHrKey 与AdjMinKey均为高电平有效,七、思考题1.什么是分层次的电路设计方法?叙述分层次设计电路的基本过程.答: 在电路设计中,可以将两个或者多个模块组合起来描述电路逻辑功能,通常称为分层次的电路设计.自顶而下和自底而上是两种常用的设计方法.在自顶而下的设计中,先定义顶层模块,然后再定义顶层模块中用到的子模块.而在自底而上的设计中,底层的各个子模块首先被确定下来,然后将这些子模块组合起来构成顶层模块.2.在用MAX+PLUS II 软件设计数字钟电路时,简述对60进制计数器进行仿真分析的大致过程.若仿真时栅格的大小(GRID SIZE)为0.5ms,设置CP信号时倍率(Multiplied By)为软件默认值1,那么仿真文件的时间至少需要多长才能完整反映计数过程?答: 至少要0.5ms * 60 = 30ms八、试验中遇到的问题与解决办法这次实验主要是Verilog代码的编写和仿真, 在波形的仿真过程中, 有许多操作并不清楚, 尤其是部分功能的波形仿真输出和如何手动调整时钟的波形仿真, 虽然最后有同学帮忙, 但是最后还是操作得很不熟练。
数字钟实习报告总结

实习报告总结:数字钟设计与实现一、实习背景与目的随着现代电子技术的快速发展,数字钟作为一种常见的电子设备,已经被广泛应用于日常生活和工业领域。
本次实习的主要目的是学习和掌握数字钟的设计与实现方法,培养自己的实际动手能力和创新思维能力。
二、实习内容与过程1. 数字钟的设计原理在实习初期,我首先学习了数字钟的设计原理,包括数字电路的基本组成、时钟信号的产生与处理、显示电路的设计等。
通过学习,我了解了数字钟的工作原理和设计思路,为后续的实际操作奠定了基础。
2. 硬件设计在硬件设计方面,我选择了常用的微控制器AT89S52作为数字钟的控制核心。
通过编程,实现了时钟信号的产生、分秒的计数和显示等功能。
同时,我还设计了按键输入电路,以便进行时间设置和调整。
3. 软件编程在软件编程方面,我使用了C语言进行编程。
通过编写程序,实现了数字钟的计时、显示等功能。
在程序设计过程中,我充分运用了所学的算法和编程技巧,提高了自己的编程能力。
4. 系统调试与优化在系统调试阶段,我通过不断测试和调整,发现并解决了数字钟运行中出现的问题。
同时,我对程序进行了优化,提高了数字钟的运行效率和稳定性。
三、实习收获与总结通过本次实习,我收获颇丰。
首先,我掌握了数字钟的设计原理和实现方法,为自己的实际工作积累了宝贵的经验。
其次,我在硬件设计和软件编程方面提高了自己的实际动手能力,为今后的职业发展打下了基础。
最后,我在实习过程中培养了团队协作意识和创新思维能力,对自己的人生发展具有积极意义。
同时,我也认识到自己在本次实习中存在的不足。
例如,在硬件焊接和调试过程中,我对一些细节处理不够到位,导致数字钟运行不稳定。
在今后的工作中,我将更加注重细节,提高自己的动手能力。
总之,本次实习使我受益匪浅。
通过学习和实践,我掌握了数字钟的设计与实现方法,提高了自己的实际动手能力和创新思维能力。
在今后的学习和工作中,我将继续努力,不断提高自己,为实现自己的职业目标奋斗。
数字钟报告

数字钟报告数字钟是一种很常见的计时工具,与传统机械钟相比,数字钟拥有更多的功能和便利性。
本次报告将详细介绍数字钟的特点、功能和使用方法。
数字钟的特点主要有以下几点:第一,数字钟使用数字显示时间,清晰明了,更容易读取。
相比于指针式的机械钟,数字钟的时间显示更加准确,误差较小。
第二,数字钟一般采用LED(发光二极管)显示屏或LCD(液晶显示屏)显示屏。
LED屏幕的亮度高,适合在光线较暗的环境下查看。
LCD屏幕则更节能省电,适合长时间使用。
第三,数字钟通常具备闹钟功能和定时器功能。
用户可以通过设置闹钟来提醒自己起床、上班等重要的时间节点。
定时器功能可以帮助用户掌握时间,做好时间分配。
数字钟的功能主要包括时间显示、闹钟、定时器等。
首先,数字钟的核心功能是准确显示时间。
用户可以通过设置按钮来调整时间,以保证钟表时间和实际时间一致。
有些数字钟还可以自动与网络时间同步,确保时间的准确性。
其次,数字钟一般都带有闹钟功能。
用户可以通过设定时间和铃声类型来设置闹钟。
闹钟可以帮助人们按时起床、上班或做其他事情。
另外,数字钟还常常具备定时器功能。
用户可以根据需要设定定时器的时间和模式,比如做饭时设定定时器提醒自己关火,或者在学习时设定定时器提醒休息。
最后,数字钟的使用方法也非常简单。
首先,用户需要根据说明书或者按键标识来设置时间、闹钟和定时器等功能。
设置好后,数字钟会自动运行。
用户可以随时查看时间,并通过按键来开启或关闭闹钟、定时器等功能。
总结来说,数字钟是一种准确、便利、功能丰富的计时工具。
它不仅可以准确显示时间,还可以帮助人们按时起床、做事、掌握时间。
在日常生活中,数字钟扮演着重要的角色,使我们的生活更加有序和高效。
大学数字钟实训报告

一、摘要本次实训旨在通过设计和制作一个数字时钟,加深对数字电子技术理论知识的理解,提高动手实践能力。
在实训过程中,我们学习了数字钟的原理、电路设计、元件选择、焊接调试等技能。
最终,我们成功制作出了一个具有时、分、秒显示功能的数字时钟,并通过实际运行验证了其功能。
二、实训目的1. 掌握数字电子钟的原理和设计方法。
2. 熟悉常用数字电路元件的功能和特性。
3. 提高动手实践能力,培养创新意识。
4. 增强团队协作精神,提高沟通能力。
三、实训内容1. 数字钟原理数字钟是一种将时间信息转换为数字信号,并通过数码管显示的电子计时设备。
其基本原理是利用石英晶体振荡器产生稳定的时钟信号,通过计数器进行计数,并通过译码器和数码管显示时间。
2. 电路设计本次实训采用以下电路设计:(1)时钟信号产生:利用555定时器产生1Hz的时钟信号。
(2)秒计数器:采用CD4060计数器,实现秒的计数。
(3)分计数器:采用CD4518计数器,实现分的计数。
(4)时计数器:采用CD4518计数器,实现时的计数。
(5)译码器:采用CD4511译码器,将计数器的输出信号转换为数码管所需的信号。
(6)数码管显示:采用共阴极七段数码管,显示时、分、秒。
3. 元件选择本次实训选用的元件如下:(1)时钟信号产生:555定时器、电阻、电容。
(2)计数器:CD4060、CD4518。
(3)译码器:CD4511。
(4)数码管显示:共阴极七段数码管。
(5)其他元件:电阻、电容、电位器、晶体管、开关等。
4. 焊接调试(1)按照电路图进行元件焊接。
(2)检查电路连接是否正确,并进行初步调试。
(3)调整电位器,使数码管显示正确的时间。
(4)测试电路功能,确保时、分、秒显示准确。
四、实训总结1. 通过本次实训,我们掌握了数字电子钟的原理和设计方法,熟悉了常用数字电路元件的功能和特性。
2. 在实训过程中,我们提高了动手实践能力,培养了创新意识。
3. 团队协作精神得到了加强,沟通能力得到提高。
动态显示数字钟实训报告

一、实训目的1. 掌握数字钟的基本原理和电路设计方法;2. 熟悉数字电路中常用芯片的功能和用法;3. 提高动手能力和实际操作技能;4. 培养团队协作精神。
二、实训环境1. 实验室:电子实验室、示波器、数字万用表、信号发生器、电源等;2. 实验设备:数字集成电路芯片、电阻、电容、电位器、数码管、导线等。
三、实训原理数字钟是一种以数字形式显示当前时间的电子设备,主要由振荡器、分频器、计数器、译码器、显示器等组成。
本实训主要采用以下原理:1. 振荡器产生一个稳定的时钟信号;2. 分频器将振荡器产生的时钟信号分频,得到秒脉冲信号;3. 计数器对秒脉冲信号进行计数,实现秒、分、时的计时;4. 译码器将计数器的输出信号转换为数码管显示的数字;5. 显示器显示计时结果。
四、实训过程1. 设计电路原理图:根据实训要求,设计数字钟的电路原理图,包括振荡器、分频器、计数器、译码器、显示器等部分。
2. 选择元件:根据电路原理图,选择所需的数字集成电路芯片、电阻、电容、电位器、数码管、导线等元件。
3. 购买元件:根据元件清单,购买所需的实验元件。
4. 组装电路:按照电路原理图,将元件焊接在电路板上,注意焊接质量。
5. 测试电路:使用示波器、数字万用表等工具,测试电路各部分的功能,确保电路正常工作。
6. 调试电路:根据实际需求,对电路进行调试,使秒、分、时计时准确。
7. 动态显示:将计时结果通过数码管动态显示出来。
8. 撰写实训报告:总结实训过程,分析实验结果,提出改进意见。
五、实训结果1. 成功组装并调试出数字钟电路,实现秒、分、时的计时功能;2. 熟悉了数字集成电路芯片的功能和用法;3. 提高了动手能力和实际操作技能;4. 培养了团队协作精神。
六、实训总结1. 在实训过程中,我们学会了如何根据实际需求设计电路,选择合适的元件,并进行焊接和调试;2. 通过实训,我们对数字电路有了更深入的了解,提高了实际操作能力;3. 实训过程中,我们遇到了一些问题,通过团队协作,共同解决,培养了团队协作精神;4. 在今后的学习和工作中,我们将继续努力,提高自己的实际操作能力,为我国电子产业的发展贡献力量。
数字钟 实验报告

数字钟实验报告数字钟实验报告1. 引言数字钟是一种以数字形式显示时间的装置,广泛应用于日常生活中。
本实验旨在通过搭建数字钟电路并进行实际测试,了解数字钟的工作原理和实现方式。
2. 实验材料和方法实验材料:电路板、电子元件(集成电路、电阻、电容等)、数字显示屏、电源、万用表等。
实验方法:按照电路图连接电子元件,将数字显示屏连接到电路板上,接通电源后进行测试。
3. 实验步骤3.1 搭建电路根据提供的电路图,将电子元件按照正确的连接方式搭建在电路板上。
确保连接的准确性和稳定性。
3.2 连接数字显示屏将数字显示屏连接到电路板上的指定位置,注意极性的正确性。
3.3 接通电源将电路板连接到电源上,确保电源的稳定输出。
3.4 进行测试打开电源,观察数字显示屏上的显示情况。
通过调整电路中的元件,如电容和电阻的数值,观察数字显示屏上的时间变化。
4. 实验结果在实验过程中,我们成功搭建了数字钟电路,并进行了多次测试。
通过调整电路中的元件数值,我们观察到数字显示屏上的时间变化。
数字钟准确地显示了当前的时间,并且实时更新。
5. 讨论与分析通过本次实验,我们了解到数字钟的工作原理是通过电路中的集成电路和元件来控制数字显示屏的显示。
数字钟的精确性和稳定性取决于电路的设计和元件的质量。
在实际应用中,数字钟通常会采用更加精确的时钟芯片来保证时间的准确性。
6. 实验总结本次实验通过搭建数字钟电路并进行测试,使我们更加深入地了解了数字钟的工作原理和实现方式。
通过调整电路中的元件,我们观察到数字显示屏上的时间变化,验证了数字钟的准确性和实时性。
在今后的学习和工作中,我们将更加注重电路设计和元件的选择,以提高数字钟的精确性和稳定性。
7. 参考文献[1] 电子技术基础教程,XXX,XXX出版社,2010年。
[2] 数字电路设计与实验,XXX,XXX出版社,2015年。
8. 致谢感谢实验室的老师和同学们对本次实验的支持和帮助。
他们的耐心指导和积极讨论使本次实验取得了圆满成功。
数字钟实验报告5篇范文

数字钟实验报告5篇范文第一篇:数字钟实验报告数字钟实验报告班级:电气信息i类112班实验时间:实验地点:指导老师:目录一、实验目的-----------------3二、实验任务及要求--------3三、实验设计内容-----------3(一)、设计原理及思路3(二)、数字钟电路的设计--------------------------4(1)电路组成---------4(2)方案分析---------10(3)元器件清单------11四、电路制版与焊接---------11五、电路调试------------------12六、实验总结及心得体会---13七、组员分工安排------------19一、实验目的:1.学习了解数码管,译码器,及一些中规模器件的逻辑功能和使用方法。
2.学习和掌握数字钟的设计方法及工作原理。
熟悉集成电路的引脚安排,掌握各芯片的逻辑功能及使用方法了解面包板结构及其接线方法。
3.了解pcb板的制作流程及提高自己的动手能力。
4.学习使用protel软件进行电子电路的原理图设计、印制电路板设计。
5.初步学习手工焊接的方法以及电路的调试等。
使学生在学完了《数字电路》课程的基本理论,基本知识后,能够综合运用所学理论知识、拓宽知识面,系统地进行电子电路的工程实践训练,学会检查电路的故障与排除故障的一般方法锻炼动手能力,培养工程师的基本技能,提高分析问题和解决问题的能力。
二、实验任务及要求1.设计一个二十四小时制的数字钟,时、分、秒分别由二十四进制、六十进制、六十进制计数器来完成计时功能。
2.能够准确校时,可以分别对时、分进行单独校时,使其到达标准时间。
3.能够准确计时,以数字形式显示时、分,发光二极管显示秒。
4.根据经济原则选择元器件及参数;5..小组进行电路焊接、调试、测试电路性能,撰写整理设计说明书。
三、实验设计内容1、设计原理及思路 3.1数字钟的构成数字钟一般由振荡器、分频器、计数器、译码器、显示器、较时电路、报时电路等部分组成,这些都是数字电路中应用最广的基本电路3.2原理分析数字钟实际上是一个对标准频率(1hz)进行计数的计数电路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机与信息技术学院综合性、设计性实验报告
一、实验目的
1.掌握电子钟设计的基本原理。
2.熟悉单片机C语言,并能够运用单片机C语言编程。
二、实验仪器或设备
装有Proteus 7和Keil uVision2软件的计算机一台
三、总体设计
1.设计分析:
通常,用单片机设计电子时钟有两种方法:一是通过单片机内部的定时器/计数器,采用软件编程来实现时钟计数,称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度不高的场合;二是采用时钟芯片,它的功能强大,功能芯片集中在芯片内部,具有自动产生时钟等功能,硬件成本较高,软件编程简单,通常用在对时钟精度较高的场合,本设计采用第一种方法。
2.设计原理:
软时钟是采用单片机内部的定时器/计数器来实现的。
它的处理过程如下:首先设定单片机内部的一个定时器/计数器与定时方式,对机器周期计数形成基准时间,然后用软件计数的方法对基准时间计数形成秒,秒计60次形成分,分计60次形成小时,小时计满24次则计满一天。
最后通过数码管把它们的内容在相应的位置显示出来即可。
数码管显示采用动态显示方法,动态显示方法线路相对简单,但需动态扫描,扫描频率要大于人眼视觉暂留频率,这样信息看起来才稳定,译码方式采用软件译码。
在具体处理时。
定时器/计数器采用中断方式工作,对时钟的形成在中断服务程序中实现。
在主程序中只需对定时器/计数器初始化、调用显示子程序和控制子程序。
另外,还可以通过按键实现时,分的调整。
3.原理图设计:
本系统的硬件主要包括单片机芯片、数码管显示、按键开关电路,单片机采用应用广的AT89C52,系统时钟采用12MHz的晶振,8个数码管显示,小时与分钟、分钟与秒钟之间用短横线间隔,采用共阴极七段式数码管,P0口为段码输出端,P2口为位选码输出端,按键开关设置了3个,通过P1口相连。
4.系统软件程序设计:
电子时钟的软件程序由主程序和子程序组成,主程序包含初始化参数设置、按键处理、数码管显示模块等。
(1)主程序:主程序流程图如图(1)所示,主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下
图(1)主程序流程图
(2)数码管显示模块:本系统共用8个数码管,从右到左依次显示秒个位、秒十位、横线、分个位、分十位、横线、时个位、时十位。
数码管显示的信息用8个内存单元存放,其中秒个位、秒十位、分个位、分十位、时个位、时十位分别由秒数据、分数据和小时数据分拆得到。
数码管显示采用软件译码动态显示。
在储存器中首先建立一张显示信息的字段码表,显示时,先从显示缓存区中取出显示的信息,然后通过查表程序在字段码表中查出所显示的信息的字段码,从P0口输出,同时在P2口将对应的位选码输出,选中显示的数码管,就能在相应的数码管上显示显示缓存区的内容。
(3)定时器/计数器T0中断服务模块:定时器/计数器T0用于时间计时,选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计时器对50ms计数,计满20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。
在对各单元计数的同时,把它们的值放到储存单元的指定位置,定时器/计数器T0中
断服务程序流程图如图(2)所示:
图(2)中断服务程序流程图
四、实验步骤
1.用Proteus 7软件做出硬件电路原理图,原理图如图(3)所示:
图(3)硬件电路原理图
2.用Keil uVision2软件做出系统软件程序,并进行编译仿真,正确后,生成.hex 文件。
程序代码见附录(1)所示。
3.把.hex文件加载到Proteus电路图中,编译并仿真电路,得到仿真结果。
仿真电路图如图(4)所示:
图(4)仿真电路图
五、结果分析与总结
通过观察仿真结果,可以看到仿真结果正确,在做本实验的过程中,虽然遇到了一些问题,但是通过修改并逐步完善程序,最终得到正确的仿真结果。
通过本实验,让我进一步学习了单片机C语言。
附录(1)软件程序代码:
#include <reg51.h>
#define uchar unsigned char
Uchar code dis_7[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x4 0};
uchar code scan_con[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar data dis[8]={0x3f,0x3f,0x0b,0x3f,0x3f,0x0b,0x3f,0x3f};
uchar data timedata[3]={0x00,0x00,0x00};
uchar data ms50=0x00,con=0x00,con1=0x00,con2=0x00;
sbit key0=P1^0;
sbit key1=P1^1;
sbit key2=P1^2;
delayms(int xms)
{
int i,j;
for(i=0;i<xms;i++)
for(j=0;j<120;j++);
}
//按键处理函数
keyscan()
{
EA=0;
if(key0==0)
{
delayms(10);
while(key0==0);
con++;TR0=0;ET0=0;
if(con>=3)
{con=0;TR0=1;ET0=1;}
}
if(con!=0)
{
if(key1==0)
{
delayms(10);
while(key1==0);
timedata[con]++;
if(con==2) con1=24;else con1=60;
if(timedata[con]>=con1)
{timedata[con]=0;}
}
}
if(con!=0)
{
if(key2==0)
{
delayms(10);
while(key2==0);
timedata[con]--;
if(con==2) con2=23;else con2=59;
if(timedata[con]<=0)
{timedata[con]=con2;}
}
}
EA=1;
}
//数码管显示函数
scan()
{
uchar k;
dis[0]=timedata[0]%10;dis[1]=timedata[0]/10; dis[3]=timedata[1]%10;dis[4]=timedata[1]/10; dis[6]=timedata[2]%10;dis[7]=timedata[2]/10; for (k=0;k<8;k++)
{
P0=dis_7[dis[k]];P2=scan_con[k];
delayms(1);
P2=0xff;
}
}
//主函数
main()
{
TH0=0x3c;TL0=0xb0;TMOD=0x01;ET0=1;TR0=1;EA=1; while (1)
{ scan();
keyscan();
}
}
void time_intt0(void) interrupt 1
{
ET0=0;TR0=0;TH0=0x3c;TL0=0xb0;TR0=1;
ms50++;
if(ms50==20)
{
ms50=0x00; timedata[0] ++;
if(timedata[0]==60)
{
timedata[0]=0;timedata[1] ++;
if(timedata[1]==60)
{
timedata[1]=0;timedata[2] ++;
if(timedata[2]==24)
{timedata[2]=0;}
}
}
}
ET0=1;
}
教师签名:
年月日。