表决器

时间:2024.3.31

                 

            

通信工程专业

计算机综合课程设计

题   目      基于51单片机-多人表决器        

学生姓名   赵     丹    学号    1113024046     

所在院(系)      陕西理工学院物理与电信工程学院      

专业班级     通 信 工 程 专 业 1102 班        

指导教师            张  文  丽                 

      20##年 11 月 21 日

    


              任务书

           AT89C51实现三人表决器

内容摘要:随着计算机技术的发展,单片机的应用领域也越来越广泛,尤其是在工业控制和仪器仪表智能化中扮演着极其重要的角色,单片机全称为“单片微型计算机”,从应用领域来看,单片机主要用于控制,所以又称为“微控制器”。在此次课程——三输入表诀器中,其原理就是由三个人来投票,当同意的票数大于或者等于2人时,则认为同意;反之,当否决的票数少于2人时,则认为不同意。实验中用3个拨挡开关来表示3个人,当对应的拨挡开关输入为‘0’时,表示此人同意;否则若拨挡开关输入为‘1’时,则表示此人反对。表决的结果用一个LED表示,若表决的结果为同意,则LED被点亮;否则,如果表决的结果为反对,则LED不会被点亮,因此,通过Proteus 7.4a电脑仿真软件以及KeilC51软件,再经过编写C语言程序,以达到对题目的仿真验证。

关键词:单片机;表诀器;AT89C51.   蜂鸣器

AT89C51 is used to implement the seven input voter

Content abstract:With the development of computer technology, single chip microcomputer application field is becoming more and more widely, especially in the industrial control and intelligent instrument plays a very important role, called the single chip microcomputer "single chip microcomputer", from the point of application field, single-chip computer is mainly used to control, so called "micro controller. In the course - three input table tactic, its principle is composed of three people to vote, when agreed to vote is greater than or equal to 2 person, thinks agree; Conversely, when veto votes less than 2 people, argues that don't agree. Experiment with three dial switch to represent the three men, when the corresponding dial switch input to '0', said he agreed to; Otherwise if the allocated block switch input is' 1 ', said the man. The results of the vote with an LED said, if the results of the vote to agree, LED lit up; Otherwise, if the results of the vote for the opposition, the LED is not lit, therefore, through the Proteus 7.4 a computer simulation software and KeilC51, repass write C language program, in order to achieve the simulation of the title.

Key words: single chip microcomputer; Table tactic; The specs AT89C51.

                        目  录

  1.引言................................................... 1

  2.系统总体设计............................................ 2

     2.1 生活中的表决器............................................ 2

     2.2 输入表决器的实现.......................................... 2

     2.3 AT89C51的管脚说明......................................... 3

     2.4 实验构思.................................................. 3

  3.实现的程序.............................................. 3

     3.1 仿真程序.................................................. 3

     3.2 实验的仿真................................................ 4

  4.注意项.................................................. 5

  5.实物图.................................................. 5

  结束语.................................................... 6

  致谢...................................................... 7

  参考文献.................................................. 8

  附录A.................................................... 9

  附录B................................................... 13


                                  

电子数字计算机诞生于1946年,在其后的一个历史阶段中,计算机一直都是大型昂贵的的设备,直到20世纪70年代微处理器的出现,使得计算机逐渐小型,廉价并且高可靠性。而随着计算机技术的发展,单片机的应用领域也越来越广泛,尤其是在工业控制和仪器仪表智能化中扮演着极其重要的角色,单片机全称为“单片微型计算机”,从应用领域来看,单片机主要用于控制,所以又称为“微控制器”现今,掌握单片机这门课程是极其重要的,尤其是作为一名工科学生,我们不仅要学好课堂的理论知识,还需要通过一定的课程实验开动脑筋,激发学习兴趣,达到理论与实践相结合的目的。还有一个重要的认识就是,要学好一门课很容易,但是要真正能把它运动到实际中就难了,掌握一定的理论知识并且会做题还不够,关键是要怎么样去利用,所以,在今后的学习生活中,我要学会学以致用。

2.系统的总体设计

2.1生活中的表决器

