四路抢答器报告

硬件描述语言课程设计报告

哈尔滨理工大学

电子科学与技术系

摘要

Verilog HDL本身是一门比较复杂的语言,语法结构丰富。在王老师所教书中介绍了基于Verilog HDL的数字设计的基本原理和方法,重点是电路设计。为更好的将所学Verilog HDL语言的理论知识与实际应用结合起来,学会分析、解决实际的数字电路问题,锻炼独立进行某些数字应用系统的开发设计工作能力,我们在老师的指导下完成了此次项目设计。

本设计题目为四路抢答器电路,用Verilog HDL语言编写软件实现四路抢答功能。裁判发出开始信号后抢答有效(裁判使用拨码开关),一人抢答成功后其他人抢答无效直至裁判复位此状态后方可继续抢答(选手使用按键),同时使用数码管显示出选手的编号。

四路抢答器电路设计的主要问题在于如何实现各个模块的正确分配,进而使设计出的电路更加符合要求。为了使各个模块能够正确分配,在程序开始设计之前,必须反复推敲本组的设计方案并设计好各个模块的方框图。根据实验题目要求并进行电路的仿真,电路的设计应包括2个模块,即实例化模块和抢答模块。

此次设计四路抢答器电路的目的就是让同学们在学习Verilog HDL理论的基础上,通过对题目要求的分析进一步实现实际电路的设计,使我们不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对分析、解决实际的数字电路问题进一步加深认识,为今后能够独立进行某些数字应用系统的开发设计工作打下一定的基础。

【关键词】Verilog HDL,四路抢答器,模块,数码管显示,电路设计

第一部分 系统的设计

1.1、设计要求

(1)裁判发出开始信号后抢答有效。

(2)设选手及裁判按钮,选手使用按键,裁判使用拨码开关。

(3)一人抢答成功后,其他人再抢答无效,裁判复位此状态后方可继续抢答。

(4)使用数码管显示选手的编号。

1.2、设计目标

(1)我们在课本上学习了相关的基础知识,所以需要进一步对实际题目进行程序编写,以巩固所学知识,还可以发现自身不足。

(2)程序编好后还需要在实验室调试电路,观察实验现象,进一步熟悉相关仪器设备的使用。

(3)通过完成四人抢答器电路设计,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对分析、解决实际的数字电路问题进一步加深认识,为今后能够独立进行某些数字应用系统的开发设计工作打下一定的基础。

(4)培养综合运用知识和独立开展实践创新的能力。

(5)规范化训练学生撰写技术研究报告,提高书面表达能力。

1.3、设计方法

1仔细阅读课程设计题目要求,思考实现电路所需知识以及方法。

2遇到本组内解决不了的问题,及时和其他小组交流或询问老师。

3将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务。

4通过完成该项任务,总结所学知识。

1.4实验设计结果

(1)对所写程序进行编译无误。

(2)在实验室对电路进行引脚分配和仿真,通过DE2开发板观察实验现象。

(3)裁判发出开始信号后抢答有效。

(4)一人抢答成功后,其他人再抢答无效,裁判复位此状态后方可继续抢答。

(5)使用数码管显示选手的编号。

第二部分 实验设计部分

2.1设计概述

   本次课程设计的四路抢答器要求实现以下功能,即裁判发出开始信号后抢答有效,设裁判及选手按钮,裁判使用拨码开关而选手使用按键。一人抢答成功后,其他人再抢答无效,裁判复位此状态后方可继续抢答,使用数码管显示选手的编号。

抢答器的核心部分为巧妙地利用D触发器的反馈,在检测到第一个上升沿时将按键(未按下时接低电平)接入的与门锁住,以保证与门只有一个上升沿输出,从而实现“最先按下按键的选手抢答成功,此后其他人抢答无效”。在与门输出上升沿的同时检测按键,用来确定是哪个选手抢答,用寄存器存储抢答选手的信息,最后数码管显示出抢答选手的编号。裁判对当时状态复位,则抢答重新开始,其原理同上。

本设计要求采用DE2开发板设计并完成四路抢答器的设计,设计中采用DE2开发板上的开关及按键模拟裁判及选手的按键,通过七段显示译码器显示出选手编号的数码管。根据以上设计要求及分析,设计出系统输入输出信号如下表所示。

