投票器设计报告

合集下载

三人表决器报告

三人表决器报告

三人表决器报告1. 摘要本文档是对三人表决器的详细报告,包括设计原理、功能特点以及使用场景等方面的介绍。

三人表决器是一种基于多人决策的工具,通过对多个人的表决结果进行统计和分析,以实现决策的公平和有效。

2. 引言在现实生活中,决策常常需要多个人共同参与。

然而,在多人参与的决策过程中,可能会出现意见不统一、讨论难以达成共识的情况。

三人表决器的出现能够帮助解决这类问题。

三人表决器是一种简单而又有效的工具,可以帮助多个人快速完成决策过程,并保证最终结果的公平和合理性。

3. 设计原理三人表决器的设计基于以下原理:3.1. 多数决原则三人表决器采用的是多数决原则。

也就是说,在决策过程中,只有获得多数人的支持才能最终采取行动。

这样做的好处是能够避免因为个别人的意见而导致决策失去公正性和有效性。

3.2. 匿名投票为了保证每个人能够真实地表达自己的意见,三人表决器采用匿名投票的方式,即投票参与者的身份不会被泄露。

这种设计可以有效地防止潜在的压力或影响对投票结果的干扰。

4. 功能特点三人表决器具有以下功能特点:4.1. 快速决策三人表决器的设计目标之一是能够快速进行决策。

参与者只需在规定的时间内投票,即可得出最终结果,避免无限的讨论和拖延。

4.2. 可视化结果三人表决器可以通过可视化方式展示投票结果。

这样可以让参与者直观地了解整体的投票情况,有助于各方更好地理解和接受最终结果。

4.3. 定制化选项三人表决器支持定制化选项,即参与者可以根据需要设定不同的选项。

这样能够更好地适应不同场景下的决策需求。

5. 使用场景三人表决器适用于以下场景:5.1. 团队决策在团队中,常常需要进行一些重要的决策,如项目方向、资源分配等。

使用三人表决器可以帮助团队成员快速达成共识,减少决策时间。

5.2. 会议投票在会议期间,可能会出现一些需要快速决策的问题,如提案通过与否、预算审批等。

通过使用三人表决器,可以高效地完成这些决策过程。

5.3. 民主决策在一些组织或社区中,民主决策是一种重要的决策方式。

七人表决器设计设计报告

七人表决器设计设计报告

七人表决器设计一.设计要求1. 能够完成七人表决的功能,并且直观的显示结果:决议通过显示字母P,否则显示字母E;2.能够选择显示表决双方的人数,有控制开关与显示指示灯,并且能够实时的显示反对与赞成的人数;3.能够选择是否记名,并有指示灯显示。

当选择记名时,与表决参与者相对应的指示灯亮起;4.不设置弃权的状况,超过三人同意则表示决议通过。

二.设计思路1.使用Altera的Cyclone II器件,FPGA型号为EP2C35F672C6N;开发平台为Quartus II 8.02.使用6个拨动开关用以进行表决,开关闭合时表示同意,断开时表示不同意;3.使用6个LED用以显示表决的个人结果,用以显示记名时的情况。

LED亮起表示表决人同意,否则表示不同意;4.使用一个七段数码管用以显示表决结果,通过显示P,否则显示E;另外使用两个数码管用以分别显示同意与不同意的人数;5.使用两个拨动开关控制是否记名,是否显示表决的人数结果;6.其他电路按需要搭建。

