基于AT89C52系列单片机的15人投票表决器
- 格式:doc
- 大小:649.00 KB
- 文档页数:17
15人投票表决器班级:姓名:学号:************第一章概述1.设计内容:设计一个基于AT89C52系列单片机的15人投票表决器,利用按键来进行投票,通过1602进行票数的显示。
可以投反对票,赞同票,不投票默认为弃权。
2.设计目的:本文设计的投票表决器,是基于单片机设计制作的电子式投票表决器。
比传统的手动统计票数更为方便直观,通过程序来进行控制,有效避免了暗箱操作。
制作的投票表决器小巧容易携带,特别方便。
3.设计原理:该音乐盒主要由按键电路、复位电路、1602显示电路以及指示灯组成。
使用两排按键控制赞同票与反对票,一个指示灯用来表示正在计算。
待投票结束后按下统计按钮即可统计票数。
可以从1602上直观的读出赞同票,反对票,弃权票。
第二章硬件设计1.设计框架:音乐盒的系统结构以AT89C52单片机位控制核心,加上2排按键、1602显示电路、LED模块组成。
单片机负责接收按键的输入,根据输入控制1602显示票数,以LED显示单片机正在计算票数的状态。
系统组成框图如图2.1所示。
图2.1 系统组成框图2.各元器件选择及功能介绍:(1) AT89C52简介AT89C52是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。
AT89C52是一种带4K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C52单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图2.2所示图2.2 AT89C51系列单片机(2) 1602显示电路设计与原理1602是字符型液晶,它是16*2的显示的。
基于AT89C51的智能抢答与表决计时器的设计与实现王晓侃,苏全卫(河南机电职业学院河南郑州451191)摘要:设计一种基于AT89C51单片机实现的抢答、表决与计时器,分别设计优先编码电路、锁存器、译码电路并将参赛队的输入信号在显示器上输出;报警电路可通过控制电路和主持人开关启动;计时功能通过定时电路和译码电路将秒脉冲产生的信号实现。
经过试验模拟仿真,表明本设计抢答器具有反映快、功能多、实用性强的特点。
关键词:AT89C51单片机;抢答;定时;报警;时序控制中图分类号:TP273文献标识码:A文章编号:1674-6236(2012)08-0007-03Design and research intelligent answering and voter -timing machine based onAT89C51MCUWANG Xiao -kan ,SU Quan -wei(Henan Mechanical and Electrical Vocational College ,Zhengzhou 451191,China )Abstract:Priority encoder circuit ,the latch and the decoding circuit are designed respectively ,in the same the input signal of participating team are separately diplayed on the monitor.The alarm circuit is started by the control circuit and the host switch ,timing circuit and decoding circuit can generate second -pulse output signal to achieve timing function.After the experiment analog and simulation ,the results shows that the answering has characteristics with quick ,multi -functional and strong practical features.Key words:AT89C51MCU ;answering ;timing ;alarm ;sequence control收稿日期:2011-12-07稿件编号:201112036基金项目:国家科技部中小企业创新基金(10C26244104519;09C26144104753);河南省自然科学基金项目(102300410240);郑州市创新型科技人才队伍建设工程(10CXTD160)作者简介:王晓侃(1980—),男,河南新野人,硕士研究生,讲师。
河南理工大学万方科技学院本科生课题论文(设计) 基于AT89C52的八路抢答器设计院系名称信息科学与工程系姓名郑路杭学号************专业电子信息工程指导教师陈建国2016年10月26日1.设计的目的及意义随着科学技术的发展,人们学习知识的手段也越来越多。
趣味抢答竞赛就是其中的一种。
众所周知,抢答赛一定要公平,公正的判断出选手的答题权,这就离不开抢答器。
通过本课题的设计研究,设计一种基于单片机的数字抢答器,该设备投资小,操作简单,功率小,效率高,是现代抢答赛不可或缺的工具。
本课题简单的介绍了AT89C52单片机的概况。
采用经典的绘图工具Altium Designer Winter 09设计原理图,C语言功能强大的Keil C51来编写程序,并采用Proteus 7 仿真电路。
2.设计要求(1)采用5V电源供电;(2)由8个按键作为抢答输入端,由一个7段LED数码管显示1-8按键号,有按键按下时由喇叭发出1秒时长的声响;(3)选择电路元器件,画出原理电路图和PCB板图;(4)按装调试;(5)写出设计报告。
3.系统总框架:4.AT89C52单片机的结构和原理本设计采用的是AT89C52单片机,AT89C52是美国Atmel公司生产的低电压、高性能CMOS 8位单片机,片内含8KB的可反复檫写的程序存储器和12B 的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机可灵活应用于各种控制领域。
AT89C52单片机属于AT89C51单片机的增强型,与Intel公司的80C52在引脚排列、硬件组成、工作特点和指令系统等方面兼容。
其有以下主要工作特性:(1)片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为1000次;(2)片内数据存储器内含256字节的RAM;(3)具有32根可编程I/O口线;(4)具有3个可编程定时器;(5)中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构;(6)串行口是具有一个全双工的可编程串行通信口;(7)具有一个数据指针DPTR;(8)低功耗工作模式有空闲模式和掉电模式;(9)具有可编程的3级程序锁定位;(10)AT89C52工作电源电压为5(1+0.2)V,且典型值为5V;(11)AT89C52最高工作频率为24MHz。
学号:课程设计题目基于AT89C52单片机的带时间及声光提示的抢答器设计学院机电学院专业机械工程及自动化班级姓名指导教师2014年1月14日编号:0223课程设计任务书学生姓名:专业班级:机自1102指导教师:工作单位:机电学院题目: 基于AT89C52单片机的带时间及声光提示的抢答器设计初始条件:1. 单片机型号为AT89C52,晶振频率为12MHz;2. 用8个按键组成8×1键盘接于P1口用作选手抢答按钮;3. 为节目主持人设置5个控制开关,用于控制系统的清零、抢答开始和答题时限调整;4. 抢答器具有数据锁存、显示和声音提示功能,抢答和答题的限时时间可调节;5. 抢答开始后,若有选手按下按钮,编号立即被锁存并显示在数码管上,同时灯亮并伴有提示音,且立即封锁输入电路,禁止其他选手抢答;6. 最先抢答选手的编号一直保持到主持人将系统清零复位,扩展16K外部RAM。
要求完成的主要任务:1. 查阅参考文献,自学相关元器件的内部结构、工作方式或初始化编程过程;2. 按初始条件完成相关电路的设计,绘制单片机控制系统硬件接线原理图;3. 自行创新设计,完成程序结构及控制功能设计,进行系统调试,实现控制要求;4. 撰写设计说明书,说明书字数不少于5000字,参考文献不少于8篇,具体要求见附件。
时间安排:参考文献:见附件。
指导教师签名:年月日系主任(或责任教师)签名:年月日基于AT89C52单片机的带时间及声光提示的抢答器设计摘要抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。
但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。
作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。
本设计是以八路抢答为基本理念。
考虑到依需设定限时回答的功能,利用AT89C52单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。
摘要竞赛抢答器是由AT89C52单片机控制的,有八路选手抢答的只能抢答器,该抢答器由四部分组成,主持人按键部分,选手按键部分,显示部分和蜂鸣器部分。
该抢答器设有抢答倒计时,在规定倒计时内有人抢答则显示倒计时会停止,没有人抢答则倒计时完毕蜂鸣器响提示主持人抢答无效,以此实现抢答功能。
本文将详细介绍设计过程和实现的功能。
关键词:AT89C52单片机,抢答器,倒计时1 任务提出与方案论证1.1 设计要求1、能实现8位选手抢答。
2、主持人控制抢答的开始和清零。
3、一位选手抢答后另外的选手抢答无效。
4、主持人或选手按下按键时伴随蜂鸣器的响声。
5、主持人按下抢答开始按钮后伴随着抢答到家时开始计时15秒。
6、当主持人按下抢答且倒计时显示到0仍无人抢答时蜂鸣器持续响2秒钟。
1.2 系统设计方案论证1.2.1 方案设计方案一:采用模数电设计,包括优先编码电路、锁存电路、译码电路将参赛选手的输入信号显示在数码管上,用控制电路和主持人开关启动报警电路,以上两部分为主题电路,通过定时电路和译码电路将秒脉冲产生的信号在数码管上输出实现即时功能,构成扩展电路。
其总体框图如下:图1 模数抢答器系统框图方案二:采用A T89C52单片机为核心控制单元,利用软件编程达到控制抢答的目的,利用了单片机的延时电路,按键电路,控制电路等设计的抢答器具有显示抢答选手的和抢答时间的功能,还有清零按键可以开始新一轮的抢答,且功能强大。
1.2.2 方案论证选择上述两个方案都能实现抢答器的抢答功能,但是方案一组成电路很多,线路布置起来很复杂,可靠性不高,功能也很简单,特别是当抢答路数较多时实现起来更加困难。
方案二相比较起来实现起来比较简单,线路较少,而且软件实现调试比较简单,所以本设计我选择方案二,即采用AT89C52单片机来实现抢答器的设计。
2 总体设计本设计总体能实现八路抢答及倒计时等功能。
通过改变软件程序来达到预期的目的。
2.1 硬件设计与实现总体框图图2 系统总体框图2.2 软件程序流程图图3 抢答器系统程序流程图3 详细设计及仿真3.1硬件电路设计3.1.1 主控芯片的介绍本设计采用的是A T89C52单片机,A T89C52是美国Atmel公司生产的低电压、高性能CMOS 8位单片机,片内含8KB的可反复檫写的程序存储器和12B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机可灵活应用于各种控制领域。
摘要表决器是一种常见的电子产品,尤其是在各类投票中,为了实现投票的公平性,性能优良的表决器往往更能得到各单位的青睐。
这里通过两种设计方案的对比,最终选定了用STC89C52单片机实现表决器电路。
由于单片机具有可编程定时器和中断设备,便于实现显示表决人数和抢答是否成功的精确控制。
所用方案电路结构简单,易于实现,它用3颗LED灯来进行显示,且具有简单精准的报警功能。
所选方案的一个很重要的特点在于具有灵活性,投票的每个人可以根据自己的意愿选择“同意”、“反对”的两个不同按键。
自行进行投票表决,这样进一步保证了公平性。
由于它具有成本低廉,结构简单,且性能优良的诸多优点,必定会得到广泛的应用。
关键字:STC89C52单片机,LED灯,表决器,投票表决ABSTRACTV oting is a common electronic product, especially in all kinds of voting, in order to achieve the fairness of voting, the performance of the voting machine is often better available to all units of all ages. Here through the comparison of two design options, the final selection with STC89C52single-chip implementation of the voting circuit. As the microcontroller has a programmable timer and interrupt devices, easy to achieve the number of voting and answer to achieve the success of the precise control. The circuit structure is simple, easy to implement, it uses three LED lights to display, and has a simple and accurate alarm function. A very important feature of the chosen program is the flexibility to vote for everyone who can choose "agree" and "oppose" the two different keys according to their own wishes. To vote on their own, so as to further ensure the fairness. Because of its low cost, simple structure, and excellent performance of many advantages, will be widely used.Key Words: STC89C52 single chip, LED lights, voting machine, vote目录第1章引言 (1)第2章STC89C52单片机 (2)2.1 STC89C52单片机概述 (2)2.2 STC89C52单片机设计要求 (4)2.3 STC89C52单片机设计方案 (5)2.3 STC89C52单片机硬件组成 (5)2.4 STC89C52单片机引脚 (7)2.4.1 STC89C52单片机引脚实物图 (7)2.4.2 STC89C52单片机引脚功能 (7)2.5 STC89C52单片机模块设计 (9)2.5.1 STC89C52单片机主控制模块设计 (9)2.5.2 STC89C52单片机按键模块设计 (11)2.5.3 STC89C52单片机LED模块设计 (12)第3章三人表决器的功能调试 (13)3.1 调试过程 (13)3.2 检测电路 (13)3.3 仿真调试 (13)3.4 调试出现的问题 (15)第4章三人表决器软件设计 (16)4.1.1 开发语言介绍 (16)4.2开发软件介绍 (16)4.2.1 Keil 4 (16)4.2.2 Proteus ISIS (20)第5章实物及程序展示 (23)5.1实物展示 (23)5.2程序展示 (23)第6章结论 (24)参考文献 (25)致谢 (26)第1章引言电子技术是电类相关专业的基础课程,近年来通过教学改革虽然精简了理论教学,加强了实践教学,但是有时理论和实践脱节。
基于单片机的无线表决器设计作者:王青来源:《硅谷》2014年第14期摘要当今社会,我们经常要对某些议案进行表决以及对集体或者个人进行不记名民主测评,在机关、学校和企事业单位会议中,表决器的作用尤为突出。
本设计研制了一种基于NRF24L01的无线会议表决系统,该系统具有功耗低、功能强、可靠性高和使用方便等优点。
该表决系统以MCS-51系列单片机中的STC89C52单片机为微控制器,采用挪威Nordic公司的NRF24L01芯片组成的无线收发模块,给出了一种简单便捷的无线通信设计系统。
该系统中的表决器通过无线模块传递表决信息(支持人数、反对人数、弃权人数),主控器接收到表决信息后通过液晶显示屏直观地显示最终的表决结果。
关键词无线表决系统;单片机;无线收发模块;液晶显示屏中图分类号:TP271 文献标识码:A 文章编号:1671-7597(2014)14-0027-011 系统方案的设计1.1 主控部分设计方案微控制器的选择方面,主要考虑:处理器的速度、要实现的功能、I/O端口类型和数量、内存容量以及功耗等。
STC89C52具有低功耗特性,它是一款高性能CMOS8位的微控制器。
同时,价格低廉,简单易用。
因此,本系统采用STC89C52单片机作为核心控制器。
1.2 无线射频收发器件的选择在选择无线射频收发器件的时候,主要考虑:无线芯片的功耗,器件的收发距离,收发的灵敏度,信号的衰减和电磁干扰等。
NRF24L01是一个新型单片射频收发器件,能够在2.4 GHz~2.5 GHz ISM频段工作。
它内置了频率合成器、功率放大器和晶体振荡器以及调制器等多个功能模块,同时融合增强型ShockBurst特有技术,它的输出功率与通信频道能通过程序来配置。
所以,这个系统适用NRF24L01无线收发器件。
2 硬件系统设计2.1 系统总体框图本系统是由一台主控制器和一台表决器组成。
系统组成框图如图1所示。
主控器通过无线发射模块发出表决指令,表决器接收指令后开始进行表决,再将表决的结果通过无线数据传输电路发送给主控器,然后再由主控制器将接收到的表决信息在液晶显示屏上直观快速的显示出来。
基于AT89S52单片机的抢答器设计一、AT89S52 单片机简介AT89S52 是一款低功耗、高性能的 CMOS 8 位单片机,具有 8K 在系统可编程 Flash 存储器。
使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。
片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
二、抢答器的功能需求分析抢答器的主要功能是在多个参赛者同时抢答时,能够准确地判断出最先抢答的选手,并进行相应的显示和提示。
具体来说,抢答器应具备以下功能:1、抢答功能:参赛者在规定的时间内按下抢答按钮,系统能够准确地捕捉到最先抢答的信号。
2、计时功能:设置抢答时间和答题时间,时间到后进行相应的提示。
3、显示功能:能够显示抢答者的编号和答题剩余时间。
4、报警功能:在违规抢答或时间到后,发出声音或灯光报警。
三、硬件设计1、单片机最小系统AT89S52 单片机:作为核心控制单元。
晶振电路:为单片机提供时钟信号。
复位电路:确保单片机能够正常初始化。
2、抢答输入电路采用独立按键作为抢答按钮,每个参赛者对应一个按键。
通过上拉电阻将按键信号连接到单片机的 I/O 口。
3、显示电路采用数码管显示抢答者的编号和时间。
可以使用动态扫描的方式驱动数码管,以节省 I/O 口资源。
4、报警电路使用蜂鸣器和发光二极管进行报警。
通过三极管驱动蜂鸣器和发光二极管。
四、软件设计1、主程序流程系统初始化,包括设置 I/O 口状态、初始化定时器和中断等。
进入抢答等待状态,检测是否有抢答信号。
若有抢答信号,判断抢答是否合法,并进行相应的处理。
在答题过程中,进行计时,并在时间到后进行提示。
2、抢答检测程序采用中断方式检测抢答信号。
当有按键按下时,产生中断,在中断服务程序中读取按键状态,确定抢答者的编号。
基于单片机的班级投票器【摘要】班级投票器是针对班级而设计的现场投票计数器系统,该系统可用于班级人数小于99人,职位候选人不超过10人的投票选举。
投票器是由键盘接口专用芯片74C922来完成按键编码,再通过单片机采集信息,进行票数的累计,最后有四联数码管来显示选举结果。
投票期间用一个按键来控制投票有效性,并通过发光二极管来完成指示工作。
选举投票期间可暂停投票,查看投票结果,后可继续投票,直至达到预设的最大班级人数关闭投票系统。
引言 (3)1 系统总体设计 (4)1.1 设计要求 (4)1.2 系统组成方框图 (4)1.3 方案设计 (4)2 系统硬件设计 (4)2.1 相关芯片介绍 (4)2.1.1 AT89C51芯片介绍 (4)2.1.2 74C922芯片介绍 (5)2.1.3 74LS04芯片介绍 (6)2.2 各单元电路设计与分析 (7)2.2.2 由74C922够成的键盘电路 (7)2.2.2 复位电路 (8)2.2.3 时钟电路 (8)2.2.4 显示模块 (9)2.2.5 控制投票有效部分 (10)2.3 总原理图和元器件清单 (11)2.3.1 总原理图 (11)2.3.2 元件清单 (11)3 系统软件设计 (12)3.1 主程序设计 (12)3.2 中断程序设计 (13)3.3 定时程序设计 (14)4 调试 (16)5 总结 (16)6 致语 (17)参考文献 (17)附录一 PCB图 (19)附录二源程序 (19)引言在大学生活中,时常发生选举投票事件。
目前班级职位选举采用纸条的方式进行投票。
具体过程如下:首先,在黑板上列出要选举的职位及职位候选人的名字;接着班级成员在纸条上写上候选人的名字,折叠好放在指定的位置(如讲台桌上);再来全部投票完毕后,进行唱票,判断票的有效性(写上多于一个候选人的名字,或不写都视为废票),同时并统计票数。
最后,票数统计完成后先判断本次选举是否有效(若发生选票多于选民数,视为无效)。
基于AT89C系列单片机的大型电子投票表决系统的设计孟庆波;常玉华
【期刊名称】《郑州铁路职业技术学院学报》
【年(卷),期】2013(025)001
【摘要】采用AT89C系列单片机三级驱动的主控制器、分支控制器、表决器大型系统,用RS-485总线构建系统的网络结构,使用主从通信、一主多从、主从呼叫响应的串行通信方式,实现了大规模、中距离、高速率、低成本的多机串行通信.在硬件选型、软件设计、网络结构、通信方式等方面进行了创新,研发中所贯穿的系统化、通用化和模块化设计思想对于相关应用具有一定借鉴价值.
【总页数】3页(P34-36)
【作者】孟庆波;常玉华
【作者单位】郑州铁路职业技术学院,河南郑州450052
【正文语种】中文
【相关文献】
1.三级控制的AT89C系列多单片机系统设计
2.基于AT89C系列单片机的服务评价系统
3.大型电子投票表决系统通信协议的设计与实现
4.一个基于AT89C系列MCU的无线嵌入式电量采集系统的设计与实现
5.一个基于AT89C系列MCU的无线嵌入式电量采集系统的设计与实现
因版权原因,仅展示原文概要,查看原文内容请购买。
15人投票表决器班级:姓名:学号:201205140133第一章概述1.设计内容:设计一个基于AT89C52系列单片机的15人投票表决器,利用按键来进行投票,通过1602进行票数的显示。
可以投反对票,赞同票,不投票默认为弃权。
2.设计目的:本文设计的投票表决器,是基于单片机设计制作的电子式投票表决器。
比传统的手动统计票数更为方便直观,通过程序来进行控制,有效避免了暗箱操作。
制作的投票表决器小巧容易携带,特别方便。
3.设计原理:该音乐盒主要由按键电路、复位电路、1602显示电路以及指示灯组成。
使用两排按键控制赞同票与反对票,一个指示灯用来表示正在计算。
待投票结束后按下统计按钮即可统计票数。
可以从1602上直观的读出赞同票,反对票,弃权票。
第二章硬件设计1.设计框架:音乐盒的系统结构以AT89C52单片机位控制核心,加上2排按键、1602显示电路、LED模块组成。
单片机负责接收按键的输入,根据输入控制1602显示票数,以LED显示单片机正在计算票数的状态。
系统组成框图如图2.1所示。
图2.1 系统组成框图2.各元器件选择及功能介绍:(1) AT89C52简介AT89C52是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。
AT89C52是一种带4K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C52单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图2.2所示图2.2 AT89C51系列单片机(2) 1602显示电路设计与原理1602是字符型液晶,它是16*2的显示的。
工业字符型液晶,能够同时显示16x02即32个字符。
通过1602进行票数的显示。
(3)时钟振荡电路AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。
外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。
如果使用石英晶体,我们推荐电容使用30PF±10PF,而如果使用陶瓷振荡器建议选择40PF±10PF。
用户也可以采用外部时钟。
采用外部时钟的电路如图示。
这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
振荡器电路图如下:图2.3 单片机内部、外部振荡电路3.设计原理图:总体硬件电路实现功能如下,如图2.4所示1)电路中用P0、部分P1口进行赞同票读取。
2)电路中用P2、部分P3口进行反对票读取。
3)P1.6作为统计票数的开关。
4)P1.7控制正在计算票数的显示灯。
5)电路为12MHZ晶振频率工作,起振电路中C1、C2均为30PF。
图2.4 硬件电路图第三章软件设计1.个程序段介绍:使用中断来扫描统计票数的按键,更精确。
先对定时器进行初始化,选择定时器工作方式。
定时时间为没50000us进入一次中断。
再对1602液晶进行初始化,编写显示作者姓名学号的函数disp_myname();a 延时2s后将1602的指针指向第二行,将学号替换为投票表决器的英文‘voting machine’。
在while(1)的循环中一直等待P1.6口的按键,若按键未被按下,则在中断中继续统计票数,直到P1.6被按下,关闭定时器中断,使之后的投票无效化统计当前的赞同,反对,弃权票数,显示到1602中。
之后开启定时器中断等待下一次投票统计的到来。
主程序流程图3-5所示:图 3-5主程序流程图A.主程序代码:#include <reg52.h>unsigned int yes=0,no=0,qiquan=0,i=0,j=0;unsigned int temp,succeed=0;unsigned int y,com,date;unsigned int ge,shi,bai,a=0;char y1[8]={2,2,2,2,2,2,2,2},n1[8],y2[7]={2,2,2,2,2,2,2},n2[7];sbit K1=P1^6; //开关sbit K2=P1^7; //指示灯//*****************赞同***************//sbit D0=P0^0;sbit D1=P0^1;sbit D2=P0^2;sbit D3=P0^3;sbit D4=P0^4;sbit D5=P0^5;sbit D6=P0^6;sbit D7=P0^7;sbit DB1=P1^0;sbit DB2=P1^1;sbit DB3=P1^2;sbit DB4=P1^3;sbit DB5=P1^4;sbit DB6=P1^5;sbit rd=P3^7;//*****************反对**************// sbit A0=P2^0;sbit A1=P2^1;sbit A2=P2^2;sbit A3=P2^3;sbit A4=P2^4;sbit A5=P2^5;sbit A6=P2^6;sbit A7=P2^7;sbit rx=P3^0;sbit tx=P3^1;sbit csda=P3^2;sbit int1=P3^3;sbit lcden=P3^4;sbit rs=P3^5;sbit wr=P3^6;void delay(unsigned int y) //延时{unsigned int a,b;for(a=y;a>0;a--)for(b=110;b>0;b--);}void write_com(unsigned int com) //写指令{rs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}void write_date(unsigned int date) //写数据{rs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;}int change(unsigned int a) //把票数转为字符型{switch(a){case 0: a=0x30;break;case 1: a=0x31;break;case 2: a=0x32;break;case 3: a=0x33;break;case 4: a=0x34;break;case 5: a=0x35;break;case 6: a=0x36;break;case 7: a=0x37;break;case 8: a=0x38;break;case 9: a=0x39;break;}return a;}/***********************************1602显示 **/ void xianshi(unsigned int d){// init();bai=d/100;shi=(d-100*bai)/10;ge=d%10;bai=change(bai);shi=change(shi);ge=change(ge);write_date(bai);delay(5);write_date(shi);delay(5);write_date(ge);delay(5);} //*********************************1602显示 */void xianshi2() //********显示赞同**// {write_date('y');delay(5);write_date('e');delay(5);write_date('s');delay(5);write_date(':');delay(5);}void xianshi3() //*****显示反对****// {write_date('n');delay(5);write_date('o');delay(5);write_date(':');delay(5);}void xianshi4() //******显示弃权*****// {write_date('a');delay(5);write_date('b');delay(5);write_date('s');delay(5);write_date('t');delay(5);write_date('e');delay(5);write_date('n');delay(5);write_date('t');delay(5);write_date('i');delay(5);write_date('o');delay(5);write_date('n');delay(5);write_date(':');delay(5);}void panduan_yes() {if(D0==0){y1[0]=1;n1[0]=0;}if(D1==0){y1[1]=1;n1[1]=0;}if(D2==0){y1[2]=1;n1[2]=0;}if(D3==0){y1[3]=1;n1[3]=0;}if(D4==0){y1[4]=1;n1[4]=0;}if(D5==0){y1[5]=1;n1[5]=0;}if(D6==0){y1[6]=1; n1[6]=0; }if(D7==0) {y1[7]=1; n1[7]=0; }if(DB1==0) {y2[0]=1; n2[0]=0; }if(DB2==0) {y2[1]=1; n2[1]=0; }if(DB3==0) {y2[2]=1; n2[2]=0; }if(DB4==0) {y2[3]=1; n2[3]=0; }if(DB5==0) {y2[4]=1; n2[4]=0; }if(DB6==0) {y2[5]=1; n2[5]=0; }if(rd==0) {y2[6]=1; n2[6]=0; }}void panduan_no() {if(A0==0){y1[0]=0;n1[0]=1;}if(A1==0){y1[1]=0;n1[1]=1;}if(A2==0){y1[2]=0;n1[2]=1;}if(A3==0){y1[3]=0;n1[3]=1;}if(A4==0){y1[4]=0;n1[4]=1;}if(A5==0){y1[5]=0;n1[5]=1;}if(A6==0){y1[6]=0;n1[6]=1;}if(A7==0){y1[7]=0;n1[7]=1;}if(rx==0){y2[0]=0;n2[0]=1;}if(tx==0){y2[1]=0;n2[1]=1;}if(csda==0){y2[2]=0;n2[2]=1;}if(int1==0){y2[3]=0;n2[3]=1;}if(lcden==0){y2[4]=0;n2[4]=1;}if(rs==0){y2[5]=0;n2[5]=1;}if(wr==0){y2[6]=0;n2[6]=1;}}void init() //1602初始化{lcden=0;write_com(0x38);write_com(0x0e);write_com(0x01);write_com(0x80); //为了移动效果}void tongji(){unsigned int i;for(i=0;i<8;i++){if(y1[i]==1)yes++;if(n1[i]==1)no++;if(y1[i]==2)qiquan++;}for(i=0;i<7;i++){if(y2[i]==1)yes++;if(n2[i]==1)no++;if(y2[i]==2)qiquan++;}}void restart(){unsigned int i;P0=0xff;P1=0xff;P2=0xff;P3=0xff;for(i=0;i<8;i++){y1[i]=2;n1[i]=0;}for(i=0;i<7;i++){y2[i]=2;n2[i]=0;}yes=0;no=0;qiquan=0;}void disp_myname(){init(); //1602初始化write_date('I');delay(5);write_date('`');delay(5);write_date('m');delay(5);write_date(' ');delay(5);write_date('C');delay(5);write_date('h');delay(5);write_date('e');delay(5);write_date('n');delay(5);write_date(' ');delay(5);write_date('Q');delay(5);write_date('u');delay(5);write_com(0x80+0x40); //写第二行,我的学号 write_date('2');delay(5);write_date('0');delay(5);write_date('1');delay(5);write_date('2');delay(5);write_date('0');delay(5);write_date('5');delay(5);write_date('1');delay(5);write_date('4');delay(5);write_date('0');delay(5);write_date('1');delay(5);write_date('3');delay(5);write_date('3');restart();}void disp_mydesign(){// init(); //1602初始化write_com(0x80+0x40); //写第二行,显示投票表决器的功能 write_date('V');delay(5);write_date('o');delay(5);write_date('t');delay(5);write_date('i');delay(5);write_date('n');delay(5);write_date('g');delay(5);write_date(' ');delay(5);write_date('m');delay(5);write_date('a');delay(5);write_date('c');delay(5);write_date('h');delay(5);write_date('i');delay(5);write_date('n');delay(5);write_date('e');delay(5);restart();}void main(){K2=0;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;disp_myname(); //显示作者姓名,学号delay(2000); //2秒后显示本设计名称,投票表决器 disp_mydesign();while(1){while(K1==1);EA=0;K2=1; //计算指示灯tongji();init(); //1602初始化xianshi2();xianshi(yes);write_date(' ');delay(5);xianshi3();xianshi(no);write_com(0x80+0x40);xianshi4();xianshi(qiquan);while(K1==0);EA=1;restart();K2=0;}}void time() interrupt 1{TH0=(65535-50000)/256;TL0=(65535-50000)%256;panduan_yes();panduan_no();}第四章仿真结果及其总结1.仿真结果图:(1)1602先显示作者姓名学号,2s后显示作品名称(2)按下统计按键开始统计票数(3)附上一张静态图片2.总结:通过这次课程设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。