毕业设计(论文)基于单片机的无限下载电路设计.doc

上传人:laozhun 文档编号:3980726 上传时间:2023-03-30 格式:DOC 页数:36 大小:459.50KB
返回 下载 相关 举报
毕业设计(论文)基于单片机的无限下载电路设计.doc_第1页
第1页 / 共36页
毕业设计(论文)基于单片机的无限下载电路设计.doc_第2页
第2页 / 共36页
毕业设计(论文)基于单片机的无限下载电路设计.doc_第3页
第3页 / 共36页
毕业设计(论文)基于单片机的无限下载电路设计.doc_第4页
第4页 / 共36页
毕业设计(论文)基于单片机的无限下载电路设计.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《毕业设计(论文)基于单片机的无限下载电路设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于单片机的无限下载电路设计.doc(36页珍藏版)》请在三一办公上搜索。

1、1 引言1.1 开发背景随着单片机的迅速发展,各种各样的编程器和在线下载器涌现出来,而且功能全,使用方便,体积小等优点,但价格高是我们在校大学生所不能承受。首先对当前的发展状况作一个简单的介绍。单片机自70年代问世以来得到蓬勃发展,目前单片机功能正日渐完善:1、单片机集成越来越多资源,内部存储资源日益丰富,用户不需要扩充资源就可以完成项目开发,不仅是开发简单,产品小巧美观,同时系统也更加稳定,目前该方向即是发展为SOC(片上系统)。2、单片机抗干扰能力加强,使的它更加适合工业控制领域,具有更加广阔的市场前景。3、单片机提供在线编程能力,加速了产品的开发进程,为企业产品上市赢得宝贵时间。4、在线

2、编程目前有两种不同方式:1)、ISP ,具备ISP的单片机内部集成FLASH存储器,用户可以通过下载线以特定的硬件时序在线编程,但用户程序自身不可以对内部存储器做修改。这类产品如ATMEL8990系列。2)、IAP ,具备这种特性的单片机厂家在出厂时内部写入了单片机引导程序,用户可以通过下载线对它在线编程,用户程序也可以自己对内存重新修改。这对于工业实时控制和数据的保存提供了方便。这类产品如SST的89系列。5、在线仿真变的容易。用户一旦开发一个比较大的系统,开发调试变的非常复杂,同时由于单片机资源有限,不能像PC一样直接调试自己的软件,于是出现了品种繁多的专业仿真器,为用户的开发提供了强大功

3、能,加速了开发进程,降低了开发难度,同时这类仿真器也给中小型用户带来沉重的经济负担,目前已经有公司推出了可以在线调试的单片机,这类单片机采用标准JTAG接口,JTAG是一种标准(IEEE 1149.1),是为测试芯片而制定的,在可编程逻辑器件的数据下载中也使用JTAG接口,出现了在系统编程(ISP)的概念,也就是,即使可编程逻辑器件安装到了系统中,也可以对其内部电路进行修改,JTAG技术和EDA软件的进步,使可编程逻辑器件的开发与使用得到快速发展。6、ISP的扩展应用。ISP的硬件电路和软件设计,可为单片机用户提供了一种全新的与计算机进行通信的方法,即用计算机直接控制硬件电路的方法,例如,传统

4、的IC卡读卡器一般是由单片机作为IC卡的主控器,通过串行口与计算机进行通信,在计算机的控制下对IC卡进行操作,其缺点是在IC卡和计算机之间需增加串行协议,不仅增加了程序工作量,而且系统的稳定性也受影响。在学习或开发MCS-51系列单片机时,不仅需要仿真器,还需要编程器。近年来,随着一项新技术边界扫描(JTAG)的出现,开创了一种全新的单片机开发过程。JTAG集下载和在线仿真功能于一身,极大地方便了用户调试。简易JTAG不仅成本低廉(成本可控制在几十元以内),而且便于自己动手制作,从而为个人学习或开发单片机系统提供了良好的平台。尽管利用ISP功能,用户不用编程器即可对单片机在线编程,但AT89S