三.硬件系统组成框图注释:set:选择是否记名set1:选择是否显示投票人数及比例xin[0:6]:表决输入,分别是七个拨动开关sel:输出指示是否记名投票sel1:输出指示是否显示投票人数及比例xout[0:6]:译码用数码管输出表决是否通过xout0[0:6]:译码用数码管输出同意的人数(set1=1)xout1[0:6]:译码用数码管输出不同意同意的人数(set1=1)xout2[0:6]:译码用七个LED输出记名结果设计HDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity biao isport (set, set1: in std_logic ; ----控制按键xin: in std_logic_vector ( 6 downto 0 ); ----按键输入表决sel,sel2: out std_logic; -------控制指示灯xout,xout0,xout1,xout2 : out std_logic_vector ( 6 downto 0 )); ----xout显示结果,xout0显示否决的人数,xout1赞成的人数,xout2 LED输出end entity ;architecture bev of biao isbeginprocess ( xin ,set,set1)variable j: integer :=0;beginj:=0;for i in 0 to 6 loop ------统计同意的个数if xin(i)='1' thenj:=j+1;end if;end loop;if (set='1') then -------是否记名投票sel<='1';xout2<=xin; -------记名投票elsesel<='0';xout2<="0000000";end if;if j>3 then ------判决是否表决通过并输出结果xout<="0001100"; ----数码管显示Pelse xout<="0000110"; -----数码管显示Eend if;if set1='1' then ------是否显示表决比例sel2<='1'; ------显示指示灯亮并且译码输出同意与不同意的数目case j is ------显示赞成的人数when 0 =>xout1<="1000000";when 1 =>xout1<="1111001";when 2 =>xout1<="0100100";when 3 =>xout1<="0110000";when 4 =>xout1<="0011001";when 5 =>xout1<="0010010";when 6 =>xout1<="0000010";when 7 =>xout1<="1111000";when others =>xout1<="XXXXXXX";end case;case j is ------显示不赞成的人数when 7 =>xout0<="1000000";when 6 =>xout0<="1111001";when 5 =>xout0<="0100100";when 4 =>xout0<="0110000";when 3 =>xout0<="0011001";when 2 =>xout0<="0010010";when 1 =>xout0<="0000010";when 0 =>xout0<="1111000";when others =>xout0<="XXXXXXX";end case;else ------不显示表决比例sel2<='0';xout0<="1111111"; ----不显示数字xout1<="1111111";end if;end process;end architecture bev;四.DE2平台仿真1.在Quartus中打开已经建好的工程文件;2.按要求选择设备并且分配管脚,重新编译,连接实验板的电源线与下载线,下载程序文件3.分别拨动开关sw0到sw6,看是否能够满足基本要求;在分别拨动sw16,sw17,看是否能够按要求显示表决人数结果与对应的LED灯是否正常亮与灭。

学生电子投票平台方案报告

学生电子投票平台方案报告

天津职业技术师范大学TianjinUniversity of Technology and Education《面向对象程序设计》课程设计报告学生电子投票平台设计专业:计算机科学与技术班级学号:计科0814-32学生姓名:魏花指导教师:刘玲教授二〇一一年六月一、课程设计名称:学生电子投票平台设计二、课程设计概述:1、选题意义:学生电子投票平台设计是通过界面录入候选人的信息<姓名、编号、数学成绩、英语成绩、C++成绩),运行过后能够显示候选人的信息,并且统计总成绩和排名。

接下来进行投票,投票人为候选人投票,显示投票结果,且能在进行增加候选人信息和查询候选人信息及排名情况。

