电子抽奖系统设计论文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录
摘要 (I)
ABSTRACT.......................................................................................................... I I 1 绪论.. (1)
1.1研究背景及意义 (1)
2 系统分析 (2)
2.1 整个控制系统的设计要求 (2)
2.2.1 方案论证 (2)
3 系统硬件电路设计 (4)
3.1 硬件电路介绍 (4)
3.2 控制电路分析 (4)
3.2.1 复位电路 (4)
3.2.2基本的复位方式 (4)
3.2.3 时钟电路 (5)
3.2.4 LCD1602显示液晶 (6)
3.2.5LCD1602基本参数及引脚功能 (6)
3.2.7 按键设计 (8)
5 器件介绍 (9)
5.1AT89S52单片机简介 (9)
5.1.1 AT89S52单片机主要特性 (9)
5.1.2管脚说明 (9)
5.1.3 振荡器特性 (11)
5.1.4芯片擦除 (11)
5.1.5定时器/计数器 (11)
5.1.5.1主要特性 (11)
5.1.5.2定时/计数器0和1的控制和状态寄存器 (11)
5.1.5.3T0和T1的4种工作方式 (13)
5.2 CD4017简介 (14)
6 Altium designer简介 (15)
7 系统软件的设计 (16)
8 仿真与制作 (17)
8.1系统仿真 (17)
8.2硬件电路的布线与焊接 (18)
8.3程序下载 (18)
结束语 (23)
致谢 (24)
参考文献 (25)
附录 (26)
附录1: (26)
附录2:程序 (26)
基于51单片机的电子抽奖系统设计
摘要
随着电子技术的不断发展,单片机的应用范围越来越广泛,单片机以被运用到工业控制,家电控制,电子玩具等多个领域中并且都占有十分重要的作用。

近年来单片机亦被用于各种娱乐场所,例如抽奖活动中。

原始的抽奖系统大多采用摸球等实物化方案,这种方案的准备工作麻烦并且在抽奖过程中的随机性不好,此外它的唯一性决定了它的适用性能不强。

然而基于单片机的电子抽奖系统具有准备简单,奖项可随时改变,随机性可靠,并且可多次使用的优点,使得基于单片机的电子抽奖系统更加具有实用性。

因此研究基于单片机的电子抽奖系统具有非常重要的意义。

本文基于以上原因而介绍了一种基于单片机的电子抽奖系统。

该电路简单可靠、功能强、成本较低。

关键词抽奖系统;单片机;CD4017
ELECTRONIC LOTTERY SYSTEM DESIGN
BASED ON 51 MCU
ABSTRACT
With the continuous development of electronic technology, SCM's range more widely, the microcontroller to be applied to many areas of industrial control, appliance control, electronic toys etc. and has played a very important role.
SCM has also been used in recent years, a variety of entertainment, such as sweepstakes. The original lottery system they use to touch the ball and other physical scheme, the preparation of such programs cumbersome and randomness of the draw process, well, in addition to its uniqueness it determines the application performance is not strong.
However, having to prepare simple, awards can be changed at any time, random reliable, and the advantages of reusable microcontroller-based electronic lottery system, making it more practical microcontroller-based electronic lottery system. So the study has very important significance microcontroller-based electronic lottery system.
Based on the above reasons, introduced electronic lottery system based on microcontroller. The circuit is simple and reliable, powerful and low cost.
KEY WORDS Lottery systems; SCM; CD4017;
1 绪论
1.1研究背景及意义
现状及发展趋势简易可靠的电子摇奖器,它可替代传统机械手动式摇奖机,具有公正性好、可靠性高、实用性强、小巧直观、经济实惠的特点,能广泛应用于需要公开摇奖的活动中。

本产品可广泛应用于各种社会团体、公司、文化娱乐场馆等所举办的幸运观众。

通过此课题,既可以进一步了触摸式摇奖器工作原理,还可以知道随着我国各行各业的发展,一种简易可靠的电子摇奖器,它可替代传统机械手动式摇奖机,具有公正性好、可靠性高、实用性强、小巧直观、经济实惠的特点,能广泛应用于需要公开摇奖的活动中。

本产品可广泛应用于各种社会团体、公司、文化娱乐场馆等所举办的幸运观众(听众)摇奖、有奖销售、有奖储蓄、体育、福利彩票、六合彩票等需要公开摇奖的活动,推广应用前景广阔。

用摇奖机开奖,是当今世界公认最公平公正的方式,摇奖机该产品结构合理、适用范围广,设计先进,款式新颖,功能特多,是摇奖抽奖的首选设备。

该设备全透明设计,开奖时一目了然,不怕被怀疑黑箱操作,体现出绝对的公平公正摇奖开奖方式。

适用范围:招标、拍卖、电子游戏机厅、彩票投注站和所有服务行业,促销、工厂公司、楼盘、庆典、大型活动等抽奖。

2 系统分析
2.1 整个控制系统的设计要求
本设计采用模块化设计思路。

将设计分为以下几个模块:CPU处理模块,脉冲产生及十进制计数模块,按键抽奖控制模块,抽奖信息显示模块。

将所有模块分块调节成功后,连接整机电路,即可完成基于单片机的电子抽奖系统设计。

其中CPU处理模块控制所有的电路,当抽奖按键按下后,CPU识别到按键按下,由于CD4017的输出口每次只有一位为1,这样对比处理,即可得到抽奖产生的情况,最后CPU控制信息显示模块对抽奖信息进行显示。

1、连接好硬件电路,各模块可正常工作。

2、连接好整机电路,连接在CD4017计数器上的LED灯可循环亮灭。

3、按下抽奖按键,可对十种可能进行随机抽奖。

4、抽奖所得的信息可在LCD1602显示。

2.2.1 方案论证
方案一:ICl为二输入端四与非门CD4011。

其中,与非门ICl-1、ICl-2组成时钟脉冲发生器。

与非门ICl-3组成计数闸门电路,它的一个输入端接时钟脉冲发生器的输出端,另一个输入端经电阻R3与触摸金属片M相连。

IC2为十进制计数/分配器CD4017,在它的输出端Q0~Q9上接有LEDl~LED10十个发光二极管,分另廿代表“0~9”十个数。

电容C2与电阻R5组成通电自动清零复位电路。

当人手没有触摸金属片M时,与非门ICl—3的下输入端为低电平,使计数闸门封锁,IC2不计数.这时,U2的输出端只有某一个为高电平,使相应的发光二极管一直保持点亮状态,该发光
二极管所代表的数就是所得到的摇奖号码。

方案二:采用单片机,CD4017及外围电路设计。

方案二采用编程控制,电路简便,成本低,方便实现,并且系统整体性能和可靠性高。

本设计采用方案二。

3 系统硬件电路设计
3.1 硬件电路介绍
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。

这里单片机采用AT89S52,它是51系列8位单片机,内部有2KB的程序存储器,外部有P1和P3两个8位并口,选用晶振频率fosc=24MHz。

当遥控信号发射器的某个按键被按下,其内部的信号发射器就产生遥控编码脉冲,经载波调制后由红外发射管串行输出[4];遥控接收头完成对遥控信号的接收放大、检波、整形、再送给微控制器,由微控制器解调出编码脉冲并执行相应的遥控功能。

3.2 控制电路分析
3.2.1 复位电路
单片机在启动时,系统进入复位状态。

在复位状态,CPU和系统都处于一个确定的初始状态或成为原始状态,在这种状态下,所有的专用寄存器都赋予默认值。

在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。

3.2.2基本的复位方式
单片机系统的复位方式有:手动按钮复位和上电复位,这里我们采用手动按钮复位。

1、手动按钮复位需要人为在复位输入端RST上加入高电平。

一般采用的办法是在RST端和正电源Vcc之间接一个按钮。

当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。

手动按钮复位的电路如图3-1所示。

由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。

图3-1 复位电路
2、上电复位
AT89S52的上电复位,只要在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到地即可。

对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1µF。

上电复位的工作过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号[5],此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。

为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。

上电时,Vcc 的上升时间约为10ms,而振荡器的起振时间取决于振荡频率
3.2.3 时钟电路
单片机时钟电路是用来配合外部晶体实现振荡的电路,这样可以为单片机提供运行时钟。

时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路产生时钟信号;另一种为外部方式,时钟信号由外部引入。

时钟电路如图3-2所示。

图3-2 时钟电路
3.2.4 LCD1602显示液晶
LCD1602是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。

管脚功能
1602采用标准的16脚接口,其中:
第1脚:GND为电源地
第2脚:VCC接5V电源正极
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

第5脚:RW为读写信号线,高电平(1)时进行读操作,
第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。

第7~14脚:D0~D7为8位双向数据端。

第15~16脚:空脚或背灯电源。

15脚背光正极,16脚背光负极。

特性
(1)3.3V或5V工作电压,对比度可调,内含复位电路
(2)提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能(3)有80字节显示数据存储器DDRAM
(4)内建有192个5X7点阵的字型的字符发生器CGROM
(5)8个可由用户自定义的5X7的字符发生器CGRAM
3.2.5LCD1602基本参数及引脚功能
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图4.1所示。