如1-1图所示,这是表决器中的一种,表决器在生活中被我们所熟知,众所周知,在很多场合中都要用到表决器,选举大会中,可以通过表决器来为候选人进行投票选举,在比赛中评委中也可以通过表决器来决定选手的去留。有了表决器,可以使得程序更为简单,操作更为简单,也使得结果更未公正。例如,在奥运会中的举重比赛上,某一位选手举重后,需要由三位评委对选手的表现作出判决,如果选手的表现有所犯规,那么就会按下红灯,如果对选手的表现认可,那么就会按下绿灯,如果绿灯的个数大于等于2 ,那么选手的此次举重通过。如果红灯大于等于2,那么选手将不通过,生活中的表决器有很多种类,但不管实现方法是什么,它的原理只有一个,那就是:多数服从少数,因此,表决器在生活中发挥着极其重要的角色,而在此论文中,我所要做的便是运用简单的C语言编程,再通过Proteus仿真软件仿真实现一种通过开关和发光二极管产生结果的简易3输入表决器。

1-1

2.2 表决器的实现

三人表决器顾名思义就是由三个人来投票,当同意的票数大于或者等于2人时,则认为同意;反之,当否决的票数少于2人时,则认为不同意。实验中用3个拨挡开关来表示3个人,当对应的拨挡开关输入为‘1’时,表示此人同意;否则若拨挡开关输入为‘0’时,则表示此人反对。表决的结果用一个LED表示,若表决的结果为同意,则LED被点亮;否则,如果表决的结果为反对,则LED不会被点亮,因此,通过Proteus 7.4a电脑仿真软件以及KeilC51软件,再经过编写C语言程序,以达到对题目的验证。

2.3 AT89C51的管脚说明

(1) P1口(1~8脚):P1.0~P1.7统称为P1口,可作为准双向I/O口使用,对于对于52字系列,P1.0与P1.1还有第二个功能:P1.0可用作定时/计数器2的计数脉冲输入端T2;P1.1可用作定时/计数器2的外部控制端T2EX,在此实验中P1.0~P1.6被接为7个开关用来进行表诀,而P1.7接发光二极管作为输出结果对表决后的结果进行显示。

(2)VCC:供电电压。

(3)GND:接地。

如1-2图所示:

1-2

2.4实验构思

   实验要求设计一个3输入表决器,可知,需要有3个输入端口作为判决器,因此,需要用到开关,通过高电平和低电平来判断,考虑到P1.0~P1.7时双向口,因此,将输入口接在P1—P6口上,将二极管输出显示接在P7 口,要使“1”信号正常输出,需要上拉电阻,因此,一个简易的7输出表决器便可以实现。

3.实现的程序

3.1仿真程序见附录A

3.2 实验仿真图                                   

我们可知,按下开关为低电平,表示同意,不按开关为高电平,表示反对,若按下开关的人数大于2人时,此时输出的二极管加正向电压,发光二极管被点亮,表决通过;反之,若按下开关的人数小于2人时,此时二极管未被点亮,表决没有通过,通过发光二极管的亮灭即可判断最终的结果。

1.以下是当按下的开关数目为三是的仿真图,由于表示通过的人数小于2,表决并被通过,因此LED红灯亮,如1-3图所示 

                                                                                                                                                                                                                                                                                           

1-3

2.当按下的开关数为2时,此时表决通过,LED发光,如1-4图所示:

1-4

4.注意事项:

(一)在进行课题设计前,首先应该充分了解AT89C51的工作原理,以及各引脚的功能,继而才能根据课题要求进行设计。

(二)应当注意当按下开关时,接的是低电平,因此在编辑程序时不要弄反以免出现错误。

(三)实验过程中应当细致认真,戒骄戒躁,在调试程序失误时,应当耐心检查,及时改正,学会运用仿真软件,在仿真时,应当找准所需器件,连线时避免连错或是漏连而导致仿真失误。

 5.实物图

         

                            