5、51/52系列单片机内部的Flash的擦写次数非常有限,只有1000次左右。这就给没有仿真器的用户调试程序带来许多不便。这种基于串行口在线下载的单片机开发系统有如下显著特点:1) 可无限次下载,极大地方便了不具备仿真器的单片机用户,例如在校大学生和单片机爱好者。2) 性价比高,用途多,操作简单。3) 可用做实验板,在校大学生可用它做一些简单的实验,以便对单片机有更深的了解。4) 提供预留扩展接口,可供用户开发小程序使用。基于以上描述,本人决定开发一套单片机无限次下载系统以满足需要,这套系统是由硬件电路和软件两部分构成。硬件电路主要包括AT89S51单片机最小系统、LED驱动电路、峰鸣器驱动电路

6、、红外信号接收电路、动态扫描显示电路、矩阵键盘扫描电路和RS-232串行口电路。软件部分是由串行口通信模块和主程序构成。其中主程序是由C语言来编写。因为C语言具有简单灵活,容易编写,修改等优点。计算机端采用Windows系统自带的工具超级终端,利用其文件发送功能来实现,这样可节省计算机端软件的编写,用VB来编写下载程序,能极大地方便用户使用。综上所述,有了硬件电路和软件程序,这套单片机无限次下载系统既可以作为一种低廉实用的学生用开发工具,又可以用于工业控制。它研制与开发的成功将为学生提供课外学习的可能,将极大地促进学生课外学习的兴趣,有利于学生切身的体会单片机的工作过程,学习单片机程序的编写,

7、提高学生们的动手能力,也将会给许多没有仿真器的用户调试程序带来方便。1.2 开发系统使用工具介绍在硬件方面主要使用了由AT89S51单片机构成的最小系统;在制作硬件电路图方面主要使用了Protel;在软件方面主要使用了C语言。下面首先介绍AT89S51单片机的ISP引脚功能,然后介绍一下Protel 99 SE,最后再阐述一下C语言。AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系

8、统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断

9、系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。主要功能特征: 兼容MCS-51指令系统 4k可反复擦写(1000次)ISP Flash ROM 32个双向I/O口 4.5-5.5V工作电压 2个16位可编程定时/计数器 时钟频率0-33MHz 全双工UART串行中断口线 128x8bit内部RAM 2个外部中断源 低功耗空闲和省电模式 中断唤醒省电模式 3级加密位 看门狗(WDT)电路 软件设置空闲和省电功能 灵活的ISP字节和分页编程 双数据寄存器指针AT89S

10、51中ISP引脚共有4个:RST、MOSI、MISO和SCK。各引脚的功能如下:RST为在线编程输入控制端,仅在ISP下载过程中保持高电平,在系统正常工作时该引脚为正常复位端,保持低电平状态。MOSI为从主机输出/从机输入的数据端,系统正常工作时该引脚为通用I/O P1.5口线。MISO为主机输出/从机输入的数据端,系统正常工作时该引脚为通用I/O P1.6口线。SCK为串行编程的时钟端,可实现主、从机时序的同步,该时钟频率不得超过系统时钟的1/16,系统正常工作时该引脚为通用I/O P1.7口线。AT89S51的ISP引脚功能如下图所示。图1ISP引脚功能图 ISP下载是基于串行传输来完成的

11、,符合SPI协议。在SPI协议中,数据的发送和接收是同步进行的,即在同步时钟的作用下,在发送数据的同时也接收数据。ISP的时序如图7.1.2所示。每一字节的数据都是低位在先,高位在后,在串行时钟的作用下逐位传输。在传输过程中数据是在时钟输入端为高电平时有效,在时钟输入端低电平时更新数据,在编写ISP下载程序时务必注意这一点。图2AT89S51单片机ISP的时序图Protel是一种制作电路图的工具,Protel系列产品是澳大利亚Protel Technology公司开发的大型电子线路设计软件。从20世纪80年代的Protel for DOS,到随后的Protel for Windows 1.0,

12、2.0,3.0,直到90年代末的Protel 98和Protel 99,以至今天的Protel 99 SE,Protel软件经历了一个逐步升级换代的过程。Protel Design Explorer 99 se简体中文版,一款着名的PCB电子电路辅助设计软件,此为1.0.0.0版本,该版本包含Service Pack 6,它的功能很完善,同时提供了各种国标库,还为用户提供了大量的电子器件参考手册及全套教程,随着Win XP的发布,软件本身也存在一些不兼容的问题,经过全面的BUG修正后,虽没什么地方改变,不过在Windows系统上稳定性却大大增强。Protel 99 SE主要包含以下两大部分:1

