单片机原理与接口技术课程设计论文内容摘要:

SW5 左循环 花样循环 累加模式 H3切换 计时器 L2切换 信息介绍 结束语 留下备用 结束 9 第 5章 调试及故障分析 焊接准备阶段元器件测试、电路原理图故障分析 焊接电路钱应该先对各器件识别、测试,包括二极管,色环电阻,电容,按键开关,自锁开关,排阻,芯片等。 然后按照所给的电路图正确焊接。 元器件的识别与测试方法不止一种。 例如,发光二极管可以直接识别引脚的长短来判断正负,长引脚的为正极,也可利用万用表合适的欧姆档接在二极管两端,看是否会亮; 此实验平台的电容分电解电容、陶瓷电容两种,电解电容不分正负极,电解电容长引脚的为正极,电容上的标识表示电容的大小;色环电阻一般比较难识别,可以直接用万用表测量其阻值;按键开关分并行的两路导通与断开的,焊接时应注意所需要的状态,自锁开关也分为并行的两排,共有六个引脚,焊接前应先测量,以免出错。 电路原理图故障分析:图中 38 译码器的接法出现矛盾, E1 端为使能端,反而接在 GND,低电平不能使 38 译码器工作,经过仿真电路测试,将 E1 端接在 引脚,作为 38 译码器的使能控制端;原理图中译码器的引脚位置与实际 电路也存在出入,但不存在逻辑错误,实际焊接电路的时候需要特别注意。 电路焊接过程中的故障分析 首先对电路板中可能存在虚焊的地方用万用表一一检查,并对焊接不牢固的焊点进行修补。 上电前用万用表测得单片机的 GND 与 VCC 是导通的,通过老师讲解才知道电路板在设计的时候存在缺陷, USB 接口与电源插口的连线需要断开。 上电下载程序时 MAX 芯片存在问题,更换一个 MAX232 芯片下载程序正常。 测试时一个数码管有一段接触不良,通过修补数码管的排母得到解决。 一般在不知问题出在何处的情况下利用万用表从最可能存在问题的地方 开始用进行逐步排查,找出电路中错误的地方,然后进行修改。 一般根据二极管单向导通、电容通交流阻直流的特性等,帮助检查电路的错误。 程序编写过程中的故障分析 编程调试过程中使用中断作为计数器的触发条件,但是实际电路中按键触发中断时会发生抖动,造成计数不准确,后改成开关作为触发条件,并在程序中进行消除抖动的操作,计数器的功能完整实现。 由于对模块化编程的熟悉程度还不够,刚开始使用模块化方法编写程序时常忘记添加进工作组,软件编译过程中也很难查找到错误。 不过警告可以很好的提示程序编译过程中的问题。 模块化编程使 程序更清晰明了,程序编写还应该注意一个问题,很好的程序应该具备明确的注释及说明文档。 10 实物演示效果 图 10 实物演示效果 11 结论 本文研究了基于 AT89C52 单片机的实验平台的设计原理与实现方法,包括硬件与软件设计。 实现了单片机的基本功能的仿真、实际电路中的调试功能。 对单片机原理及应用中定时器、中断、 LED、 LCD、按键、数码管等原理有了系统的了解,并能很好地在实际电路中实现程序的控制。 本次单片机课程设计,学到了单片机实际应用的许多东西,即使在实验过 程中遇到了很多问题,但最终都在队友的相互配合下得以解决,解决问题的过程中不仅学到了很多书本上难以理解的问题,也明白一个道理:团队的力量大于个人能力。 实习中队友无比激情地去面对每个需要解决的问题,每一个焊点都会认真对待,经过深思熟虑、团队讨论之后得出最好的解决方案,完成焊接测试的任务。 课程知识与实际实践的结合,使自己对单片机的实际应用有了更深刻的理解。 软硬件结合,灵活运用所学知识解决实际问题。 通过这次课程设计,提高了自己的课题分析能力,编程能力,和解决实际综合问题的能力。 12 谢辞 本论文 的完成需特别感谢老师的精 心指导。 在本课题的 设计 过程中,通过老师耐心的指导和 队友 李晓颖 、 刘书全 的通力合作 ,受到很多的启发 , 并学到许多单片机的理论实践 知识。 同时联系到大学 两 年所学的相关专业知识,加深了对 单片机系统 的认识。 在 老师的谆谆教导 下 ,掌握了 许多相关 专业知识,从而有机会有可能完成这 个设计,从而学到很多有关单片机的实践知识,除对于书本上理论知识的巩固与加深外,对于自己的动手能力也有很大的提高。 在此 也衷心的感谢身边的同学和朋友给我的关心和 指导。 13 参考文献 [1] 李蒙 毛建东编 单片机原理及应用 [M]. 北京:中国轻工业出版社 , 2020 [2] 林立 张俊亮编 单片机原理及应用:基于 Proteus 和 Keil C[M]. 北京:电子工业出版 社 , [3] 丁明亮,唐前辉。 51 单片机应用设计与仿真 [M]. 北京:北京航空航天大学出版社 ,2020 [4] 徐爱钧,彭秀华。 单片机高级语言编程与应用实践 [M]. 北京:电子工业出版社 ,2020. [5] 李学礼。 基于 Proteus 的 8051 单片机实例教程 [M]. 北京:电子工业出版社 ,2020. [6] 郭天祥 编 新概念 51 单片机 C 语言教程:入门、提高、开发、扩展全攻略 [M]. 北京: 电子工业出版 , 14 附 录 1 单片机 源程序 主函数 include // 延时的 头 文件 include // 液晶的头文件 include // LED灯的头文件 include // 数码管的头文件 include // 开关选择的头文件 include // 选择流水灯模式的头文件 include include include /******************************************************************** * function : sbit * explain : 位及 变量的定义 * add : ********************************************************************/ sbit Key1 = P3^2。 // Key1 sbit Key3 = P3^4。 // Key3 sbit Key4 = P3^5。 // Key4 sbit LS138_EN = P1^5。 // 74LS138 uchar count = 0。 uchar mod[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}。 //共阴极数码管字模 void count_sys() { LS138_EN = 1。 // 74LS138 G 引脚低电平有效 EN_Y0()。 P0 = mod[count%10]。 delay_1ms(10)。 EN_Y1()。 P0 = mod[count/10]。 delay_1ms(10)。 } /******************************************************************** * function : main * explain : 开机显示 wele to use 随后提示开关控制 * add : ********************************************************************/ void main(void) { int mode_switch。 15 char flag = 0。 IT0 = 1。 IE = 0x81。 P0 = 0x00。 wele()。 // 欢迎使用 delay_1ms(1500)。 point()。 // 提示信息 while( flag == 0 ) { // Key4 while( Key4 == 0 ) { delay_1ms(10)。 if( Key4 == 0 ) { flag = 1。 } } count_sys()。 // 计数器 while( Key1 == 0 ) { delay_1ms(10)。 if( Key1 == 0 ) { count++。 // 计数值 if( count ==100 ) { count = 0。 } } while( Key1 == 0 )。 } } while( flag == 1 ) { mode_switch = Key_mode()。 switch(mode_switch) { case 1: LED1_switch()。 // Key1 流水灯模式 16 break。 case 2: LED2_switch()。 // 数码管模式 break。 case 3: // 液晶模式 LCD_switch()。 break。 } } } 延时函数 include /******************************************************************** * function : delay_1ms * explain : 实现 time ms 延时 * add : ********************************************************************/ void delay_1ms( uint time ) { uchar i。 while( time ) for(i=0。 i120。 i++)。 } void delay_us(uint y) //微秒级延时 { for (。 y 0。 y)。 } 开关选择函数 include include include /******************************************************************** * function : sbit * explain : 开关位定义 * add : ********************************************************************/ sbit Key1 = P3^2。 // Key1 LED 的各种循环显示 sbit Key2 = P3^3。 // Key2 sbit Key3 = P3^4。 // Key3 sbit Key4 = P3^5。 // Key4 /******************************************************************** * function : Key_mode 17 * explain : 开机 /复位选择工作模式 * add : ********************************************************************/ int Key_mode(void) { int mode。 // Key1 if( Key1 == 0 ) { delay_1ms(10)。 if( Key1 == 0 ) {。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。