第一篇:S51单片机开发板设计《单片机及应用设计》实训报告
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 附录: 串口通信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
第二篇:单片机应用实训报告
青岛大学软件技术学院
单片机应用实训报告
姓 名 xx 专 业 xxxxxxx 班 级 xxxxxxxxxxxxxxxxxxxx 指导教师 xxxxxxxxxxxxxxx
2014 年 1月16日
目录
1实训目的…………………………………………………………2 2实训地点………………………………………………………………2 3实训时间………………………………………………………………2 4进度安排………………………………………………………………2 5实训内容…………………………………………………………3 6实训过程…………………………………………………………4 6.1按键程序,在单片机开发板上设置K1、K2、K3、K4以及RST键相应功能……………………………………………………………………4 6.2设计数码管电子钟由59分钟计时到00……………………8 6.3 1602液晶显示器的使用……………………………………12 6.4实训问题及解决方法……………………………………………14 7 实训体会…………………………………………………………14
实训内容
本次实训内容包括三部分,全部都是应用单片机来进行实现的,所以我们应该对单片机有所了解。主要是单片机的最小系统的连接和使用,Keil编程软件及STC烧写软件的使用。
其中第一部分是按键显示相应功能部分,注意每一个按键所对应的程序及显示方法; 第二部分是电子钟的设计,要注意其中的程序设计时应该让其能够自动计时,并在满60的时候进位,在计满到59分钟时,可以自动的跳转到00并重新开始计时。
第三部分设计屏幕字滚动效果,要求显示自己设计的文字并显示出来。实训单片机的电路连接图:
sbit P20=P2^0;uchar code DispTab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80, 0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳数码管显示0~F void Delay(uint m)//延时函数 { uchar i;for(;m>0;m--){for(i=0;i<125;i++)} } … …
main()//主函数 { uchar keyValue;uchar j;P3=0xff;P2=0xf0;P0=0xc0;for(;;){ keyValue=key();switch(keyValue){case 0xfb: { j++;if(j>15)j=0;P0=DispTab[j];break;} case 0xf7:P0=0xa4;break;case 0xef:P0=0xb0;break;case 0xdf:P0=0x99;break;} } } 6.1.2编译程序,生成文件并且烧写程序进入单片机,过程如下:将单片机按照下图链接:
:
6.2设计数码管电子钟由59分钟计时到00 6.2.1打开软件,建立工程项目,新建文件,写入代码并保存。图像同上
程序编程如下:
#include
key_s <<= 1;key_s |= K1;return(key_s ^ key_v);}
void proc_key(){ EA = 0;if((key_v & 0x01)== 0)// K1 { inc_min2();// JJ=1;} else if((key_v & 0x02)== 0)// K2 { min++;// JJ=0;if(min > 59){ min = 0;} dis_buf[3] = dis_code[min / 10];// 分十位 *****3 dis_buf[2] = dis_code[min % 10]&0x7f;// 分个位 *****4 }
EA = 1;} void timer0()interrupt 1 // 定时器0中断服务程序, 用于数码管的动态扫描
// dis_index---显示索引, 用于标识当前显示的数码管和缓冲区的偏移量
// dis_digit---位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0xfe时, // 选通P2.0口数码管
// dis_buf---显于缓冲区基地址 { TH0 = 0xFC;TL0 = 0x17;P2 = 0xff;// 先关闭所有数码管
P0 = dis_buf[dis_index];// 显示代码传送到P0口 P2 = dis_digit;// P2 = P2|0x80;dis_digit = _crol_(dis_digit,1);// 位选通值左移, 下次中断时选通下一位数码管
dis_index++;// dis_index &= 0x07;// 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描
{ hour++;P1=x;x=x*2;if(hour > 23){ hour = 0;} void delayms(unsigned char ms)// 延时子程序 { unsigned char i;while(ms--){ for(i = 0;i < 120;i++);} } 6.2.2编译程序,生成文件并且烧写程序进入单片机,图像过程同上 6.2.3程序烧写完毕后运行单片机
在数码管上显示时钟(分钟.秒)。
设置K1、K2按键,分别设置分钟增加和减少。显示如图所示:
en=0;} void lcd_init()//1602初始化函数 { lcd_wcom(0x38);//8位数据,双列,5*7字形 lcd_wcom(0x0c);//开启显示屏,关光标,光标不闪烁
lcd_wcom(0x06);//显示地址递增,即写一个数据后,显示位置右移一位 lcd_wcom(0x01);//清屏 } void main()//主函数 { uchar n,m=0;lcd_init();//液晶初始化
lcd_wcom(0x80);//显示地址设为80H(即00H,)上排第一位 for(m=0;m<16;m++)//将table[]中的数据依次写入1602显示 { lcd_wdat(table[m]);delay(200);} lcd_wcom(0x80+0x44);//重新设定显示地址为0xc4,即下排第5位 for(n=0;n<8;n++)//将table1[]中的数据依次写入1602显示 { lcd_wdat(table1[n]);delay(200);} while(1);//动态停机 }
6.3.2编译程序,生成文件并且烧写程序进入单片机,图像过程同上
6.3.3程序烧写完毕后运行单片机
实验现象:在液晶显示器上显示字符
如下图:
常的生活息息相关。了解了一些简单程序的录入,LED显示器、键盘、和显示器的应用和原理
经过短短一个星期的单片机应用实训,我深深体会到单片机的神奇和奥妙,也意识到自己在单片机编程上还有许多不足,这就需要我们去继续努力。
我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,实训锻炼了自己动手能力和思维能力,还有在软件方面的编程能力,让我受益匪浅,同时也暴露出一些平时学习上的问题,让我深刻反思。这些问题的发现将为我以后的学习和工作找明道路,查漏补缺为进一步学习作好准备。通过实训,让我懂得了如何编写一些简单的程序,学会了如何制作单片机应用程序,并且可以在今后的日常生活中灵活运用。
最后,在老师精心的指导下我们都已基本完成实训要求。通过这次实训,我们揭开了单片机神秘的面纱,离我们不再遥远!对于我们所学的编程知识渗透较少,之前都是老师操作为主。此次实训就不同了,我们自己动手,收获甚大!
我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,实训锻炼了自己动手能力和思维能力,还有在软件方面的编程能力,让我受益匪浅,同时也暴露出一些平时学习上的问题,让我深刻反思。这些问题的发现将为我以后的学习和工作找明道路,查漏补缺为进一步学习作好准备。通过实训,让我懂得了如何编写一些简单的程序,学会了如何制作单片机应用程序,并且可以在今后的日常生活中灵活运用。
我们要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在实习过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。但是从中学到的知识会让我受益终身。
第三篇:单片机开发板维修报告
单片机开发板维修报告
尊敬的学院领导:
您们好!
信息科学与技术系实验室-单片机实验室,有30套mcs51单片机开发板。因学生实验教学,学生自学,学生研究项目,学生毕业论文等学生实训活动,现已有近15套实验板出现不同等次问题,比如芯片损害、液晶显示故障等,需要维修。
根据厂家返回信息,现在向学院申请维修费用,估计1000元。
同时,下学期(2012第一学期),10级生物医学工程专业将用此开发板进行实验教学。
望领导能够批准。
信科系实验室
第四篇:单片机实训报告
目录
一 方案设计说明:............................................................................................2 二 硬件设计说明:............................................................................................4
(一)电路图:..........................................................................................4(二)单片机AT89S51的I/O口分配使用情况........................................4
(三)元器件的参数及规格:....................................................................5 三 软件设计说明:............................................................................................6
(一)软件设计思路及流程图:................................................................6
(二)程序的总体框架结构说明:............................................................8
(三)重要程序段的功能,作用及思路简介:........................................8 四 制作调试说明:..........................................................................................13
(一)程序调试过程:..............................................................................13
(二)硬件调试:......................................................................................13 五 电路实拍:.....................................................................................................14 六 总结心得体会:..........................................................................................15 七 参考文献:.....................................................................................................16
一 方案设计说明:
设计方案之前,得先分解设计任务。本次的设计任务是篮球记分牌,据常识,篮球记分牌应有分别给两队加分,减分,能交换显示分数。在进行设计之前,应自己提出几个问题,待问题回答之后。基本功、的设计方案就出来了。在设计之前我提出了一下几个问题:
a:硬件部分如何控制给A对B对加分,场地交换的时候又是如何实现分数显示交换的?应该如何连接硬件,在硬件上设置控制端,控制端与单片机各引脚之间的连。
b:单片机只有一个CPU,如何实现即要扫描按键,又要显示比分。数码管工作的本质是将要显示的数据的字型码送给他,如何采集到变化的分数送给数码管。用查表吗?
c:加分与倒计时在程序中最本质的东西是什么,如何用程序来说明这样的事件,各事件之间又是如何联系的。
虽然这些问题看似很普通,似乎在设计过程中都要面对这样的问题,何不事先就解决这些问题呢,在逐一回答这些问题的同时,该任务的设计方案已见雏形。以下就是该方案的详细内容以及我问题的答案。
系统原理图如下图一所示:
LED数码显示管外部按键AT89S51驱动电路 3
二 硬件设计说明:
(一)电路图:
(二)单片机AT89S51的I/O口分配使用情况
图中P3.0,P3.1,P3.2,P3.3分别是加一分、加两分、加三分、减一分。P3.4与P3.5口是外部中断,其中断服务程序的功能是实现比分交换的切换显示和加分减分切换。电路中选择共阳极的数码管,可以省去输入端的驱动电路,使电路更简洁。P0口作为字形码的输出口,与数码管的八只管教相连。
(三)元器件的参数及规格:
主要元器件有单片机芯片AT89S51,共阳极数码管,9012PNP三极管。其中单片机承载程序,实现电路功能,三极管起开关及驱动数码管显示作用。数码管显示比分。
三 软件设计说明:
程序的总体思路是主程序一直在扫描按键,比分显示,比分交换,加减分队伍切换都在中断服务程序中完成。其具体内容如下所示。
(一)软件设计思路及流程图:
中断程序流程图(如:图一)
程序初始化,给存储器赋初值按键扫描程序,扫描到由按键控制的中断就执行其对应程序外部中断1,加减外部中断0,A、B分队伍切换中断程序两队比分切换图一
按键扫描程序流程图(如:图二)按键扫描入口,检测软件标志位F0,为1调用分数显示程序程序,为0调用加减分切换程序,同时扫描按键是扫描P3.0,并去抖,是否有键按下加一分否是扫描P3.1,并去抖,是否有键按下加两分否是扫描P3.2,并去抖,是否有键按下加三分否是扫描P3.3,并去抖,是否有按键按下减一分否按键扫描程序结束图二
分数显示程序流程图(如:图三)
将A对B对的分数首先进行BCD码转换,再保存到相对应的寄存器中把各分数分别赋给寄存器A,查表送往要显示的数码管由P2口的位状态控制子程序调用结束,返回主程序,RET 图三
其中时间显示的子程序流程图与分数的大同小异,此处就不再一一列出。
(二)程序的总体框架结构说明:
程序包含按键扫描程序,不断地扫描按键,一旦有控制中断的按键按下,就执行中断程序,交换比分。中断服务程序,INT_0交换A对与B对的总分,INT_1改变软件标志位就可以切换加减分队伍,同时扫描按键。
(三)重要程序段的功能,作用及思路简介:
按键扫描程序是本程序中最重要的程序段,其连接了所有的子程序,子程序的调用都是在其中完成。下面就对该程序段的功能,作用及编写思路做详细说明。各部分关键程序 按键控制程序
org 0060h ajcx: jnb p3.0,s0
jnb p3.1,s1
jnb p3.2,s2
jnb p3.3,s3
jnb p3.4,s4
jnb p3.5,sz5
ljmp ajcx sz5: ljmp s5 s0:
lcall del
jb p3.0,s01
ljmp ajcx s01: jnb p1.0,s02
mov a,30h
inc a
mov 30h,a
ljmp tzcx s02: mov a,31h
inc a
mov 31h,a
ljmp tzcx s1:
lcall del
jb p3.1,s11
ljmp ajcx s11: jnb p1.0,s12
mov a,30h
add a,#02h
mov 30h,a
ljmp tzcx s12: mov a,31h
add a,#02h
mov 31h,a
ljmp tzcx s2:
lcall del
jb p3.2,s21
ljmp ajcx s21: jnb p1.0,s22
mov a,30h
add a,#03h
mov 30h,a
ljmp tzcx s22: mov a,31h
add a,#03h
mov 31h,a
ljmp tzcx s3:
lcall del
jb p3.3,s31
ljmp ajcx s31: jnb p1.0,s32
mov a,30h
dec a
mov 30h,a
ljmp tzcx s32: mov a,31h
dec a
mov 31h,a
ljmp tzcx s4:
lcall del
jb p3.4,s41
ljmp ajcx s41: push 30h
push 31h
pop 30h
pop 31h
lcall jscx
ljmp ajcx s5:
lcall del
jb p3.5,s51
ljmp ajcx s51: cpl p1.0
cpl p1.1
ljmp ajcx 加分程序: org 0120h tzcx: lcall jscx
ljmp ajcx org 0130h del: mov tl1,#00h
mov th1,#0bh
setb tr1
jnb tf1,$
mov tl1,#00h
mov th1,#0bh
clr tf1
ret 加减分队伍切换程序: org 0150h
dscx: mov th0,#0fch
mov tl0,#18h
mov a,r2
rl a
mov r2,a
cjne r2,#11h,d1
mov r1,#32h
lcall jscx
reti d1:
cjne r2,#22h,d2
mov r1,#33h
lcall jscx
reti d2:
cjne r2,#44h,d3
mov r1,#34h
lcall jscx
reti d3:
mov r1,#35h
lcall jscx
reti 比分切换程序: org 0190h jscx: mov a,30h
mov b,#0ah
div ab
mov 33h,b
mov 32h,a
mov a,31h
mov b,#0ah
div ab
mov 35h,b
mov 34h,a
mov p2,r2
mov dptr,#tab
mov a,@r1
movc a,@a+dptr
mov p0,a
ret
org 0220h tab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
db 80h,90h end 12
四 制作调试说明:
(一)程序调试过程:
程序调试我花了两天的时间,此程序虽然不复杂,由于我平时学习的不够深入,也没用心学。对于我这样的基础来说调试过程真的很痛苦。刚开始调试时程序有两处让我感觉很乱,按键扫描程序中的中断程序如何调用。当寄存A对或B对的分数累加到99的时候,就清零,但还没有累加到99的时候,程序应该跳往何处执行,我最初的是跳了继续累加。在仿真中的现象就是分数一直显示99,加不了。我真的是太大意了,调试的时候不踏实。
(二)硬件调试:
此次的硬件焊接很成功,电路布局很清晰,虽然在调试时也发现错误,但用万用表很容易就检测出来了,其中有几根线的皮包线熔了,肉眼看不到。重新整理电路后,功能明显成功。至此,本次的单片机课程设计圆满结束。
五 电路实拍: 电路板正面:
电路板背面:
六 总结心得体会:
通过这一次的单片机实训,让我对单片机这一门知识有了更深的认识,更锻炼了我独立解决问题独立思考的能力,在电路设计和程序设计的过程中我们遇到了很多问题和困难,但通过大家的讨论和老师的指点之后,一切的问题都一一被解决,但单片机的学习并不是那么的简单,在最后也是最关键的程序调试的过程中,我们又遇到了很多更难的更棘手的问题,电路焊接完好也会出现诸多类似于不实现功能或是出现混乱显示的情况,真的很让人头疼,但,大家都还是咬牙坚持了下来,最后很多电路虽然依旧还是没能实现功能,但我们努力顽强克服重重困难的精神,是大家有目共睹的,就算是失败了,也依旧是很值得的一次经历.,与此同时,也有很多同学试验成功,看着大家脸上洋溢的笑容,大家无论失败成功都从这次的实训中学到了很多很多的东西
七 参考文献: 胡健
主编 《单片机原理及接口技术》
张大明 主编 《单片机控制实训指导及综合应用实例》李勋、林广艳《单片机微型计算机大学读本》
机械工程出版社 机械工业出版社
北京航空航天大学出版社16
第五篇:单片机实训报告
沧州职业技术学院单片机实训报告
原理图
沧州职业技术学院单片机实训报告
双位数码管显示控制程序及说明
START: MOV R0,#0;清零
MOV DPTR,#TABLE;指定查表起始地址 LOOP: ACALL DISPLAY;调用子程序DISPLAY INC R0;R0加1 CJNE R0,#100,LOOP JMP START DISPLAY: MOV A,R0
MOV B,#10 DIV AB
MOV 20H,A MOV 21H,B MOV R3,#50;LOOP1: MOV A,21H
ACALL CHANG CLR P2.4;ACALL DLY SETB P2.4 MOV A,20H ACALL CHANG CLR P2.5;ACALL DLY SETB p2.5 DJNZ R3,LOOP1 RET CHANG: MOVC A,@A+DPTR MOV P0,A;RET;R0未到100则转换;跳转
;把R0里的数据送入A;把10送入B;a b相除;十位送入20H;个位送入21H 把50送入R3;取个位数
;调用子程序CHANG 开个位显示;调用子程序DLY;关闭个位显示;取十位数
;调用子程序CHANG 开十位显示;调用子程序DLY;关闭十位显示;循环50次;子程序返回;查表 查表结果送入P0;子程序返回 沧州职业技术学院单片机实训报告
DLY: MOV R6,#20;典型延时子程序延时
D1: MOV R7,#248;10ms DJNZ R7,$ DJNZ R6,D1 RET TABLE: DB 0C0H,0F9H,0A4H DB 0B0H,99H,92H,82H DB 0F8H,80H,90H END
;表数据共阳极数码管显示代码
沧州职业技术学院单片机实训报告
心得体会
为期一周的单片机实训结束了,真是让我受益匪浅啊!学到了很多东西,不管怎么样,先感谢学校给我的这么多机会,真正的学到了东西。
随着电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,我们就学习了单片机这门课程,感觉是有点难。也不知道整个学习过程是怎么过来得,可是时间不等人。不过在学习中,我才发现学习单片机不仅仅需要软件的知识,还需要硬件的知识。我买了一个单片机在实践中就是一个活生生的例子,没有相应的硬件知识,我连单片机怎么和电脑相连都不知道,我为我当初的想法感到羞愧。单片机是一门很好的学问,需要我去钻研它。
不过在学习中,我才发现学习单片机不仅仅需要软件的知识,还需要硬件的知识。我买了一个单片机在实践中就是一个活生生的例子,没有相应的硬件知识,我连单片机怎么和电脑相连都不知道,我为我当初的想法感到羞愧。单片机是一门很好的学问,需要我去钻研它。
说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。
沧州职业技术学院单片机实训报告
在全组人竭尽全力,老师的精心指导下,程序基本编写成功,这是我们共同努力的结果,在享受我们成果之时,不得不感慨单片机的重要性与高难度性,所以为期一周的单片机课程设计没有浪费我我们学到了很多知识,也让我们对单片机有了更深一步的了解,虽然最后结果是出来了,可这与老师的精心指导是分不开的她引导我们的思路,本来一窍不通的我们经过老师的点拨基本上通了,所以老师是功不可没的。
总而言之,单片机课程设计对于我们有很大的帮助,我们从中受益匪浅。
参考文献
[1]李广弟等
单片机基础[M] 北京航空航天出版社,2001.[2]王东峰等
单片机C语言应用100例[M] 电子工业出版社,2009.[3]陈海宴
51单片机原理及应用[M] 北京航空航天大学出版社,2010.[4]刘守义等
单片机技术基础[M] 西安电子科技大学出版社,2007.[5]钟富昭等
8051单片机典型模块设计与应用[M] 人民邮电出版社,2007.[6]李平等
单片机入门与开发[M] 机械工业出版社,2008.[7]李全利
迟荣强编著 单片机原理及接口技术 高等教育出版社,2004 [8] 楼然苗等
51系列单片机设计实例 北京航空航天出版社,2003 [9]唐俊翟等
单片机原理及应用
冶金工业出版社,2003 5
沧州职业技术学院单片机实训报告
[10]刘瑞新等
单片机原理及应用教程
机械工业出版社,2003