图4.1 1602LCD尺寸差别图
(1)LCD主要技术参数
显示容量:16×2个字符;
芯片工作电压:4.5—5.5V;
工作电流:2.0mA(5.0V);
模块最佳工作电压:5.0V;
字符尺寸:2.95×4.35(W×H)mm。

(2)引脚功能说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表4.1所示。

表4.1 1602LCD引脚接口说明
3.2.7 按键设计
采用独立式按键接口与单片机相连接,因为它占用的I/O口不多。

每个按键占用一个口,彼此独立,互不影响。

独立式键盘可工作在查询方式下,通过I/O口读入键状态,当有键被按下时I/O口变为低电平,而未被按下的键对应为高电平,这样通过读电平状态可判断是否有键按下和哪个键被按下。

电路如下图3-6所示。

图3-3按键电路
5 器件介绍
5.1AT89S52单片机简介
AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash存储器。

使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器[10]。

在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

5.1.1 AT89S52单片机主要特性
AT89S52具有下列主要性能:
(1) 8KB可改编程序Flash存储器,可经受1000次的写入/擦除周期
(2) 三级程序存储器保密
(3) 256 *8字节内部RAM
(4) 32条可编程I/O线
(5) 3个16位定时器/计数器
(6) 6个中断源
(7) 可编程串行通道
(8) 片内时钟振荡器
AT89S52是用静态逻辑来设计的,并提供两种可用软件来选择的省电方式——空闲方式和掉电方式。

在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。

在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,一切功能暂停,只保存片内RAM中的内容,直到下一次硬件复位为止。

5.1.2管脚说明
AT89S52单片机的管脚说明如图5-1所示。

(1) 主要电源引脚
①VSS 电源端
②GND 接地端
(2) 外接晶体引脚XTAL1和XTAL2
①XTAL1 接外部晶体的一个引脚。

在单片机内部,它是构成片内振荡器的反相
放大器的输入端。

当采用外部振荡器时,该引脚接收振荡器的信号,既把此信号直接接到内部时钟发生器的输入端。

图5-1 AT89S52的引脚
②XTAL2 接外部晶体的另一个引脚。

在单片机内部,它是上述振荡器的反相放大器的输出端。

采用外部振荡器时,此引脚应悬浮不连接。

(3) 输入/输出引脚P0.0~P0.7、P1.0~P1.7、P2.0~P2.7 和P3.0~P3.7。

①P0端口P0是一个8位漏极开路型双向I/O端口。

作为输出口用时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。

在访问外部程序和数据存储器时,它是分时多路转换的地址(低8位)/数据总线,在访问期间激活了内部的上拉电阻。

②P1端口P1是一个带有内部上拉电阻的8位双向I/O端口。

P1的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。

对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。

作输入口时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。

③P2端口P2是一个带有内部上拉电阻的8位双向I/O端口。

P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。

对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。

P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。

在访问外部程序存储器和16位地址的外部数据存储器(如执行MOVX @DPTR 指令)时,P2送出高8位地址。

在访问8位地址的外部数据存储器(如执行MOVX @Ri , A指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中P2寄存器的内容),在整个访问期间不会改变。

④P3端口P3 是一个带有内部上拉电阻的8位双向I/O端口。

P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。

对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。

P3作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。

在AT89S52中,P3端口还用于一些专门功能,这些兼用功能如下:
(1) P3.0 RXD(串行输入口)
(2) P3.1 TXD(串行输出口)
(3) P3.2 /INT0(外部中断0)
(4) P3.3 /INT1(外部中断1)
(5) P3.4 T0(记时器0外部输入)
(6) P3.5 T1(记时器1外部输入)
(7) P3.6 /WR(外部数据存储器写选通)
(8) P3.7 /RD(外部数据存储器读选通)
(9) P3口同时为闪烁编程和编程校验接收一些控制信号
5.1.3 振荡器特性
XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为
片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2
应不接。

由于输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

5.1.4芯片擦除
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,ALE管脚处于低电平10ms 来完成。

在芯片擦操作中,代码阵列全被写“1”且在任何非空存
储字节被重复编程以前,该操作必须被执行。

5.1.5定时器/计数器
5.1.5.1主要特性
AT89S52单片机有两个可编程的定时器/计数器——定时器/计数器0与定时器/
计数器1,可有程序选择作为定时器用或作为计数器用,定时时间或记数值也可由程序设定。