2.2、设计框图


2.3 、电路设计

(1)实例化

本次课程设计要求采用实验室中的DE2开发板完成四路抢答器的设计,这就要求采用DE2开发板上的开关及按键模拟选手及裁判的按键,并通过七段显示译码器模拟显示选手编号的数码管。这些要求可以通过模块实例化来实现。模块实例程序如下:

module qiengdaqi

input wire [1:0]SW,

input wire CLOCK_50,

   input wire [3:0]KEY,

   output wire[6:0]HEX0,

   ouput wire[3:0]LEDG,

   output wire[0:0]LEDR

);

assign LEDR=SW[0]

sseg_m1 m1(.clk(CLOCK_50),.en(SW[0]),.reset(SW[1]),.a(KEY[0]),.b(KEY[1]),

.c(KEY[2]),.d(KEY[3]),.HEX(HEX0),.LEDG(LEDG));

endmodule

(2)抢答模块

抢答模块要具有第一信号鉴别、锁存功能。第一信号鉴别锁存的关键是准确判断出第一抢答者并将其锁存,在得到第一信号后,将输入端封锁,使其他组的抢答信号无效,用触发器实现。设置抢答按钮in_a、in_b、in_c、in_d,裁判复位信号reset。reset=0时,第一信号鉴别、锁存电路以及电路复位;reset=1时,开始抢答,由第一信号鉴别锁存电路形成第一抢答信号,并通过数码管显示出抢答者的编号。抢答模块程序如下:

module sseg_m1

(

input wire clk,en,reset,

input wire a,b,c,d,

output reg [6:0]HEX,

output wire [3:0] LEDG

);

reg[3:0] state_reg,state_next;

reg q;

assign LEDG=(q)? 4'b0:state_reg;

always@(posedge clk,posedge reset)

begin

         if(reset)

         begin

                   state_reg<=4'b1111;

         end

         else

                   state_reg<=state_next;

end

always@*