13、.电路工程设计部分电路原理图设计系统(Advanced Schematic 99):电路原理图设计系统报包括电路图编辑器(简称SCH编辑器)、电路图零件库编辑器(简称SchLib编辑器)和各种文本编辑器。本系统的主要功能是:绘制、修改和编辑电路原理图;更新和修改电路图零件库;查看和编辑有关电路图和零件库的各种报表。印刷电路版设计系统(Advanced PCB 99):印刷电路版设计系统报包括印刷电路版编辑器(简称PCB编辑器)、零件封装编辑器(简称PCBLib编辑器)和电路版组件管理器。本系统的主要功能是:绘制、修改和编辑印刷电路版;更新和修改零件封装;管理电路版组件。自动布线系统(Advan

14、ced Route 99):本系统包含一个基于形状(Shape-based)的无栅格自动布线器,用于印刷电路版的自动布线,以实现PCB设计的自动化。2.电路仿真与PLD部分电路模拟仿真系统(Advanced SIM 99):电路模拟仿真系统包含一个数字/模拟信号仿真器,可提供连续的数字信号和模拟信号,以便对电路原理图进行信号模拟仿真,从而验证其正确性和可行性。可编程逻辑设计系统(Advanced PLD 99):可编程逻辑设计系统包括一个有语法功能的文本编辑器和一个波形编辑器(Waveform). 本系统的主要功能是:对逻辑电路进行分析、综合;观察信号的波形。利用PLD系统可以最大限度地精简逻

15、辑部件,使数字电路设计达到最简化。高级信号完整性分析系统(Advanced Integrity 99):信号完整性分析系统提供了一个精确的信号完整性模拟器,可用来分析PCB设计、检查电路设计参数、实验超调量、阻抗和信号谐波要求等。语言是一种结构化的高级语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于语言实现了对硬件的编程操作,因此语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,语言还具

16、有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的语言。2 总体方案2.1 系统功能框图单片机AT89S51RAM6264串行口驱动电路LED驱动电路键盘扫描电路驱动电路LCD显示电路图3系统功能框图2.2 原理说明通常是将执行代码放到只读存储器ROM中,以确保执行代码在软件的执行过程中不被破坏。对CPU而言,无论它所要执行的是取自ROM,还是RAM,是没有区别的。只要给它提供执行代码,就能按照自己的规则来执行。在调试程序时,需要不断地修改自己的程序,然后生成新的代码,再把这些代码烧录到单片机中,然后测试,如此反复多次, 早期的EPROM需用紫外线擦写,E2P

17、ROM需采用+12V电压,现在的Flash可以电擦除,单片机的程序存储器分内部存储器和外部存储器两大部分,并由EA引脚控制。若系统上电时EA引脚为高电平,则自动执行内部程序,对于AT89S51而言,如果寻址程序空间超过了4KB,则自动转到片外程序存储器执行。若上电时EA引脚为低电平,则自动从外部程序开始执行。利用AT89S51单片机的这一特性,来实现简易的程序下载调试功能。在该系统中用一片6264来充当两个角色,在系统用内部程序存储器时,作为外部RAM使用,在系统使用外部程序存储器时,用来充当外部程序存储器。由于单片机对外部RAM和ROM控制时序的不同,因此需要设计一个RAM、ROM的选择电路

18、,可通过EA引脚来实现切换。3 硬件设计3.1 RAM、ROM选择电路图4RAM、ROM选择电路当SC_EA为高电平时,与门IC4A的输出状态由SC_CS6决定,实现对6264片选信号的控制;由于SC_EA为高电平,所以或门IC3A的输出为高电平,进而与门IC4B的输出由IC3C的输出控制;同时,反相器IC2C和IC2D的输出为低电平,则或门IC3B和IC3C的输出分别受SC_nRD和SC_nWR控制,从而实现了在EA为高电平时,6264的片选信号,读写信号分别由系统提供的SC_CS6、SC_nWR和SC_nRD控制,此时6264作为外部RAM使用。为系统提供了RAM空间。当SC_EA为低电平

