《基于PIC16F877单片机的随机抽号系统设计毕业论文.doc》由会员分享,可在线阅读,更多相关《基于PIC16F877单片机的随机抽号系统设计毕业论文.doc(34页珍藏版)》请在三一办公上搜索。
1、基于PIC16F877单片机的随机抽号系统设计摘要 在本课题中介绍了题目的课题背景及意义,并基于PIC16F877来实现随机数抽取的过程。该系统可抽取、存储、读取、显示抽选的号码。设计出方案并进行论证。介绍了PIC16F877的功能及各模块的工作原理,随机抽数原理,数码管显示原理,各管脚分配。硬件的设计包括了整体的硬件框图、PCB制版图,硬件原理电路图,各部分电路的设计和电路图并进行相应说明,从而完整的呈现了硬件部分。软件部分包括工作流程图,程序源代码,软件仿真图,软件的仿真为硬件的制作打下了坚实的基础,大量的截图直观的展现设计的流程。整篇论文包括所选题目的理论分析、方案论证、图表分析、资料运
2、用和结论性意见等。关键词 随机数 数码管显示 软件仿真 硬件制版Title Designning the system of selectting random number by PIC16F877 AbstractIn this issue is described in the topic subject background and significance, and random number based on PIC16F877 to pull process. The system can display, store, read, covers of numbers are d
3、rawn. Designed out and demonstration programmes. Describes the function of PIC16F877 and the module works, random number principle, principles of digital display, the pin assignments. Includes hardware block diagram of the overall hardware design, PCB layout, I/O circuit diagrams, circuit design and
4、 circuit diagram of the parts and the corresponding description, rendered so as to complete the hardware section. Software includes workflow, program source code, software simulation, software simulation for hardware production has laid a solid foundation, a large number of screenshots of Visual dis
5、play design process. Throughout the paper include the selected topics of theoretical analysis, plan, chart analysis, use of information and concluding observations.Keywords random number digital display software simulation PCB layout目录1.前言11.1课题背景2(一)课题研究的背景与意义2(二)课题的国内外研究现状21.2 毕业设计任务介绍42.方案设计52.1基
6、于PIC16F877的单片机随机抽号系统设计说明52.2 I/O端口分配52.2.1PORTA端口52.2.2PORTB端口52.2.3PORTC端口62.2.4PORTD端口62.3 数据存储62.4 随机数产生原理63系统硬件设计73.1PIC16F877原理简介73.1.1PIC16F877特性73.1.2特殊内嵌功能83.1.3PIC16F877指令简介83.2硬件框图93.3电源电路设计103.4复位电路设计113.5晶振电路设计123.6按键电路设计133.7拨码开关电路设计143.8数码管显示电路设计153.9LED灯电路设计164系统软件设计174.1软件流程图174.2按键去
7、抖动184.3程序代码195系统仿真235.1硬件仿真235.2软件仿真236硬件实现237结论248参考文献259致谢261.前言本课题设计基于PIC16F877的单片机随机抽号系统实现体育彩票摇奖。而随机抽号系统又是以当下十分贴近生活的体彩抽奖为模板,来具体实现。该系统的设计能够充分显示PIC16F877芯片的功能,使我在设计的过程中对PIC16F877能有较深刻的认识,对自己的所学做个系统的总结。为了对体彩抽奖有深入的理解,我观看了几期体彩开奖的节目,调查了体彩可选择的玩法。体彩的精髓就在于它的不可预测性,从而使它经久不衰,这也很好的映射了PIC16F877可产生随机数的功能。选择了两种
8、就有代表性的玩法后,便开始搜集材料设计系统,主要通过图书馆获取较为可靠的资料;例如:PIC16F877的介绍及功能,如何制作PCB版,如何仿真等。对于设计方案这种需集思广益的资料,我选择在网上看看有否相似案例,或和本组同学商讨汲取信息和建议。体育彩票作为为社会福利性和公益性事业发展经费不足而筹集社会闲散资金的一条有效途径,由于市场经济的发展、奥运争光及全民健身两大计划的提出和实施,到目前为止,体育彩票已成为我国体育事业发展和其可持续发展的重要经济来源。彩票业已经成为社会保障基金多元化的重要来源之一。体育彩票作为体育产业的一支新生力量,越发显示出强大的社会集资功能。这种符合人类天性、创造幸运机会
9、又能增加社会经济活力的博彩游戏,已成为我国体育产业的重要部分。有效地控制和克服体育彩票在发展中遇到的一些负面因素和存在的问题以及及时地针对这些问题加以合理、科学的引导将关系到体育彩票事业未来的发展趋势。本课题选择将软硬件全部实现,全面体现了该课题的完整性和可参考性。并且在制作硬件过程中要求电路板可实现全组设计功能,这样也加深了团队合作,并对其他功能的原理有所了解,扩大了同学们的知识面,从而充分了解了PIC16F877功能的多样性。1.1课题背景(一)课题研究的背景与意义体育彩票作为为社会福利性和公益性事业发展经费不足而筹集社会闲散资金的一条有效途径,由于市场经济的发展、奥运争光及全民健身两大计
10、划的提出和实施,到目前为止,体育彩票已成为我国体育事业发展和其可持续发展的重要经济来源。彩票业已经成为社会保障基金多元化的重要来源之一。体育彩票作为体育产业的一支新生力量,越发显示出强大的社会集资功能。这种符合人类天性、创造幸运机会又能增加社会经济活力的博彩游戏,已成为我国体育产业的重要部分。有效地控制和克服体育彩票在发展中遇到的一些负面因素和存在的问题以及及时地针对这些问题加以合理、科学的引导将关系到体育彩票事业未来的发展趋势。本课题设计基于PIC16F877的单片机随机抽号系统实现体育彩票摇奖。(二)课题的国内外研究现状摇奖机是用来摇各种奖的机器。适用于法院、政府机构、企事业等需要展示公平
11、公正的单位或者有抽奖或者选号环节的所有活动。国家彩票事业、均采用摇奖机开奖、省级以上法院、相关公示部门,均会采用摇奖机作为公平公正标志。最早的摇奖机由法国科学家研发出来。分为一代的搅拌式摇奖机和二代的吹气式摇奖机。技术水平:直到目前为止,从原始的手动式、到正式的一代搅拌式再到现在流行的二代喷气式法国都一直处于摇奖机行业技术领先位置。我国技术情况:经过几年的发展,国内技术水平已经追赶上世界步伐,国内目前已有多家生产摇奖机的厂家,专门为彩票附属机构提供服务,规模大、技术先进。 需求情况:我国许多政府部门或事业性单位,因社会环境要求均需要对外公开化,以示公平,故摇奖机的需求量日渐增大,另外,近年来计
12、多新兴的、需要公平公证的行业的兴起,也增加了遥奖机的需求量。常见的摇奖机有以下几种:1、原始手动式:主要用转盘式和箱式两种,转盘式的基本原理是物体以对称中心转动。2、箱式:只要只是利用圆柱中心轴转动,令里面奖球随机混乱,达到随机公平的效果。3、一代的搅拌式摇奖机的原理简单说来主要是利用搅拌轴转动,令所有的球随机运动,某时间内打开出球口,刚好经过出球口的球便作为幸运球。这些摇奖机都操作简单、摇奖结果直观并易于理解,但都不能对摇奖结果进行存储。本课题设计的基于PIC16F877的单片机随机抽号系统实现体育彩票摇奖。不仅具有以上抽奖机的优点,还能对摇奖结果进行存储和显示。1.2 毕业设计任务介绍1.
13、设计一个基于PIC体彩摇奖系统的电路,要求实现体彩中“排列3”的玩法,即从0-9十个数字中选择3个号码(玩法一,号码可以重复)。要求实现体彩中“22选5”的玩法。即是从01-22这22个数字间选择5个号码组成一注(玩法二,号码不可重复)。2.能存储和显示随机抽中号码。3.抽号、调出显示等操作方便2.方案设计2.1基于PIC16F877的单片机随机抽号系统设计说明本设计中的输入设备是按键2个及拨码开关2位,输出设备是7段LED数码管。按键2个:“抽号”按键和“翻页”按键。拨码开关2位:拨码开关0的0值对应“抽号”,1值对应“数据显示”;拨码开关1的0值对应玩法一,1值对应玩法二。LED数码管2个
14、:用于显示抽号结果。拨码开关处于“抽号”状态时,按“抽号”按键开始抽号,计数器开始计数,经过一段时间计数器停止工作,显示抽取结果。抽号完毕或“数据显示”状态中,按“翻页”键,显示下一屏抽中的号码。2.2 I/O端口分配PORTA端口接LED位选。PORTB端口接按键、拨码开关。PORTC端口接蜂鸣器、LED灯。PORTD端口接LED数码管各段。2.2.1 PORTA端口 PORTA口为6位双向I/O端口,均为复用管脚 除了作为数字量的输入输出引脚之外, RA4可作为定时器TMR0的时钟输入,其他引脚可作为模拟量输入和模拟参考电压输入,用作A/D转换。注意:上电复位时,PORTA被设置为模拟量输
15、入,无论引脚电压是多少,读出时为“0” 2.2.2 PORTB端口PORTB口为8位双向I/O端口,复用功能意义不强。 RB0可作为外部中断输入引脚。 RB3,RB6,RB7可作为低电压编程功能引脚,和在线调试有关,在线调试时,不做为I/O引脚使用。8个引脚均有内部弱上拉功能(软件设定),输入时有效;上电复位弱上拉无效。RB7RB4可识别电平变化中断,有各自的标志位,输入有效,可激活SLEEP状态,常用于键盘接口。2.2.3 PORTC端口PORTC口为8位双向I/O端口,均为复用管脚。除了作为数字量的输入输出引脚之外,PORTC口多与定时及串行 I / O有关2.2.4 PORTD端口 PO
16、RTD口为8位双向I/O端口,均为复用管脚。PORTD口可作为并行从动端口和某个8 位的微处理器数据总线相连,由外部微处理器控制实现异步读写。在从动端口模式下,忽略TRISD 寄存器,因为外部微处理器在控制着数。2.3 数据存储用PIC单片机片内存储空间EEPROM存储当次两种玩法的抽号结果。EEPROM数据存储器允许字节读和写,当和数据存储器块接口时,EEDATA保存8位读和写数据,EEADR保存被访问的EEPROM存储单元的地址。寄存器EEDATH和EEADRH不用作EEPROM数据存储器的访问。单片机有高达256个带有0hFFh的地址范围的EEPROM数据存储器字节。EEPROM数据存储
17、器有高速的擦和写周期。写时间由片内定时器控制。写时间随着电压和温度以及不同的单片机将有变化。当单片机不要求写入EEPROM数据存储器时有一些条件,为了防止寄生的EEPROM写,各种结构已建立,在上电时,WREN位被清零,并且上电定时器(72ms)持续时间防止EEPROM写。写初始化顺序和WREN位一起帮助防止电压降低,电源误操作和软件故障期间的意外写入。2.4 随机数产生原理所谓定时功能就是通过来自单片机内部的时钟脉冲作计数脉冲,使计数器计数,即每个机器周期计数器加1,计数值达到预设值后,定时/计数模块产生溢出。所谓计数是指对外部事件进行计数。外部事件的发生以输入脉冲表示,因此计数功能的实质就
18、是对外来脉冲进行计数。TMR0为16位宽,有一个可选的预分频器,用于通用目的,可用于定时和计数,TMR0并不产生真正的随机数,而是通过让计数器快速计时(即高频脉冲)实现的。3系统硬件设计3.1PIC16F877原理简介 3.1.1PIC16F877特性 PIC16F877是由Microchip公司所生产开发的新产品,属于PICmicro系列单片微机,具有Flash program程序内存功能,可以重复烧录程序,适合教学、开发新产品等用途;而其内建ICD(In Circuit Debug)功能,可以让使用者直接在单片机电路或产品上,进行如暂停微处理器执行、观看缓存器内容等,让使用者能快速地进行程
19、序除错与开发。 如图1为PIC16F877的40根接脚图,PDIP是指一般最常见的DIP(Dual In Line Package)包装,而PIC单片机也有PLCC(Plastic Leaded Chip Carrier)与QFP(Quad Flat Package)两种形式的包装,依照不同的需求,寻找不同的包装形式。如图所示,每根接脚都有其特定功能,例如Pin11与Pin32(VDD)为正电源接脚,Pin12与Pin31(VSS)为地线接脚;而有些接脚有两种甚至三种以上功能,例如Pin2(RA0/AN0)代表PORTA的第一支接脚,在系统重置(Reset)后,可自动成为模拟输入接脚,接收模拟
20、讯号,也可经由程序规划为数字输出输入接脚。 PIC16F877属于闪控式(Flash)单片机,可以重复烧录,其ROM的容量总共是8K words,以2K为一个page,区分为4个pages;内部RAM总共有512个字节(00f1FFh),以128个字节为一个Bank,共区分为4个Bank,如图5所示,每个Bank的前半段都有其特殊用途,分别连接到其特殊功能模块,例如I/O、CCP、Timer、USART、MSSP等。图3-1. PIC16F877引脚说明 3.1.2特殊内嵌功能 PIC16F877属于内嵌功能较多的单片机,除了CPU、POM、RAM、I/O等基本构造外,还包括以下各种功能,简介
21、如下: A/D converter:模拟数字转换器,最多可以读取8组模拟输入讯号。 CCP:Capture、Compare、PWM,用于控制直流马达。Timer,内部定时器,有Timer0、Timer1、Timer2等。 USART:Universal Synchronous Asynchronous Receiver Transmitter,同步/异步串行传输,如RS232、RS485等。 MSSP;Master Synchronous Serial Port,两线式(I2C)与三线式(SPI)标准同步串行传输协定,常用于EEPROM内存资料的烧录与读取,或是与其它集成电路沟通与联系,形成多
22、芯片网络。3.1.3PIC16F877指令简介PIC16F877常用的语言有汇编语言与C语言两种,汇编语言是将每一个机器码使用一个文字代号代表,比较接近处理器真正动作模式;而C语言是比较符合人们的使用习惯,事先将汇编语言组合成C语言形式,使用较为方便,但是C语言所组译的机器码程序通常比较大,且组译软件通常需要额外购买。以下简介汇编语言相关指令与一套C语言组译软件。3.2硬件框图图3-23.3电源电路设计3.4复位电路设计3.5晶振电路设计3.6按键电路设计3.7拨码开关电路设计3.8数码管显示电路设计3.8.1七段数码管LED数位管(数码管)是一种半导体发光器件,其基本单元是发光二极体。数位管
23、按段数分为七段数位管和八段数位管,八段数位管比七段数位管多个发光二极体单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数位管;按发光二极体单元连接方式分为共阳极数位管和共阴极数位管。LED发光器件一般常用的有两类:数位管和点阵。8段数位管属于LED发光器件的一种。8段数位管又称为8字型数位管,分为8段:A、B、C、D、E、F、G、P。其中P为小数点。由于LED数位管具有:颜色丰富、亮度高、功耗低、回应速度快、易与积体电路解码器,驱动器直接配合使用的优点,因此,数位管主要用于各类仪表、仪器、家用电器等的数位显示。 LED显示器分为共阴极LED和共阳极LED两种。共阴极LE
24、D八支发光二极管的阴极共同接地,所以叫共阴极LED。在每个发光二极管的阳极接的电阻将起到保护作用。在输入管脚接高电平时,对应的发光二极管将会发光。适当编码后,8支发光二极管组合起来就可以表达数据了。共阳极LED在每个发光二极管的阳极接的电阻将起到保护作用。在输入管脚接低电平时,对应的发光二极管将会发光。3.8.2.74LS373锁存器单片机系统中常用的地址锁存器芯片74LS373。是带三态缓冲输出的8D触发器,其引脚图与结构原理图、电路连接图如下: EG功能00直通Qi = Di01保持(Qi保持不变)1X输出高阻E G D QL H H HL H L LL L X Q上表是74LS373的真
25、值表,表中: L低电平; H高电平; X不定态; Q0建立稳态前Q的电平; G输入端,与8031ALE连高电平:畅通无阻低电平:关门锁存。图中OE使能端,接地。 当G=“1”时,74LS373输出端1Q8Q与输入端1D8D相同; 当G为下降沿时,将输入数据锁存。74ls373是常用的地址锁存器芯片,它实质是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片。 (1).1脚是输出使能(OE),是低电平有效,当1脚是高电平时,不管输入3、4、7、8、13、14、17、18如何,也不管11脚(锁存控制端,G)如何,输出2(Q0)、5(Q1)、6(Q2)
26、、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部呈现高阻状态(或者叫浮空状态);(2).当1脚是低电平时,只要11脚(锁存控制端,G)上出现一个下降沿,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)立即呈现输入脚3、4、7、8、13、14、17、18的状态. 锁存端LE 由高变低时,输出端8 位信息被锁存,直到LE 端再次有效。 当三态门使能信号OE为低电平时,三态门导通,允许Q0Q7输出,OE为高电平时,输出悬空。当74LS373用作地址锁存器时,应使OE为低电平,此时锁存使能端C为高电平时,输出Q0Q7 状
27、态与输入端D1D7状态相同;当C发生负的跳变时,输入端D0D7 数据锁入Q0Q7。3.9LED灯电路设计4系统软件设计4.1软件流程图4.2按键去抖动按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒。按键抖动会引起一次按键被误读多次。为确保CPU对键的一次闭合仅作一次处理,必须去除键抖动。在键闭合稳定时读取键的状态,并且必须判别到键释放稳定后再作处理。所以去抖动并不是把按键的抖动消除了,而是通过延时避开抖动时间。4.3程序代码#include /文件包含指一个源文件将另外一个源文件的全部内容包含进来。void delay_xs(void)/定义了一个函数,大概延时1秒钟un
28、signed int i;i=6553;while(i0)i=i-1;voidinitial_system()/初始化系统TRISA=0X00;/定义A口为输出TRISB=0XFF;/定义B口为输入TRISC=0X00;/定义C口为输出TRISD=0X00; /定义D口为输出PORTA=0X00;/初始化A口PORTB=0X00;/初始化B口PORTC=0X00;/初始化C口PORTD=0X00;/初始化D口void main ()/每个C程序都必须有一个main函数/int temp;initial_system();if(RB4=0&RB5=0&RB6=0&RB7=0)/拨码开关为0000
29、play_1_3D();/实现玩法1,即:实现3D球玩法;if(RB4=0&RB5=0&RB6=0&RB7=1)/拨码开关为0001play_2_25_4();/实现玩法2,即:实现25选4。if(RB4=0&RB5=0&RB6=1&RB7=0)/拨码开关为0010cheak1();/查看玩法1;if(RB4=0&RB5=0&RB6=1&RB7=1)/拨码开关为0011cheak1();/查看玩法2;void play_1_3D()/实现玩法1void play_2_25_4()/实现玩法2void cheak1()/查看1的玩法void cheak2()/查看2的玩法void play_1_
30、3D()/实现玩法1void play_2_25_4()/实现玩法2void cheak1()/查看1的玩法void cheak2()/查看2的玩法void randomplay1()/产生随机数1for(int i=1;i1000;i+)if(RB0=1)int temp=i;void randomplay2()/产生随机数2/for5系统仿真5.1硬件仿真5.2软件仿真6硬件实现1. 原理图绘制 2生成元器件清单3元器件采购4. PCB板图设计5PCB板加工6焊接7调试7结论8参考文献1 张皆喜主编 PIC系列单片机C语言编程与应用实例 电子工业出版社,20082 谭浩强主编 C语言程序设
31、计 清华大学出版社,20053 江和主编 PIC16系列单片机C程序设计与PROTEUS仿真 北京航空航天大学出版社,20104 刘向宇主编 PIC单片机C语言程序设计实例精粹 电子工业出版社,20105 王昊天等主编 PIC单片机原理与应用:专业技能入门与精通 机械工业出版社,20106 求是科技编著 PIC单片机典型模块设计实例导航 人民邮电出版社,20057 陈国先编著 PIC单片机原理与接口技术 电子工业出版社,20048 AN EMBEDDED SINGLE CHIPTEMPERATURE CONTROLLER DESIGN J. Jayapandian and Usha Rani
32、Ravi Indira Gandhi Centre for Atomic Research, alpakkam 603 102. Tamil Nadu. India9 J. Rsch : Observations from the Pic du Midi Il Nuovo Cimento (1955-1965), 1961, Volume 22, Supplement 1, Pages 313-31910 Morse code: PIC generated with PWM Bohdan Borowik Intelligent Systems, Control and Automation: Science and Engineering, 1, Volume 49, Interfacing PIC Microcontrollers to Peripherial Devices, Pages 15-199致谢