begin

         if(state_reg==4'b1111)

                   q=1'b1;

         else

                   q=1'b0;

         if((!a)&(q)&en)

                   state_next=4'b0001;

         else if((!b)&(q)&en)

                   state_next=4'b0010;      

         else if((!c)&(q)&en)

                   state_next=4'b0100;

         else if((!d)&(q)&en)

                   state_next=4'b1000;

         else

                   state_next=state_reg;

end

always @*

begin

case(state_reg)

4'b0001:HEX[6:0]=7'b1111001;

4'b0010:HEX[6:0]=7'b0100100;

4'b0100:HEX[6:0]=7'b0110000;

4'b1000:HEX[6:0]=7'b0011001;

default:HEX[6:0]=7'b1111111;

endcase

end

endmodule

第三部分 设计仿真

(1)双击Quartus II软件快捷图标进入Quartus II集成开发环境,新建工程项目文件db,并在该项目下新建Verilog源程序文件qiangdaqi.v,输入上面的程序代码并保存。

(2)然后为该工程项目选择目标器件并对相应的管脚进行锁定。

(3)对该工程文件进行编译处理,若在编译过程中发现错误,找出并更正错误直至成功为止。

(4)将DE2开发板下载电缆端接到PC机,打开工作电源,执行下载命令把程序下载到DE2开发板上,通过KEY[0]到KEY[4]抢答按键按下后,由裁判员根据答题情况,通过控制按键操作,这样就可以看到数码管上的选手编号。

第四部分 调试运行

在编译调试运行的过程中,出现了不少问题。

(1)由于基础知识学习不够扎实,同时在两个always语句中队同一个变量赋值,由于各个always块是并行执行的,在编译过程中出现了错误。最后将两个always块合并为一个,避免了这个问题的出现。

(2)抢答成功后数码管不能正确显示其组号。原因在于所编程序中数码管数字编写出现错误,改正后,电路正常。

第五部分 仿真结果

(1) 复位端有效,清零,禁止抢答

  

 (2) 编号为1的选手抢答成功

(3) 编号为2的选手抢答成功

(4) 编号为3的选手抢答成功

(5) 编号为4的选手抢答成功

第六部分 心得体会

通过一个星期的讨论、实践,加深了对EDA的了解,我更加熟练的掌握了QuartusⅡ的使用,并产生了浓厚的兴趣。特别是编译过程中,当错误一个个减少时,特别的兴奋。

这次项目设计选择了抢答器,刚开始进行分析,分为几个部分,然后每一部分分开编写,最后汇总于一个模块当中,不会太难。但是接下来程序编写过程中由于需要定义多个变量,弄的混乱不堪。而后先将所有用到的变量及其代表的含义先写下来,编写程序过程中一一对照才清楚了很多。

由于理论学习与实际运用存在太大的差别,在设计过程中错误不断,只能一点一点的进行修改。直到最后完整的实现了四人抢答器的基本功能。

在设计中遇到问题是在所难免的,但这是我们所必须面对的,有问题才能去解决问题,解决问题才能提高。从中学会的不止是怎样解决实际问题,更多的是遇到问题时该怎么思考。

通过这次项目设计,我更加理解了理论与实际相结合的重要性。只有理论知识是还远远不够,只有把所学的理论知识与具体问题结合起来,才能真正的应用,不断提高自己动手能力、思考的能力和团队合作能力。

总的来说,对这次设计抢答器还是比较满意的,即使没有完全实现预期效果,有些许遗憾,但至少是自己的成果。一周的时间,积累了经验,增强了实验素养,受益匪浅。

参考文献

[1] 夏宇闻. Verilog 《数字系统设计教程》.北京. 北京航空航天大学出版社.2008.6

[2] 张延伟,杨金岩,葛爱.《Verilog HDL 程序设计实例详解》.北京.人民邮电出版社

[3] 王伟.《Verilog HDL程序设计与应用》.北京. 人民邮电出版社

[4] 张亦华  延明 编著. 数字电路EDA入门---VHDL程序实例集,北京邮电大学出版社 2003

 

第二篇:四路抢答器设计报告

四路抢答器

        专业:物理学        班级:09物理学2班

       姓名:xxx        学号:200906101226

 姓名:xxx        学号:200906101251

 姓名:xxx        学号:200906101225

 姓名:xxx        学号:200906101208

 姓名:xxx        学号:200906101231

指导老师:    xx

日期:20##年6月12日

摘要

抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。本设计是以四路抢答为基本理念,考虑到依需要设定限时和记数的原理,利用AT89C52单片机以及外围接口实现的抢答系统,利用单片机的定时器/ 计数器定时和记数的原理,将软件、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,蜂鸣器给出声响提示。同时系统能够实现:抢答开始后,若有选手先按动抢答按钮,该选手编号就会在显示器上显示同时蜂鸣器会发出音响,而且禁止其他选手抢答。优先抢答的选手的编号一直保持到主持人将系统清零为止。抢答器同时具有限时抢答功能。当主持人按下按钮后,定时器开始倒计时,并显示倒计时时间(15s)。如果时间已到,无人抢答,则本次抢答无效。本次实验巧妙运用单片机技术,大大的减少了电路的复杂性。

关键词:AT89C52 数码管 抢答器 计时

目录

一、设计任务和要求 ………………………………… 4

二、方案的选择的论证……………………………… 5

三、原理图…………………………………………… 7

四、电路图及工作原理……………………………… 9

五、组装与调试……………………………………… 10

六、电路的特点……………………………………… 12

七、元器件列表………………………………………13

八、参考文献…………………………………………13

九、感想和体会………………………………………13

十、附录……………………………………………… 17

一、设计任务及要求

1、设计任务

设计一台可供4名选手参加比赛的智力竞赛抢答器。由主持人控制抢答开始开关和系统清零开关, 用数码管抢答倒计时间,由“15”倒计到“00”时,无人抢答,蜂鸣器给出响声提示。选手抢答时,数码管上显示选手组号,同时蜂鸣器给出响声提示,倒计时停止。

2、设计要求

1) 抢答器同时供4名选手,用1、2、3、4表示4名选手,选手各用一个抢答按钮,按键的编号与选手的编号相对应。
2) 主持人控制两个按钮,作用是整个系统的清零以及抢答的开始。  3) 抢答器具有数据锁存与显示功能。抢答开始后,若有选手按动按钮,则其编号立即在数码管上显示出来,并锁存该信号,蜂鸣器给出声响提示。同时,禁止其他选手再抢答。