19、时, 此时单片机采用外部程序存储器,IC4A的输出固定为低电平,则6264始终处于被选中状态,这是单片机访问外部ROM所必需的。IC2C和IC2D反相器的输出均为高电平,所以或门IC3B和IC3C的输出均为高电平,导致6264的WE引脚始终为高电平,终止对6264的写操作,可实现对内部数据的保护;与此同时,IC3A与门的输出只受SC_PSEN的控制,由于或门IC3C的输出为高电平,所以与门IC4B的输出就由SC_PSEN决定,实现了SC_PSEN对6264OE的控制,从而实现了对6264的读操作。3.2 LED驱动电路图5LED驱动电路系统中共有8路可控LED指示灯,用户可通过这些指示灯来演示

20、跑马灯、交通灯等功能,用来熟悉单片机的位控制以及端口操作功能。其中一路可控LED指示灯的驱动电路如上图所示。因AT89S51系列单片机的端口驱动能力不足以直接驱动LED指示灯,故采用晶体管驱动电路。由于单片机在上电复位时所有端口输出均为高电平,所以采用PNP型晶体管,以防止系统上电时指示灯闪烁。LED指示灯的控制过程如下:当单片机发出的控制信号SC-T0置为高电平时,PNP晶体管VT1截止,LED灯熄灭;当控制信号置为低电平时,VT4导通,LED灯亮。3.3 蜂鸣器驱动电路图6峰鸣器驱动电路蜂鸣器驱动电路是用来报警或播放音乐的,其电路如上图所示。当单片机控制信号SC-P12置为高电平时,PNP

21、晶体管VT8截止,蜂鸣器不发声;当控制信号置为低电平时VT8导通,蜂鸣器发声。单片机可根据现有乐谱或自编乐谱,通过程序来实现乐曲播放。音调与频率对照表见下表。具体实现方法如下:单片机只需在SC-P12端产生合适的频率信号,即可获得相应的音调。再通过控制频率信号的持续时间,即可得到不同的音节,最终形成乐曲并通过蜂鸣器播放出来。音调与频率对照表简谱名称1234567低音区频率131147165175196220247中音区频率262294330349392440492高音区频率5235796516957818689773.4 红外信号接收电路图7红外信号接收电路该电路可接收遥控器发射的红外信号。J

22、1为红外接收头,其中,第1脚为信号输出端,该脚输出的信号送至单片机中断端INT1进行处理;第2脚为地;第3脚为电源端。R54为上拉电阻,由R59和C22构成阻容滤波器,可滤除电源上的干扰信号。3.5 脉冲信号发生器电路图8脉冲信号发生器电路该电路为脉冲信号发生器电路,JP1为跳线器。分别将第1脚与第2脚、第2脚与第3脚连接时该电路可产生100Hz、10kHz两种固定频率,送到单片机的T0口,利用定时器的功能可实现频率测量。借助于该电路可学习单片机定时器的使用方法。可选取不同的R40、R44的阻值以及C7的电容值,来获得不同频率的脉冲信号。3.6 模拟I2C总线接口电路图9模拟I2C总线接口电路

23、单片机本身不具备I2C总线接口,但可通过口线来模拟I2C总线的时序,实现与I2C总线的通信。一种能够模拟I2C总线接口的电路如上图。该电路可对AT24C01进行操作。AT24C01属于带I2C总线接口的128字节的E2PROM存储器。利用单片机的P1.0、P1.1口线分别模拟串行时钟和串行数据,通过程序即可实现对E2PROM的读、写操作。3.7 动态扫描显示电路图10动态扫描显示电路对于动态扫描电路,一般将所有位的段选线的同名端联在一起,由一个8位I/O口控制,形成段选线的多位复用。而各位的公共阳极或公共阴极则分别由相应的I/O口线控制,实现各位形成段的分时选通,即同一时刻只有被选位是能显示相

24、应的字符,而其他所有位都是熄灭的。由于人眼有视觉暂留现象,只要每位显示间隔足够短,则会造成多位同时点亮的假象。这就需要单片微机不断地对显示进行控制,牺牲单片微机的CPU时间来换取元件的减少以及显示功耗的降低。该电路包括6只共阴极LED数码管,段驱动及位驱动电路。其中IC5(74HC573)为段驱动器,为数码管提供要显示的段码,由系统的地址译码信号SC-SC2和系统写信号SC-nWR控制。由于数码管需要较大的驱动电流,所以位驱动器的输出需经过晶体管,以增加驱动能力。动态扫描是靠人的视觉暂留特性而实现的。为了提高显示亮度,应适当增大驱动电流,此时限流电阻取100即可。3.8 矩阵键盘扫描电路图11

