在单片机开发过程中,从硬件设计到软件设计几乎是开发者针对本系统特点亲自完成的。这样虽然可以降低系统成本,提高系统的适应性,但是每个系统的调试占去了总开发时间的2/3,可见调试的工作量比较大。单片机系统的硬件调试和软件调试是不能分开的,许多硬件错误是在软件调试中被发现和纠正的。但通常是先排除明显的硬件故障以后,再和软件结合起来调试以进一步排除故障。可见硬件的调试是基础,如果硬件调试不通过,软件设计则是无从做起。本文结合作者在单片机开发过程中体会,讨论硬件调试的技巧。
当硬件设计从布线到焊接安装完成之后,就开始进入硬件调试阶段,调试大体分为以下几步。
1 硬件静态的调试
1.1排除逻辑故障
这类故障往往由于设计和加工制板过程中工艺性错误所造成的。主要包括错线、开路、短路。排除的方法是首先将加工的印制板认真对照原理图,看两者是否一致。应特别注意电源系统检查,以防止电源短路和极性错误,并重点检查系统总线(地址总线、数据总线和控制总线)是否存在相互之间短路或与其它信号线路短路。必要时利用数字万用表的短路测试功能,可以缩短排错时间。
1.2排除元器件失效
造成这类错误的原因有两个:一个是元器件买来时就已坏了;另一个是由于安装错误,造成器件烧坏。可以采取检查元器件与设计要求的型号、规格和安装是否一致。在保证安装无误后,用替换方法排除错误。
1.3排除电源故障
在通电前,一定要检查电源电压的幅值和极性,否则很容易造成集成块损坏。加电后检查各插件上引脚的电位,一般先检查VCC与GND之间电位,若在5V~4.8V之间属正常。若有高压,联机仿真器调试时,将会损坏仿真器等,有时会使应用系统中的集成块发热损坏。
2 联机仿真调试
联机仿真必须借助仿真开发装置、示波器、万用表等工具。这些工具是单片机开发的最基本工具。
信号线是联络8031和外部器件的纽带,如果信号线连结错误或时序不对,那么都会造成对外围电路读写错误。51系列单片机的信号线大体分为读、写信号线、片选信号线、时钟信号线、外部程序存贮器读选通信号(PSEN)、地址锁存信号(ALE)、复位信号等几大类。这些信号大多属于脉冲信号,对于脉冲信号借助示波器(这里指通用示波器)用常规方法很难观测到,必须采取一定措施才能观测到。应该利用软件编程的方法来实现。例如对片选信号,运行下面的小程序就可以检测出译码片选信号是否正常。
MAIN:MOVDPTR,#DPTR
;将地址送入DPTR
MOVXA,@DPTR
;将译码地址外RAM中的内容送入ACC
NOP;适当延时
SJMPMAIN;循环
执行程序后,就可以利用示波器观察芯片的片选信号引出脚(用示波器扫描时间为1μs/每格档),这时应看到周期为数微秒的负脉冲波形,若看不到则说明译码信号有错误。
对于电平类信号,观测起来就比较容易。例如对复位信号观测就可以直接利用示波器,当按下复位键时,可以看到8031的复位引脚将变为高电平;一旦松开,电平将变低。
总而言之,对于脉冲触发类的信号我们要用软件来配合,并要把程序编为死循环,再利用示波器观察;对于电平类触发信号,可以直接用示波器观察。
下面结合在自动配料控制系统中键盘、显示部分的调试过程来加以说明。本系统中的键盘、显示部分都是由并行口芯片8155扩展而成的。8155属于可编程器件,因而很难划分硬件和软件,往往在调试中即使电路安装正确没有一定的指令去指挥它工作,也是无法发现硬件的故障。因此要使用一些简单的调试程序来确定硬件的组装是否正确、功能是否完整。在本系统中采取了先对显示器调试,再对键盘调试。
(1)显示器部分调试为了使调试顺利进行,首先将8155与LED显示分离,这样就可以用静态方法先测试LED显示,分别用规定的电平加至控制数码管段和位显示的引脚,看数码管显示是否与理论上一致。不一致,一般为LED显示器接触不良所致,必须找出故障,排除后再检测8155电路工作是否正常。对8155应进行编程调试时,分为两个步骤:第一,对其进行初始化(即写入命令控制字,最好定义为输出方式)后,分别向PA、PB、PC三个口送入#0FFH,这时可以利用万用表测试各口的位电压为3.8 V左右,若送入#00H,这时各口的位电压应为0.03 V;第二,将8155与LED结合起来,借助开发机,通过编制程序(最好采用“8”字循环程序)进行调试。若调试通过后,就可以编制应用程序了。
(2)键盘调试一般显示器调试通过后,键盘调试就比较简单,完全可以借助于显示器,利用程序进行调试。利用开发装置对程序进行设置断点,通过断点可以检查程序在断点前后的键值变化,这样可知键盘工作是否正常。
以上讨论了借助简单工具对单片机硬件调试的方法,这些方法如果利用得好,就
可以大大缩短单片机的开发周期。
关键字:单片机 开发过程 硬件调试
编辑:神话 引用地址:单片机开发过程中硬件调试技巧
推荐阅读最新更新时间:2023-10-12 20:48
基于AT89S51单片机控制的八路LED显示设计
一、单片机的内部结构
AT89S51单片机兼容标准8051的指令系统及引脚。下面以AT89S51单片机为例,简要介绍51系列单片机的内部结构。
通常,单片机片内含CPU、ROM、RAM、并行I/O口、定时器/计数器、中断控制系统、时钟电路、系统总线等。
1.中央处理器(CPU)
中央处理器是AT89S51单片机的核心,完成运算和控制功能。其CPU能处理8位二进制数或代码。
2.程序存储器
程序存储器用于存放用户编写的程序、原始数据或表格,分为片内程序存储器和片外程序存储器。
AT89S51采用片内、片外统一编址的64kB(0000H~FFFFH)程序存储器地址空间。片内有4kB Flash
[单片机]
关于51单片机EEPROM的使用
STC51单片机有类似flash的功能EEPROM,可以掉电保存数据,不同型号的可以保存不同大小的数据,以12C5A60S2为例,EEPROM的大小为2K,分为两个扇区,掉电保存在很多地方需要,笔者这次和大家讨论一下STC51单片机EEPROM的使用方法。 首先寄存器的问题,不同系列的STC单片机的与EEPROM有关的寄存器不同,比如10/11/12系列的sfr ISP_DATA = 0xC2;sfr ISP_ADDRH = 0xC3;sfr ISP_ADDRL = 0xC4;sfr ISP_CMD = 0xC5;sfr ISP_TRIG = 0xC6;sfr ISP_CONTR = 0xC7;89/90系列的sfr I
[单片机]
芯旺微ChipON 32位MCU被应用于医疗电子设备
在本次全民抗疫大战中,相信大家都感受到了科技的力量。凭借科学仪器的高效、精准的检测,快速识别患者并做出及时有效的隔离,最大限度阻止新冠病毒传播。 新冠状病毒具有很多种临床表现,额温枪可以筛查出具备发热症状的感染者,但是还有少部分的轻度感染患者,并无发烧症状,如何发现并隔离此部分群体成了抗疫战中不可忽视的短板问题。而另一方面,面对已经确诊的患者,如何提高治愈率也成了当下大家关注的焦点问题。 芯旺微电子做为深耕MCU领域十余年的知名芯片厂商,一直专注基于自主KungFu处理器架构的高可靠、高品质MCU器件的研发设计。心系国家安危和人民健康,结合自身技术优势助力当下抗疫战,将KungFu 32位系列芯片应用于医疗电子设备领域,助攻抗
[半导体设计/制造]
单片机红外感应的温控转速型风扇设计
单片机源程序如下: #include reg52.h sbit IN1=P2^7; sbit IN2=P2^6; sbit ENA=P2^5; bit flag1s=0;//1s定时标志 unsigned char T0RH=0; unsigned char T0RL=0; int temp;//读取到的当前温度值 unsigned char len; int intT,decT;//温度值的整数和小数部分 unsigned char str ; void Compare(); void GetTemp(); void ConfigTimer0(unsigned int ms); unsigned char In
[单片机]
单片机STC5A60S2完成音频采集与输出
.c文件(主程序): /*-------------------------------------------------------------------*/ //一般说明 //使用的单片机为STC5A60S2,外接晶振32.768M //采用受用单片机自带的AD,单片机自带的PWM做DA输出使用 //两个按键一个控制录音,一个控制输出,上电默认状态为实时输出 //外接RAM采用62256 /*-------------------------------------------------------------------*/ #include reg51.h #include intrins.h #include AD.
[单片机]
TI - MCU - MSP430使用指南13 -> Timer定时器模块
定时器,作为MCU最重要也是最基本的功能集成在每一个MCU中。随着MCU功能的日渐强大,定时器的功能也越来越强大,因此配置和使用起来也就比较麻烦,下面我们针对MSP430的Timer模块进行详细讲解,配合多种可以直接使用的例程,方便用户直接移植和深入理解。 首先,普及一下定时器知识:本质上就是一个计数器,可以由用户自定义计数的值,同时到达计数值后可以执行相应的动作,因此可以时间周期性动作,采集捕捉动作等,用于实时控制及多种功能实现。 MSP430 MCU中有三种定时器:Timer_A Timer_B Timer_D. 首先 Timer_D定时器基本没有集成在MCU中,很少很少使用,是一个高分辨率的定时器,因此我们不
[单片机]
基于AT89C51单片机的数码管循环点亮0到9(Keil+Proteus+C语言)
要求描述: 选用AT89C51单片机,绿色7段共阴极数码管,使用C语言实现 仿真图 代码 #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE = { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f }; void DelayMS(uint x) { uchar t; while(x--) for(t=120;t 0;t--); } void main() { u
[单片机]
用CPLD实现单片机与ISA总线接口的并行通信
摘要:介绍了用ALTERA公司MAX7000系列CPLD芯片实现单片机与PC104ISA总线接口之间的关行通信。给出了系统设计方法及程序源代码。
关键词:CPLD ISA总线 并行通信
CPLD(Complex Programmable Logic Device)是一种复杂的用户可编程逻辑器件,由于采用连续连接结构,易于预测延时,从而使电路仿真更加准确。CPLD是标准的大规模集成电路产品,可用于各种数字逻辑系统的设计。近年来,由于采用先进的集成工艺和大指量生产,CPLD器件成本不断下降,集成密度、速度和性能大幅度提高,一个芯片就可以实现一个复杂的数字电路系统;再加上使用方便的开发工具,使用CPLD器件可以极大地缩短产品开发周期
[网络通信]