4)抢答器具有定时抢答的功能,主持人可以根据需要设定时间。当主持人启动开始按钮后,则定时器进入减计时并在数码管上显示剩余时间。

5)参赛选手再设定的时间内进行抢答,则抢答有效,定时器停止工作,显示器上显示抢答时刻的时间,并保持到主持人将系统清零为止。

6)如果在设定时间内没有选手抢答,则本次抢答无效,系统封锁输入电路,禁止选手超时抢答,定时器上显示00。

二、方案的选择论证

方案1

用《数字电子》和《电工电子基础实践教程》所学的自锁开关、与门、或非门、电容、电阻、NE555定时器、74LS375锁存器、74LS148编码器、CD4511译码器以及共阳极数码管等来实现抢答器的功能。抢答器具有锁存、定时、显示和报警功能。即当抢答开始后,选手抢答按动按钮,锁存器锁存相应的选手编码,同时用LED数码管把选手的编码显示出来,并且开始抢答时间的倒计时,同时用LED数码管把选手的所剩抢答时间显示出来。而在选手按键抢答以及抢答时间倒计时到时的时候都有报警以提醒主持人和选手。其总体框图如下:

                         方案1总体框图

方案2

根据设计要求,系统采用6个独立式键盘作为按键,通过单片机不停地扫描按键来控制LED数码管的显示以及蜂鸣器,当按下启动按键后,经单片机处理,输出控制信号,数码管从15开始进入减计时并在数码管上显示剩余时间,在有选手按下按键时,就会有对应于这个按键的编码在数码管上显示,同时蜂鸣器给出声响来提示主持人和选手;如果在15秒内没有选手抢答,则本次抢答无效,系统封锁输入电路,禁止选手超时抢答,定时器上显示00。系统的工作原理采用AT89C52的单片机作为核心,控制系统四个模块分别为:抢答开关模块、时钟电路模块、报警电路模块、显示电路模块,还需要的器材有:30皮法的电容、12MHZ的石英晶振、开关、蜂鸣器以及二位共阳极数码管。其总体框图如下:

方案2总体框图

方案比较

方案1:采用74LS375、74LS148、CD4511分别作为抢答信号的锁存、编码和译码输出,来完成抢答部分,所需的元件较多,且实际中实现锁存功能时也比较繁琐难实现;所需器件都是纯电子器件,没有软件的参与,不易扩展和修改,而且电路结构复杂,调试困难,电子器件管脚很多,实际搭建起来费时费力,连电路容易出错;再就是学院器材库中并没有NE555定时器、74LS375锁存器以及自锁开关,找别的器材替换,会导致电路连接更复杂,例如:用2个D触发器74LS74和一个反相器74H04来替74LS375。

方案2:在我们已经学习了《单片机的原理与应用》这本教材的基础上,我们完全有能力通过编写程序来实现抢答器的各项功能。单片机体积小,价格低,应用方便,稳定可靠;单片机将很多任务交给软件编程去实现,大大简化了外围硬件电路,使外围电路的实现简单方便;电路所需的器件较少,电路连接简单化,调试更方便,布局美观。但单片机本身不具有软件编译测试的功能,我们需要借助其他编译软件,才能将编译好的程序“烧”入单片机内。

经过对比两方案的优缺点,决定采用电路简单,调试方便用单片机来实现抢答器功能的方案2。然后利用Kevil  uVision2 IDE 来编写程序,用Proteus画电路来进行仿真调试,再进行逐步改进,调试好后连接电路。

三、原理图

1、单元设计原理图

有6个独立式键盘做按键输入,当主持人按下按键后,由选手按下按键时,就会有对应于这个按键的灯亮,在数码管上显示该选手编号,并且蜂鸣器给出响声提示,其他按键再按也无效,其框架图如下:

单片机的端口上电是高电平,而且当外部没有输入时就自动弹跳到高电平,所以通过按键所接端口高低电平的变化,可以判断出哪个按键按下了,原理图如下:

独立
按键

2、总体框架图

四、电路图与工作原理

1、电路图:

        完整电路

2、工作原理