25、矩阵键盘扫描电路键盘可分为两类:独立式键盘和矩阵式键盘。(1) 独立式键盘这是最简单的键盘电路,各个键相互独立,每个按键独立地与一根数据线相连接,这种键盘的优点是结构简单、使用方便,但随着键数的增加所占用的I/O口线也增加。在使用键数不多的单片微机系统中,常使用这种独立式键盘。(2) 矩阵式键盘图11就是44的矩阵式键盘,它的工作过程:第一步,键扫描。CPU先通过输出口使所有列线输出为低电平,然后从输入口读入所有行线的状态,若行线状态都为高电平,则说明没有键被按下,若行线中有低电平,则表明有键被按下。第二步,判断按键位置。CPU通过输出口使列线从低位于高位逐位变低电平输出,每次均读入行线的状态

26、,以确定那条列线为“0”状态。由行、列线的状态就可判断是哪一个键被按下。第三步,当判断出哪个键压下后,程序转入相应的键处理程序。它的扫描方式主要有以下三种:程控扫描方式:CPU的控制一旦进入监控程序,将反复不断地扫描键盘,等待输入命令或数据。定时扫描方式:在初始化程序中对定时器/计数器进行编程,使之产生10ms的定时中断,CPU响应定时中断,执行中断服务程序,对键盘扫描一遍,检查键盘的状态,实现对键盘的定时扫描。中断扫描方式:当键位上有键压下时,由硬件电路产生中断请示,CPU响应中断,执行中断服务程序,判断压下的键的键号,根据键的定义(数字键或功能键)作相应的处理。矩阵键盘需要行扫描和列扫描信

27、号,该电路中列扫描信号就取自动态扫描显示电路中的位驱动信号,行扫描电路采用一片74HC244,由系统地址译码电路SC-CS5和系统读信号SC-nRD控制。3.9 RS-232串行口电路图12RS232串行口电路该电路可实现单片机串行口与计算机串行口电平的匹配。采用MAX232作为接口芯片。一片MAX232内部带两组电平转换电路,在使用时要注意串行口的发送端和接收端必须放到同一组,还有注意数据的传输方向。单片机的TXD端接计算机的RXD端,单片机的RXD端接计算机的TXD端,不得接反。图中的4只0.1F的电容,可采用无极性的,也可用有极生的电容;采用有极性的电容时需注意电容的接法,原则是电容正极

28、的电压一定要比负极的电压高。例如,电容C12如果带有极性,那么第15脚应接电容的正极,第6脚接电容的负极,因为GND端电平比U-端的电位高。3.10 LCD控制器接口电路图13LCD控制器接口电路该电路是针对本身带驱动模块的液晶屏而设计的,此类液晶屏一般带并行接口和一些控制信号,很容易实现对屏幕的控制。并行接口要求提供8位数据线,控制信号一般由读、写、片选及数据命令区分信号。图中RP1为多圈电位器,用来调节液晶屏的对比度。由晶体管VT16组成液晶屏的背光驱动控制电路。液晶屏驱动模块是由专用控制芯片构成的,内部带CPU。在系统上电时,外部需为液晶屏提供一个低电平的复位信号,该电路中复位信号是将系

29、统复位信号反相后得到的。3.11 微型打印控制接口电路图14微型打印控制接口电路该电路包括8位并行数据口。经过一片74HC245驱动后提供系统数据总线。由系统地址译码信号SC-CS3和系统写信号SC-nWR经过逻辑与之后提供数据锁存控制信号(STB)。打印机忙检测信号由SC-P14进行检测。SEL和ERR控制端由上拉电阻置为高电平。因为已经检测了BUSY信号,所以打印机应答信号ACK可不必检测。微型打印机对电源的要求较高。一般要求能够提供3A电流的电源,最好使用厂家提供的电源。3.12 USB接口电路图15USB接口电路随着USB接口的应用日益普及,一些新推出的计算机已经用USB接口取代了传统

