毕业设计课题——数字集成电路测试仪.doc_第1页
毕业设计课题——数字集成电路测试仪.doc_第2页
毕业设计课题——数字集成电路测试仪.doc_第3页
毕业设计课题——数字集成电路测试仪.doc_第4页
毕业设计课题——数字集成电路测试仪.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2011年绍兴文理学院校大学生电子设计竞赛数字集成电路测试仪参赛组别 小组成员 2011年6月5日 目录一、任务2二、方案设计与论证比较22.1显示模块22.2输入模块32.3电源模块32.4继电器模块3三、芯片检测的基本原理3四、系统的整体设计3五、系统功能测试及结果45.1测试方法45.2测试结果4六、设计过程总结与体会4参考文献5附件一 系统电路图:5附件二 实物照片:6附件三:7摘要:在当今社会中,电子技术发展迅速,数字集成电路的应用广泛,而74系列逻辑芯片在数字电路中又有着非常广泛的应用,因而数字电路设计中必须要求所用的数字电路芯片逻辑功能完整,但在数字电路芯片测试中又有很多不便,实际测试较繁琐。针对上述需要,我们针对常用的74系列逻辑芯片设计了一种数字电路芯片测试仪,用来检测常用74系列芯片的型号和逻辑功能的好坏,从而给数字电路的设计、制作带来方便。 关键词:74系列逻辑芯片 AT89C52 自动识别型号一、任务设计一套数字集成电路测试装置,能够实现对指定几种14脚常见的74系列数字电路测试。芯片有74LS00、74LS04、74LS20、74LS74、74LS86、74LS92。基本要求:1.设计数字集成电路测试仪器硬件:包含自制电源、MCU控制电路、键盘、显示器等。2.能够对指定的74系列门电路芯片进行功能测试(完好/损坏)。74LS00、74LS04、74LS20、74LS86。发挥部分:1.能够自动识别指定的几种74系列门电路的型号:74LS00、74LS04、74LS20、74LS86。2.能够自动识别指定的74系列触发器、计数器电路的型号。74LS86、74LS92。二、方案设计与论证比较2.1显示模块显示模块主要实现对芯片检测结果的显示,包括芯片型号及芯片功能是否完好,同时也要给用户提供必要的提示信息,提高系统界面的友好性。 2.1.1方案一 采用数码管显示由于所有芯片均为74系列,因而只显示最后两位编号即可实现对芯片型号的显示,但由于数码管显示效果较差并且动态扫描时会占用很多CPU时间,因而舍弃该方案。 2.1.2 方案二 采用点阵显示采用有二极管构成的1616点阵,通过主控单元的控制可以实现汉字及英文字符的显示,可以显示芯片型号以及芯片功能完整性,采用点阵显示的优点是显示内容可以随意控制,显示内容丰富。但点阵显示也存在占用I/O口较多并且会占用大量CPU时间的缺点,另外,在使用点阵显示是还要存储大量的字模信息,而由于本系统需要扫描大量的逻辑芯片,为节约成本又未扩展程序存储区,因而考虑到所用主控单元I/O口资源有限和对程序存储区容量的限制,舍弃该方案。 2.1.3 方案三采用1602模块显示1602液晶为字符型液晶,可以显示162共32个字符,不仅可以显示芯片型号及判断结果,并且还可以在程序运行过程中为用户提供必要的提示信息,提高了系统的交互性,并且1602液晶占用CPU时间较少,虽然显示能力较弱,仅能显示英文字符,但基本能满足设计的要求,因而本设计采用1602液晶作为显示输出设备。 2.2输入模块采用独立按键的优点是控制程序和硬件电路都很简单,缺点是如果每个按键都要占用一个I/O口,当按键较多时占用I/O口较多。但考虑到本次设计只需要三个按键:完好/损坏键、确认键、自动识别键。因此在实际的测试中分别对应P3.0P3.1P3.2通过按键查询就可以简单的起到控制输入的目的。2.3电源模块本设计电路模拟部分较少,电源主要用于驱动单片机、液晶以及待检测的74逻辑芯片,由于都是数字电路,对于电源的要求较低,故采用比较简单的基于LM7805芯片的电源,电源的输出为5V刚好满足电路各部分的供电要求。2.4继电器模块由于74LS92芯片的引脚中5脚为电源,10脚为地,而74LS00、74LS04、74LS20、74LS74、74LS86芯片的引脚都是14脚为电源,7脚为地。因此在实际的测试过程中,我们需要对电源实现正确的切换,设计思路是:默认芯片测试引脚中是14脚为电源,7脚为地,用户按下自动识别的按键后,程序依次扫描前五个,扫到一个后就退出扫描程序后返回扫描结果,如果没扫到单片机通过P3.6脚控制继电器实现换挡后,使芯片测试引脚中5脚为电源,10脚为地。再继续执行扫描任务确定这特殊的74LS86。由于是实现5V控制,我们选择ATQ209双刀开关。三、芯片检测的基本原理对于逻辑芯片的检测,我们主要实现检测芯片逻辑功能好坏亦或是确定芯片的型号,由于主控单元采用STC89c52单片机,其I/O与TTL电平完全兼容,因而直接由单片机对芯片插座的引脚进行扫描,由于是固定的14脚芯片,为了编程方便,使芯片测试引脚17分别为P1.0P1.6,引脚148分别为P2.0P2.6。实现了通过单片机输出端口模拟芯片的各种输入状态,并通过单片机读回芯片的输出结果,通过与芯片真值表的比较即可判断芯片逻辑功能的好坏的目的。在进行芯片扫描时,必须先将芯片的输出引脚I/O置为高电平,然后对芯片的输入引脚进行各种状态的扫描,通过单片机读回芯片的输出,再依据芯片的真值表对其输出进相比较,不一致则说明芯片的逻辑功能发生错误,断定芯片为坏的,若芯片的输出与真值表完全相符,则说明芯片的逻辑功能正确,可以判断为好芯片。 然后再依据所检测的结果,通过单片机对芯片的逻辑功能加以详细测试,并对结果加以显示。在自动识别的时候,为了提高准确度,我们编写了程序,采用对同一端口两次输入再两次读回其状态的比较方法,来对芯片好坏进行准确测试,继而返回正确的芯片型号。四、系统的整体设计系统流程图五、系统功能测试及结果5.1测试方法对每一种芯片我们设计了唯一的输入状态并读回P1P2口的数据与真值表比较,如果有查到一个表符合要求就记录返回值后显示。在测试的整个过程中,实现了对芯片完好/损坏功能的测试,用户按完好/损坏键并按确认键后可以看到测试显示结果为“OK,GOOD CHIP!”或者“SORRY,BAD CHIP!”。当然如果用户不知道芯片是何种型号,就可以按自动识别键自动识别上述74系列门电路的型号,T返回结果为“This is:74.”。用户操作的过程和显示的结果实时动态显示在液晶显示器中,以告知用户测试结果。5.2测试结果对于74LS00/04/20/86芯片进行实物测试,可以自动识别芯片型号及其好坏情况,测试结果满足要求。对74LS74/92芯片进行实物测试,可以自动识别其芯片型号。通过模拟芯片错误,均可完成正确测试。六、设计过程总结与体会通过这次电子设计竞赛,我们小组成员齐心协力,自己动手设计制作完成了一个数字集成电路测试仪。这期间我们虽然也遇到了不少的困惑,但通过老师的指导和自己的思考,这些问题一一得到解决,这次竞赛中学到了很多解决实际问题的方法,而且动手能力又得到了很大的提升。对于这个设计来说,我们总结了以下几点经验和教训。第一,电路板的总体布局十分重要。一个好的线路布局不仅会使电路板外观整齐,而且在之后的电路调试和线路错误检查中亦能有一个清晰的思路,可以提高工作效率;第二,C程序的调试工作在本次设计作品中非常重要。因为本次C代码较长,所以整个程序的前后统筹调试中要很细心,乃至一个很小的标量也要重视。在完成了该电子设计后,我们觉得这个设计还有可以改进和完善之处。比如,可以通过修改代码,使得在按下某按键后可以自动检测所有芯片的型号以及其好坏情况。而且,可以加入LED指示灯或者蜂鸣器,来更加直观地显示或提醒电路工作状况和芯片检测结果。参考文献1康华光.电子技术基础模拟部分(第五版).北京:高等教育出版社,20062阎石.数字电子技术基础(第三版). 北京:高等教育出版社,19893 宁武,唐晓宇,闫晓金.全国大学生电子设计竞赛基本技能指导,2009附件一 系统电路图:附件二 实物照片:附件三:/*-数字集成电路芯片测试仪C程序-清单-*/程序组:陈辰灿 王海 贺星辰/修改时间:2011.06.05-#include#include #include /这是头文件必须包含/*=宏定义=*/#define LCD_data P0/数据口#define M 4/要测试的芯片好坏的个数#define N 8#define input1 P1/用于检测的引脚#define input2 P2/*=液晶宏定义、初始化引脚=*/void delay(unsigned int z);*延时函数*/void charfill(unsigned char c); /整屏显示A代表的ASCII字符子程序void putstrxy(unsigned char cx,unsigned char cy,unsigned char code *s);/在(cx,cy)字符位置写字符串子程序void putstr(unsigned char code *s); /定位写字符串子程序void putchars(unsigned char c); /在(CXPOS,CYPOS)字符位置写字符子程序unsigned char getchars(void); /CXPOS,CYPOS)字符位置读字符子程序void charlcdpos(void); /设置(CXPOS,CYPOS)字符位置的DDRAM地址void charcursornext(void); /置字符位置为下一个有效位置子程序void lcdreset(void); /SMC1602系列液晶显示控制器初始化子程序void delay3ms(void); /延时3MS子程序void lcdwc(unsigned char c); /送控制字到液晶显示控制器子程序void lcdwd(unsigned char d); /送控制字到液晶显示控制器子程序unsigned char lcdrd(void); /读数据子程序void lcdwaitidle(void); /忙检测子程序unsigned char data CXPOS; /列方向地址指针(用于CHARLCDPOS子程序)unsigned char data CYPOS; /行方向地址指针(用于CHARLCDPOS子程序)sbit RSPIN = P35; /RS对应单片机引脚sbit RWPIN = P34; /RW对应单片机引脚sbit EPIN = P33; /E对应单片机引脚/*=宏定义=*/unsigned char detect(); /自动检测引脚/*=定义按键=*/sbit key1=P30; / 选择检测芯片sbit key2=P31; / 确定选择的芯片sbit key3=P32; / 自动检测sbit key4=P36; / 继电器的切换unsigned char *name=7400,7404,7420,7486,7474,7492,ERROR;/*=按键的标志位=*/unsigned char flag=0;/要选择的芯片型号在已定义字符数组中的序号unsigned char flag1=0;unsigned char flag2=0;/用来标示某芯片各通道检测均完好的标志位unsigned char k=0; /返回自动检测后芯片序号在已定义的数组中的序号unsigned char code LS0044= 0x3f,0x3f,0x1b,0x1b,/74ls00 0x24,0x24,0x24,0x24, 0x36,0x36,0x36,0x36, 0x2d,0x2d,0x2d,0x2d, ;unsigned char code LS0424= 0x2a,0x2a,0x2a,0x2a,/74ls04 0x3f,0x3f,0x15,0x15, ;unsigned char code LS20164= 0x24,0x24,0x24,0x24,/74ls20 0x25,0x25,0x25,0x25, 0x26,0x26,0x26,0x26, 0x27,0x27,0x27,0x27, 0x2c,0x2c,0x2c,0x2c, 0x2d,0x2d,0x2d,0x2d, 0x2e,0x2e,0x2e,0x2e, 0x2f,0x2f,0x2f,0x2f, 0x34,0x34,0x34,0x34, 0x35,0x35,0x35,0x35, 0x36,0x36,0x36,0x36, 0x37,0x37,0x37,0x37, 0x3c,0x3c,0x3c,0x3c, 0x3d,0x3d,0x3d,0x3d, 0x3e,0x3e,0x3e,0x3e, 0x3f,0x3f,0x1f,0x1f, ;unsigned char code LS8644= 0x24,0x24,0x00,0x00,/74ls86 0x36,0x36,0x36,0x36, 0x2d,0x2d,0x2d,0x2d, 0x3f,0x3f,0x1b,0x1b, ;unsigned char code ICMN= 0x24,0x24,0x24,0x24,0x3f,0x3f,0x1b,0x1b, /74000x3f,0x3f,0x15,0x15,0x3f,0x3f,0x15,0x15, /7404 0x3f,0x3f,0x1f,0x1f,0x3f,0x3f,0x1f,0x1f, /7420 0x3f,0x3f,0x1b,0x1b,0x3f,0x3f,0x1b,0x1b, /7486 ;void main() unsigned char i,output1,output2; lcdreset(); /液晶显示控制器初始化 putstrxy(0,0,PLEASE CHOOSE 74LS CHIP); /显示欢迎界面 while(1) if(key1=0) delay(100); if(key1=0) if(flag=4) flag=0; flag+; switch(flag) case 1:charfill( ); putstrxy(0,0,NOW 7400);break; case 2:charfill( ); putstrxy(0,0,NOW 7404);break; case 3:charfill( ); putstrxy(0,0,NOW 7420);break; case 4:charfill( ); putstrxy(0,0,NOW 7486); if(flag=1&key2=0) for(i=0;i4;i+) input1=LS00i0; input2=LS00i1; delay(5); output1=input1&0x3f; output2=input2&0x3f; if(output1!=LS00i2|output2!=LS00i3) putstrxy(0,1,SORRY,BAD CHIP!); flag2=0; break; if(output1=LS00i2&output2=LS00i3) flag2+; if(flag2=4) putstrxy(0,1,OK,GOOD CHIP!); flag2=0; if(flag=2&key2=0) for(i=0;i2;i+) input1=LS04i0; input2=LS04i1; delay(5); output1=input1&0x3f; output2=input2&0x3f; if(output1!=LS04i2|output2!=LS04i3) putstrxy(0,1,SORRY,BAD CHIP!); flag2=0; break; if(output1=LS04i2&output2=LS04i3) flag2+; if(flag2=2) putstrxy(0,1,OK,GOOD CHIP!); flag2=0; if(flag=3&key2=0) for(i=0;i16;i+) input1=LS20i0; input2=LS20i1; delay(5); output1=input1&0x3f; output2=input2&0x3f; if(output1!=LS20i2|output2!=LS20i3) putstrxy(0,1,SORRY,BAD CHIP!); flag2=0; break; if(output1=LS20i2&output2=LS20i3) flag2+; if(flag2=16) putstrxy(0,1,OK,GOOD CHIP!); flag2=0; if(flag=4&key2=0) for(i=0;i0;x-)for(y=110;y0;y-);/*=14脚芯片识别函数=*/unsigned char detect() /14脚芯片识别函数 unsigned char i,output1,output2;/7474的检测 P1=0xff; /初始化测试端口 P2=0xff; input1=0x3b; input2=0x39; delay(5); input1=0x3f; /上升沿 input2=0x3d; delay(5); output1=input1&0x3f; output2=input2&0x3f; if(output1=0x1f&output2=0x2d) return (4); /7400/04/20/86的自动检测 P1=0xff; /初始化测试端口 P2=0xff; for(i=0;i15) /字符位置CXPOS15表示要换行 CXPOS=0; /置列位置为最左边 CYPOS+; /行位置加1 CYPOS&=0X1; /字符位置CYPOS的有效范围为(0到1) /-/子程序名称:void lcdreset(void)./功能:液晶显示控制器初始化./-void lcdreset(void) /SMC1602系列液晶显示控制器初始化子程序 /1602的显示模式字为0x38 lcdwc(0x38); /显示模式设置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论