单片机总结报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机总结报告

——IC卡小组成员:刘绍凯06291043

刘永欢06291044

刘中芳06291045

一、实验设备

………..

二、实验原理

如硬件连接图所示,

本系统可分为如下几个模块:

单片机80C196模块(复位、晶振电路,电源电路)显示模块键位模块IC

卡(24C01)模块

80C196单片机的外围电路:复位P22

80196内部的振荡电路是一个单级非门电路,它与石英晶体配合时,可以组成一

个振荡器,构成单片机所需要的时钟。

显示见预习键位见预习IC卡见预习及资料

三、设计框图

四、程序

五、调试过程

虽然最后还是做出来了,但做的过程还是挺复杂的。

(1)将wave6000仿真软件复位后有如下没注意到的语法错

误.:

1.AX EQU 20H

错误提示:“行:1,错误334:重复定义:

AX

错误原因是AX寄存器在仿真软件里的设置汇编预定义符号里已经定义过了。

解决办法一是去掉相对应的伟福预定义寄存器,二是将源程序里的寄存器定义去

掉。

2.LDB AX,OEH

错误原因将寄存器地址单元0E写成了OEH,应将大写字母O改为0

(2)分步调试单步执行,断点

3.首先检查程序运行后4个显示数码管是否都有显示,再看

其显示是否合乎要求。

按地址键时,发现低两位数据每次在加1,说明控制四个字位的寄存器的顺序不对,控制数码管从高到低依次应是HSO.0~HSO.3;

4.源程序运行后,发现数码管的高两位数据一直在加1。

错误原因:当任意一个按键按下去后,给P0口送的是低电平,而我

们编的程序恰恰相反,应该是让P0.0~P0.3检测到低电平时跳转到相应的子程序。

5.每按下一次地址键或数据键时,有时要跳好几个数,不能连续地变化。

源程序如下:DATA: LCALL DL1

JBS 0EH,0,SCAN

DL1: LDB 25H,#80

H1: NOP

NOP

H2: LDB AX,#200

NOP

NOP

DJNZ AX,H2

DJNZ 25H,H1

RET

错误原因是设置按键的延时时间不够长,而且当一次长时间按时,会出现数据一直往前跳的情况。要消除此种现象,我们运用了如下的程序:DAT: LCALL DL1

JBC 0EH,0,DAT

6.当按下数据键后,显示的数据会往下加,但当按下写键后,数据又变为写之前的数据。说明WR子程序,改变了DATABUF里面的数据。经过我们的仔细检查后发现在写子程序里有如下两句语句:LCALL READ

LD DATABUF,READDATA

它们的作用是将IC卡当前地址中的数据读到数码管中,但此时更改后的数据还没被写入到IC卡中。应该将它们去掉或放在调用写子程序的后面。

6.每次读出来的数据都是FF。而且将更改后的数据写入当前的地址时,当程序复位后再找到该地址时,没有显示之前写入的数据,而仍然是FF。说明无法对IC卡进行读/写操作。此时我们耐心地从每个与读和写有关的子程序查起,发现数据子程序,地址子程序,写子程序,还有发送起始信号,结束信号,SDA及SCK信号均无异常。

此时我们想到了先单步执行,然后到写和读子程序时跟踪执行,注意到了当前更改后的数据确实是存到了DATABUF,而当前的数据

却没有进入到READDATA,说明数据没能够进入到IC卡中,也没

有从IC卡中读出来。而读时序和写时序我们也都检查了几遍了,也

都符合24C01的规定。此时,我们只有找到指导老师,老师帮我

们看了一下程序后,发现也没什么地方有问题,就觉得应该是IC卡

有问题。所以给我们换了一张卡,然后我们试了一下,发现果然能对IC卡进行读写了,而且每次读出来的数据都是随机的。

到此,已能对IC进行正常地读/写了,调试完毕了!

六、设计心得

俗话说“好的开始是成功的一半”。我认为最重要的就是做好设

计的预习,我们首先搜索到了IC卡的相关资料,弄清楚了单片机对

该IC卡进行读和写的工作过程。明白了读写器件寻址地址、起始信

号和结束信号在读和写的过程中所发挥的作用。然后通过编写程序,知道了硬件的接口是如何进行连接的,进而使我加深了对整个系统工

作原理的理解。

其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明

白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去调试,到头来所做的工作都是白费。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。

另外,我也学到了一些调试程序的小技巧。比如,如何设置断点进行调试程序。还有在“单步运行”、“跟踪执行”时观察单片机内各寄存器内容和状态用以检验目标程序是否正确、以及硬件系统的连线及功能是否正确。

软件的编程要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求工作起来。

当然,这其中也有很多问题,第一、不够细心比如对课本理论的不熟悉导致编程出现错误。第二,是在学习态度上,这次课设是对我的学习态度的一次检验。对于这次单片机课程设计,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,是知识学得比较死,不会灵活地运用,不会举一反三。第四,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。

实践证明,通过该课程设计,不仅提高了学生学习的兴趣,加深了对专业知识的理解,开阔了视野,也为以后毕业设计打下良好的基础。单片机课程设计这一实践教学环节的有效开展,有助于学生有效地掌握所学知识,缩短从理论知识到实际应用的过程,很好地培养了我们对专业的兴趣,增强了学生的创新意识,提高了学生的动手能

相关文档
最新文档