30、的串行口和并行口。USB接口电路分为主设备、从设备两种,这两种电路在硬件构成和软件实现上都有很大的区别。这里提供的是从设备电路。USB接口从设备接口电路如图所示,该电路采用飞利浦公司生产的USB从设备接口芯片PDIUSBD12,该芯片是符合USB1.1协议的接口芯片。8位并行数据口由系统总线来提供,数据命令控制线A0由系统最低位地址线SC-A0提供,片选信号由系统地址信号SC-CS0提供,读、写信号分别由系统读、写信号控制。芯片的ALE端固定接低电平,USB挂起信号SUSPEND由系统的SC-P1控制,时钟输出端CLOCK-OUT接上拉电阻,中断输出引脚n-INT接系统的中断端INT0,由于采

31、用单片机作为主控制器,所以不能采用DMA控制方式,但DMA应答信号nDMA-ACK必须为固定的高电平,否则会影响系统总线。芯片采用内部自动复位,复位端nRESET接高电平,XTAL1、XTAL2分别为时钟输入、输出引脚,接外部石英晶体。为了降低外部晶振频率,减小高频干扰,PDIUSBD12采用内部倍频技术,所用外部晶振频率最高仅为6MHz。nGL能直接驱动LED发光管,作为系统的状态指示,PDIUSBD12还能提供一个稳定的+3.3V电源,从Uout3.3端输出。USB接口电路在硬件构成上不是很复杂,但是软件实现相对而言比较庞大。只要有了硬件平台,在参照USB1.1规范文档和PDIUSBD12

32、的数据手册,另外在具备计算机端USB设备驱动程序,用户就可以通过此电路让单片机通过USB接口与计算机进行通信了。关于软件实现部分这里不作说明,笔者把自己在调试USB接口电路时注意的事项总结如下:1、PDIUSBD12芯片的电源入口处一定要加0.1uF的退藕电容,否则芯片受电源干扰工作不稳定。2、与计算机USB接口连接的数据线一定要用完整的带屏蔽的数据线,否则在通讯时数据传输的误码率会非常高,导致电路无法正常工作。3、在调试软件时通过串行口把系统运行信息以及参数等发送到计算机的超级终端,这样可以保留数据,分析数据,且超级终端能够显示汉字,非常有利于跟踪调试。4、通过给PDIUSBD12发送0xF

33、D命令获取芯片特征字0x1210,通过获取的数据可以判断芯片或接口电路的连接是否正常。5、通过设置CLKOUT的输出频率,利用示波器来观察CLKOUT引脚输出的波形,看看是不是和设定的一致。6、测试VOUT3.3引脚的电压,如果此脚输出电压是3.3V则说明PDIUSBD12芯片没问题。4 软件设计4.1 程序流程图4.2 源程序关键功能代码下面介绍串行口下载程序的方法,包括串行口通讯模块和主程序。计算机端采用Windows系统自带的工具超级终端,利用其文件发送功能来实现,这样节省了计算机端软件的编写,且采用Windows自带软件,极大地方便了用户使用。用户通过Keil集成开发环境编写完单片机的

34、程序后,编译连接最终生成Hex十六进制文件,把此文件通过超级终端下载到单片机的外部RAM中,然后去执行就能够实现调试功能。所以单片机串行口下载软件的重点是如何解析计算机端传来的十六进制文件。现给出一段程序并给出程序所生成的代码的十六进制文件,并对此十六进制文件格式进行分析,并给出单片机C51语言实现接收文件并存储机器代码的方法。#include sbit Test_Bit = P11; void main( void ) unsigned char i; unsigned int Array20; unsigned int j; for(i = 0; i 100; i+ ) j = i * 3

35、; Test_Bit = !Test_Bit; for( j = 0; j 20; j+ ) Arrayj = j; 上述程序所生成的十六进制文件的内容如下::2000000002002DE4F9E975F003A4ACF0FDB29109B964F2E4FCFDED25E02408F8A60408A6A0:1A002000050DBD00010CED64144C70EA22787FE4F6D8FD75812F020003FFEE:00000001FF以上数据按照十六进制文件格式归纳见表7.3.2,其中除“:”以外,每2个相邻数据代表一个实际的十六进制数,在文件中分别以ASCII的形式存在,所

