S-51单片机开发板设计《单片机及应用设计》实训报告
S-51单片机开发板设计 ---------《单片机及应用设计》实训报告 姓 名:
学 号:
班 级:
XX级电子信息工程专业本科班 学 院:
计算机电子信息工程学院 时 间:
2010年X月X日——X月X日 指导教师:
目录 一.前言 2 二.单片机及各模块简介 2 1.总体设计方案 2 2.硬件模块简介 3 2.1 S51单片机主控制模块 3 2.2 键盘模块 4 2.3 DS1302时钟模块 4 2.4 串口通信模块 5 2.5 LED数码管显示和流水灯模块 5 2.6下载线模块 6 2.7 蜂鸣器模块 6 2.8 其他模块 7 三.开发板(串口通信模块)设计原理介绍 7 1.实验项目要求 7 1.1元器件功能介绍 7 1.2串口通信原理 8 2.原理图的绘制 10 2.1串口通信模块仿真电路设计 10 3.程序的编写 11 3.1 keil操作过程 11 3.2程序框图 12 3.3USB模块电路原理图的绘制 12 四.印刷板的焊接及流程 14 焊接流程 14 五.调试及遭遇的问题解决方法 14 1.调试 14 1.1程序下载 14 1.2开发板调试 15 2.问题解决 15 六.总结体会 15 附录:
16 串口通信C语言源程序 16 一.前言 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
本次实训的主要目的就是为了学习单片机的基本理论知识,进而进行单片机的开发、实践和扩展,以更好的运用到实际的软硬件开发中去。此次单片机的实训目的如下:
(1)掌握单片机的相关理论知识。
学习单片机相关寄存器的配置,单片机内部结构及特点,存储器组织及外部接口,中断及串口功能,功能寄存器的相关配置,确定软硬件设计总体方案;
(2)掌握硬件设计和软件设计的基本知识,学会使用基本的设计软件,依据总体的设计方案对单片机进行软硬件开发。
在Protel中对单片机的各个功能模块进行外部电路的设计,在实现各个模块的功能的前提下充分合理利用单片机的内部资源和外围接口,以求最大限度的发挥单片机的功能。
学会使用Keil C进行编辑、编译及仿真调试,实现对单片机进行C语言开发。
以Proteus为平台,对单片机外围各个功能模块进行软件仿真验证功能。
(3)开发板板上资源的硬件实现及下载器的制作。
对软硬件设计仿真验证功能无误后,将Protel绘制的PCB进行加工、焊接元器件,制作出S51开发板及下载器。
二.单片机及各模块简介 1.总体设计方案 本开发板共分为十个模块,分别是:S51单片机主控制器模块、键盘模块、DS1302时钟模块、数码管模块、LCDCPS364BR模块、ARK点阵模块、下载器模块、流水灯模块、蜂鸣器模块、电源模块。其中以S51单片机作为核心控制器;
键盘模块用来向单片机输入特定编码的信息;
DS1302时钟模块用来实现实时时钟;
数码管模块用来显示简单的数字、字母;
LCD模块用来显示字母、数字、符号;
点阵模块用来显示图像、符号、汉字;
下载器模块用来实现S51单片机的ISP在线编程;
流水灯模块用来显示单片机I/O口电平的变化;
蜂鸣器模块用来发出声音。总体硬件电路如下图1所示:
图1 总体硬件电路 2.硬件模块简介 2.1 S51单片机主控制模块 S51单片机最小系统包括:MCU、复位电路、晶振电路。S51系列单片机内部具有128字节RAM、5个中断源、32条I/O口线、2个16位定时器、4KB的程序存储器、一个全双工异步串行口,具有ISP在线编程功能,该单片机不需要烧写器,可在开发板上ISP在线编程, S51单片机除兼容C51单片机外,还具有工作频率0至33MHz的高工作频率。
原理图如图2所示:
图2 主控制模块 2.2 键盘模块 按键模块,通过外部中断INT1实现按键功能,并通过软件编程识别按键K0---K3四个按键,进而实现相关功能,例如数码管显示字符数字的加减,LED灯速度的变换等。原理图如图3所示:
2.3 DS1302时钟模块 DS1302 的引脚如图4所示:
图3 按键模块 图4 DS1302引脚图 Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2高于Vcc1 + 0. 2V时,Vcc2给DS1302供电。当Vcc2低于Vcc1时,DS1302由Vcc1 供电。X1、X2为振荡源,外接32. 768 kHz晶振。I/O为串行数据输入/输出端(双向),SCL K为时钟输入端。RST是复位片选线,通过把RST输入驱动置为高电平来启动所有的数据传送。RST输入有两种功能:RST接通控制逻辑,允许地址/命令序列送入移位寄存器;
RST提供了终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许DS1302进行操作。如果在传送过程中置RST为低电平,则会终止此次数据传送,并且I/ O引脚变为高阻态。上电运行时,在Vcc高于2. 5V之前,RST必须保持低电平。只有在SCL K为低电平时,才能将RST置为高电平。DS1302时钟模块的原理图如图5所示:
图5 DS1302时钟原理图 单片机与DS1302通过P1.1、P1.2、P1.3相连,分别为时钟信号线、输入输出线、复位信号线。DS1302的晶振引脚连接32768HZ的晶振。
2.4 串口通信模块 串口通信模块的原理图如图6所示:
图6 串口通信模块的原理图 单片机与MAX232通过P3.0、P3.1相连,分别为发送线、接收线,另外单片机要与MAX232共地。
2.5 LED数码管显示和流水灯模块 LED显示器有静态显示和动态显示两种显示方式。
LED静态显示方式:LED显示器工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起并接地(或+5V);
每位的段选线(a~dp)分别与一个8位的锁存器输出相连。各个LED的显示字符一经确定,相应锁存器的输出将维持不变,直到显示另一个字符为止。
LED动态显示方式:在多位LED显示时,将所有位的段选线相应的并联在一起,有一个8位I/O口控制,形成段选线的多路复用。而各位的共阳极或共阴极分别由相应的I/O线控制,实现各位的分时选通。要各位LED能够显示出与本位相应的显示字符,就必须采用扫描显示方式,段选线上输出相应位要显示字节的段码。
流水灯模块包含8个LED灯,单片机的P0口接10K上拉电阻,八个LED的负极依次连接单片机P0口的8个引脚,八个LED的正极依次与510欧姆的排阻的八个端子相连。
LED数码管和流水灯模块原理图如图7:
图8 LCD数码管和流水灯模块 2.6下载线模块 下载器模块实现将USB信号转换为能通过SPI协议传输的信号,从而实现对单片机的编程。下载模块原理图如图9所示:
图9 下载线接口模块 图10 蜂鸣器模块 2.7 蜂鸣器模块 单片机的P1.4与Q1的基极通过1K欧姆电阻连接,当P1.4为高电平时,Q1导通,Q1的发射极与集电极导通,将发射极下拉为低电平,蜂鸣器两端出现电位差,蜂鸣器发声;
当P1.4为低电平时,Q1不导通,蜂鸣器两端没有电流流过,蜂鸣器不发声。
2.8 其他模块 I2C EEPROM模块用于程序或数据存储器的扩展功能,片外可最大扩展到64KB,地址为0000~FFFFH。此存储芯片支持电科擦除,即可写。
电源模块通过整流电桥实现交直流的转换功能,直接供单片机使用。
原理图如图11图12所示:
图11 电源模块 图12 I2C EEPROM模块 三.开发板(串口通信模块)设计原理介绍 1.实验项目要求 实验任务是通过串口通信实现单片机数据的自发自收以及双机通信功能,并且通过数码管循环显示0~F来表现其实现过程。
1.1元器件功能介绍 AT89S51: At89s51 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU和在系统可编程Flash,使得AT89S51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S51具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O口线,看门狗定时器,2个数据指针,三16位定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外AT89S51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8位微控制器 8K 字节在系统可编程 Flash AT89S51。
RS232:RS232是由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线。
RS232与TTL电路之间需要进行电平和逻辑关系的变换。实现这种变换的方法可用分立元件,也可用集成电路芯片。MAX232芯片可完成TTL←→RS232双向电平转换。
MAX232:MAX232芯片是RS232标准接口芯片,使用+5v单电源供电。是PC机与单片机串口进行通讯的电平转换芯片。内部结构基本可分三个部分:
第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS232串口电平的需要。
第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS232数据从T1OUT、T2OUT送到电脑DP9插头;
DP9插头的RS232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。
第三部分是供电。15脚DNG、16脚VCC(+5V)。
图13 RS232芯片引脚图 图14 MAX232芯片引脚图 1.2串口通信原理 S-51单片机内部有一个全双工的串行接收和发射缓冲器(SBUFF),这两个在物理上独立的接收发射器,即可以接收也可以发射数据,但接收缓冲器只可以读出不能写入,而发送缓冲器只能写入不能读出,它们的地址是99H。这个通信口即可以用于网络通信,亦可以实现串行异步通信,还可以构成同步移位寄存器使用。如果在串行口的输入输出引脚上加上电平转换器,就可以方便的构成标准的RS-232接口。
S-51单片机串行口专用寄存器。SBUF为串行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发射器寄存器,可以实现全双工通信。但这两个寄存器具有同一地址(99H)。S-51的串行数据传输很简单,只要向缓冲器写入数据就可发送数据。而从接收缓冲器读出数据既可接收数据。串行通信寄存器SCON控制寄存器,它是一个可寻址的专用寄存器,用于串行数据通信的控制。
数据通信的传输方式:常用于数据通信的传输方式有单工、半双工、全双工和工方式。串行通信的两种通信形式,包括异步通信和同步通信。SCON控制寄存器是一个可寻址的专用寄存器,用于串行数据通信的控制,其结构格式如下:
表1 寄存器SCON结构 SCON D7 D6 D5 D4 D3 D2 D1 D0 SM0 SM1 SM2 REN TB8 RB8 TI RI 位地址 9FH 9EH 8DH 9CH 9BH 9AH 99H 98H 下面我们对个控制位功能介绍如下:
(1)SM0、SM1:串行口工作方式控制位 (2)SM2:多机通信控制位 多机通信是工作方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收的前8位数据送入SBUF,且置位RI发出中断申请,否则会将收到的数据放弃。当SM2=0时,只有在接收到有效停止位时才启动RI,若没接收到有效停止位,则RI清“0”。在方式0中SM2应该为“0”。
REN:允许接收控制位。由软件置“1”时,允许接收;
软件置“0”时,不许接收。
TB8:在方式3和方式3中要发送的第9位数据,需要时用软件置位和清零。
TB8:在方式2和方式3中是接收到的第9位数据。在方式1时,如SM2=0,RB8接收到的停止位。在方式0中,不使用RB8。
TI:发送中断标志。由硬件在方式0发送完第8位时置“1”,或在其它方式中串行发送停止位的开始时置“1”。必须由软件清“0”。
RI:接收中断标志。由硬件在方式0串行发射第8位结束时置“1” B:特殊功能寄存器PCON PCON:主要是是CHMOS型单片机的电源控制而设置的专用寄存器 2.原理图的绘制 2.1串口通信模块仿真电路设计 (1)打开ISIS7professional窗口,执行菜单命令File new design,新建一个DEFAULT命名为“单片机串口通信自发自收.DSN”。
(2)在器件选择按钮单击“P”按钮,添加如表所示的原件:
单片机 AT89S51 电容CAP-ELEC CAP-POL MAX232 COMPIM 按钮 BUTTON 数码管 7SEG-MPX4-CA 74LS244 排阻 RX8 三极管 NPN 晶振 CRYSTAL (3)在ISIS原理图编辑窗口中,放置电源和地。布好线,设置好相应原件的参数。完成电骡图的设计。
(4)调试与仿真:加载生成的.HEX文件,进行调试,观察是否符合预期效果。
仿真效果图如图15所示:
图15 仿真效果图 3.程序的编写 3.1 keil操作过程 1).打开桌面上的keil软件:,下面新建一个工程,选择project->new新建一个名字叫“单片机串口通信”的工程,保存在事先创建的文件夹下,点击保存按钮。出现选择器件型号对话框:选择实验板上的所用芯片的型号atmel->at89s51 点击确定就建立完毕工程了。
2).添加代码文件到工程中,首先新建一个后缀为.C的源文件,点击开发环境中的file->new,新建c文件,然后点击保存按钮,注意一定要保存为后缀为.C的格式, 在开发环境中左边栏找到在source group1上右击选中,弹出添加文件对话框,如图:把单片机串口通信.c选中,点击ADD添加源文件到工程中。
3).点击按钮,编译你的代码,如果下面有错误提示,修改好后再次编译直到顺利通过编译为止。如图16所示:
图16 keil编译图 4).在target1上右击选择,出现如下对话框:.选择output栏,将一栏打上勾,这样编译通过之后就可以生成可以执行的下载文件(可执行文件后缀为hex),再次点击编译,生成可执行的代码串口通信.hex。
3.2程序框图 单片机通过MAX232与单片机通讯程序流程图17所示:
图17 单片机通过MAX232与PC机或单片机通讯程序流程图 单片机通过P3.0.和P3.1发送数据到单片机,单片机接收到数据后发送给单片机,并通过LED数码管显示出。
3.3USB模块电路原理图的绘制 (1)在D盘建立名为Protel的文件夹,在Protel的文件夹中建立名为USB.ddb设计数据库文件,新建原理图文件,命名为USB.sch。
(2)根据提供的usb原理图,自己画出原理图。电路中所有的元器件都可在Miscellaneous Devices.ddb、Protel DOS Schematic Libraries.ddb这两个元器件数据库中找。
(3)画完电路后,要按照图中元件参数逐个设置元件属性,元件要自动编号,并进行电气规则检查。设置某个元器件的属性的方法是双击该元器件出现对话框设置即可。原理图如图18所示:
图18 usb原理图 (4)最后形成该电路的网络表,为设计电路板做准备。
(5)根据仿真好的电路图,画出印刷电路板图。新建PCB文件,设置PCB设计环境和绘制印刷电路的版框。
(6)、打开所有要用到的PCB 库文件后,调入网络表文件和修改零件封装。布置零件封装的位置,进行自动布局。
(7)对所有过孔和焊盘补泪滴,放置覆铜区。
敷铜后的效果如图18所示:
图18 PCB原理图 四.印刷板的焊接及流程 焊接流程 1 、焊前准备 首先要熟悉所焊印制电路板的装配图,并按图纸配料,检查元器件型号、规格及数量是否符合图纸要求,并做好装配前元器件引线成型等准备工作。
2 、焊接顺序 元器件装焊顺序依次为:电阻器、电容器、二极管、三极管、集成电路、大功率管,其它元器件为先小后大。
3 、对元器件焊接要求 1 )电阻器焊接 按图将电阻器准确装人规定位置。尽量使电阻器的高低一致。焊完后将露在印制电路板表面多余引脚齐根剪去。
2 )电容器焊接 将电容器按图装人规定位置,并注意有极性电容器其 “ + ” 与 “ - ” 极不能接错。
3 )二极管的焊接 二极管焊接要注意阳极阴极的极性,不能装错;
发光二极管要与印刷版保持0.5cm距离。
4 )三极管焊接 注意 e 、 b 、 c 三引线位置插接正确;
焊接时间尽可能短,焊接时用镊子夹住引线脚,以利散热。
5 )集成电路焊接 首先按图纸要求,检查型号、引脚位置是否符合要求。焊接时先焊边沿的二只引脚,以使其定位,然后再从左到右自上而下逐个焊接。
6)usb接口和电源接口 找到正确位置,注意将其与印刷版焊接牢固,不松动。
五.调试及遭遇的问题解决方法 1.调试 1.1程序下载:开发板和PC机通过下载器连接,使用+5V电源给开发板供电。在PC机上安装ISP在线下载器驱动,打开烧写器软件,选择烧写单片机类型,加载FLASH,点击编程,即可把程序烧录到单片机中。
使用USB isp下载:请安装并打开progisp167\软件, 编程器及接口选择USBasp,usb默认,选择器件类型AT89S52,点击调入FLASH按钮,找到你刚才生成的LED.hex文件 将usb下载线一头连接电脑U口,另外一头连接实验板左上方的ISP下载口,(注意方向),点击自动,可以看到,编程成功, 1.2开发板调试:
(1)键盘模块实验效果:烧写.HEX文件到单片机,将JP7插上短路帽,按下键盘上的某一个键,LCD1602上显示该键对应的键值;
(2)DS1302时钟模块实验效果:烧写.HEX文件到单片机,插上LCD1602,液晶上显示秒、分、时;
(3)数码管模块实验效果:烧写LED动态显示.HEX文件到单片机,将J3上端插上短路帽,数码管显示从0开始计数 ;
(4)流水灯模块实验效果:烧写流水灯.HEX文件到单片机,流水灯显示几种不同的花型;
(5)蜂鸣器模块实验效果:烧写.HEX文件到单片机,蜂鸣器以一定的声音频率鸣叫。
2.问题解决 (1)印刷版焊完之后,无法烧入程序,总是出错。
经过分析后判断可能是单片机有的接口焊点虚焊所致,回去后,用电烙铁把单片机的管口查询焊接了一遍。问题就解决了,能够烧入程序了。
(2)数码管显示的是乱码,并非完整数字。
分析应该是数码管编码与实际所用的编码或引脚不相同。对程序中的数码管显示代码重新编译之后就通过了。
六.总结体会 在老师的指导下,自己找资料、看书,完成了老师布置的任务。通过这次的实训设计,使我对单片机以及智能仪器的结构和功能都有了更深的认识,从理论和实践上都得到了很大的提高,这次的实训真的给我很大的提高。总结经验来说,首先,我丰富了自己的知识面,将以前没能学通的东西深入透彻的学会学懂,具体了解了怎样去完成一个电路的设计:从流程图、电路图、焊接电路板、检查电路板、仿真到烧片一整套东西。没有浪费宝贵的时间,学习到了难得的经验。
自己找资料,了解单片机89S51、数码显示管的有关知识,学习时钟电路、控制电路的设计原理,看不懂的时候就去问老师、同学。和同学们一起探讨不懂得难点之时我仿佛感觉到了真正的大学应该有的学习氛围。在这些都搞得比较明白后就开始画设计流程图和电路图,最后用了很长时间才画出自己的电路图,同学老师都帮我检查,改正了几处有问题的地方。电路的焊接比较难。要细心稳重,应为这是一件很要求技术的工作。但是我克服困难终于完成了但接下来的检测可就费了不少劲,发现并解决了很多问题。在解决完所有问题后,自己又一种成功感,还在想,要是没有这些错误,就不会学会这么多检测电路的方法,而且对自己所做的电路有了进一步的了解。做到这一步满以为不会再有什么错误了,但是仿真的时候却又遇到了马麻烦,先是数码管不亮,在后来就是全亮,按键后没反应,刚有的一点成功感马上就没了,又一次陷入了反复的检测。检测发现了不少问题,解决后仿真成功。在后来就开始烧片,烧片的过程还算顺利。烧好后插上电路板,显示成功了。接下来的工作一切还算顺利,在老师还有同学的帮助下,都一一完成。
这次的实训设计总的来说还是很成功的,自己从中学到很多,也发现了不少问题,为自己以后的学习、进步打下了不错的基础。从实训设计中,学到了单片机AT89C51的内部结构及其工作原理,了解了串口通信的工作原理,还有共阳极数码管的工作原理,巩固了C语言的使用能力,提高了自己动手的能力,学到了很多经验,并且提高了自己分析问题的能力和创新能力,得到了理论联系实际的机会,做出了成果。使自己在硬件设计方面树立了信心,为以后从事这方面的工作打好了基础,这也是这次实训设计的最大收获。
附录:
串口通信C语言源程序 /********单片机自发自收程序**********/ #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit P2_0=P2^0; sbit P2_1=P2^1; sbit P2_2=P2^2; sbit P2_3=P2^3; sbit P2_4=P2^4; sbit P2_5=P2^5; sbit P2_6=P2^6; sbit P2_7=P2^7; uchar code dsy[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,}; /*** 实验板数码管的编码 ***/ signed int a; void delay(uint n) //延时程序 {uint j; uchar k; for(j=0;j<10000;j++) for(k=0;k<n;k++); } void main() //主函数 {SCON=0X50; PCON=0X80; TMOD=0X20; TH1=0XFF; //串口初始化 TL1=0XFF; TR1=1; a=0; EX1=1; EA=1; P2=0X00; IP=0X04; while(1) { SBUF=dsy[a]; //发送程序 while(!TI); TI=0; P2_0=1; P2_1=1; P2_2=1; P2_3=1; P0=dsy[a]; delay(10); while(!RI); //接收程序 RI=0; P2=0X0F; P2_4=1; P2_5=1; P2_6=1; P2_7=1; P0=SBUF; delay(10); P2=0X00; delay(1); } } void INT_0() interrupt 2 //外部中断1 { switch(P1) { case 0xfe:{delay(1); if(a<15) //按键1,加一个数 a=a+1; else a=0; break;} case 0xfd:{delay(1); if(a>0) a=a-1; else a=15; break; } //按键2 ,减一个数 default:break; } }
推荐访问: