




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、15人投票表决器班级:姓名:学号:201205140133第一章 概述1.设计内容:设计一个基于 at89c52 系列单片机的 15 人投票表决器,利用按键来进行投 票,通过 1602 进行票数的显示。可以投反对票,赞同票,不投票默认为弃权。2.设计目的:本文设计的投票表决器,是基于单片机设计制作的电子式投票表决器。比传 统的手动统计票数更为方便直观,通过程序来进行控制,有效避免了暗箱操作。 制作的投票表决器小巧容易携带,特别方便。3.设计原理:该音乐盒主要由按键电路、复位电路、 1602 显示电路以及指示灯组成。使 用两排按键控制赞同票与反对票,一个指示灯用来表示正在计算。待投票结束后 按下
2、统计按钮即可统计票数。可以从 1602 上直观的读出赞同票,反对票,弃权 票。第二章 硬件设计1.设计框架:音乐盒的系统结构以 at89c52 单片机位控制核心,加上 2 排按键、1602 显示 电路、led 模块组成。单片机负责接收按键的输入,根据输入控制 1602 显示票 数,以 led 显示单片机正在计算票数的状态。系统组成框图如图 2.1 所示。图 2.1 系统组成框图2.各元器件选择及功能介绍: (1) at89c52 简介1 at89c52 是 一 种 带 4k 字 节 闪 存 可 编 程 可 擦 除 只 读 存 储 器 ( fperomflash programmable and
3、 erasable read only memory)的低电压, 高性能 cmos 8 位微处理器,俗称单片机。 at89c52 是一种带 4k 字节闪存可 编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦 除 100 次。该器件采用 atmel 高密度非易失存储器制造技术制造,与工业 标准的 mcs-51 指令集和输出管脚相兼容。由于将多功能 8 位 cpu 和闪烁存 储器组合在单个芯片中, atmel 的 at89c52 是一种高效微控制器, at89c2051 是它的一种精简版本。 at89c52 单片机为很多嵌入式控制系统提供了一种灵 活性高且价廉的方案。外形及引脚排列
4、如图 2.2 所示图 2.2 at89c51 系列单片机(2) 1602 显示电路设计与原理1602 是字符型液晶,它是 16*2 的显示的。工业字符型液晶,能够同时显示 16x02 即 32 个字符。通过 1602 进行票数的显示。(3) 时钟振荡电路at89c52 中有一个用于构成内部振荡器的高增益反相放大器,引脚 xtal1 和 xtal2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石 英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及电容 c1、c2 接在 放大器的反馈回路中构成并联振荡电路。对外接电容 c1,c2 虽然没有什么严格 的要求,但电容容量的大小会轻
5、微影响振荡频率的高低、振荡器工作的稳定性、 起振的难易程序及 温 度稳定 性 。如果 使 用石英晶 体,我 们推荐电容 使用30pf 10pf,而如果使用陶瓷振荡器建议选择 40pf 10pf。用户也可以采用外 部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到 xtal1端,即内部时钟发生器的输入端,xtal2 则悬空。由于外部时钟信号是通过一个 2 分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要 求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要 求。振荡器电路图如下:2图 2.3 单片机内部、外部振荡电路3.设计原理图:总体硬件电路实现
6、功能如下,如图 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 的指针指
7、向第二行,将学号替换为投票表决器的英文voting machine。3在 while(1)的循环中一直等待 p1.6 口的按键,若按键未被按下,则在 中 断中继续统计票数,直到 p1.6 被按下,关闭定时器中断,使之后的投票无效化 统计当前的赞同,反对,弃权票数,显示到 1602 中。之后开启定时器中断等待 下一次投票统计的到来。主程序流程图 3-5 所示:图 3-5 主程序流程图a.主程序代码:#include unsigned int yes=0,no=0,qiquan=0,i=0,j=0;unsigned int temp,succeed=0;unsigned int y,com,dat
8、e;unsigned int ge,shi,bai,a=0;char y18=2,2,2,2,2,2,2,2,n18,y27=2,2,2,2,2,2,2,n27; sbit k1=p16; /开关sbit k2=p17; /指示灯/*赞同*/sbit d0=p00;sbit d1=p01;sbit d2=p02;4sbit d3=p03;sbit d4=p04;sbit d5=p05;sbit d6=p06;sbit d7=p07;sbit db1=p10;sbit db2=p11;sbit db3=p12;sbit db4=p13;sbit db5=p14;sbit db6=p15;sbit
9、 rd=p37;/*反对*/ sbit a0=p20;sbit a1=p21;sbit a2=p22;sbit a3=p23;sbit a4=p24;sbit a5=p25;sbit a6=p26;sbit a7=p27;sbit rx=p30;sbit tx=p31;sbit csda=p32;sbit int1=p33;sbit lcden=p34;sbit rs=p35;sbit wr=p36;void delay(unsigned int y) /延时 unsigned int a,b;for(a=y;a0;a-)for(b=110;b0;b-);void write_com(unsi
10、gned int com) /写指令 rs=0;p0=com;5delay(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;bre
11、ak;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);6ge=change(ge);write_date(bai);delay(5);write_date(shi);delay(5);
12、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(
13、s);delay(5);write_date(t);delay(5);write_date(e);delay(5);write_date(n);delay(5);write_date(t);/*显示赞同*/*显示反对*/*显示弃权*/7delay(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)y10=1;n10=0;if(d1=0)y11=1;n11=0;if(d2=0)y12=1;n12=0;if(
14、d3=0)y13=1;n13=0;if(d4=0)y14=1;n14=0;if(d5=0)y15=1;n15=0;if(d6=0)8y16=1;n16=0;if(d7=0)y17=1;n17=0;if(db1=0)y20=1;n20=0;if(db2=0)y21=1;n21=0;if(db3=0)y22=1;n22=0;if(db4=0)y23=1;n23=0;if(db5=0)y24=1;n24=0;if(db6=0)y25=1;n25=0;if(rd=0)y26=1;n26=0;9void panduan_no()if(a0=0)y10=0;n10=1;if(a1=0)y11=0;n11=
15、1;if(a2=0)y12=0;n12=1;if(a3=0)y13=0;n13=1;if(a4=0)y14=0;n14=1;if(a5=0)y15=0;n15=1;if(a6=0)y16=0;n16=1;if(a7=0)y17=0;n17=1;10if(rx=0)y20=0;n20=1;if(tx=0)y21=0;n21=1;if(csda=0)y22=0;n22=1;if(int1=0)y23=0;n23=1;if(lcden=0)y24=0;n24=1;if(rs=0)y25=0;n25=1;if(wr=0)y26=0;n26=1;void init() /1602 初始化lcden=0;
16、write_com(0x38);write_com(0x0e);write_com(0x01); write_com(0x80); /为了移动效果11void tongji()unsigned int i;for(i=0;i8;i+)if(y1i=1)yes+;if(n1i=1)no+;if(y1i=2)qiquan+;for(i=0;i7;i+)if(y2i=1)yes+;if(n2i=1)no+;if(y2i=2)qiquan+;void restart()unsigned int i;p0=0xff;p1=0xff;p2=0xff;p3=0xff;for(i=0;i8;i+)y1i=2;
17、n1i=0;for(i=0;i7;i+)y2i=2;n2i=0;yes=0;no=0;12qiquan=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
18、_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);13delay(5);write_date(0);delay(5);write_date(1);del
19、ay(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_da
20、te(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();14void 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(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国网新源公司招聘考试教材及模拟题
- 2025年全断面掘进机项目合作计划书
- 抢维修作业安全措施培训课件
- 2025届北京市第一零一中学高三下学期三模物理试题(含答案)
- 扫黄打非法制课件
- 2025年丽水社工考试题目及答案
- 扇贝效应课件
- 2025年贵州文科联考试卷及答案
- 2025年荆州化学中考试题及答案
- 2025年枣阳数学月考试卷及答案
- 采石场人员管理制度
- 上海交大工科分流试题及答案
- 2025医疗机构劳动合同模板
- 牛的健康问题图像识别诊断-洞察阐释
- 浙江甬岭数控刀具有限公司年产600万只U钻、50万套镗刀技改项目环评报告
- DB31/ 653-2012通信基站空调能效限定值
- GB/T 45569-2025压水堆核电厂反应堆冷却剂系统设备和管道保温层设计准则
- 金矿居间合同协议书
- 生态环境标准应用 课件 大气污染物综合排放标准2
- 酒店安全考试试题及答案
- 珠宝店员工保密协议合同
评论
0/150
提交评论