36、以要想得到原始的十六进制数据就需要把连续接收到的2个ASCII码数合并为一个十六进制数,然后再进行数据处理。表7.3.2 十六进制文件格式数据对照表起始位有效数据的数据长度该行数据的起始地址是否为最后一行的标志有效数据校验和:20H0000H00H020008A6A0H:1AH0020H00H050D03FFEEH:00H0000H 01H(代表文件结束)无FFH/*-*/*-串行口函数-*/#pragma SMALL ROM(SMALL)#include #include /*/char code RESET_STR = 0;char code BRIGHT_STR = 1;char cod

37、e DIM_STR = 2;char code UNDERLINE_STR = 3;char code BLINK_STR = 4;char code REVERSE_STR = 7;char code HIDDEN_STR = 8;char code FBLACK_STR = 30;char code FRED_STR = 31;char code FGREEN_STR = 32;char code FYELLOW_STR = 33;char code FBLUE_STR = 34;char code FMAGENTA_STR = 35;char code FCYAN_STR = 36;ch

38、ar code FWHITE_STR = 37;/*/char code BBLACK_STR =40;char code BRED_STR =41;char code BGREEN_STR=42;char code BYELLOW_STR=43;char code BBLUE_STR=44;char code BMAGENTA_STR =45;char code BCYAN_STR=46;char code BWHITE_STR=47;#define conS_BufMAXLen 10#define con_IDEL 0xFF#define con_Start 0x01#define con

39、_DataLen1 0x10#define con_DataLen2 0x11#define con_ProgAdd1 0x20#define con_ProgAdd2 0x21#define con_ProgAdd3 0x22#define con_ProgAdd4 0x23#define con_DataH 0x30#define con_DataL 0x31#define con_CheckH 0x40#define con_CheckL 0x41#define con_EndF 0x50#define con_EndFF 0x51#define con_TempH 0x60#defin

40、e con_TempL 0x61 #define System_IDEL 0xFF #define System_Down 0x00 #define System_SDown 0x01 #define System_Help 0x10 #define System_Test 0x20 #define System_Exit 0x30 #define System_Version 0x40 #define System_Up 0x50unsigned char Serial_ReceCounter; /*-数据接收过程中的数据个数计数器-*/unsigned char Serial_State;

41、unsigned char RAM_Data;unsigned char RAM_DataLen;unsigned char Rece_Counter;unsigned char xdata *Dst;unsigned char SumCheck;unsigned char Serial_Success;unsigned int Program_Length;union unsigned int i_Data; unsigned char b_Data2;u_int;extern unsigned char System_State;/*-串行口发送函数-*/void Serial_Tran(

42、unsigned char mode,unsigned char fcolor,unsigned char bcolor, unsigned char *Src ) char *pM,*pfC,*pbC; ES = 0; TI = 0;/*显示模式*/switch(mode)case RESET:pM = RESET_STR;break;case BRIGHT:pM = BRIGHT_STR;break;case DIM:pM = DIM_STR;break;case UNDERLINE:pM = UNDERLINE_STR;break;case BLINK:pM = BLINK_STR;br

43、eak;case REVERSE:pM = REVERSE_STR;break;case HIDDEN:pM = HIDDEN_STR;break; default: pM = REVERSE_STR; break;/*前景色*/switch(fcolor)case BLACK:pfC = FBLACK_STR;break;case RED:pfC = FRED_STR;break;case GREEN:pfC = FGREEN_STR;break;case YELLOW:pfC = FYELLOW_STR;break;case BLUE:pfC = FBLUE_STR;break;case

44、MAGENTA:pfC = FMAGENTA_STR;break;case CYAN:pfC = FCYAN_STR;break;case WHITE:pfC = FWHITE_STR;break; default: pfC = FWHITE_STR; break;/*背景色*/switch(bcolor)case BLACK:pbC = BBLACK_STR;break;case RED:pbC = BRED_STR;break;case GREEN:pbC = BGREEN_STR;break;case YELLOW:pbC = BYELLOW_STR;break;case BLUE:pbC = BBLUE_STR;break;case MAGENTA:pbC = BMAGENTA_STR;break;case CYAN:pbC = BCYAN_STR;break;case WHITE:pbC = BWHITE_STR;break; default: pbC = BBLACK_STR; break;/*控制同步*/SBUF = 0x1B; while(!TI) TI = 0;SBUF = ;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号