每一个定时器/计数器具有4种工作方式,可用程序选择任一定时器/计数器在定时时间到或记数值到时,可有程序安排产生中断请求信号或不产生中断请求信号。

5.1.5.2定时/计数器0和1的控制和状态寄存器
特殊功能寄存器TMOD和TCON分别是定时/计数器0和1的控制和状态寄存器,
用于控制和确定各定时/计数器的功能和工作模式。

1.模式控制寄存器TMOD
TMOD用于控制T0和T1的工作方式和4种工作模式。

其中低4位用于控制T0,高4位用于控制T1。

GATE位:门控位。

当GATE=1时,只有INTO非或INT1非引脚为高电平且TR0或TR1置1时,相应的定时/计数器才被选通工作;当GATE=0,则只要TR0和TR1置1,定时/计数器就被选通,而不管INT0非或INT1非的电平是高还是低。

C/T非位:计数/定时功能选择位。

C/T非=0,设置为定时器方式,计数器的输入是内部时钟脉冲,其周期等于机器周期。

C/T非=1,设置为计数器方式,计数器的输入来自T0(P3.4)或T1(P3.5)端的外部脉冲。

M1、M0位:工作模式选择位。

2位可形成4中编码,对应4种工作模式。

2.控制寄存器TCON
TCON用来控制T0和T1的启、停,并给出相应的控制状态,高4位用于控制定时器0、1的运行;低4位用于控制外部中断
TF1:定时器1溢出标志。

当定时器1溢出时,由硬件置1。

使用查询方式时,此位做状态位供查询,查询有效后需由软件清零;使用中断方式时,此位做中断申请标志,进入中断服务后被硬件自动清零。

TR1位:定时器1运行控制位。

该位靠软件置位或清零,置位时,定时/计数器接通工作,清零时,停止工作。

TF0位:定时器溢出标志位,其功能和操作情况类同于TF1。

TR0位:定时器0运行控制位,其功能和操作类同于TR1。

IE位:外部中断请求标志位。

当CPU采样到INT0非(或INT1非)端出现有效中断请求时,IE0(或IE1)由硬件置1,中断响应完成后转向中断服务时,再由硬件自动清零。

IT位:外部中断请求出发方式位。

IT0(IT1)=1为脉冲触发方式,后负跳有效。

IT0(IT1)=0为电平触发方式,低电平有效。

3.定时/计数器的初始化
AT89S52单片机的定时/计数器是可编程的,因此,在进行定时或计数之前也要用程序进行初始化。

初始化一般应包括以下几个步骤:
对TMOD寄存器赋值,以确定定时器的工作模式;
置定时/计数器初值,直接将初值写入寄存器的TH0,TL0或TH1,TL1;
根据需要,对寄存器IE置初值,开放定时器中断;
对TCON寄存器中的TR0或TR1置位,启动定时/计数器,置位以后,计数器即按规定的工作模式和初值进行计数或开始定时[11]。

在初始化过程中,要置入定时/计数器的初值,这时要做一些计算。

由于计数器是加法计数,并在溢出时申请中断,因此不能直接输入所需的计数值,而是要从计数最大值倒退回去一个计数值才是应置入的初值。

设计数器的最大值为M(在不同的工作模式中,M可以为8192,65536,256),则置入的初值可以这样来计算。

计数方式时
X=M—记数值
定时方式时
(M—X)T=定时值
所以
X=M—定时值/T
式中,T为计数周期,是单片机的机器周期。

5.1.5.3T0和T1的4种工作方式
方式0:13位定时/计数器,TL1(或TL0)的低5位和TH1(或TH0)的8位构成,TL中的高3位弃之未用。

当TL的低5位记数溢出时,向TH进位,而全部13位计数器溢出时使计数器回零,并使溢出标志TF置1,向CPU发出中断请求。

方式1:16位定时/计数器,其逻辑电路和工作情况与方式0几乎完全相同,唯
一的差别就是方式1中TL的高3位也参与了计数。

方式2:把TL配置成一个可以自动重装载的8位定时/计数器
方式3:仅对T0有意义,将16位定时/计数器分成两个互相独立的8位定时/计数器TL和TH。

5.2 CD4017简介
CD4017 是5 位Johnson 计数器,具有10 个译码输出端,CP、CR、INH 输入端。

时钟输入端的斯密特触发器具有脉冲整形功能,对输入时钟脉冲上升和下降时间无限制。

INH 为低电平时,计数器在时钟上升沿计数;反之,计数功能无效。

CR 为高电平时,计数器清零。

Johnson 计数器,提供了快速操作,2 输入译码选通和无毛刺译码输出。

