


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、师学院电子时钟及抽奖机姓 名:学 号:系 别: 物理与电子信息工程系专 业:电子科学与技术年 级:09级指导教师:白炳良2012年5月目录1摘要:32关键字:33设计任务33.1两种抽奖方式33.2扩展功能34设计方案34.1设计思路34.2方案比较与论证34.3系统结构框图45各功能模块设计45.1显示模块原理45.2参数计算55.3独立式按键模块55.4总系统原理图66软件设计76.1 I/O 口分配 76.2随机数算法86.3秒产生算法86.4按键扫描86.5显示扫描87流程图888程序清单129调试要点279.1硬件调试279.2软件调试279.3结果分析及设计工作总结2710参考文献
2、及附件2710.1参考文献2810.2元器件清单2811PCB版 图 28281摘要:本设计由单片机AT89S52芯片和LED共阳数码管为核心,辅以必要的电路,构成了一个由单片机控制的四位显示设计,设计制作同步和单步抽奖机,在模式键、启动键,停止键的控制下 实现设计集成了时钟、秒表、四位抽奖三种功能于一体。2关键字:AT89S52动态显示四位抽奖按键扫描随机数秒表3设计任务3.1两种抽奖方式按抽奖启动键时,四位数码管以不同的随机数快速滚动显示,按抽奖停止键时,四位随机数停止滚动显示在数码管上。3.1.2按抽奖启动键时,个位数码管以随机数快速滚动显示,按抽奖停止键时,个位随机数停止滚动显示在数码
3、管上; 用同样的方 法来确定十位、百位、千位的随机数。3.2扩展功能电子时钟:电子钟以99时59分59秒为一个计数周期,在显示分秒, 时分模块化之间切换。4设计方案4.1 设计思路本设计需要实现两种方式的抽奖(即四位同时抽和逐位抽奖),因此重点在于由软件产生随机数;而硬件则需由数码管来显示中奖结果以及按键来控制抽奖模式和启动、停止抽奖。系统以AT89S52为核心,主要有显示模块、按键模块和单片机软件控制模块构成。4.2 方案比较与论证数码管显示模块:方案一:单片机输出数据经译码芯片CD4511进行译码后直接驱动数 码管,数码管公共端接9012三极管扩流,并通过单片机I/O 口控制三极 管的选通
4、,实现动态显示。方案二:有单片机的I/O 口直接驱动数码管的段码,数码管的公共端接9012三极管,通过灌电流的方式点亮数码管,也需通过单片机I/O 口控制三极管的选通,实现动态显示。由于所需I/O 口由AT98S52可直接提供,无须因为 I/O 口不够而用CD4511来节省 I/O 口,方案二又较方案一更容易实惠,所以,我选择方案二。4.3系统结构框图AT89S52单片机在模式键、启动键和停止键的控制下,由P1 口输出数据,通过P2.0、P2.1、P2.2、P2.4进行选通,有数码管显示信息。系统框图:图2-3系统总框图5各功能模块设计5.1显示模块原理由单片机(AT89S52)的引脚P1 口
5、输出中奖、时间等数据信息,通过片选信号 P2.0、P2.1、P2.2、P2.4就可在相应的数码管进行显示。当位选信号P2.0为低电平时,P1 口送出数据也为低电平就点亮数码管,电流灌进单片机。多位LED显示,为了简化电路,降低成本,将所有位的段选线并联在一起,由一个 8位 I/O 口控制。而共阳极公共端分别接一个9012,由相应的I/O 口线控制9012,实现各位数码管的分时选通。段选码,位选码每送入一次后延时10MS因人的视觉暂留时间为0.1S( 100MS,所以每位显示的时间不能超过 20MS并保持延 时一段时间,以造成视觉暂留效果,给人看上去每个数码管总在亮。 这种方式称 为软件扫描方式
6、。电路如(图3-1 )所示。由于采用的是共阳极数码管,所以要让段码点亮需把 I/O 口置0,例如:段 码a到g对应的I/O 口是P1.0到P1.6,则要让数码管显示0到6对应的16进 值如图所示图3-1显示电路P1.6P1.5P1.4P1.3P1.2P1.1P1.016进制010000000C0H111110010F9H201001000A4H301100000B0H4001100199H5001001092H6000001082H图3-2码表1 2. /P2.4Xi 2.1下-R1r-|R2rRES2RES2RES2IR3R4RES22+5VSEG1LE D8SEG2LE D8SEG3LE
7、D8SEG4LE D8P2.0h0日日日日h0WWW14ES5.2 参数计算由于I/O 口高电平约等于5V,使用灌电流的方式驱动数码管,故选用 PNP型 三极管9012;数码管能正常工作的段电流为 3mA-10 mA,压降为1.7V,三极 管发射极和集电极的压降为0.3V,因此限流电阻的压降为3.0V,5VR 5V 500所以选用限流电阻的阻值 R=470欧.10mA5.3 独立式按键模块独立式按键是直接用 I/O 口线构成的单个按键电路,其特点是每个按键单独占用一根I/O 口线,每个按键的工作不会影响其它 I/O 口线的状态。独立式按键的典型应用如 (图3-3) 所示。独立式按键电路配置灵活
8、,软件结构简单,但每个按键必须占用一根I/O 口线,因此,在按键较多时,I/O 口线浪费较大,但本设计只用到三个按键,顾采用独立式按键电路。图3-3独立式按键电路5.4总系统原理图单片机(AT89S52)9脚为复位输入端。上电复位,只要 RST引脚上有大于二 个机器周期以上的高电平,单片机(AT89C2051)即复位。按键从单片机(AT89S52)的P2.0、P2.1、P2.2、P2.4 口接入,当按键被按下 时,相应的输入口就会输入低电平 0。单片机(AT89S52)的XTAL1脚、XTAL2脚接一个由12M晶振和10pf组成的振 荡电路。为单片机提供相应的时序。14 ESU189s5247
9、0UFRESETC4220uF124673?912467edCabhgfedcab_ _C12 -104R22201 21L1iC1321+5V- MP n_ 51 4il3121pv/1Tl-TIS1XNKBi76 75 Ry141.OpF _L_10pF903L50 -彳lOn12M HZ4K7RwDK5p171RpT6|+5Vl-!6软件设计主程序主要起到一个导向和决策功能,控制程序的走向。本系统在主程序 中运用模块化结构,所有控制量集中处理,提高了处理效率,并在RAMS立各控 制量的映射,方便各功能模块的编程及修改。运用散转结构,可实现无扰动重入。 本设计主要有以下几个模块:时钟模块、
10、四位抽奖模块、逐位抽奖模块。操作说明:上电复位后进入数码初显示模块;按SW0启动,四位数码管产生四位随机数,按SW0四位随机数停止(操作可重复);按SW1 一次进入抽奖2模 块;按SW0启动,四位数码管最低位产生随机数,按SW1最低位停止高位启动 按4次SW1后四位数码管均产生随机数,按 SW0键停止抽奖(操作可重复); 按SW1 一次进入时间模块(可循环)。按RET键单片机复位。6.1 I/O 口分配1、P2.0、P2.1、P2.2、P2.4作为个位、十位、百位、千位数码管片选。2、P3.0、P3.4、P3.7 作为按键接口。3、P1.0到P1.6作为段码a到g的输出口6.2 随机数算法在随
11、机数模式下,调用库函数 stdlib .h ,用 dis_bufi =dis_dmrand() %0返回随机数值6.3 秒产生算法将定时器0定时5mS每计数200次为1S。6.4 按键扫描直接判断按键的按下与放开,不采用标志位判断。6.5 显示扫描显示扫描采用高、低两位分开显示;这样,在进行时钟显示及秒表显示时易于处7流程图Msta=1 :四位同时抽奖Msta=2 :逐位产生随机数:Msta=3Esw2=1?N据pointer转模块Poi nter=0EswO?Jc!=cjYYPoin ter=1Esw1?N.返回NCj=1?产生个位随机数返回 Pointer=1EswO?YNCj=1?Poi
12、 nter=2YPoi nter=2Esw1?Y理F产生个位随机数Jc!=cjNT返回NEswO?NCj=1?Jc!=cj产生个位随机数YPoi nter=3Esw1?N返回/*名称:四位抽奖机 编写:小叶日期:平台:AT89S52*/ #in clude#i ncludevi ntri ns.h#in clude#define uint unsigned int/ 宏定义#defi ne uchar un sig ned char/宏定义#defi ne nop _nop_()/*端口定义*/#defi ne disport P0/数据端口sbit cs0=P2A0;sbit cs 1= P
13、2A1;sbit cs2=P2A4;sbit sw0=P3A0;sbit cs3=P2A2;/独立按键端口sbit sw1= P3八4;sbit sw2=P3A7;/*定义变量*/uchar data key;/定义键值寄存器uchar bdata ekey; uchar bdata lastkey; sbit esw0=ekeyA0; sbit esw1=ekeyA4; sbit esw2=ekeyA7;/定义键沿寄存器bit flaflag;bit f300flag;bit cj=1;/定义闪烁标志uchar f300t, f200t=200,f100t;uchar msta,ck=0;u
14、char flasta=5;uchar a,b,c,d,e,g,h;uchar/闪烁标志codedis_dm=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,Oxff,Oxfc,OxOO,OxfO,OxOf;显示段码值显示缓冲uchar dis_buf=0xC0,0xC0,0xC0,0xC0,0xff;uchar dis_poi nter,poi nter;/定义显示指针/*函数声明*/void Disply();/ 显示函数void Flaply();/闪烁函数void KeySca n();/读键函数void In it_timer0()
15、;/ 定时器初始化void choujia ng_2();/ 抽奖方式2void dia nzishizho ng();/电子时钟void dia nzishizho ngxiaoshi();/*主函数*/void mai n() uint i;TMOD=Ox11; /定时器0工作方式1SCON=OxOO;TH0=0xec;TL0=0x78;TR0=1;while(1)while(!TF0); /5ms?TF0=0;TH0=0xec; / 定时器初值重设TL0=0x78;KeySca n(); /调用键扫描函数,显示函数Disply();Flaply();if(f300t+=100)f300t
16、=0;/ f300flag=!f300flag; if(f100t+=600) f100t=0;ck=1;switch(msta)case 0:dis_buf0=0x90;/数码显示初值dis_buf1=0xC0;dis_buf2=0xA4;dis_buf3=0xA4;if(eswO) msta=1;if(esw1) msta=2;if(esw2) msta=3;break;case 1:if(eswO)cj=!cj;if(cj)四位数同时抽奖for(i=0;i9)a=0;+b;if(b5)b=0;+c;if(c9)c=0;+d;if(d5)d=0;+e;if(e9)e=0;+g;if(g9)
17、g=0;dis_bufO=dis_dmc;dis_buf1=dis_dmd;dis_buf2=dis_dme;dis_buf3=dis_dmg; f200t=200;break;default:msta=O;/*I?i01 s.&病dM2爾应&病*/void choujiang20宀swifch(poinCDr)宀 casepif(eswo)cH-oj- if(cj)dislbufoHdisldmsnd()l 0ifoswk)poinorMbreakcase 1 -if(eswo) cH-oj- if(cj) dislbufulldisldmsnd()10k ifoswk) poinCDrHZ
18、 break-20、28case 2:if(eswO)cj=!cj;if(cj)dis_buf2=dis_dmra nd()%10;if(esw1)poin ter=3;break;case 3:if(esw0)cj=!cj;if(cj)dis_buf3=dis_dmra nd()%10;if(esw1)poin ter=0;break;defaultbreak;/*电子时钟分秒*/void dia nzishizho ng()+a;if(a9)a=0;+b;if(b5)b=0;+c;if(c9)c=0;+d;if(d5)d=0;+e;dis_bufO=dis_dma;dis_buf1=dis
19、_dmb;dis_buf2=dis_dmc;dis_buf3=dis_dmd;/*定时器0初始化函数*/void Ini t_Timer0(void)TMOD = 0x11;/TH0=0xec;TL0=0x78;/TR0= 1;/定时器0工作在方式1定时器5ms初值开定时器0/读独立按建键有变化? key为电平,键有变,计数到?/放弃不稳定的键/*键扫描函数*/ void KeySca n()uchar kbuf,keyt;P2=0XFF;P3二P3|0X91;kbuf=P3;kbuf=(kbuf&0X91)A0X91;lastkey二kbuf;if(lastkey!二key)/lastkey
20、 为前沿if(keyt-!=0)/lastkey二key;elsekeyt=0X05;/重赋去抖值ekey=(keyastkey)&l astkey; /键前沿提取key=lastkey;/*显示函数*/void Disply() disport=0xff;P2=0xff;switch(dis_poi nter)应显示位case 0: cs0=0;disport二dis_bufO;dis_poi nter=1;if(flaflag)Flaply();break;/根据显示指针,转相/ 点亮第零位数码管/ 点亮第一位数码管case 1: cs1=0;点亮第二位数码管/点亮第三位数码disport
21、二dis_buf1;dis_po in ter=2;if(flaflag)Flaply();break;/case 2: cs2=0;disport二dis_buf2;dis_po in ter=3;if(flaflag)Flaply();break;case 3: cs3=0;disport二dis_buf3;dis_po in ter=0;if(flaflag)Flaply();break;defaultbreak;/ 300ms 至U,关显示/ 300ms 至U,关显示/*闪烁函数*/ void Flaply()switch(flasta)/据闪烁状态转相应位case 0: if(f300flag) cs0=1;break;case 1: if(f300flag) cs 1=1;break;case 2: if(f300flag) cs2=1;break;case 3: if(f300flag) cs3=1;break;case 4: if(f300flag) cs0=1;if(f300flag)cs 1=1;if(f300flag)cs2=1;if(f300flag)cs3=1;break;default:break;9调试要点9.1 硬件调试1、硬件完成后,检查电路有无短路、断路或虚焊;2、电路板检查正常后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 焙烤食品制造市场推广策略考核试卷
- 玻璃加工过程中的精度控制考核试卷
- 煤炭行业的企业家精神与创新考核试卷
- 橡胶制品的环境可持续发展战略考核试卷
- 果蔬种植资源利用与保护考核试卷
- 期货市场交易策略回测平台服务考核试卷
- 病房护理设备的多功能一体化设计考核试卷
- 化学品在防伪印刷技术中的应用考核试卷
- 电器具材料选择与应用考核试卷
- 视网膜脱离护理查房
- 一例慢性心衰患者双下肢重度水肿伴左下肢重度溃疡的个案护理课件
- 男生穿搭技巧学习通超星期末考试答案章节答案2024年
- 飞机客舱保洁安全
- 《工程勘察设计收费标准》(2002年修订本)-完整版-1
- 公路工程标准施工招标文件(2018年版)
- 高等数学(第五版)课件 3.1 微分中值定理与洛必达法则
- 眼科器械清洗消毒操作流程培训考试试题
- 基于学科核心素养的高中体育与健康学业质量与学习评价解读-汪晓赞
- 湖北省武汉市江岸区2023-2024学年八年级下学期期中物理试题(原卷版)
- 福建省建筑与市政地基基础技术标准
- DL∕T 5776-2018 水平定向钻敷设电力管线技术规定
评论
0/150
提交评论