时钟电路连接XTAL1和XTAL2提供时钟脉冲,P1.0、P1.1、P1.2、P1.3引脚接四位选手的按键器,P1.6和P1.4引脚分别接主持人的开始和复位案件,其他引脚接法如图所示,P0口控制字形显示,P1口控制字位显示,最初状态是P1口都是高电平,共阳极数码管,显示倒计时的数字“15”。在主持人按“开始”按键前,倒计时一直显示15,选手按键无任何效果,主持人按键后,开始倒计时,在倒计时15s内如果有选手按键,则在另外两个LED数码管上显示选手号,蜂鸣器响声提示有人按键,并且其他选手再按键就无效;如果在15s内没有人抢答,则此题结束,四位选手按键均无效。结束一个题后,主持人按复位按钮,单片机的状态恢复到最初状态,准备下一题的开始。

五、组装和调试

1、主要器件:

在这次设计的用于竞赛的抢答器,电路图时很简单,组成器件应该说都是单片机中很常见的。器件主要是AT89C52单片机,六个按键,一个发光二极管,四个电阻,两个电容,一个晶振、两个二位数码管。

2、组装与调试的方法与技巧:

系统调试包括硬件调试和软件调试,而且两者是密不可分的。

硬件测试分单元电路调试和联机调试,单元电路试验在硬件电路设计时已经进行,这里的调试只是在面包箱上连接电路后,试验电路是否正确,并排除一些加工工艺性错误(如错线、开路、短路等)。这种调试可单独模拟进行,也可通过开发装置由软件配合进行,硬件联机调试则必须在系统软件的配合下进行。
  软件调试一般包括分块调试和联机调试两个阶段。程序的分块调试一般在单片机开发装置上进行,可根据所调程序功能块的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行;也可配合对应硬件电路单独运行某程序功能块,然后检查是否正确,程序联机调试就是将已调试好的各程序功能块按总体结构联成一个完整程序,在所研制的硬件电路上运行。从而试验程序整体运行的完整性、正确性和与硬件电路的配合情况。在联调中可能会有某些支路上的程序、功能因受条件制约而得不到相应的输入参数,这时,调试人员应创造条件进行模拟调试。在联调中如发现硬件问题也应及时修正,直到单片机系统的软件、硬件全部调试成功为止。系统调试完成后,还要进行一段时间的试运行,从而检验系统的稳定性和抗干扰能力,验证系统功能是否达到设计要求,是否达到预期的效果。

3、组装与调试遇到的问题与解决方法:

软件调试时遇到的问题:有时候在自己创建的元器件的管脚上无法实现连线。
    解决方法:在走线的同时按住 “CTRL”键,直到走线绕过狭窄的保护区。当然最根本的办法是重新编辑元器件,把其管脚间距调大一些。

硬件调试遇到的问题1一个二位体数码管很暗。一个二位体数码管并没有显示数字。

解决方法:没有显示数字的那个二位体数码管,先查看它是否是共阳极的,检查后发现是共阴极的,换一个共阳极的二位体数码管。显示很暗的那个二位体数码管是因为电压不够,在二位体数码管与单片机之间连接一个1千欧的电阻,增加电压。

硬件调试遇到的问题2蜂鸣器没有发出声响。

解决方法:查看后发现蜂鸣器是有源蜂鸣器,而实验中要的是无源蜂鸣器,用一个二极管代替蜂鸣器,当然也可以换成无源的蜂鸣器。

4、实验实物图

IMG0604170100

六、电路的特点

这次的设计是我们运用单片机实现了抢答器的功能,在设计中,我们完全利用了单片机的程序实现了所有的软件功能:抢答、报警、定时、锁存、复位、主控制等等,而外部电路很少,只有一个振荡电路、抢答按钮、蜂鸣器和2个二位共阳极数码管。相对于用集成芯片电路来说,我们设计的总体电路是很简洁的,在连线过程是很容易完成,不会混乱。同时,因为元器件较少,从经济的角度来说也是很合理的,成本很低,并且很容易买到,实用性很强。但是本设计最多能提供四个选手和四个队参加竞赛,这导致在使用时会受到限制,我们还需要设计多路的选择开关,这样才能被更好的利用。

七、元器件列表

八、参考文献

谢维成 杨加国  单片机原理与应用及C51程序设计(第二版)  清华大学出版社 20##年;

余孟尝  数字电路技术基础简明教程(第三版) 高等教育出版社  20##年;