通过此单片机课题的选定,编程,调试,仿真到最后完成论文,心情是喜悦并且激动的,觉得做好一件事情并不是那么容易,关键是要看你对这件事情的态度问题,通过这次课题实验,我也对单片机这门课有了更加深刻的认识,它的用途,它的功能,它的方便之处,都通过这几天的研究得到了体会,而且对知识的巩固也起到了一定的作用。这次论文课题的编写,还有一个重要的认识就是,要学好一门课很容易,但是要真正能把它运动到实际中就难了,掌握一定的理论知识并且会做题还不够,关键是要怎么样去利用,所以,在今后的学习生活中,我要学会学以致用。另外,单片机是建立在C语言的基础之上,因此可知大学所学的课程时相互关联的,学好每一门课是非常重要的,作为通信专业的同学,我们更应该熟练操作并且掌握好这门功课,这对以后的不管是毕业论文还是所学知识都是很有帮助的。

                              

                                致  谢

本课题在选题及研究过程中得到张老师的亲切关怀和悉心指导下完成的。她严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,张老师都始终给予我细心的指导和不懈的支持。张老师不仅在学业上给我以精心指导,同时还在思想、生活上给我以无微不至的关怀,在此谨向张老师致以诚挚的谢意和崇高的敬意。

参考文献:李建忠.单片机原理及应用[M].西安:西安电子科技大学出版社.2008

          谭浩强.C程序设计[M].北京:清华大学出版社.2005

                                                   

附录A

仿真程序

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

uchar a,b,c;

uint t,y,t1,y1;

sbit p20=P2^0;

sbit p21=P2^1;

sbit p10=P1^0;

sbit p11=P1^1;

sbit p12=P1^2;

sbit p13=P1^3;

sbit p14=P1^4;

sbit p15=P1^5;

sbit p16=P1^6;

void daojishi5s();//5s倒计时子程序

void daojishi30s();//30s倒计时子程序

void panduan(); //判断程序                                                                                        

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void delay(uint xms)

 {

  uint o,p;

  for(o=xms;o>0;o--)

      for(p=115;p>0;p--);

 }

void main()

{

 EA=1;

 TMOD=0x11;

 TH0=0x3C;

 TL0=0xb0;

 TH1=0x3C;

 TL1=0xb0;

 ET0=1;

 ET1=1;

 while(1)

   {

    daojishi5s();

    panduan();

    daojishi30s();

    while(p10)

        {

         p14=1;

         p15=1;

         p16=1;

         P0=0xff;

         a=0;

         b=0;

         c=0;

       }

   }

}

void daojishi5s()//5s倒计时子程序

     {

       uchar l=2,i=11;

       do

        {

          uchar j;

          i--;

          if(i<1)

         {i=0;l=1;}

          for(j=0;j<50;j++)

           {

             P0=table[i/10];

             p20=1;

             delay(10);

             p20=0;

             P0=table[i%10];

             p21=1;

             delay(10);

             p21=0;

             if(p11==0)a=1;

             if(p12==0)b=1;

             if(p13==0)c=1;            

           }

         }while(l-1);

     }

void daojishi30s()//30s倒计时子程序

  {

   uchar k=2,i=31;

   do

    {

     uchar j;

     i--;

     if(i<1)

     {i=0;k=1;}

     for(j=0;j<50;j++)

      {

       P0=table[i/10];

       p20=1;

       delay(10);

       p20=0;

       P0=table[i%10];

       p21=1;

       delay(10);

       p21=0;

      }

    }while(k-1);

  }

void panduan()  //判断程序

{

 if(a+b+c>=2)

    {

    p15=0;

    p16=0;

    TR1=1;

    }

 else

   {

   p14=0;

   TR0=1;

   }

}

void zhongduansansuo() interrupt 1  //不通过

  {

   TH0=0x3c;

   TL0=0xb0;

   t++;

   y++;

   if(t==1)                 //设置频率一般不用改

      p16=0;

   if(t==50)                 //设置频率

    {

     p16=1;

     t=0;

    }

    if(y==200)

    {

    y=0;

    p16=1;

    TR0=0;

    }

  }

void dingshizhongduan() interrupt 3     //通过