防锁选通,保证了正确的计数顺序。

译码输出一般为低电平,只有在对应时钟周期内保持高电平。

在每10 个时钟输入周期CO 信号完成一次进位,并用作多级计数链的下级脉动时钟。

本设计电路如图5-2所示。

图5-2CD4017电路
6 Altium designer简介
电路设计自动化EDA(Electronic Design Automation)指的就是将电路设计中各种工作交由计算机来协助完成。

如电路原理图(Schematic)的绘制、印刷电路板(PCB)文件的制作、执行电路仿真(Simulation)等设计工作。

随着电子科技的蓬勃发展,新型元器件层出不穷,电子线路变得越来越复杂,电路的设计工作已经无法单纯依靠手工来完成,电子线路计算机辅助设计已经成为必然趋势,越来越多的设计人员使用快捷、高效的CAD设计软件来进行辅助电路原理图、印制电路板图的设计,打印各种报表。

Altium Designer 是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在Windows XP操作系统。

这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。

Altium Designer 除了全面继承包括Protel 99SE、Protel DXP在内的先前一系列版本的功能和优点外,还增加了许多改进和很多高端功能。

该平台拓宽了板级设计的传统界面,全面集成了FPGA设计功能和SOPC设计实现功能,从而允许工程设计人员能将系统设计中的FPGA与PCB设计及嵌入式设计集成在一起。

由于Altium Designer 在继承先前Protel软件功能的基础上,综合了FPGA设计和嵌入式系统软件设计功能,Altium Designer 对计算机的系统需求比先前的版本要高一些。

7 系统软件的设计
程序流程图如图7-1所示。

8 仿真与制作
8.1系统仿真
系统的软件仿真主要采用Proteus和Keil两款软件。

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

Proteus从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

在编译方面,它也支持IAR、Keil和MPLAB 等多种编译器。

Keil软件是目前最流行开发MCS-51系列单片机的软件,是由德国开发的一个51单片机开发软件平台。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。

这里主要采用这两款软件进行来联调,以验证软硬件的协调性。

Proteus仿真如图8-1所示。

图8-1Proteus仿真
8.2硬件电路的布线与焊接
本设计硬件电路分为遥控发射电路,遥控接收电路。

焊接前应熟悉各芯片的引脚,焊接时参照电路图,仔细地连接引脚。

按照以下原则进行焊接:(1)先焊接各芯片的电源线和地线,这样确保各芯片有正确的工作电压;
(2)同类的芯片应顺序焊接,在一片焊接并检查好之后,其他的同类芯片便可以参照第一片进行焊接。

这样便可大大节省时间,也可降低出错率;
(3)各部分焊接完毕后注意检查电路是否正确,必要时上电验证。

8.3程序下载
本设计中采用的AT89S51单片机具有灵活的在系统编程功能,故在硬件制作中只需为ISP串行编程接口留出引脚,方便程序的下载。

软件下载采用USB-ASP 下载器下载[16]。

该下载器价格便宜,使用简单,可直接通过便携电脑对单片机进行软件下载。

部分程序如下:
#include <reg52.h> //包括一个52标准内核的头文件
#include<intrins.h>
#define uchar unsigned char //定义一下方便使用
#define uint unsigned int
#define ulong unsigned long
//***********************************************
sbit k1=P3^6;
sbit k2=P3^7;
bit flag=0;
sbit clk=P1^0;
uchar gold;
uint k;
/***************************************************函数名称:延时子函数
函数功能:按键消抖
***************************************************/ void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void Control()
{
if(!k1)
{
TR0=1; flag=1;
while(!k1);
}
if(!k2)
{
TR0=0; flag=0;
while(!k2);
}
}
void Timer0Init(void)//50毫秒@12.000MHz {
TMOD &= 0xF0;//设置定时器模式
TMOD |= 0x01;//设置定时器模式
TL0 = 0xB0;//设置定时初值
TH0 = 0x3C;//设置定时初值
TF0 = 0;//清除TF0标志
TR0 = 0;//定时器0开始计时
ET0=1;
EA=1;
}
#include"1602.C"
void main()
{
init_1602();
Timer0Init();
while(1)
{
if(!k1)
{
k=0;
while(!k1);
}
display();
Control();
}
}
void time0() interrupt 1
{
static uchar num,count;
TL0 = 0xB0;//设置定时初值
TH0 = 0x3C;//设置定时初值
num++;
if(num==2)
{
num=0;
clk=!clk;
count++;
if(count==20)
{
count=0;
}
gold+=2;
if(gold==20)
{
gold=0;
}。

相关文档
最新文档