曾建唐  电工电子基础实践教程(上册)实验●课程设计(第2版) 机械工程出版社 20##年。

九、感想和体会

1、xxx的感想与体会

在为期两周的电工电子设计实验的过程中,感触很多,受益匪浅。从一开始的选题就很纠结,总觉得自己什么都不会,不知道该选哪个方案,虽然自己是组长,却总想把这个实验撇开,全部交给我的队友做。随着交电路图日子的临近,迫不得已只好是硬着头皮做,经过大家的讨论与抉择,最后选了比较熟悉的方案——四路抢答器设计。既然决定了,就得认真出色地完成。趁着去见习的时间,我认真地把《数字电子》课本看了一遍,见习回来就忙着申请器材,由于只知道该怎么用,并不知道该器材的具体名称或者是型号,都得自己上网查资料以及请教老师和同学,当发现器材库中也没有该器材时,又得临时找其他器材来替换,找别的又得重新上网查阅相关器材的引脚以及应用,领器材回来做实验发现有遗漏的,就又马上申请,这一切让我懂得了“没有什么是做不好的,一切贵在坚持”。

以为电路图画好了,器材也申请好了,只要用心连电路就完成任务了,可电路都是纯电子电路,管脚太多,连接电路时,总是错误不断,找替换的器材合成了心得器件,却根本达不到想要的功能,自锁开关一直也都借不到,无奈之下只好放弃了该方案,立马改成相对比较简单的用单片机控制的抢答器方案。由于时间紧迫,来不及申请器材,只能是找上一组的同学借,于是大家分工合作,甚至利用中午休息的时间到实验室来做实验。可以说用单片机控制的外围电路确实简单,连接省时省力,可连完了依然存在很多问题,通过大家耐心地调试,找出了问题所在,终于调试成功了,按设计的任务和要求实现了抢答器的功能。看着通过大家共同努力的成果摆在了眼前,深刻地体会到成功并不容易,这一切需要一个团队的团结以及积极配合,需要大家的认真以及有耐心。

2、xxx的感想与体会

此次课程设计经过为期两周的不懈努力,我们终于完成了实验。在这一段时间中,我们完成了课程设计的调研、查阅资料,构思、确定总体方案、设计硬件电路、设计软件功能、画流程图、编写程序、连接硬件电路,以及硬件电路验证调试程序工作,这个过程让我们初步掌握了用单片机开发电路步骤过程,同时还大大加深了我们对单片机这门课的认识。

本次设计是我第一次运用单片机模拟实际的东西。因而在许多方面都还不熟练,例如对一些元器件的功能还不完全了解,不能熟练运用,因而不能完全的一次性设计好该电路。不过通过本次的课程设计我学到了学多的知识,培养了我独立思考问题解决问题的能力,加深了我们对单片机知识的理解,巩固了我们的学习知识,有助于我们今后的学习。总之,在这次的课程设计过程中,我收获了很多,即为我的以后学习设计有很大的帮助。

3、xxx的感想与体会

本次实验老师安排了两周的时间,刚开始我们都以为时间太长,我们可以很早就完成的。但是在做的过程中,才知道我们错了,这个实验不是那么的简单。在实验过程中,我们学到很多的东西,科学上我们了解到现代技术在我们生活中的应用是很重要的;身边的每一件看似很简单的东西,都是包含了很多人的辛苦劳动、刻苦专研的成果。除此之外,我更加明白了,我们在探究科学技术时,除了需要有足够的知识来指导我们去设计,还需要我们在这个过程中有坚强的毅力,有不怕失败的精神,有不断尝试的信念。没有什么事情是一帆风顺的,没有什么实验的一次就能成功的,我们只有在不断的尝试中,寻找新的方法、新的思路。遇到困难时,不要灰心,要想办法解决这个问题才是最好的做法。同时,科学的实验也是需要细心的,做事情必须严谨,来不得半点马虎。那么多的线路,电板上密密麻麻的导线,只要有一条连错,都是不能成功的,所以,我们只能细心的连线,但发现连好设计电路还是不能成功时,检查电路也是需要有耐心的,必须每一条都检查。总的来说这次实验,让我学到不只是科学知识,还有探究科学时我们需要怎样的态度。

4、xxx的感想与体会