{

 TH1=0x3c;

 TL1=0xb0;

 t1++;

 y1++;

 if(t1==1)           //设置频率一般不用改

    p16=0;

 if(t1==2)             // 设置频率

   {

    p16=1;

    t1=0;

   }

 if(y1==200)

   {

   y1=0;

   t1=0;

   TR1=0;   

   }

}         

附录B

元器件清单

更多相关推荐:
班主任主题班会设计比赛表彰决定

毕节市卫生学校关于对班主任主题班会设计比赛获奖教师进行表彰的决定学校各科室:为了进一步加强我校班主任队伍建设,努力创建国家改革发展示范校和设置毕节医学高等专科学校,学校于20xx年x月x日举行了班主任主题班会设…

高台县解放街小学庆祝三八妇女节表彰决定

高台县解放街小学文件高解发【20xx】02号关于表彰学校“三八红旗手”的决定一年来,我校女职工在学校党支部和校委会领导下,坚持以邓小平理论、“三个代表”重要思想和十八大精神为指导,以高昂的热情和主人翁姿态,全面…

校园文化艺术节表彰决定

文化艺术节表彰决定为了进一步推进素质教育,营造积极向上、格调高雅、百花齐放、健康文明的校园文化氛围,白庙乡学区在前几届校园文化艺术节成功举办的基础上,再一次举办以“放飞理想翅膀展现你我风采”为主题的“校园文化艺…

优秀党务工作者表彰决定

优秀党务工作者表彰决定各党支部:我院全体党员在院党组的领导下,以“xxxx”重要思想为指导,紧紧围绕法院审判工作中心,解放思想、求实创新,艰苦创业,开拓进取,不断推进机关党的思想建设、组织建设、作风建设和廉政建…

关于校园文化艺术节的表彰决定

关于校园文化艺术节的表彰决定为了深入贯彻党的十八大精神、大力推进和谐校园文化建设,坚持育人为本,德育为先的办学思想,提高学生的道德水平和人文精神;加强校园文化建设,增强学生的凝聚力和战斗力。我校决定于20xx年…

最高法院表彰决定20xx

最高人民法院关于表彰全国优秀法院、全国优秀法官的决定法?20xx?473号近年来,全国各级人民法院高举中国特色社会主义伟大旗帜,以邓小平理论和“三个代表”重要思想为指导,深入贯彻落实科学发展观,坚持“党的事业至…

学生会表彰决定

关于表彰%%%%%%%中学20xx-20xx学年第二学期优秀学生会干部、优秀值管员、优秀餐管员、优秀体管员、优秀车管员、优秀礼管员、优秀播音员、优秀新闻编辑、优秀记者、优秀联络员、优秀金丝带志愿者的决定20xx…

表彰决定d

石门经贸职业技术学校20xx年上学期表彰决定20xx年上学期我校各项工作都取得了很大成绩涌现出了一批先进集体和先进个人经民主评议校委会审核决定对班等班集体陈金丹等69名同学给予表彰名单附后一先进班集体2个071...

20xx年表彰决定

领导小组蒲统领发20xx01号关于表彰奖励20xx年度人口和计划生育工作优秀主管领导的决定20xx年我县人口和计划生育工作在县委县政府的正确领导下在全系统广大干部的不懈努力下认真贯彻落实中央决定和省市实施意见精...

关于表彰的决定

关于对公司重点项目完成情况的表彰决定今年5月份根据公司面临急需解决的几项工作公司决定打破部门的界限根据工作的性质特点成立5个项目组实行项目负责人制按照公司的要求在规定的时间内保质保量的完成根据项目的要求到9月份...

关于表彰年度先进单位、先进个人的决定

关于表彰年度先进单位先进个人的决定各单位今年市分行机关各部门及全体员工紧密围绕党委提出的上总量求质量调结构创机制强管理增效益把发展作为硬道理的工作思路坚持以存款要上新台阶清收管理要有新突破经营效益要有大提升机制...

表彰决定20xx0919

关于表彰20xx20xx学年度下学期学习标兵美德少年的决定20xx20xx学年度下学期已圆满结束上学期在各级领导的亲切关怀下全校师生认真贯彻党的教育方针积极推进学生学习习惯的养成教育和未成年人思想道德建设建美丽...

表彰决定(84篇)