2、设计目的:(1>、运用C++面向对象的知识,解决学生电子投票平台设计。

(2>、利用结构体、类、继承、析构函数、构造函数及对以前积累知识来设计这一学生电子投票系统。

(3>、全面提高学生的程序设计能力和开发能力。

3、设计基本要求(1>、功能齐全:界面操作灵活方便,至少实现以下基本功能:●候选人为5名,投票人数最少为10人;●候选人信息包括:编号、姓名和本学期三门课程的成绩<英语、数学、C++语言);●程序运行时显示简单菜单,菜单内容包括:①录入数据:录入候选人信息;②显示数据:显示候选人信息并统计三门课程总成绩;③投票;④投票结果:显示票数统计结果,并按得票数排序;⑤查询:输入编号查询某候选人信息。

(2>、友好性:界面友好、输入有提示、尽量展示人性化。

(3>、可读性:源程序代码清晰、有层次、主要程序段有注释。

(4>、健壮性:用户输入非法数据时,系统应及时给出警告信息。

4、使用工具软件:Microsoft Visual Studio 10.0三、课程设计内容简介:1、流程图:2、打开Microsoft Visual Studio 10.0 ,新建“工程”,MFC下的“MFC应用程序”,输入名称“vode”,点击”确定“,选择”基于对话框“,点击”确定“。

网上投票系统实验报告

网上投票系统实验报告

《Web程序设计(一)课程设计》实验报告院系名称:专业班级:学生姓名:学号:2012年11 月一、实验目的本实验属于设计性实验,目的是使我们在学完《Web程序设计(一)》课程的基本知识之后,通过使用JSP+JavaBean制作一个简单的在线投票系统,进一步熟悉和领悟JSP、JavaBean和Java语言的语法结构和使用方法,通过实验学习Java Web系统的开发步骤与方法,任务是设计一个简单的线投票系统。

二、实验步骤1、对整个系统进行分析设计,设计整个系统的功能和所应有的页面。

2、对系统进行页面设计。

3、对系统进行功能设计。

4、对系统进行数据库设计和链接。

5、整个系统进行测试和调试。

三、系统设计1、界面设计首页注册页面:错误提示页面投票页面:投票结果页面:系统应该具有注册功能、登录功能、在线投票功能、票数统计功能、投票结果显示功能,其中注册功能应该包含的注册项如表1所示,在线投票功能应该包含的投票项如表2所示。

下图表1下图表23、数据库设计根据上述的功能要求,该系统数据库中包括的数据表有:用户基本信息表(表名:yonghu)、年龄信息表(表名:nianling)、收入信息表(表名:shouru)、文化程度信息表(表名:xueli)、娱乐方式信息表(表名:yule)、体育运动信息表(表名:tiyu)、电影类型信息表(表名:dianying)。

表3用户基本信息表表4年龄信息表表5收入信息表表6文化程度信息表表7娱乐方式信息表表8体育运动信息表表9电影类型信息表四、系统的核心代码1、index.jsp<body bgcolor="FF1493"><div align="center"><p>欢迎进入投票系统</p><hr><table><tr><td>已注册,点击登录按钮登录</td><td>未注册,点击注册按钮注册</td></tr><tr><td width="300px"align="center"><a href="denglu.html">登录</a></td><td width="300px"align="center"><a href="zhuce.html">注册</a></td></tr></table>2.zhuce.html<body bgcolor="FF1493"><div align="center"><p>欢迎用户注册!</p><form action="zhuce.jsp"method="post"><table><tr><td>&nbsp;&nbsp;用户名:</td><td><input type="text"name="username"/></td></tr> <tr><td>&nbsp;&nbsp;密&nbsp;&nbsp;&nbsp;&nbsp;码:</td><td><input type="text"name="password"/></td></tr><tr><td>真实姓名:</td><td><input type="text"name="realname"/></td></tr><tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;性别:</td><td><inputtype="radio"name="sex"value="男"checked/>男<input type="radio"name="sex"value="女"/>女</td></tr><tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;省份:</td><td><select name="shengfen"><OPTION value="安徽">安徽</OPTION>-------soso onon----<OPTION value="内蒙古"selected>内蒙古</OPTION><OPTION value="宁夏">宁夏</OPTION>------<OPTION value="西藏">西藏</OPTION><OPTION value="云南">云南</OPTION><OPTION value="浙江">浙江</OPTION>-----</select></td></tr><tr><td align="center"><input type="submit"value="注册"/></td><td align="center"><input type="reset"value="重置"/></td></tr></table></form>3.zhuce.jsp<% request.setCharacterEncoding("UTF-8");String username=request.getParameter("username");String password=request.getParameter("password");String realname=request.getParameter("realname");String sex=request.getParameter("sex");String shenfen=request.getParameter("shengfen");Stringstrsql1="'"+username+"'"+","+"'"+password+"'"+","+"'"+realname+"'"+","+"'"+sex+"'"+", "+"'"+shenfen+"'";String strsql="insert into yonghu(username,password,realname,sex,shengfen)"+"values("+strsql1+")";System.out.println(strsql);Access a=new Access();boolean isnot=a.executeUpdate(strsql);if(isnot==true){ session.setAttribute("username",username);response.sendRedirect("toupiao.jsp");}Else{response.sendRedirect("zhuce.html");}%>4.error.html<body bgcolor="FF1493"><p>您输入的用户名或密码错误</p><p>请重新输入</p><table><tr><td><a href="denglu.html">跳转到登录页面重新登录</a></td></tr></table></body>5.denglu.js p<body bgcolor="FF1493"><jsp:useBean id="user"class="com.mushu.Access.Access"></jsp:useBean><% String username=request.getParameter("username");String password=request.getParameter("password");String iscorrect="select * from yonghu where username="+"'"+username+"'"+" and password="+"'"+password+"'";System.out.println(iscorrect);ResultSet rs=user.execute(iscorrect);if(!rs.next()){ response.sendRedirect("error.html");}Else { session.setAttribute("username", rs.getString("username"));session.setAttribute("password", rs.getString("password"));rs.close();response.sendRedirect("toupiao.jsp");}%></body>6.toupiao.jsp<body bgcolor="FF1493"><% if(session.getAttribute("username")==null){ response.sendRedirect("denglu.html"); }%>尊敬的<%=session.getAttribute("username") %>,欢迎来到投票页面<form action="toupiao1.jsp"method="post"><table width="700"border="0"align="center"cellpadding="0" cellspacing="0"><tbody><tr><td height="45"valign="top"><table width="746"border="0" cellspacing="0"cellpadding="0"><tbody><tr><tbody><tr><td width="177"><div align="center"><div id="ValidationSummary2"style="color:Red;display:none;"></div></div></td><td width="76"><div align="center"></div></td></tr></tbody></table></td></tr></tbody></table><table width="600"align="center"><tbody><tr><td class="style1"><div><table class="GbText"cellspacing="1"cellpadding="3"rules="all" border="1"id="VoteView"style="border-color:SteelBlue;border-width:1px;bo rder-style:None;width:100%;"><tbody><tr class="GbText"style="color:Black;font-size:Large;font-weight:b old;"> <th scope="col">调查问卷</th></tr><tr><td align="left">1、您的年龄是多少?<div id="VoteView_ctl02_ItemPanel"class="GbText" dir="ltr"style="width:100%;"><table id="VoteView_ctl02_radioList"border="0"><tbody><tr><td><input id="VoteView_ctl02_radioList_0" type="radio"name="VoteView1"value="age1"><label for="VoteView_ctl02_radioList_0">20岁及以下</label></td><td><input id="VoteView_ctl02_radioList_1" type="radio"name="VoteView1"value="age2"><label for="VoteView_ctl02_radioList_1">21-35岁</label></td></tr><tr><td><input id="VoteView_ctl02_radioList_2" type="radio"name="VoteView1"value="age3"><label for="VoteView_ctl02_radioList_2">36-50岁</label></td><td><input id="VoteView_ctl02_radioList_3" type="radio"name="VoteView1"value="age4"><labelfor="VoteView_ctl02_radioList_3">50岁</label></td></tr></tbody></table></div></td></tr><table></body> 7.toupiao1.jsp<body bgcolor="FF1493"><%request.setCharacterEncoding("UTF-8");Access a=new Access();//年龄String age=request.getParameter("VoteView1");if(age!=null){String agesql="update nianling set "+age+"="+age+"+1";a.executeUpdate(agesql);//收入String shouru=request.getParameter("VoteView2");if(shouru!=null){String shourusql="update shouru set "+shouru+"="+shouru+"+1";a.executeUpdate(shourusql);}//学历String xueli=request.getParameter("VoteView3");if(xueli!=null){String xuelisql="update xueli set "+xueli+"="+xueli+"+1";a.executeUpdate(xuelisql);}//娱乐String yule[]=request.getParameterValues("VoteView4");if(yule!=null){for(int i=0; i<yule.length;i++){String yulesql="update yule set "+yule[i]+"="+yule[i]+"+1;";a.executeUpdate(yulesql);System.out.println(yulesql);}}//体育String tiyu[]=request.getParameterValues("VoteView5");if(tiyu!=null){for(int i=0; i<tiyu.length;i++){String tiyusql="update tiyu set "+tiyu[i]+"="+tiyu[i]+"+1;";a.executeUpdate(tiyusql);System.out.println(tiyusql);}}//电影String dianying[]=request.getParameterValues("VoteView6");if(dianying!=null){for(int i=0; i<dianying.length;i++){String dianyingsql="update dianying set"+dianying[i]+"="+dianying[i]+"+1;";a.executeUpdate(dianyingsql);System.out.println(dianyingsql);}}response.sendRedirect("result.jsp");%></body>五、实验总结通过本次实验,让自己进一步熟悉和领悟JSP、JavaBean和Java语言的语法结构和使用方法,让自己对javaweb程序设计有了更加深刻的认识,提高了自己的计算机操作能力,提高了自己的实践动手能力。

三人表决项目报告

三人表决项目报告

三人表决器项目报告系别:专业:姓名:指导老师:学号:摘要本次设计的三人表决器,是投票系统中的客户端,是一种代表投票或举手表决的表决装置。

表决时,与会的有关人员只要按动各自表决器上“赞成”“反对”。

在三人表决器中三个人分别用开关SW1、SW2、SW3的状态来表示自己的意愿。

1、项目功能三个人分别用手指拨动开关SW1、SW2、SW3来表示自己的意愿,如果对某决议同意,各人就把自己的指拨开关拨到高电平,不同意就把自己的指拨开关拨到低电平。

表决结果用LED(高电平亮)显示,如果两个及其两个以上通过那么实验板上LED灯亮,如果没有人通过或者只有一人通过没通过则不亮。

2、项目目标1. 熟悉逻辑函数的表示方法与化简方法;2. 正确理解数字电路的要求,能知道与门、或门、非门的含义。

3. 了解要用到的每个芯片的引脚是什么门电路并且运用。

3、实验器材:输入输出模块,面包板,芯片74LS20、74LS00、74LS138、74LS153,导线四、实验步骤1、得出真值表和卡诺图设:A、B、C分别代表三个输入,同意为1,不同意为0;Y为输出,通过为1,不通过为0。

有真值表可得出卡诺图如下:由卡诺图可知化简后表达式如下:Y=BC+AC+AB2、设计电路,接入输入输出模块进行试验方案一:芯片74LS00与74LS2074 LS00是四-二输入与非门,它内部有四个与非门,每个与非门有两个输入端、一个输入端。

74 LS20是二-四输入与非门,它内部有两个与非门,每个与非门有四个输入端、一个输出端。

74 LS00、74 LS20引脚及内部电路图(1-1)图1-1: 74LS00 74 LS20 电路图接法如下:74LS00的VCC与74LS20的VCC接5V的直流电,两块芯片的7脚都接地;74LS00的1、13脚接输入端A;2、5脚接输入端B;4、12脚接输入端C。

74LS的11、3、6脚接在74LS20的1、2、4脚上;74LS20的6脚为输出Y。

电子投票系统课程设计报告 [文档在线提供]

电子投票系统课程设计报告 [文档在线提供]

一、课程设计的内容编程建立一个小型电子投票系统二、课程设计的要求与数据1.开发环境:Wintc2.需求分析:电子投票平台作为一个用来进行投票统计的应用软件1)编程建立一个小型电子投票系统,其中包含电子投票、票数统计功能,。

尽量做到提供一个简单的人机界面,系统界面友好,使用方便。

2)软件的使用者分为两类,一类为管理员,可以对候选人信息进行初始化和修改,还可浏览候选人信息介绍,可对候选人的票数进行排序以及对系统的用户进行管理,创建使用者用户名和密码,还可以对用户信息进行增加、删除、修改和查询操作等。

另一类为使用者—普通投票者,该类用户需要用管理员分配的用户名和密码正确登录系统,可以查询候选人介绍、投票等。

投票是只需做到输入自己想要投票的候选人编号即可完成投票。

3.功能需求描述电子投票系统是用来进行投票统计的系统软件,进入投票系统后应该需要先进行身份验证。

如果是投票人,就可以用浏览和查询的方式了解各个候选人的介绍信息,根据候选人的介绍信息决定将选票投向哪位候选人。

① 投票人的投票方式:输入要选举的候选人的编号,即可完成投票;②投票人了解候选人的方式:浏览候选人列表,输入序号查询候选人介绍。

如果是管理人员就可以进以下操作:①初始化候选人信息:在系统投入使用前需要先将需要投票选举的候选人信息录入系统中,以便投票和查看。

管理员的初始化工作就是将候选人的序号、姓名和简介录入系统。

②浏览候选人简介:为随时掌握候选人的信息,进行修改,管理员可以浏览候选人简介。

③修改候选人简介:当候选人信息有所变化时,输入候选人序号,对信息进行修改。

④查询投票情况:管理员有权查询当前各个候选人得票情况.⑤清除投票信息:当投票结束后,管理员可清除系统中所有候选人的票数,使之归零。

⑥安全管理:管理员可以对投票人信息进行管理,投票人只有用管理员规定的用户名和密码才能进入系统进行投票。

管理员还可以更改用户名、密码和权限,并对投票人信息进行增加、删除、查询、排序和初始化等操作。

课程设计报告---七人表决器设计

课程设计报告---七人表决器设计

电子综合设计题目七人抢答器设计学院计信学院专业电子信息工程班级学生姓名指导教师2012 年 6 月18 日一、设计原理所谓表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。

七人表决器顾名思义就是由七个人来投票,当同意的票数大于或者等于 4 时,则认为同意;反之,当否决的票数大于或者等于4 时,则认为不同意。

二、分析讨论七人表决器这一功能可以用C语言、汇编语言或VHDL编程后下载到单片机上实现,不过用VHDL编程不仅技术含量高而且能让我们更熟练的掌握和使用quartus软件的步骤和方法。

所以我们是采用VHDL编程来实现的。

三、设计准备根据七人表决器的原理,我们的准备过程如下:1、使用Altera的Cyclone II器件,所用的芯片为EP2C35F672C8,开发平台为quartus II。

2、使用七个拨动开关(K1~K7)作为输入变量来表示七个投票人,当拨动开关输入为‘1’时,表示对应的人投同意票,否则当拨动开关输入为‘0’时,表示对应的人投反对票。

3、使用一个七段数码管来显示同意的票数。

4、使用七个LED(LED2~LED8)用来分别记录投票人的个人投票结果,当LED亮起时就表示对应的投票人同意,否则就表示不同意。

5、使用一个LED(LED1)来表示最终的投票结果,当LED1亮起时表示表决通过,不亮时就表示表决不通过。

6、使用一个拨动开关(K8)来达到复位要求,即需要复位时能够达到同时清零数码管的显示结果和LED的显示情况。

7、软件仿真成功后,通过专用的连接线再用硬件进行测试,并将硬件测试的结果以照片的形式做记录。

四、设计思路根据程序设计的一般步骤,我们首先设计出七人表决器的系统框图,也就是说先要确定一个大的设计方向;然后再根据设计要求并结合系统框图来设计程序流程图;由程序流程图来编写VHDL程序,并画出表决器的外围引脚图;再将程序用软件仿真,软件仿真成功后进行硬件测试。

多人表决器实验报告总结

多人表决器实验报告总结

多人表决器实验报告总结
本次多人表决器实验旨在探究多人间的民主决策机制和表决器的使用方法及其效果。

实验过程中,我们设计了一个简单的投票系统,并邀请了几个志愿者进行了测试。

实验结果表明,多人表决器可以较好地解决多人间的决策问题,能够提高集体决策的准确性和效率。

使用多人表决器可以规范化投票程序,避免了个别人员的干扰和影响,提高了集体达成共识的可能性。

同时,我们也发现了多人表决器的一些问题和不足,例如:对于一些争议性较大的议题,表决器可能无法完全反映每个人的意见,或者可能会存在部分群体的利益被忽略的情况。

因此,在实际使用表决器时,需要注意把握好权衡和平衡的度。

综上,多人表决器的使用可以带来一定的好处,但也需要结合实际情况进行权衡和考量,在适当的场合加以运用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

常熟理工学院电气与自动化工程学院《微机原理与接口技术》期末作品设计报告题目:投票器姓名:沈志乐学号:160511122班级:测控111目录1.引言 (2)1.1作品简介 (2)1.2作品设计思路及方案 (3)1.3知识点应用 (3)2.硬件设计 (4)2.1最小系统 (4)2.2二极管显示电路 (5)2.3 蜂鸣器电路 (6)2.4按键电路 (7)2.5 数码管显示电路 (8)2.6 设计总仿真图 (9)3.软件设计 (10)4.作品调试 (12)4.1硬件操作指导 (12)4.2实物图如下 (12)结语 (13)参考文献 (14)附录 (15)1.引言1.1作品简介北京人民大会堂的会议厅的每个桌子上都有三个按钮,那三个按钮就是给每次大会与会的代表投票表决用的。

三个按钮分别是“同意”、“反对”、“弃票”。

全场有上千个按钮,当所有人都按完按键后,在前面的液晶显示屏上会显示三种不同意见的票数。

上面所说的就是最常用的一种投票系统。

这样的投票系统与传统的纸质选票相比,它的工作效率高,可靠性强,以及它很大地提升了投票的公正透明度。

现在除了国外特殊的一些政府官员民主投票还用纸质投票,其他的,比如在一些会议中,都是用的电子投票系统,大大的提高的会议的高效性。

现在的电子控制系统中,单片机已经被大量的运用在其中。

单片机以其操作简单,可靠性强,应用范围广,深受电子设计公司的亲睐。

对于投票系统,一般只用到三个按键,设计者编写程序时只需要学要判断三个按键的电平,单片机就可以自动在显示器上显示按键按下的次数,这样一个投票系统就完成了。

这次试验我就是利用89C52单片机,作出一个简易的十人投票系统。

它在生活中也是有应用之处的。

比如班里的班委选举,我可以设置40人(本班人数)的投票系统,这样班里的人就可以通过按键表决的方式进行选举工作。

总之,有了单片机,会用单片机,我们可以将生活中各种各样传统的手工事务变成一个自动控制的电子系统。

这样既减轻了人力,也减少了劳动力,使得共享工作都变得高效。

1.2作品设计思路及方案工作生活中我们经常要用到或者看到投票的情形,这个作品是一个简易的投票器。

这次我是用的89C52单片机和锐志51开发板,利用单片机的计数器,开发板上的数码管、二极管、按键和蜂鸣器,做成了一个简单的投票器。

我用了两个按键,一个是赞成按键,一个是反对按键。

通过按着两个按键,并且对其进行计数,然后通过数码管显示出赞成或者不赞成的票数。

当赞成的票数多于反对票数时,表示“通过”的二极管亮。

当反对的票数多于赞成的票数时,表示“不通过”的二极管亮。

如果赞成票和反对票一样多,则表示“票数相同”的二极管亮。

1.3知识点应用在本次设计中,用到了单片机的四路并行I/O口,即P0,P1,P2,P3。

其中P0和P2分别是用来控制数码管的段码和位码的选择。

在单片机内部用到了定时器T1。

不过在这里,我是将T1的TH1和TL1的初值给的0xff,也就是说,这里的T1其实就相当于是一个外部中断,每触发一次就溢出。

设计中还用到了发光二极管,八位数码管,蜂鸣器,还有按键。

其中,因为数码管是需要动态显示的,所以也要有段选、位选,消影、延时这几个步骤。

数码管的段显示是用的查表法。

设计的程序是用C语言写的,因为大一时曾自学过C语言,所以没有用本学期学习的汇编,我个人也觉得C会更简单。

设计还需要设计硬件原理图,即用protues画出设计的仿真图。

设计中,因为硬件用的是一块网上买的开发板,所以编写程序前,必须要先把开发板的硬件原理图看明白了,这样才能写出正确的程序。

2.硬件设计2.1最小系统89C51的最小系统电路由晶振电路和复位电路组成。

晶振电路的晶振为12MHz,两片电容都是30pf。

复位电路采用的是按键复位电路,这比上电复位更加具有实际应用性。

同时EA端口是要接地的。

2.2二极管显示电路与所用的硬件实物电路一样,这里的LED采用低电平点亮。

最左边的二极管用来显示投票未通过的结果。

中间的二极管用来显示投票通过的结果。

最右边的二极管用来显示赞成票和反对票票数相同的情况。

2.3 蜂鸣器电路蜂鸣器电路所接的I/O口是P3.6口。

因为单片机提供的电压不能够驱动蜂鸣器,所以电路中需要加一片PNP型三极管。

三极管的作用的是用来放大电流或电压,从而驱动蜂鸣器,让其在上电时能够响起。

2.4按键电路本次设计中的按键是接在P3.2和P3.3口。

按键按下即为低电平时,程序会自动判断按键按下时,所接I/O口的电平状态。

上面的按键是赞成按键,下面的按键是反对按键。

2.5 数码管显示电路本设计对数码管的操作采用的是用P0口控制断码,P2口控制位码。

因为设计中并没有用到太多I/O口,所以I/O的资源还是比较丰富的,没必要为了节省I/O口资源而选用两片74LS573芯片来驱动数码管。

由于这里数码管的驱动电压比较大,光是用单片机提供的电压的话,数码管显示时的亮度会不够。

所以这里采用在P2口的八位并行口上接上八个PNP型三极管,用来放大电压,从而驱动数码管。

我们知道,51系列单片机的P0口作为普通I/O 使用时,需要外接上拉电阻。

所以本设计中,在P0口接了一片八路的排阻作为上拉电阻。

2.6 设计总仿真图上图便是设计的总仿真图,由复位电路,LED显示电路,数码管电路,蜂鸣器电路,按键电路这几部分组成。

仿真载入程序后,便可实现本次设计的目的-投票器。

3.软件设计以上是软件设计的流程图4.作品调试4.1硬件操作指导硬件电路的所用到的两个按键分别是“赞成”键、“反对”键。

按“赞成”键,左边的数码管加1;按“反对”键,右边的数码管加1。

最右边的数码管用来显示“赞成”和“反对”键一共被按的次数。

当两个按键一共被按的次数达到10次时,系统出发定时器中断,数码管的显示和二极管均保持静止不动,蜂鸣器响起。

十次按完时,如果赞成的人数多于反对的人数,则“通过”二极管亮;如果反对的人数多于赞成的人数,则“未通过”二极管亮;如果赞成和反对的人数一样多,则“票数相同”二极管亮。

4.2实物图如下结语单片机作为计算机发展的一个分支,由于其功能强大,适用性强,操作简单方便,已经被运用到很多的领域。

单片机渗透到我们生活中的每一部分,几乎很难找到哪个领域是没有单片机的。

飞机,导弹,汽车,自动洗衣机,电梯等等全都用到了单片机。

第二次工业革命,虽然人类实现了机械化,但是机器都是由人工进行控制的。

但是第三次科技革命,人类进入计算机时代,单片机随之被应用在各个领域,工厂自动化生产线用起了机器人。

我们学习单片机就是为了应用。

单片机只是一块芯片,如果没有人给它编写程序,没有人为它设计一套硬件电路,那单片机就永远只是一块没用的芯片。

我们学习单片机不能只学习书本的知识,对于我们来说,最重要的就是学以致用。

这学期学期末我们每个人都要做一个作品设计,就是为了锻炼我们的应用能力。

我们平时会冒出很多的想法,看到一些东西会想它是怎么工作的,原理是什么。

比如我这次做的这个投票器,就是看到了一些会议上用到的表决器想到的。

我要模拟那些表决器,自己动手用单片机做出一个投票器来。

虽然说作品相对来说是比较简单的,但是却对我的软件和硬件知识都有了一个质的提升。

自己动手永远强于只专注于课本,这是对一个面向社会,面向应用的学生的一个测试。

我想,有了这学期的初步学习之后,以后在做一些设计时,如果用到其他的单片机,我们就可以依赖现在所学的51知识,灵活应用,做出自己想做的设计出来。

参考文献【1】张毅刚,彭喜元,彭宇. 单片机原理及应用【M】. 北京:高等教育出版社,2010【2】郭天祥. 51单片机C语言教程【M】. 北京:电子工业出版社,2009 【3】谭浩强. C程序设计. 北京:清华大学出版社,1991【4】网络. 百度文库附录#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit key1=P3^2;sbit key2=P3^3;sbit beep=P3^6;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e} ;void delayms(uint);void display(uchar,uchar,uchar); void key();uchar num,num1,num2, T,F;void main(){TMOD=0x10;TH1=0xff;TL1=0xff;EA=1;ET1=1;while(1){key();display(T,F,num);if(num>=10){if(T>F){P1=0xfd;//break;}if(F>T){P1=0xfe;//break;}if(T==F){P1=0x7f;}TR1=1;}}}void display(uchar T, uchar F,uchar num) {P2=0xfe;P0=table[T];delayms(1);P2=0x7f;P0=table[num];delayms(1);P2=0xfd;P0=table[F];delayms(1);}void delayms(uint xms){uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}void key(){if(key1==0) //赞成按键{delayms(2);if(key1==0){T++;num++;while(!key1);}}if(key2==0) //反对按键{delayms(2);if(key2==0){F++;num++;while(!key2);}}}void T1_TIME() interrupt 3 {TMOD=0x10;TH1=0xff;TL1=0xff;while(1){//P1=0x7f;display(T,F,num);beep=~beep;}}。

相关文档
最新文档