在此为期两周的课程设计中,我们遇到了很多问题(自身的基础不够扎实)。起初,面对整个设计我们不懂的从哪里下手,总觉整个设计太大了。后来经过老师和同学的指导我们渐渐觉得这个设计并不是那么困难。我们有了一定的信心,开始琢磨如何进行设计。大家都很积极的探讨。功夫不负有心人有心人,经过大家的努力,我们终于设计出来了。一个人的力量是有限的,大家探讨中,我懂了很多以前不懂的知识。因此,我觉得学术是需要交流才会有进步。使我感悟最深的是电路的设计不仅需要深厚的知识功底和严谨的科学态度。更要有坚忍不拔的毅力和勇于探索的勇气。只有对所有的器件有很好的了解之后才能去选择正确的器件设计电路。好的电路设计不仅要求正确。而且是最简单,最合理的。

十、附录

1、抢答器设计程序

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

sbit P1_0=P1^0;

sbit P1_1=P1^1;

sbit P1_2=P1^2;

sbit P1_3=P1^3;

sbit P1_4=P1^4;

sbit P1_6=P1^6;

sbit P3_7=P3^7;

unsigned char code dofly_DuanMa[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};     //共阳极数码管显示段码

void Delay(unsigned int t); //函数声明

void display(uchar,uchar,uchar,uchar);  //声明子函数

void key();

void key2();                       //扫描键盘

uint i=0,o=0,p=15;             //p为定时时间

uchar   l,e,f,m,n;

void main()

{P3_7=0;

P1=0Xff;

while(1)

{o=0;

display(e=p/10,f=p%10,n,m=0);

m=0;

key2();

while(P1_4==0)

{l=p;

EA=1;

ET1=1;

TMOD=0X10;

TL1=0xb0;

TH1=0X3C;

TR1=1;

while(P1_6==1)

{ e=l/10;

f=l%10;

  display(e,f,n,m);

  key();}}}}

void display(uchar a,uchar b,uchar c,uchar d)

{      P2=0X01;          //第一位显示

       P0=dofly_DuanMa[a]; //显示数据

       Delay(200); //扫描间隙延时

       P2=0X02;            //第二位显示

       P0=dofly_DuanMa[b]; //显示数据

       Delay(200); //扫描间隙延时

       P2=0X04;            // 第三位显示

       P0=0Xbf; //显示数据

       Delay(200); //扫描间隙延时

      P2=0X08;              // 第四位显示

       P0=dofly_DuanMa[d]; //显示数据

      Delay(200); //扫描间隙延时}

void Delay(unsigned int t)

{while(--t);}

void key()

{if(P1_0==0){m=1;while(o<100){o++;P3_7=!P3_7;display(e,f,n,m);}

while(P1_6==1)display(e,f,n,m);}

else if(P1_1==0){m=2;while(o<100){o++;P3_7=!P3_7;display(e,f,n,m);}

while(P1_6==1)display(e,f,n,m);}

else if(P1_2==0){m=3;while(o<100){o++;P3_7=!P3_7;display(e,f,n,m);}

while(P1_6==1)display(e,f,n,m);}

else if(P1_3==0){m=4;while(o<100){o++;P3_7=!P3_7;display(e,f,n,m);}

while(P1_6==1)display(e,f,n,m);}}

void key2()

{if(P1_0==0){m=1;while(o<100){o++;P3_7=!P3_7;display(e=16,f=16,n,m);}while(P1_6==1)display(e=16,f=16,n,m);}

else if(P1_1==0){m=2;while(o<100){o++;P3_7=!P3_7;display(e=16,f=16,n,m);}

while(P1_6==1)display(e=16,f=16,n,m);}

else if(P1_2==0){m=3;while(o<100){o++;P3_7=!P3_7;display(e=16,f=16,n,m);}while(P1_6==1)display(e=16,f=16,n,m);}

else if(P1_3==0){m=4;while(o<100){o++;P3_7=!P3_7;display(e=16,f=16,n,m);}while(P1_6==1)display(e=16,f=16,n,m);}}

void aaa() interrupt 3

{i++;

TL1=0xb0;

TH1=0X3C;

if(i==20)

{l=l-1;i=0;}

while(l==0&&P1_6==1)

{display(0,0,n,m);}

if(l==0){l=p;TR1=0;}}

相关推荐