当前位置:360文档网>专题范文 > 公文范文 > 单片机应用调研报告【优秀范文】

单片机应用调研报告【优秀范文】

发布时间: 2025-05-09 23:50:01 来源:网友投稿

下面是小编为大家整理的单片机应用调研报告【优秀范文】,供大家参考。希望对大家写作有帮助!

单片机应用调研报告【优秀范文】

单片机应用调研报告6篇

【篇1】单片机应用调研报告

南昌大学实验报告

学生姓名:
学号:
专业班级:

实验类型:⃞ 验证 ⃞ 综合 ⃞设计 ⃞ 创新 实验日期:2019.4.9 实验成绩:

实验一 单片机软件实验

(一)实验目的

1.掌握51单片机keil软件集成开发环境,能够使用汇编语言编写应用程序。

2.掌握使用集成开发环境Keil进行单片机程序开发的方法

3.掌握使用集成开发环境Keil进行单片机程序跟踪调试的方法。

(二)设计要求

熟悉51单片机的keil软件集成开发环境,使用汇编语言编写“1+2+3+…+100”的程序。

(三)实验原理

KeilC51软件使用:在KeilC51集成开发环境下,建立一个工程并编辑源程序,熟悉Keil C51集成开发环境下各种菜单、命令的使用。

(四)实验设备

PC机,Keil C51集成开发环境。

(五)实验结果

对汇编程序进行编译、链接、调试,在Keil C51软件中运行仿真结果如下图所示,由于“1+2+……100”运行结果超过8位二进制所能表示的范围,计算结果将存放于两个8位工作寄存器单元R2、R3中。其中,低八位存放于R2中,高八位存放于R3中,R4中存放计算数。下图中的寄存器窗口中可以显示计算结果为0x13ba。

调出存储器窗口Memory:选择菜单命令View → Memory Window → Memory 1:

可见计算结果存放于当前工作寄存器R2(02H)与R3(03H)中,为0x13BA。

(六)结果讨论与心得体会

第一次使用Keil C51软件,初步了解了软件:Keil uVision4的使用方法,初步了解了Keil软件中程序的编辑,新工程的建立运行,初步对单片机实验进行了解,加强了实验动手操作能力。第一次尝试单步调试,能观察到内存中每一个单元的变化,感到单片机系统复杂中的严谨,收获颇丰。

(七)附录:实验源代码

实验源代码如下:

ORG 0000H

LJMP MAIN

ORG 0050H

MAIN:

MOV R2,#00H

MOV R3,#00H

MOV R4,#64H

MOV A,#00H

CLR C

LOOP:MOV A,R2

ADD A,R4

MOV R2,A

MOV A,#00H

ADDC A,R3

MOV R3,A

DJNZ R4,LOOP

SJMP $

END

【篇2】单片机应用调研报告

单片机实习报告

单片机实习报告

一、生产实习的目的和意义:

生产实习是培养本科学生理论联系实际,提高实际动手操作能力的重要教学环节。本专业的生产实习旨在使学生广泛了解实际电子产品生产的全过程,熟悉电子产品的主要技术管理模式,并在实习的操作过程中学习掌握电子产品的焊接安装调试的实际操作技能。巩固和加深理解所学的理论,开阔眼界,提高能力,为培养高素质大学本科人才打下必要的基础。通过学习,是理论与实际相结合,可以使学生加深对所学知识的理解,并为后续专业课的学习提供必要的感性知识,同时使学生直接了解本业的生产过程和生产内容,为将来走上工作岗位提供必要的实际生产知识。

二、实习的基本内容:

集中授课,进行相关知识的学习。

学习掌握电子产品的独立性设计与安装调试的能力;
进一步掌握电子测量仪器的正确使用方法,电元器件的测量与筛选技术。

初步了解电子整机产品的工艺过程。

为能使学生得到充分的锻炼,较大的提高学生的实际动手能力,本次生产实习安排每一位学生独立完成全部系统的设计与安装工作。

本实习环节,学生要独立使用电焊铁及各种电子测试设备电路安装与调试,要学生严格遵守电器设备的使用安全,遵守实验室的各项规章制度。

三、基本要求:

在教师的指导下练习在测试电路德核心板上焊接元件,掌握焊接要领。

熟悉元器件的性能及管脚分配。

在给定的PcB板上焊接跳线,Ic插座,电阻,电容,LED器件等。

检查焊接是否正确。

插上元器件,运行系统,并观测系统工作是否正常。

四、总体设计电路思想和原理:

本次生产实习用到的开发板和模块共7块,分别为:单片机核心板,电子钟模块,mP3模块,RFID模块,无线传输模块,脉搏传感模块,GPS模块。

各模块相互组合,其所能实现的基本功能如下:

单片机核心板+电子钟模块:实现时间的显示,温度的测量,且可通过遥控器调时定闹等。

单片机核心板+无线传输模块:实现数据的近距离无线传输。

单片机核心板+mP3模块(含SD卡):实现mP3播放功能。

单片机核心板+RFID模块:实现地铁检票系统的模拟。

单片机核心板+脉搏传感模块:实现人体脉搏传感的测量。

单片机核心板+GPS模块:实现GPS卫星定位功能。

(一)核心板电路设计

单片机核心板电路主要包括STc12c5A60S2单片机,电子钟模块接口电路,mP3接口电路,无线传输模块接口电路,脉搏传感模块接口电路,GPS模块接口电路,串口扩展电路,电源供电电路。该系统的单片机是宏晶科技生产的单时钟机器周期(IT)的单片机,是高速低功耗超强干扰的新一代8051单片机。通过使用STc-ISP软件,该单片机可实现串口在线编程,无需编程器,无需仿真器。

核心板电路的设计思想主要是围绕单片机芯片的工作原理和特点,为其实现合理的设计出外围电路:包括电源电路,显示电路部分,复位电路部分,串行口通信电路,按键电路等。

(二)电子钟模块电路设计

该模块主要用到的芯片有:时钟保持芯片DS1302,单总线数字温度传感器DS18B20,红外遥控解码器TL1838A。

该模块电路设计的思想是了解这三种芯片的工作电压,DS1302的工作时钟频率以及三种芯片与单片机之间的硬件连接。

(三)mP3模块电路设计

该模块用到的主要芯片有mP3音频解码芯片VS1003,电压转换芯片,电压转换芯片。

该电路的设计思想主要是了解芯片的作用和特点,寻找各芯片之间的联系,VS1003芯片是该模块的主要部分。单片机设有单独解码mP3文件的功能,而单片机可与通过VS1003的接口电路的连接,进行mP3的解码,实现音频的输出。通过芯片各引脚的功能和特点,合理的设计出相应的外围电路。

(四)RFID模块电路的设计

该模块的电路所用到的主要芯片为的非接触式通信读卡芯片Fm1702。该芯片是基于ISo/4443标准的非接触卡读卡机专用芯片,采用微米cmoSEEPRom工艺,支持频率下的typeA非接触式通信协议,

支持多种加窗算法,兼容philips的mFRc530读卡机芯片。

该模块的电路设计思想是基于Fm1702各引脚的功能和特点,合理的设计芯片的外围电路,其中的电容和电感所构成的天线是芯片与S50卡通信的工具。

五、单元电路设计:

单片机核心板电路分析

单片机核心板是本次实习中最重要的部分,它是实现各种模块功能的基础部分。单片机核心板的核心是STc12c5A60S2单片机芯片,围绕该芯片设计出相应电源供电电路,蜂鸣器驱动电路,按键电路,串行口通信电路,复位电路,液晶屏驱动电路以及各模块的接口电路,由以上的电路部分就构成一个核心板电路系统。

电子钟模块电路分析

电子钟模块配合单片机核心板,可在LcD1602液晶屏上显示当前的日期(年月日)时间(时分秒),环境温度值,和红外遥控解码值。用户可通过遥控器或单片机核心板上的按键来进行日期和时间的设置。

通过遥控上的“EQ”键,可控制LED显示界面在时间温度红外解码之间的切换。如果想调整时间,需要首先使用遥控器的“EQ”键将LcD显示调制时间界面;
之后通过按“播放停止键”将时间停止;
然后再按“左快捷键”向右切换;
最后按“加减键”可以进行数值的加减操作,调整完成后,再次按“播放停止键”,时间开始运行。另外通过单片机核心板上的k1-k4键也可以完成时间的调整:其中k1键对应遥控器的“右快捷键”,即实现向右切换年月日时分;
k3键对应遥控器的“加键”,即实现年月日时分的加1;
k4键对应遥控器的“减键”,即实现年月日时分的减1。

mP3电路模块分析

是一单芯片mP3/wmA/mIDI音频解码和ADPcm编码芯片,其拥有一个高性能低功耗的DSP处理器核VS-DSP。5k的指令RAm,的数据RAm,串行的控制和数据输入接口,4个通用Io口,1个UART口;
同时片内带有一个可变采样率的DAc,一个立体声DAc以及音频耳机放大器;
VS1003通过一个串行接口来接收输入的比特流,它可以作为一个系统的从机。

与单片机连接的引脚主要有7个,分别为:SoSIScLkXDcSXRESETDREQmoSI,只有保证它们与单片机正确可靠的连接,才能对VS1003进行有效的操作与控制。另外,VS1003各部分的供电电压与输出电压值是不同的。

芯片各部分供电电压如下表:

供电部分最小电压推荐电压最大电压

模拟)

数字)

卡是一种大容量,性价比高,体积小,访问接口简单的存储卡。SDImmc卡大量应用于数码相机mP3手机大容量存储设备。作为这些便携式设备的存储载体,它具有低功耗,非易失性,保存数据无需消耗能量的特点。

卡只使用了1-7触点。对于1号引脚(cD/DAT3)扩展的DAT线(DAT1-DAT3)在上电后处于输入状态,它们在执行SET-BUS-wIDTH命令后作为DAT线操作,当不用DAT1-DAT3线时,主机应使自己的DAT1-DAT3线处于输入模式,这样定义是为与mmc卡保持兼容。上电后,cD/DAT3作为带50k上拉电阻的输入线(可用于检测卡是否存在或选择SPI模式)。用户可以在正常的数据传输中用SET-cLR-cARD-DETEcT命令断开上拉电阻的连接。mmc卡的该引脚在SD模式下为保留引脚,在SD模式下无任何作用。对于2号引脚cmD,mmc卡在SD模式下为Io/PP/oo,mmc卡在SPI模式下为I/PP。

关于电压匹配问题,SD卡的逻辑电平相当于电平标准,而单片机的逻辑电平为5V。因此,它们之间不能直接相连,否则会有烧毁SD卡的可能。解决逻辑器件接口的电平兼容问题,原则主要有两条:一为输出电平器件输出高电平的最小电压值,应大于接受电压器件识别为高电平的最低电压值;
二为输出电平器件输出低电平的最大电压值,应小于接受器件识别为低电平的最高电压值。考虑到SD卡在SPI协议的工作模式下,通讯都是单向的,于是在单片机向SD卡传输数据时采用晶体管加上拉电阻法的方案。在SD卡向单片机传输数据时,可以直接连接。因为它们之间的电平刚好满足上述的电平兼容原则,既经济又实用。该方案可以双电源供电(一个5V电源,一个电源供电),电源可用ASL1117稳压管从5V电源稳压获取。

RFID模块电路分析

基于Fm1702SL的非接触式Ic卡读写器,只要稍加改动就能开发成不同的射频识别应用系统,如考勤系统,门禁系统,公交车收费系统等。S50非接触式卡符合mIFARE的国际标准,容量8k位,数据保存期10年,又可改写10万次,读无限次。S50卡不带电源,自带天线,内含加密控制逻辑电路和通用逻辑电路,卡与读卡器之间的通讯采用国际通用DES和RES保密交叉算法,具有较高的保密性能。

单片机与FmITDISL通用SPI总线通信,采用中断工作模式,在FmITDISL复位后,必须进行一次初始化程序以便初始化SPI接口模式,而且可以同步实现单片机和FmITDISL的启动工作。信息存储在mIFARSE卡里,读写器与卡通过各自的天线建立起二者之间非接触信息传输通道。当卡进入系统的工作区时,读写器向卡发射一组固定频率的电磁波,卡内有一个Lc串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,Lc谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端接有一个单向导通的电子粟,将带内容内的电荷送到另一个电容内存储,当所有积累的电荷达到2V时,此电容可做到电源为其它电路提供工作电压,将卡内数据发射出去或读取读写器的数据。

根据互感原理可知,读写器天线半径越大,匝数越多,读写器上的天线和卡上的天线的互感系数就越大。根据国际标准的要求,卡和读写器的通信距离为10cm,通过调整天线驱动电压可以改变通信的最长距离。天线的传输带宽和品质因数成反比关系。过高的品质因数会导致带宽减小,从而减弱读写器的调制边带,会导致读写器无法与卡通信。

无线传输模块分析

是一无线通信芯片,采用FSk调制,可以实现点对点或是1对6的无线通信。无线通信速度最高可达2mbps,只需为单片机系统预留5个GPIo,1个中断输入引脚,就可很容易地实现天线通信的功能,非常适合用mcU系统构建无线通信功能。

具有收发模式,待机模式和掉电模式,四种工作模式,并由cE寄存器内部PwRVP和PRImRX共同控制。nRF24L01所有的配置都由配置寄存器来定义,这些配置寄存器可通过SPI口访问。SPI接口由SckmoSImISo及cSN组成,在配置模式下单片机通过SPI接口配置nRF24L01的工作参数,在发射或接收模式下单片机SPI接口发送和接收数据。

单片机的控制指令从nRF24L01的moSI引脚输入,而nRF24L01的状态信息和数据是从其mISo引脚输出并送给单片机的。利用SPI传输数据时,是先传输低位字节,再传输高位字节,并且在传输每个字节时是从高位传起。

六、单片机软件系统工作流程

通过使用STc-ISP软件,STc12c5A60S2单片机可实现串口在线编程。由于现在大的数据计算机都不存在提供单独的串口,所以需要USB转RS232串口线。

USB转RS232串口设备驱动程序的安装

STc-ISPV483串口下载软件

七、实习过程心得:

新学期伊始,就迎来了为期四周的单片机生产实习。在这次生产实习过程中,我受益颇多。这是我们经历的第一次广泛了解实际电子产品生产的全过程。从最初的设计,到焊接,安装,调试,我们都是逐一亲自动手操作完成的。在这次实习中,我们遇到了不少问题,但正是因为有了这些问题,才有了我们更加深入学习的机会。为了解决这些问题,我们查资料,探讨,请教老师,充分利用自己身边的一切资源来学习。这样的学习过程让我们对所学内容理解的更深刻,而且大大提高了我们的团结协作能力。在实际操作焊接的过程中,我们从笨拙到熟练,动手能力不断提高,有了很大的进步。这为我们以后步入工作岗位做了良好的铺垫。

总之,通过这次生产实习,我受益匪浅,各方面的能力都有了提高。最后,感谢在实践过程中悉心指导的每一位老师!

单片机开发系统制作实习报告

一:实习目的

单片机是一种集成电路芯片,采用超大规模集成电路技术把cPU、Rom、RAm等功能集成到一块硅片上构成一块小而完善的微型计算机系统,在工业控制领域广泛应用。广泛使用的各种智能Ic卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。

单片机属于数字电路,其概念、术语、硬件结构和原理都源自数字电路,如果数字电路基础扎实,对复杂的单片机硬件结构和原理就能容易理解,所以在学习单片机的时候我们也同时去重温了数字电路,搞清楚触发器、寄存器、门电路、comS电路、时序逻辑和时序图、进制转换等理论知识。所以单片机的学习也能使我们对数字电路的学习有了更进一步的实践方案。

通过对单片机学习开发板的安装、焊接、调试、了解电子产品的装配全过程,训练动手能力,掌握元器件的识别,简易测试,及整机调试工艺,从而有助于我们对理论知识的理解,帮助我们学习专业的相关知识。理论结合实际,提高分析解决问题能力的同时也培养同学之间的团队合作、共同探讨、共同前进的精神。

1、对各种元器件认识并熟悉其功能、适用范围。

2、了解手工焊锡用具用法、保养及注意事项。

3、掌握手工电烙铁的焊接技术,能够独立的完成简单电子产品的安装与焊接。

4、了解电子产品的焊接、调试以及维修方法。

二:实习内容和要求

实习内容:

时间

地点

实习内容

备注

7月19上午理工楼多媒体室实习安排、电子工艺基本技能学习

7月19下午理工楼多媒体室

单片机开发系统演示

7月20上午理工楼305

单片机开发系统介绍、原件分发

7月20下午理工楼305

清点元器件、查阅资料

7月21理工楼305

元器件分拣及分装三人一组

7月22理工楼305

焊接练习一人一组

7月23理工楼305

拆焊练习一人一组

7月24理工楼305

基本焊接技能考核

7月25理工楼305

单片机开发系统制作一人一组

7月26理工楼305

单片机开发系统制作一人一组

7月27理工楼305

单片机开发系统制作考核

7月28

撰写实验报告

实习要求:

认真细致地将元器件安装在电路板上并焊接,按照讲解的方法认真进行焊接,避免出现虚焊、少焊、多焊。以在规定时间内完成单片机学习开发板的安装、焊接、调试及使用。

在实习的过程中应该严格按照老师的要求去做,按照步骤一步一步的按照实习的流程来,做到按时到不早退,注意安全,从而圆满完成这学期的实习。1、了解单片机学习开发板特点和发展趋势。2、熟悉万用表的使用。3、认识液晶显示器件。4、安装制作单片机学习开发板。

三:实习设备及材料

电烙铁:由于焊接的元件多,所以使用的是外热式电烙铁,功率为30w,烙铁头是铜制。

吸锡工具,镊子,钳子等必备工具。

锡丝:由于锡它的熔点低,焊接时,焊锡能迅速散步在金属表面焊接牢固,焊点光亮美观。

电路板上的元件:

二极管,三极管,电阻(排阻),电容(瓷片电容、电解电容),排针,跳线帽,稳压管,LED,液晶,单片机板,下载器板,大小通用板,支柱螺栓(螺母),各种插座,电源开关,2pin接插件,晶振,保险,按键,5V蜂鸣器,5V继电器,杜邦线,排线,47欧姆电阻等等

四:焊接过程

焊接就是将各种元器件固定在电路板上,它不但能固定零件,而且能保证可靠的电流通路,焊接质量的好坏,将直接影响单片机的质量。

1、烙铁是焊接的主要工具之一。新烙铁使用前应用锉刀将烙铁头部倒角磨光,以防焊接时毛刺将印刷电路板焊盘损坏。然后用焊锡在烙铁头上沾附一层光亮的锡,这样烙铁就可以使用了2、烙铁温度和焊接时间要适当

焊接时应让烙铁头加热到温度高于焊锡溶点,并掌握正确的焊接时间。一般不超过5秒钟。时间过长会使印刷电路板铜铂跷起,损坏电路板及电子元器件。

3、焊接方法

一般采用直径的焊锡丝。焊接时左手拿锡丝,右后拿烙铁。在烙铁接触焊点的同时送上焊锡丝,焊锡的量要适量。太多易引起搭焊短路,太少元件又不牢固。

焊接时不可将烙铁头在焊点上来回移动或用力下压,要想焊得快,应加大烙铁和焊点的接触面。增大传热面积焊接也快。特别注意的是温度过低烙铁与焊接点接触时间太短,热量供应不足,焊点锡面不光滑,结晶粗脆,象豆腐渣一样,那就不牢固,形成虚焊和假焊。反之焊锡易流散,使焊点锡量不足,也容易不牢,还可能出现烫坏电子元件及印刷电路板。总之焊锡量要适中,即将焊点零件脚全部浸没,其轮廓又隐约可见。焊点焊好后,拿开烙铁,焊锡还不会立即凝固,应稍停片刻等焊锡凝固,如未凝固前移动焊接件,焊锡会凝成砂状,造成附着不牢固而引起假焊。焊接结束后,首先检查一下有没有漏焊,搭焊及虚焊等现象。虚焊是比较难以发现的毛病。造成虚焊的因素很多,检查时可用尖头钳或镊子将每个元件轻轻的拉一下,看看是否摇动,发现摇动应重新焊接。

每次焊接完一部分元件,均应检查一遍焊接质量及是否有错焊、漏焊,发现问题及时纠正。这样可保证焊接单片机的一次成功而进入下道工序。

注意事项:

.外壳整合要到位,不然会因接触不良而无法显示数字。

.一些小的零件也要小心安装,如图中没有经过焊接安装上的,如不小心很容易掉。

注意电解电容、发光二极管、蜂鸣器的正负极性不能接反、三者均是长的管脚接正极、短的管脚接负极。

4.拆焊方法

在焊接的过程中难免会出现错误,所以就要熟练掌握拆焊的方法。拆焊的时候先右手拿用电烙铁靠在焊点的位置,将焊点上的焊锡熔化掉,同时左手拿吸锡器放在焊点附近,等焊锡融化的时候,用吸锡器将焊点上的锡吸出去,留出管脚和插孔,如果一次不能将焊锡全部吸除可重复吸除知道插孔完全暴漏出来而方便再次焊接。

在拆焊的时候应该注意电烙铁在电路板上的时间应尽量少,融化掉焊锡可,所以就要电烙铁和吸锡器同时运用,否则时间过长会使吸锡的时候将板上铁片一起吸掉,这样就会给下一次的焊接造成不必要的麻烦。

五:调试运行

由于每个芯片都有多个引脚,难免会出现虚焊、多焊、漏焊的现象,所以要一个个的测试,要保证每一种电压每一个电源引脚都正确安装和焊接。在此部分我发现有好几个点都出现虚焊的情况,这样导致了接触不良的问题,还有好几个点的焊点过大焊锡过多,这样也容易出现问题,我把他们吸掉再焊了一遍,我认为这一部分是非常必要的。

在进行调试的时候,用万用表测试每个元器件的管脚,尤其是电阻、电容和三极管,由于元器件较多,所以防止安装时安装上了错误的原件;
电容要注意它的正负脚的方向,确保电源正极接电容的长管脚;
三极管也要测试三个管脚的电压,保证发射极正偏集电极反偏,使三极管正常工作在放大区内。

最后要检查芯片放着合适的位置,方向不要放反,给电路板装上支架,这样所有的调试工作就完成了。

八:结果及分析

首先是单片机焊接后的接线,用杜邦线将各部分连接起来,组成一个完整的单片机系统,把跳线帽插在合适的位置,最后把所有的元器件放在对应位置。

然后焊接USB小板,将显示灯、USB接口的器件装在对应位置,再用线将单片机开发板和USB接口板连接起来。

再将程序写入芯片内,将USB和电脑连接起来,写入、编程是的单片机开发系统能正常工作。

最后是温度显示:在温度显示部分,由于在后部某位置处焊点的问题,导致温度显示有问题,八段译码器的显示有一小部分不正常,数字摄氏度的“零”出现小部分异常,这里应该是后方某处焊的不够牢固的原因,由于焊点过多,检查难度过大,所以导致了实验的小问题发生,但是以后的学习中会逐步学到该方面的知识,等专业知识足够时再将遗留问题一并解决。

六:设计心得体会

单片机开发板的制作完成了,虽说在安装和焊接的过程出现的问题比较多,不过因为同学们都在一起实习,所以有了错误也能及时的发现并改正,当然从中走了不少的弯路,但是我们终究还是完成了,当然这也要感谢老师的帮助。这次电路板焊接实习就是培养我们的动手能力,同金工实习的意义是一样的,金工实习要求我们都日常的机械车床,劳动工具能够熟练使用,能够自己动手做出一个像样的东西来。而电子技术实习就要我们对电子元器件识别,相应工具的操作,相关仪器的使用,电子设备制作、装调的全过程。实习将对理论知识有了更深的理解,将书本上的知识变成电路板,变成电阻电容,最终变成单片机系统。同时也培养同学之间的团队合作、共同探讨的机会,大家互相帮助互相学习这样也增进了同学们之间的感情。

在这几天的实习过程中最挑战我动手能力的一项训练就是焊接。在实习中,我锻炼了自己动手技巧,提高了自己解决问题的能力同时也锻炼了自己的耐心。比如做电路板组装与调试时,芯片触角的间距特别小,稍不留神,就焊在一起了,刚开始的时候手还有点抖,还有因不小心而烫到手的情况。但是后来我让自己心静下来也就平和下来了。我第一天焊接的时候还算顺利,但第二天出的问题就比较多,特别是发现自己粗心不止表现在零件安装上,还表现自己不够专注。台上一分钟台下十年功,还是我的练习不够,到了后几天开始制作单片机的时候我便能熟练焊接的种种步骤了。在这期间我思考了,动手了,也努力了,将给我以后的学习生活带来很多的经验和教训。所以说,这次的实验对我来说是很有意义的!

单片机电子钟实习报告

一、引言

设计的背景及目的

随着计算机科学与技术的飞速发展,计算机的应用已经渗透到国民经济与人们生活的各个角落,正在日益改变着传统的人类工作方式和生活方式,而单片机技术又作为计算机技术中的一个独立分支,有着性价比高,集成度高,体积小,可靠性高,控制功能强大,低功耗,低电压,便于生产,便于携带等特点,所以得到越来越广泛的应用,特别是在工业控制和仪表仪器智能化中起极其重要的作用.本文利用单片机强大的控制功能和内部定时器重要部件,设计了一款自行对时间进行调整以及把时、分、秒用LcD显示的电子钟。

电子钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时叙电路.通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法

设计的内容要求及研究方法

①时间以24小时为一个周期;

②显示时、分、秒;

③具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间;

二、设计的原理图、程序及调试1、基本原理

本设计基于单片机技术原理,以单片机芯片AT89S51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个多功能数字时钟系统。单片机扩展的LcD显示器用来显示秒、分、时计数单元中的值。整个设计包括两大部分:硬件部分和软件部分,以单片机为核心,配以一定的外围电路和软件。硬件是整个系统的基础,软件部分则要合理、充分地支持和使用系统的硬件,从而完成系统所要完成的任务。

该时钟系统主要由时钟模块、液晶显示模块、键盘控制模块以及信号提示模块组成。能够准确显示时间(显示格式为时时:分分:秒秒,24小时制),可随时进行时间调整。设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。单片机在这种情况下诞生了基于单片机电子时钟。

2、硬件电路原理图

3、原理仿真图(略)

3、原理仿真图(略)

4.硬件模块功能介绍

单片机:AT89S51提供以下标准功能:8k字节Flash闪速存储器,256字节内部RAm,32个I/o口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路[2]。同时,AT89S51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止cPU的工作,但允许RAm,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAm中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

液晶显示器LcD:液晶显示器简称是利用液晶经过处理后能够改变光线传输方向的特性,达到显示字符或者图形的目的。其特点是体积小、重量轻、功耗极低、显示内容丰富等特点,在单片机应用系统中有着日益广泛的应用。

1602芯片:主要用于显示时间和定时时间。1602芯片由点阵字符液晶显示器件和专用的行、列驱动器、控制及必要的链接件、结构件组装而成,可以显示数字和西文字符,但不能显示图形,已经可以满足本次设计的需要。1602型LcD可以显示2行16个字符,有8位数据总线D0~D7和RS,R/w,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。

键盘控制模块:按键中有一个复位键及定时键、调时键加一键和减一键,一个按键接在复位电路上,另外三个按键接在——口,低电平表示有按钮按下;
按钮没有接防抖电路,需要设计软件防抖。

1、定时。按下定时键后可以开始定时,过程如下:定时---〉小时加/减---〉按定时---分钟加/减---按定时。

2、调时。按下调时键后可以调时,过程如下:调时---年加/减---调时--月加/减---调时---日加/减---调时---时加/减---调时---分加/减---调时---秒加/减---调时。

直流稳压电源部分:直流稳压电源是给电子设备提供稳定直流电压的电子电路。这次电路需要的是+5V直流电源。

5.软件设计

代码附录(略)

调试过程

调试的主要过程包括硬件调试和软件调试,其中软件调试,也即程序编译与仿真过程处于本次设计调试过程的核心环节。由于本设计已经制作出液晶显示电子钟,所以硬件调试也很重要。两种调试过程并非孤立或者分开的,而是紧密相关。在此我们用到的开发工具是仿真器。

硬件调试

完成仿真器软件仿真后,就要连接上硬件也即液晶显示电子钟成品板进行硬件调试。

将仿真器通过串行电缆连接计算机上,将仿真头接到仿真器,检查接线是否有误,确信没有接错后,接上电源,打开仿真器的电源开关。再进行仿真器和通信设置。

仿真器和仿真头设置正确,并且硬件连接没有错误,出现“硬件仿真”的对话框,并显示仿真器、仿真头的型号及仿真器的序列号。表明仿真器初始化正确。

硬件调试很重要也很麻烦,由于本次设计硬件非PcB制板,而是手工焊板,焊点质量、布线是否合理等对系统的影响比较大,这无疑增加硬件调试的难度。由于此前没有很多的练习,本次设计我所制作的液晶显示电子钟在质量工艺上很难达到满意程度,不过在调试中还算稳定,基本功能都能较稳定地实现。

软件调试

系统仿真分析电路原理图在ISIS里设计完成,并将系统软件编译成.Hex文件,再进行电子时钟的系统虚拟仿真。(1)在ISIS的原理图中,右键单击AT89S51将其选中,然后单击左键打开AT89c51的Editcomponent对话框,如下图所示。(2)选择相应的.Hex文件,再在ProteusISIS编辑窗口的File菜单中选择SaveDesign选项,保存设计,生成.DSN文件。测试数据与数据分析

实现功能的具体方法:当进入调整功能时,按第二个键k2进行加运算按第三个键k3进行减运算,。

按下第一个键k1,实现日期\时间调整及\定时功能,等数字闪烁后,按二三键进行加减,从而可以进行具体日期时间调整。按下第四个键k4回到原始设计时间,采用24小时制。时间显示格式为:时-分-秒;
日期显示格式为:日-月-年。具有显示时间和日期的功能。

三、总结:个人心得体会

微机实习让我对计算机理论知识和自动化专业知识有了一定的了解,但真正操作起来就没有那么容易.纸上得来终觉浅,绝此事要躬行。经过过去3个星期的实训,我对自己有了新的认识及前进的方向。1.继续学习,不断提升理论素养。

在信息时代,学习是不断地汲取新信息,获得事业进步的动力。现在通过实习总感觉自己学的不够,要用到知识时总感觉脑袋是空白的。很后悔自己当时在学校为什么不多学一点,多练习一点。总在后悔也没有用,只能自己去努力学习。为了能更好的适应工作,我利用自己空闲时间去附近的书店去看书,希望能弥补不足。2.加强信心,坚持下去

现在大家都说,能珍惜现在的日子就好好珍惜。等工作了才真的有另外的领悟。每天起早贪黑,忙忙碌碌,做了第一天可能就想回到学校接着做学生。感觉学生时代真是最美好的时间。可是既然真的出来了,就得踏出来了就要继续走下去,因为这一天也终究要来到。

对给自己点信心,多给自己点赞赏,多给自己鼓鼓劲。相信总会走出一条宽敞大道的。3、友善相处

学生时代都感觉很美好,大家相互嘘寒问暖,不必勾心斗角。我感觉这里才真的有纯洁的友谊。其实想说,这就是一个小型的社会,我们互相的关照,互相体谅,学习上你我照应,工作上你我参与,和谐相处,这样,我们的友谊才会深刻,所以我们应该正确的对待与人之间的关系,友善相处。

最后想说,实习训是开端也是结束。在书本上学过很多理论,但从未付诸实践过,也许等到真正运用时,才会体会到难度有多大。在今后的工作和生活中,自己需要更加努力的奋斗下去。

实训的同时也让我了解到了自己的不足,我会继续努力,完善自我。对于学校的精心安排和指导老师的用心辅导非常感谢。

【篇3】单片机应用调研报告

浅谈单片机技术及其应用

单片机是组成微型计算机的各功能部件:中央处理器(cpu)、随机存取存储器(ram)、只读存储器(rom)、i/o接口电路、定时器/计数器及串行通讯接口等部件制作在一块集成芯片中,构成一个完整的计算机。由于它的结构与指令功能都是按工业控制要求设计的,所以又叫单片微控制器。目前,国外已开始把它称为单片计算机。

随着单片机功能的增强,由单片机构成的计算机应用系统的功能也日益增强。片上带有丰富外设功能的单片机可提高系统集成度和可靠度,大大减轻了工程技术人员进行系统开发的工作量,使产品性能价格比提高。同时单片机具有适应温度范围广、抗干扰能力强、小巧灵活等特点,在工业领域得到了极为广泛的应用,并走入家庭,从洗衣机、微波炉、音响等都可见到单片机的踪影。

1 单片机的特点

单片机通常按其微处理器字长的位数来进行分类,单片机问世以来所走的路与微处理器是不同的。微处理器向着高速运算、数据分析与处理能力,大规模容量存储等方向发展,以提高通用计算机的性能。其接口界面也是为了满足外设和网络接口而设计的,单片机则是从工业测控对象,环境、接口特点出发,向着增强控制功能,提高工业环境下的可靠性、灵活方便的构成应用计算机系统的界面接口的方向发展。其特点是:

1.1 品种多样,型号繁多。品种型号逐年扩充以适应各种需要,使系统开发者有很大的选择自由。

1.2 提高性能,扩大容量。

1.3 增加控制功能,向外部接口延伸。把原属外围芯片的功能集成到本芯片内。

1.4 低功耗。

1.5 应用软件配套。提供了软件库,包括标准应用软件,示范设计方法。使用户开发单片机应用系统时更快速、方便。

1.6 系统扩展与配置。

2 单片机的开发工具及软件

一般情况下单片机本身不具备开发功能,因此在开发单片机时必须借助开发工具。

2.1 在线仿真器。简称仿真器。它能以与用户处理器相同的时序执行用户程序,并按用户需要产生各种断点响应,同时也可接收主机系统的命令,对用户系统进行全面测试和数据传送。仿真器通常由控制电路、存储器、仿真电缆、接口电路等组成。仿真器是开发系统的关键设备,通过接口m或并行口n与主机相连又用电缆线把仿真器与目标系统相接,用仿真器中“仿真单片机”取代目标系统的同类型的“目标单片机”,然后在主机上进行各种操作,从而获得对仿真单片机也即对目标单片机的仿真和控制功能。

【篇4】单片机应用调研报告


单片机实习报告
单片机实习报告(一)
这次实习我们使用控制电路的单片机是AT89S51型号的。通过它实现对八盏双色灯发光二极管的控制P0和《单片机实习报告总结》正文开始》这次实习我们使用控制电路的单片机是AT89S51型号的。通过它实现对八盏双色灯发光二极管的控制P0和P2口控制四盏灯。在AT89S51的9引脚接复位电路,对电路实现复位控制。在电路中接入74S164译码器和共阴极数码管,通过AT89S51的P3口数据的输入对共阴极数码管的控制。同时也可实现双色发光的二极管与共阴极数码管的共同作用。在AT89S51的P3.2口接上中断控制电路,P3.5口接入蜂鸣器,使电路实现中断作用,也使电路便于检测。尽量朝“单片”方向设计硬件系统。系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性。系统中的相关器件要尽可能做到性能匹配。如选用CMOS芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品。硬件电路设计:
1)确保硬件结构和应用软件方案相结合。硬件结构与软件方案会相互影响,软件能实现的功能尽可能由软件实现,以简化硬件结构。必须注意,由软件实现的硬件功能,一般响应时间比硬件实现长,且占用CPU时间;

2)可靠性及抗干扰设计是硬件设计必不可少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板的合理布线、各元器相互隔离等;

3)尽量朝“MCS-51单片”方向设计硬件系统。系统器件越多,器件之间相互干扰也越强,所消耗功耗也增大,也不可避免地降低了系统的稳定性;

4)系统中的相关器件要尽可能做到性能匹配。如选用CMOS芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品。1.1单片机型号及特性
---文章来源网络


单片机型号是AT89S51。特性是:⑴8031CPU与MCS-51⑵兼容4K字节可编程FLASH存储器(寿命:1000写/擦循环)⑶全静态工作:0Hz-24KHz⑷三级程序存储器保密锁定⑸128*8位内部RAM⑹32条可编程I/O线⑺两个16位定时器/计数器⑻6个中断源⑼可编程串行通道⑽低功耗的闲置和掉电模式⑾片内振荡器和时钟电路1.2晶振电路
单片机晶振的两个电容的作用这两个电容叫晶振的负载电容,分别接在晶振的两个脚上和对地的电容,一般在几十皮发。它会影响到晶振的谐振频率和输出幅度,晶振的负载电容=[(Cd*Cg)/(Cd+Cg)]+Cic+△C式中Cd,Cg为分别接在晶振的两个脚上和对地的电容,Cic(集成电路内部电容)+△C(PCB上电容)经验值为3至5pf。各种逻辑芯片的晶振引脚可以等效为电容三点式振荡器。晶振引脚的内部通常是一个反相器,或者是奇数个反相器串联。在晶振输出引脚XO和晶振输入引脚XI之间用一个电阻连接,对于CMOS芯片通常是数M到数十M欧之间。很多芯片的引脚内部已经包含了这个电阻,引脚外部就不用接了。这个电阻是为了使反相器在振荡初始时处与线性状态,反相器就如同一个有很大增益的放大器,以便于起振。石英晶体也连接在晶振引脚的输入和输出之间,等效为一个并联谐振回路,振荡频率应该是石英晶体的并联谐振频率。晶体旁边的两个电容接地,实际上就是电容三点式电路的分压电容,接地点就是分压点。以接地点即分压点为参考点,振荡引脚的输入和输出是反相的,但从并联谐振回路即石英晶体两端来看,形成一个正反馈以保证电路持续振荡。在芯片设计时,这两个电容就已经形成了,一般是两个的容量相等,容量大小依工艺和版图而不同,但终归是比较小,不一定适合很宽的频率范围。外接时大约是数PF到数十PF,依频率和石英晶体的特性而定。需要注意的是:这两个电容串联的值是并联在谐振回路上的,会影响振荡频率。当两个电容量相等时,反馈系数是0.5,一般是可以满足振荡条件的,但如果不易起振或振荡不稳定可以减小输入端对地电容量,而增加输出端的值以提高反馈量。电路如图所示1.3复位电路
---文章来源网络


单片机在开机时或在工作中因干扰而使程序失控,或工作中程序处于某种死循环状态等情况下都需要复位。复位作用是使CPU以及其他功能部件,如串行口,中断都恢复到一个确定初始状态,并从这个状态开始工作。
复位电路有两种:上电、按钮复位,考虑到各部件影响,采用按钮复位,当电阻给电容充电,电容的电压为高电平,当按下按钮时芯片复位脚近似低电平,于是芯片复位。单片机实习报告(二)一、生产实习的目的和意义:
生产实习是培养本科学生理论联系实际,提高实际动手操作能力的重要教学环节。本专业的生产实习旨在使学生广泛了解实际电子产品生产的全过程,熟悉电子产品的主要技术管理模式,并在实习的操作过程中学习、掌握电子产品的焊接、安装、调试的实际操作技能。巩固和加深理解所学的理论,开阔眼界,提高能力,为培养高素质大学本科人才打下必要的基础。通过学习,是理论与实际相结合,可以使学生加深对所学知识的理解,并为后续专业课的学习提供必要的感性知识,同时使学生直接了解本业的生产过程和生产内容,为将来走上工作岗位提供必要的实际生产知识。二、实习的基本内容:
集中授课,进行相关知识的学习。
学习、掌握电子产品的独立性设计与安装、调试的能力;
进一步掌握电子测量仪器的正确使用方法,电元器件的测量与筛选技术。初步了解电子整机产品的工艺过程。
为能使学生得到充分的锻炼,较大的提高学生的实际动手能力,本次生产实习安排每一位学生独立完成全部系统的设计与安装工作。
本实习环节,学生要独立使用电焊铁及各种电子测试设备电路安装与调试,要学生严格遵守电器设备的使用安全,遵守实验室的各项规章制度。三、基本要求:
---文章来源网络

【篇5】单片机应用调研报告

江苏工业学院考试命题用纸考试科目单片机原理与应用成绩A(B卷共5页,第1页

一、填空题(每空1分,共30分)
1.8031的片内ROM是0KB;
8052的片内ROM是8KB。
2.8031的PSW中RS1=0、RS0=1,工作寄存器R0~R7的地址为08H-0FH。3.8031上电复位后,SP的初值为07H、PC的初值为0000H、P2的初
值为0FFFH。
4.8031内部SFR的P1字节地址为90H;
对应的位地址90H-97H。5.在8051单片机系统中,控制线/EA接高电平;
在8051单片机系统中,
若仅用片内ROM时控制线/EA接高电平。6.P3口中P3.5位的第二功能符号为T1。
7.若要从8031的P1.7位输入数据必须对该位先置1。8.若要对8031复位,RST端应保持高电位24个振荡周期。9.8031的5个中断源为自然优先级的入口地址为
0003H,001BH,OOOBH,OO23H。
10.若要将累加器A中数据送入外部RAM地址7000H中,应使用的指令是
MOVDPTP,#7000H和MOVX@DPTR,A。
11.8031串行口为工作方式0时,若主频为6MHz,则TXD输出频率为0.5
MHz。
12.8031的T0中断标志位是TF0,当有中断请求时,TF0=1,当进入
中断服务程序时TF0=0。
13.定时/计数器T1工作于计数器方式2,若输入1个计数脉冲后产生中
断,初值为0FEH。
14.地址译码方法有:线选法、部分译码、全地址译码法。
15.指令MOVA,SBUF为串行口发送指令还是接收指令接收指令。16.若串行口工作于方式2,为11位异步接收/发送。
17.采用可变波特率的串行通信的工作方式为方式1和方式三。18.P3.6的第二功能符号为WR(上面加一横线)。
19.8031的四个并口中,输出访问外部存储器高8位地址线的并口是
P2。
20.内部RAM中,位地址为30H的位,该位所在字节的字节地址为26H。21.6264是8K字节的静态存储器。
22.若A中的内容为63H,那么,P标志位的值为0。
23.在单片机既具有内部程序存储器,又有外部程序存储器时,其引脚EA应接高电平。
24.单片机与普通计算机的不同之处在于其将__CPU_____、__存储器_和____I/O口____3部分集成于一块芯片之上。
25.MCS-51单片机有64k字节外部数据存储器地址空间
和64k字节外部程序存储器地址空间,具有2个级别的5个中断源。
26.片内RAM字节地址21H单元中D0位的位地址为08H。

系(部)计算机教研室通信拟题人审核:教研室负责人系部负责人2007年6月1日

江苏工业学院考试命题用纸考试科目单片机原理与应用成绩A(B卷共5页,第2页
40.设晶振频率为6MHz,以方式1通信,其波特率为1200,当SMOD=1时,则定时器1的初值为______OE8H_______。
41.MCS-51响应__串行口___中断时,其中断标志只能由软件清除。42.MCS-51单片机最大可扩展(64k字节的ROM和(64KB)字节的RAM.AJMP的跳转范围是2KB无内部上拉电阻的并口是(A)。
A:P0B:P1C:P2D:P3
31.MCS—51单片机进行外部功能扩展时,是通过三总线实现的20.8031的四个并口中,无第二功能的并口是(B)。外部功能扩展,三总线是指地址总线、控制总线和A:P0B:P1C:P2D:P3数据总线。21.8031不是特殊功能寄存器的为(B)。32.ALE引脚的作用是______地址锁定_______,当时钟频率为12MHz时,
A:SPB:PCC:PSWD:ACC
ALE的频率为___2MHZ_________。
22.8031控制P0口数据/地址分离的控制线是(A)。
33.MCS51单片机是采用高电平复位。
A:ALEB:/PSENC:/RDD:/WR
34.8031的四个并口中,在MCS-51中,PC和DPTR都用于提供地址,但
23.指令LCALL语句的首地址为100OH,SP地址为81H,执行前SP的内容PC是为访问程序存储器提供地址,而DPTR是为访问数据存储
是30H。执行后,下面叙述正确的是(C);
器提供地址。
A:(31)=00H,(32)=10HB:(81)=00H,(82)=10H35.8051片内有256B的RAM,可分为四个区,00H~1FH为工作寄
C:(31)=03H,(32)=10HD:(82)=03H,(83)=10H存器区;

。20H~2FH为位寻址区;
80H~FFH为特殊功能寄存器24.下列指令正确的是(C)
A:DJNZA,relB:CJNEA,R0,rel区。
C:ANL20H,#30HD:DECDPTR
36.MCS-51单片机有5个中断源,可分为2个中断优
25.中断标志需手动清零的是(D)。
先级。上电复位时外部中断中断源的最高。
A:外部中断的标志B:计数/定时器中断37.MOVA,30H和ADDA,@R0中源操作数的寻址方式分别是直接寻
C:所有中断标志均需手动清零D:串行通信中断的标志址和寄存器间接寻址。
26.8031中与定时/计数中断无关的寄存器是(C)。38.若某8位D/A转换器的输出满刻度电压为+5V,则D/A转换
A:TCONB:TMODC:SCOND:IP器的分辨率为5*2-8。
27.MCS-51的访问外部ROM的指令是(A)。39.ALE引脚的作用是________地址锁存____,当时钟频率为6MHz时,
A:MOVXB:MOVCC:MOVD:@DPTRALE的频率为______1MHZ______。
27.在MCS-51中若SP=40H,执行指令PUSHAcc后,SP=41H。
28.定时器T1固定对应的中断入口地址为001BH。29.通常、单片机上电复位时PC=0000H,SP=07H。
30.8031的并行I/O口(P0~P3)用作通用I/O口时,当口由原输出状态变为输入状态方式时,应先向口的锁存器进行置“1”操作,再进行输入操作才正确。

系(部)计算机教研室通信拟题人审核:教研室负责人系部负责人2007年6月1日

江苏工业学院考试命题用纸考试科目单片机原理与应用成绩A(B卷共5页,第3页
28.MCS-51的指令SJMPrel是哪一种寻址方式(D)。
A:直接B:寄存器C:立即数D:相对.8031仅使用外部ROM时有(A)。
A:/EA=0B:/EA=1C:/EA上升沿有效D:/EA下降沿有效
20.有关DPTR的叙述正确的是(B)。
A:是一个独立的16位寄存器B:由两个8位的寄存器组成C:是一个地址变量D:以上叙述都不正确21.MCS-51串口的方式0功能是(D)
A:9位数据异步通讯方式B:8位数据异步通讯方式C:11位数据异步通讯方式D:同步移位寄存器方式22.8031中与串行中断无关的寄存器是(A)。
A:TCONB:PCONC:SCOND:IP23.AJMPLP1指令首地址为27FOH,不能转移到的LP地址可能是(D)。
A:2456HB:2001HC:25FFHD:2800H24.8051单片机的片内用户RAM容量是(A)。
A:128BB:512BC:256BD:4K
25.MCS-51的指令MOVACC,20H为目的操作数是(D)。
A:寄存器寻址B:立即数寻址C:相对寻址D:直接寻址
26.MCS-51的串行通信中断的中断服务程序的入口地址是(B)。A:0013HB:0023HC:000BHD:002BH27.MCS-51中的正确指令是(D)。A:MOVC@A+DPTR,AB:CLRR0C:MOV28H,@R2D:INCDPTR
28.8031读取外部ROM时有效的控制线状态是(C)。A:ALE为低B:/RD为低C:/PSEN为低D:/WR为低
MCS-51单片机堆栈是设在(A)(A)片内RAM(B)片内ROM(C)片外RAM(D)片外ROM
13.MCS-51的并行I/O口读-改-写操作,是针对该口的(D
(A引脚(B片选信号(C地址线(D内部锁存器14.单片机执行MOVX写指令时,相关的信号状态是(BA.PSEN无效为低电平,WR有效为低电平B.PSEN无效为高电平,WR有效为低电平C.PSEN有效为低电平,WR无效为高电平
D.PSEN有效为高电平,WR无效为高电平
15.8031单片机若晶振频率为fosc=12MHz,则一个机器周期等于(CµS。
A.1/12B.1/2C.1D.216.MCS—51寻址方式中,直接寻址的寻址空间是(BA.工作寄存器R0~R7B.专用寄存器SFRC.程序存贮器ROMD.程序存储器256字节范围17.MCS-51单片机的4个并行I/O口作为通用I/O口使用时,(A口应该加上拉电阻。
A、P0B、P1C、P2D、P318.下列程序段中使用了位操作指令的有(B。(AMOVDPTR,#1000H(BMOVC,45H
MOVXA,@DPTRCPLACC.7

系(部)计算机教研室通信拟题人审核:教研室负责人系部负责人2007年6月1日

江苏工业学院考试命题用纸考试科目单片机原理与应用成绩A(B卷共5页,第4页
(CMOVA,45H(DMOVR0,23H
XCHA,27HMOVA,@R0
19.MCS-51单片机扩展外部程序存储器和数据存储器(B)。(A)分别独立编址


(B)统一编址(D)动态变址
5.8031串行口的工作方式及功能。
6.将定时器T0中断服务程序INTT0放置在程序存储区的任意区域,在程序中应该作何种设置?
7.串行口有几种工作方式?有几种帧格式?
8.在MCS-51单片机系统中,外接程序存储器和数据存储器共16位地址线和8位数据线,为何不会发生冲突?
(C)分别独立编址或统一编址
20.下列不能实现(A)×2的程序段有(D)。(AMOVR0,A(BMOVB,#2ADDA,R0MULAB
(CCLRC(DMOVR0,ARLCAADDCA,R0
21.当DAC0832D/A转换器的CS接8031的P2.0时,程序中0832的地址指针DPDR寄存器应置为(D。
A.0832HB.FE00HC.FEF8HD.以上三种都可以二、简答题(每题4分,共16分)
1.如果采用晶振的频率为4MHz,定时器/计数器工作方式0、1、2下,其最大的定时时间为多少?
2.简述控制线RST、/WR、ALE、/PSEN、/RD、/EA的功能。
3.若单片机系统的外接晶振为12MHz,则该系统的振荡周期、状态周期、机器周期各为多少?
4.将外部中断0服务程序INTP0放置在程序存储区的任意区域,在程序中应该作何种设置?
因为控制信号线的不同:
外扩的RAM芯片既能读出又能写入,所以通常都有读写控制引脚,记为OE和WE。外扩RAM的读、写控制引脚分别与MCS-51的RD和WR引脚相连。
外扩的EPROM在正常使用中只能读出,不能写入,故EPROM芯片没有写入控制引脚,只有读出引脚,记为OE,该引脚与MCS-51单片机的PSEN相连。
9.写出MCS-51的所有中断源,并说明哪些中断源在响应中断时,由硬件自动清除,哪些中断源必须用软件清除。
外部中断0、定时器0、外部中断1、定时器1和串行口中断。其中定时和外部中断由硬件自动撤除,串行中断必须用软件清除。
10.CPU响应中断的条件有哪些?
11.MCS-51内部四个并行I/O口的功能分别作用是什么?
P0口既可作一般I/O端口使用,又可作地址/数据总线使用;
P1口是一个准双向并行口,作通用并行I/O口使用;
P2口除了可作为通用I/O使用外,还可在CPU访问外部存储器时作高八位地址线使用;
P3口是一个多功能口除具有准双向I/O功能外,还具有第二功能。12.简述MCS-51单片机的中断响应过程。

系(部)计算机教研室通信拟题人审核:教研室负责人系部负责人2007年6月1日

江苏工业学院考试命题用纸考试科目单片机原理与应用成绩A(B卷共5页,第5页
12.串行口有几种工作方式?各种工作方式的波特率如何确定?13.定时器/计数器的工作方式2有什么特点?适用于哪些应用场合?
答:定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,比如波特率的产生。
14.简要说明采用软件消除按键抖动的方法。
15.在MCS-51单片机系统中,外接程序存储器和数据存储器共16位地址线和8位数据线,为何不会发生冲突?
16.winbond27c512的容量是多少,有几根地址线?17.简要说明单片机的中断响应过程。
18.简述单片机地址译码的三种方式,并比较他们的特点?19.MCS-51单片机位寻址空间有哪些?
20.简要说明单片机在访问RAM时如何区分片内片外RAM的?21.MCS-51T0、T1的定时器和计数器方式的差别是什么?22.简述MCS-51单片机I/O数据传送的控制方式。

系(部)计算机教研室通信拟题人审核:教研室负责人系部负责人2007年6月1日

【篇6】单片机应用调研报告


单片机原理及应用



常州轻工职业技术学院



前言
当今,单片微型计算机技术迅速发展,由单片机技术开发的智能化测控设备和产品广泛应用到各个领域,单片机技术产品和设备促进了生产技术水平的提高。企业迫切需要大量熟练掌握单片机技术,并能开发、应用和维护管理这些智能化产品的高级工程技术人材。
单片机以体积小、功能强、可靠性好、性能价格比高等特点,已成为实现工业生产技术进步和开发机电一体化和智能化测控产品的重要手段。
本教材内容分为十章。以MCS-51系列单片机为介绍对象,分别介绍MCS-51系列单片机结构原理、MCS-51单片机指令系统、汇编语言程序
设计、并行I/O口的使用、并行I/O口的扩展方法及使用、中断系统和定时/计数器、A/D转换接口和D/A转换接口技术、键盘与显示器接口技术等内容。
本教材由杨文新、龚益民、韩迎辉老师编写,谢丽华、刘军良老师参与本书图表的绘制。
编者
2004年7月


1

目录

第一章认识单片机……………………………………………3第二章MCS-51单片机指令系统………………………………14第三章汇编语言程序设计……………………………………27第四章并行I/O口…………………………………………33第五章并行I/O口的扩展…………………………………40第六章中断系统………………………………………………49第七章定时/计数器………………………………………55第八章A/D转换接口……………………………………60第九章D/A转换接口………………………………………63第十章键盘与显示器接口…………………………………67附录一WAVE软件的操作使用附录二ASCII码表
附录三MCS-51单片机指令系统表附录四单片机练习题附录五单片机实验指导书

2


第一章认识单片机

一、什么是单片机
单片机是将CPU、存储器、输入/输出接口、定时/计数器等集成在一块芯片上,是目前销量最大、应用面最广、价格最便宜的微型计算机。如图1-1所示:

取指令


程序存储器
CPU
定时/计数器
I/O口
外设
图1-1单片机结构框图
例1-1单片机彩灯控制系统(单片机控制8个发光二极管每隔0.1秒轮流点亮。)
使用单片机实验板进行演示。
二、典型单片机产品
1.MCS-51系列
美国Intel公司生产的8位字长单片机。基本型产品有8051、8031、8751等。
2.AT89C51系列
美国ATMEL公司生产的8位字长单片机。与MCS-51系列单片机兼容,内含4KB的flash存储器。
三、MCS-51单片机的内部的硬件结构及引脚

(一)MCS-51单片机内部的总体硬件结构
8051单片机的内部基本结构,如图1-2所示。
(二)MCS-51单片机的引脚
8051单片机是HMOS工艺制造,外形为40条引脚,如图1-3所示。因为受芯片引脚数量的限制,有很多引脚具有双功能。
1、主电源引脚VCC:芯片工作电源端,接+5V。
Vss:电源接地端。2、时钟振荡电路引脚
XTAL1:内部晶体振荡电路的反相器输入端。接法如图1-5。XTAL2:内部晶体振荡电路的反相器输出端。接法如图1-5。3、控制信号引脚
RST————RST为复位信号输入端。外部接复位电路。接法如图1-4。
ALE————ALE为地址锁存允许信号。在不访问外部存储器时,ALE以时钟振荡频率的1/6的固定频率输出,用示波器观察ALE引脚上的脉冲信号是判断单片机芯片是否正常工作的一种简便

1

方法。
PSEN————外部程序存储器ROM的读选通信号。到外部ROM取指令时,PSEN自动向外
发送负脉冲信号。
EA————为访问程序存储器的控制信号。
外部时钟源外部计数脉冲

振荡器和时程序存储器数据存储器两个16位

4KBROM256BRAM/SFR钟电路定时器/计数器
8051CPU
64K字节并行I/O端口全双工

总线扩展控制串行口
中断系统外中断控制外部设备串行通讯图1-28051单片机的内部基本结构
4、并行I/O端口引脚
P0口(P0.0~P0.7);
P1口(P1.0~P1.7);
P2口(P2.0~P2.7);
P3口(P3.0~P3.7)。


(a)引脚图(b逻辑符号
图1-3MCS-51引脚图

2

(三)复位电路与时钟电路
1.复位电路
(1)复位电路
单片机的RST引脚是复位信号输入端,RST引脚上保持两个机器周期(24个时钟周期)以上的高电平时,可使单片机内部可靠复位。单片机常用的外部复位电路如图1-4。

(a上电复位电路(b上电复位兼手动复位电路


图1-4MCS-51的复位电路
(2)复位状态
复位后,单片机内部的各寄存器的内容将被初始化,包括程序计数器PC和特殊功能寄存器,其中(PC)=0000H,特殊功能寄存器的状态见表1-1。复位不影响片内RAM和片外RAM中的内容。

表1-1复位后特殊功能寄存器的初始状态
SFR名称ACCBPSWSPDPLDPHP0~P3IPIE
初始状态00H00H00H07H00H00HFFHХХХ00000B0ХХ00000B
SFR名称TMODTCONTH0TL0TH1TL1SBUFSCONPCON
初始状态00H00H00H00H00H00H不确定00H0ХХХХХХХB

2.时钟电路
时钟电路用于产生时钟信号,时钟信号是单片机内部各种微操作的时间基准,在此基础上,控制器按照指令的功能产生一系列在时间上有一定次序的信号,控制相关的逻辑电路工作,实现指令的功能。
电容容量范围为30PF±10PF,石英晶体频率的范围为1.2~12MHZ,常用6MHZ或12MHz。

3



图1-58051的外接石英晶体的时钟电路
3.时序单位

OSC时钟ALE
图1-6时序图
(1)时钟周期(是时钟信号频率fosc的倒数)
时钟周期=1/fosc
(2)机器周期:
机器周期=12×时钟周期
(3)指令周期
一条指令从被读取到被执行的整个过程所需的时间称为指令周期。思考题:fosc分别为6MHZ和12MHZ时,机器周期分别为多少?四、MCS-51单片机的内部硬件的主要功能
(一)中央处理单元CPU
它由运算器和控制器两部分组成。1.运算器
运算器是进行各种算术运算和逻辑运算的部件。与运算器有关的寄存器包括ACC、B、PSW。(1)累加器ACC(8位寄存器)(2)B寄存器(8位)
(3)程序状态字寄存器PSW(8位)
PSW主要用于存放程序状态信息以及运算结果的标志,所以又称标志寄存器。其格式如下(D1
位没有定义):
D7D6D5D4D3D2D1D0
CY
AC
F0
RS1
RS0
OV

P
CY——进位标志位。
4


AC——辅助进位标志位。F0——用户标志位
RS1、RS0——工作寄存器区选择控制位OV——溢出标志位。P——奇偶标志位。
2.控制器
(1)控制器的组成
控制器是由程序计数器PC、指令寄存器、译码器、定时与控制电路等组成的。
(2)程序计数器PC
PC是一个16位的寄存器,PC中的内容是下一条将要执行的指令代码的起始存放地址。当单片机复位之后,(PC)=0000H,引导CPU到0000H地址读取指令代码,CPU每读取一个字节的指令,PC的内容会自动加1,指向下一个地址,使CPU按顺序去读取后面的指令,从而引导CPU按顺序执行程序。(二)存储器
1.8051的存储器分为两大存储空间:程序存储器(ROM)空间
(1)片内4KB的程序存储器,其地址为0000H~0FFFH(2)片外64KB的程序存储器,其地址为0000H~FFFFH数据存储器(RAM)空间
(1)片内256B的数据存储器,00H~7FH为通用的数据存储区,80H~FFH为专用的特殊
功能寄存器区
(2)片外64KB的数据存储器,其地址为0000H~FFFFH
FFFFHFFFFH

1000H

0FFFH0FFFHFFH
4KB4KB特殊功能

内部外部寄存器
80H
ROMROM
7FH


(EA=1)(EA=0)
0000H0000H00H0000H
程序存储器内部数据存储器外部数据存储器

60KB外部ROM


64KB外部RAM
图1-78051的存储器结构

与8051不同的是,8751片内包含4KB的EPROM程序存储器,而8031内部不包含程序存储器。

2.程序存储器

5

(1)程序存储器主要用于存放程序和表格常数。
(2)程序存储器分为片内、片外两部分,总容量最大为64KB,地址为0000H~FFFFH。(3)EA引脚的接法
对于8051、8751等片内有程序存储器的芯片,EA引脚应该接高电平;
对于8031这种片内无程序存储器的芯片,EA引脚应该接低电平。

3.数据存储器
数据存储器主要用于存放各种数据。以下只对内部数据存储器进行介绍。

7FH
30H2FH

20H1FH


00H
用户区
位寻址区(位地址00~7F)

工作寄存器区3(R0~R7)工作寄存器区2(R0~R7)工作寄存器区1(R0~R7)工作寄存器区0(R0~R7)

图1-8内部数据存储器的结构

(1)低128B的内部数据存储器
按其功能不同划分为三个区域。①工作寄存器区(00H~1FH)
该区均分为四个小区,任何时候,只有一个区的工作寄存器可以工作,称为当前工作寄存器区。
当前区的选择可通过对寄存器PSW中的RS1、RS0两个位的设置来进行,见表1-2。
表1-2当前工作寄存器区的选择

RS1RS0当前工作寄存器区

000区

011区

102区

113区

思考题:单片机复位时,当前工作寄存器区是哪个?
6


②位寻址区(20H~2FH)
位寻址区有16个单元组成,共128个位,每个位具有位地址,表1-3中表格数据是每个位的位地址。
每个单元也可作一般的数据缓冲单元使用。

表1-3片内RAM的位寻址
字节地址
2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H
7FH77H6FH67H5FH57H4FH47H3FH37H2FH27H1FH17H0FH07H
7EH76H6EH66H5EH56H4EH46H3EH36H2EH26H1EH16H0EH06H
7DH75H6DH65H5DH55H4DH45H3DH35H2DH25H1DH15H0DH05H
位地址映象7CH74H6CH64H5CH54H4CH44H3CH34H2CH24H1CH14H0CH04H
7BH73H6BH63H5BH53H4BH43H3BH33H2BH23H1BH13H0BH03H
7AH72H6AH62H5AH52H4AH42H3AH32H2AH22H1AH12H0AH02H
79H71H69H61H59H51H49H41H39H31H29H21H19H11H09H01H
78H70H68H60H58H50H48H40H38H30H28H20H18H10H08H00H
③用户区(30H~7FH)
为一般数据缓冲区,堆栈区通常也设置在这个区域内。
(2)高128字节(特殊功能寄存器区)8051内部有21个特殊功能寄存器(简称SFR),它们均为8位的寄存器,离散分布在80H~FFH区域,剩下107个单元是没有定义的,用户不能使用。见表1-4。
有11个SFR的字节地址可被8整除(地址以0和8结尾),可以位寻址(表中已给出它们的位地址)。

7


表1-4特殊功能寄存器地址对照
SPR名称B寄存器
符号B
D7位地址/位定义D0F7
累加器A
ACC
E7
程序状态字
PSW
D7CY
中断优先级控制
IP
BF-----
I/O端口3
P3
B7P3.7
中断允许控制
IE
AFEA
I/O端口2
P2
A7P2.7
串行数据缓冲串行控制
SBUFSCON
9FSW0
I/O端口1
P1
97P1.7
定时/计数器1(高字节)定时/计数器0(高字节)定时/计数器1(低字节)定时/计数器0(低字节)定时/计数器方式选择定时/计数器控制
TH1TH0TL1TL0TWODTCON
GATE8FTF1
电源控制与波特率选择数据指针高字节数据指针低字节堆栈指针I/O端口0
PCONDPHDPLSPP0
87P0.7

F6E6D6ACBE-----B6P3.6AE---A6P2.69ESW196P1.6C/T8ETR186P0.6
F5E5D5F0BD------B5P3.5AD---A5P2.59DSW295P1.5W18DTF085P0.5
F4E4D4RS1BCPSB4P3.4ACEAA4P2.49CREN94P1.4W08CTR084P0.4
F3E3D3RS0BBPT1B3P3.3ABET1A3P2.39BTB893P1.3GATE8BIE183P0.3
F2E2D2OVBAPX1B2P3.2AAEX0A2P2.29ARB892P1.2C/T8AIT182P0.2
F1E1D1------B9PT0B1P3.1A9ET0A1P2.199TI91P1.1W189IE081P0.1
F0E0D0PB8PX0B0P3.0A8EX0A0P2.098RI90P1.0W088IT080P0.0
(87H)(83H)(82H)(81H)(80H)(8DH)(8CH)(8BH)(8A)(89H)(88H)(90H)(99H)(98H)(A0H)(A8H)(B0H)(B8H)(D0)(E0H)字节地址(F0H)
※五、计算机中的数制与编码
(一)常用数制
数制也就是进位制,计算机中常用的进位制有二进制(B字母结尾)、十进制(D字母结尾,可省略)、十六进制(H字母结尾)等。其中二进制是计算机内部使用的,十进制、十六进制通常是
8


人们书写程序或描述计算机工作过程时使用的。

(二)数制间的转换
三种进制的对应关系见表1-5。

表1-5三种进制数对照表
二进制(B)十六进制(H)十进制(D)二进制(B)十六进制(H)十进制(D)
00000001001000110100010101100111
01234567
01234567

1.十进制转换为二进制
整数部分的转换方法称为“除2取余法”。小数部分的转换方法称为“乘2取整法”。
2.二进制转换成十进制
将二进制数的各个非零位分别乘以位权之后相加求和。3.十进制转换成十六进制
整数部分的转换方法称为“除16取余法”。小数部分的转换方法称“乘16取整法”。4.十六进制转换成十进制
将十六进制数的各个非零位分别乘以位权后相加求和。5.二进制与十六进制之间的转换
二进制数转换成十六进制数的方法是:4位二进制数对应于1位十六进制数(对应关系见表1-4)。
十六进制数转换为二进制数的方法是:将每1位十六进制数用对应的4位二进制数替换。
10001001101010111100110111101111
89.ABCDEF
89101112131415
练习:
1.将194转换成二进制数2.将120转换成十六进制数
3.将10101000B转换成十进制数4.将19BH转换成十进制数
5.将二进制数1011011.110B转换为十六进制数
6.将十六进制数7B.25H转换为二进制数
(三)常用二进制编码
1.二进制编码的十进制数
十进制数用二进制编码的形式来表示,称为二——十进制编码,即:BCD码(BinaryCodeDecimal)。最常用的是8421BCD码。

9

表1-5列出了BCD码(8421码)与十进制数的对照表。互换时,可以按4位对应1位的原则,进行转换。
十进制数
01234

课堂练习:
(1)将79.32转换成BCD码
(2)将BCD码10000110.0101转换成十进制
2.字符编码(ASCll码)
计算机中的各种字符,包括0~9数字、大小写英文字母、标点符号及用于控制的特殊符号等,也必须用二进制编码表示。在计算机中一般统一使用ASCII码来表示字符。
ASCII码是美国信息交换标准代码的简称。每个字符的ASCII码是由7位二进制数构成,第八位(最高位)通常定为奇偶校验位。
例如:数字0~9的ASCII码为30H~39H;
大写字母A~Z的ASCII码为41H~5AH。
(四)带符号数的表示
在计算机中是使用数字“0”和“1”来表示数的符号的。如,“+”号用“0”表示;
“–”号用“1”表示。一个数在计算机中有三种表示方法:原码、反码、补码。下面以8位带符号数为例进行介绍。1、原码
最高位(D7位)作符号位,用“0”或“1”表示数的正或负,其余位为数值位,用来表示该数的大小,即绝对值。
例:
[+112]原码=01110000B[–112]原码=11110000B
原码所能表示的十进制范围是:–127~+127。
2、反码
正数的反码与原码相同;
负数的反码,符号位为1,数值位是将原码的数值位按位取反(即原来是“0”的,取为“1”,原来是“1”的,取为“0”)。
例:[+112]反码=01110000B
[–112]反码=10001111B
反码可表示的十进制范围是:–127~+127。
3、补码表示法
正数的补码与原码相同;
负数的补码,符号位为“1”,数值位是将反码的数值位加1形成。
10
表1-6BCD(8421)码与十进制数的对照表BCD码十进制数BCD码00000001001000110100
56789
01010110011110001001

例:[+112]补码=01110000B
[–112]补码=10010000B
用补码可表示的十进制范围是:–128~+127。
因为带符号数用补码表示,可以简化运算,所以较常用。
(五)无符号数
无符号的8位二进制数没有符号位,8位均为数值位。即:8位无符号二进制数对应的十进制范围为(0~255)。
11

第二章MCS-51单片机指令系统

一、指令的表达形式
每条指令有两种不同的表达形式:1.二进制代码(机器码)指令2.助记符(汇编语言)指令
助记符指令:MOVA,#30H
二进制代码指令:0111010000110000
助记符指令必须转换成二进制代码指令才能存入存储器。本章仅介绍助记符指令格式,对应的机器码格式可参考附录。
二、汇编语言指令格式
操作码[第一操作数][,第二操作数][,第三操作数]
(1)操作码:用来规定指令进行何种操作,是指令中不能空缺的部分。(2)操作数:表示参与指令操作的数据或数据所在的地址。为可选项。
有两个操作数时,前一个为目的操作数,后一个为源操作数。
三、指令中有关操作数符号的说明
Rn——工作寄存器R0~R7(n=0、1、2…7)。Ri——工作寄存器R0和R1(i=0或1)。
Direct——内部RAM的单元地址,地址范围为00~FFH。#data——8位立即数,即常数。#data16——16位立即数。addr16——16位目的地址。Addrll——11位目的地址。
四、MCS-51单片机指令系统
MCS—51的指令按功能分为五大类:数据传送、算术运算、逻辑运算、控制转移和位操作指令。
(一)数据传送类指令
注意:源操作数在传送前后保持不变。1.内部数据传送指令
指令功能说明
MOVA,Rn;
A←(Rn)MOVA,direct;A←(direct)MOVA,@Ri;A←((RiMOVA,#data;A←#data
MOVRn,A;
Rn←(A)MOVRn,direct;Rn←(direct)
MOVRn,#data;Rn←#data
12

MOVdirect,A;
direct←(A)MOVdirect,Rn;
direct←(Rn)MOVdirect,@Ri;direct←((RiMOVdirect1,direct2;direct1←(direct2MOVdirect,#data;direct←#dataMOV@Ri,A;(Ri←(AMOV@Ri,direct;(Ri←(directMOV@Ri,#data;(Ri←#data
MOVDPTR,#data16;
DPTR←#data16
【例2-1】设(30H)=40H,(40H)=10H,(P1)=0CAH,试判断下列程序执行后的结果。
MOVR0,#30H;R0←#30H
MOVA,@R0;A←(30H,(A)=40HMOVR1,A;R1←(A,(R1)=40HMOVB,@R1;B←(40H,(B)=10H
MOV@R1,P1;(R1←(P1,(40H)=0CAHMOVP2,P1;P2←(P1,(P2)=0CAH
结果是:(A)=40H,(B)=10H,(40H)=0CAH,(P2)=0CAH2.外部数据传送指令
此类指令完成对片外RAM单元中数据的读/写操作。

(1)读指令
MOVXA,@DPTR;
A←((DPTR))
MOVXA,@Ri;A←((Ri
(2)写指令
MOVX@DPTR,A;
(DPTR)←(A)
MOVX@Ri,A;(Ri←(A
注意:用R0和R1间接寻址时,要占用P2寄存器放外部RAM的高8位地址,R0和R1放低8位地址。
使用时,要先将低8位地址送入Ri(R0或R1),高8位地址送入P2寄存器,然后再用上述指令。
【例2-2】将片外RAM1000H单元中的内容送到2000H单元。方法一MOVDPTR,#1000H;
DPTR←#1000H
MOVXA,@DPTR;
A←((DPTR))MOVDPTR,#2000H;
DPTR←#2000HMOVX@DPTR,A;
(DPTR)←(A)
方法二MOVP2,#10H;
P2←#10H
MOVR0,#00H;
R0←#00H
MOVXA,@R0;
A←((R0))
MOVP2,#20H;
P2←#20H

13

MOVX@R0,A;
(R0)←(A)

注意:在两个片外RAM单元之间是不能直接进行数据的传送的,必须经过片内的累加器A来间接地传送。
3.访问程序存储器的传送指令(查表指令)
MOVCA,@A+PC;
PC←(PC)+1,A←((A)+(PC))MOVCA,@A+DPTR;
A←((A)+(DPTR))
其功能是到程序存储器中查表格数据送入累加器A。程序存储器中除了存放程序之外,还会放一些表格数据,又称查表指令。指令中的操作数为表格数据。
前一条指令将A中的内容与PC的内容相加得到16位表格地址;
后一条指令是将A中的内容与DPTR中的内容相加得到16位表格地址。

4.数据交换指令
XCHA,Rn;
(A)←→(Rn)XCHA,direct;(A)←→(direct)XCHA,@Ri;
(A)←→((Ri))
XCHDA,@Ri;(A)3~0←→((Ri))3~0
5.堆栈操作指令
在片内RAM的00H~7FH地址区域中,可设置一个堆栈区,主要用于保护和恢复CPU的工作现场。
(1)进栈指令
PUSHdirect;SP←(SP)+1;

(SP)←(direct);

(2)出栈指令
POPdirect;direct←((SP));

SP←(SP)-1;


二、算术运算类指令
注意大部分指令的执行结果将影响程序状态字PSW的有关标志位。(一)加法指令
ADDA,Rn;
A←(A)+(Rn)ADDA,direct;
A←(A)+(direct)
ADDA,@Ri;
A←(A)+((Ri)ADDA,#data;
A←(A)+data
ADDCA,Rn;
A←(A)+(Rn)+(CY)ADDCA,direct;
A←(A)+(direct)+(CY)
ADDCA,@Ri;
A←(A)+((Ri)+(CY)ADDCA,#data;
A←(A)+data+(CY)
如果把参加运算的两个操作数看作是无符号数(0~255),加法运算对CY标志位的影响如下:
14

(1)若结果的第7位向前有进位(C7’=1),CY=1(2)若结果的第7位向前无进位(C7’=0),CY=0
【例2-3】设有两个无符号数放在A和R2中,设(A)=0C6H(198),(R2)=68H(104),
执行指令:ADDA,R2
试分析运算结果及对标志位的影响。解:写成竖式
(A)11000110198(R2)+01101000+104(A)100101110302结果是:(A)=2EH,CY=1。

(二)加1指令

INCA;
A←(A)+1
INCRn;
Rn←(Rn)+1INCdirect;
direct←(direct)+1INC@Ri;
(Ri)←((Ri))+1INCDPTR;
DPTR←(DPTR)+1这组指令的功能是使源操作数的值加1。

【例2-4】设有两个16位无符号数,被加数存放在内部RAM的30H(低位字节)和31H(高位字节)中,加数存放在40H(低位字节)和41H(高位字节)中。试写出求两数之和,并把结果存放在30H和31H单元中的程序。

参考程序为:
MOVR0,#30H;
地址指针R0赋值MOVR1,#40H;
地址指针R1赋值MOVA,@R0;
被加数的低8位送A
ADDA,@R1;
被加数与加数的低8位相加,和送A,并影响CY标志MOV@R0,A;
和的低8位存30H单元INCR0;
修改地址指针R0
INCR1;
修改地址指针R1
MOVA,@R0;
被加数的高8位送A
ADDCA,@R1;
被加数和加数的高8位与CY相加,和送AMOV@R0,A;
和的高8位存31H单元(三)减法指令1.带借位减法指令
SUBBA,Rn;
A←(A)–(Rn)–(CY)SUBBA,direct;
A←(A)–(direct)–(CY)SUBBA,@Ri;
A←(A)–((Ri))–(CY)

15

SUBBA,#data;
A←(A)–data–(CY)
该组指令的功能是从累加器A减去源操作数及标志位CY,其结果再送累加器A。CY位在减法运算中是作借位标志。
SUBB指令对标志位的影响如下:
(1)若第7位向前有借位(C7’=1),则CY=1;
(2)若第7位向前无借位(C7’=0),则CY=0,
【例2-5】在A和R3中存有两个无符号数,设(A)=98H,(R3)=6AH,CY=1,执行指令:SUBBA,R3
分析执行结果及对标志位的影响
解:(A)1001100098H(R3)–011010106AHCY–1–1(A)001011012DH结果是:(A)=2DH,CY=0
2.减1指令
DECA;A←(A-1DECRn;Rn←(Rn-1DECdirect;direct←(direct-1DEC@Ri;(Ri←((Ri-1
这组指令的功能是使源操作数的值减1。
(四)十进制调整指令DAA
指令专用于实现BCD码的加法运算,其功能是将累加器A中按二进制相加后的结果调整成BCD码相加的结果。
(1)ADD或ADDC指令的结果是二进制数之和。(2)DA指令的结果是BCD码之和
十进制调整指令执行时会对Cy位产生影响。【例2-6】MOVA,#75HMOVR3,#69H
ADDA,R3;
(A)=DEH,CY=0MOVB,A;
(B)=DEH
DAA;
(A)=44H,CY=1
(五)乘法指令
MULAB;BA←(A×(B
指令的功能是把累加器A和寄存器B中两个8位无符号整数相乘,并把乘积的高8位存于寄存器B中,低8位存于累加器A中。
乘法运算指令执行时会对标志位产生影响:CY标志总是被清0,即CY=0;
OV标志则反映乘积的位数,若OV=1,表示乘积为16位数;
若OV=0,表示乘积为8位数。
16

(六)除法指令
DIVAB;
A商,B余←(A)÷(B)
指令的功能是把累加器A和寄存器B中的两个8位无符号整数相除,所得商的整数部分存于累加器A中,余数存于B中。
除法指令执行过程对标志位的影响:CY位总是被清0,OV标志位的状态反映寄存器B中的除数情况,若除数为0,则OV=1,表示本次运算无意义,否则,OV=0。

三、逻辑运算类指令
在MCS—51指令系统中,逻辑运算类指令有25条,可实现与、或、异或等逻辑运算操作。这类指令有可能会影响CY和P标志位的状态。
(一)累加器A的逻辑操作指令
1、累加器A清0
CLRA;A←00H2、累加器A取反
CPLA;A←(A【例2-7】设(A)=33H,执行指令
CPLA
结果是:(A)=0CCH
3、累加器A循环左移

RLAD7←D0
利用左移指令,可实现对A中的无符号数乘2的目的。【例2-8】执行下列指令后,A中的内容如何变化?
MOVA,#11H;
(A)=11H(17)RLA;
(A)=22H(34)RLA;
(A)=44H(68)RLA;
(A)=88H(136)RLA;
(A)=11H(17)
4、累加器A带进位循环左移

RLCACYD7←D0
5、累加器A循环右移
RRA
D7→D0

对累加器A进行的循环右移,可实现对A中无符号数的除2运算。6、累加器A带进位循环右移

RRCACY→D0D7

17



7、累加器A半字节交换

SWAPA
D7~D4D3~D0


功能是将累加器A中内容的高4位与低4位互换。【例2-9】设(A)=63H,执行指令
SWAPA
结果为:(A)=36H。

(二)逻辑与指令
ANLA,Rn;
A←(A)∧(Rn)ANLA,direct;A←(A)∧(direct)
ANLA,@Ri;
A←(A)∧((Ri))ANLA,#data;A←(A)∧#dataANLdirect,A;
direct←(direct)∧(A)
ANLdirect,#data;
direct←(direct)∧#data
功能是将目的操作数和源操作数按位进行逻辑与操作,结果送目的操作数。
在程序设计中,逻辑与指令主要用于对目的操作数中的某些位进行屏蔽(清0)。方法是:将需屏蔽的位与“0”相与,其余位与“1”相与即可。

(三)逻辑或指令
ORLA,Rn;
A←(A)∨(Rn)ORLA,direct;A←(A)∨(direct)
ORLA,@Ri;
A←(A)∨((Ri))ORLA,#data;A←(A)∨#dataORLdirect,A;
direct←(direct)∨(A)
ORLdirect,#data;
direct←(direct)∨#data
功能是将目的操作数和源操作数按位进行逻辑或操作,结果送目的操作数。
逻辑或指令可对目的操作数的某些位进行置位。方法是:将需置位的位与“1”相或,其余位与“0”相或即可,常用于组合数据。
(四)逻辑异或指令

18

XRLA,Rn;
A←(A)⊕(Rn)
XRLA,direct;A←(A)⊕(direct)
XRLA,@Ri;
A←(A)⊕((Ri))XRLA,#data;A←(A)⊕#data
XRLdirect,A;
direct←(direct)⊕(A)
XRLdirect,#data;
direct←(direct)⊕#data
功能是将目的操作数和源操作数按位进行逻辑异或操作,结果送目的操作数。
逻辑异或指令可用于对目的操作数的某些位取反,而其余位不变。方法是:将要取反的这些位和“1”异或,其余位则和“0”异或即可。

【例2-10】将工作寄存器R2中数据的高4位和R3中的低4位拼成一个数,并将该数存入30H。
MOVR0,#30H;
R0作地址指针MOVA,R2
ANLA,#0F0H;
屏蔽低4位
MOVB,A;
中间结果存B寄存器MOVA,R3
ANLA,#0FH;
屏蔽高4位ORLA,B;
组合数据MOV@R0,A;
结果存30H单元。

【例2-11】分析下列程序的执行结果。
MOVA,#77H;
(A)=77H
XRLA,#0FFH;
(A)=77H⊕FFH=88HANLA,#0FH;
(A)=88H∧0FH=08HMOVP1,#64H;
(P1)=64H
ANLP1,#0F0H;
(P1)=64H∧F0H=60HORLA,P1;
(A)=08H∨60H=68H

四、控制转移类指令
转移指令的功能是通过修改程序计数器PC的值,使程序执行的顺序发生变化,从而改变程序执行的方向。
(一)无条件转移指令
无条件转移指令是使程序无条件转移到指定的地址去执行。1、长转移指令
LJMPaddr16;
PC←addr16
指令的功能是将指令提供的16位地址(addr16)送入PC,然后程序无条件地转向目标地址(addr16)处执行。
addr16可表示的地址范围是(0000H~FFFFH)。

19

2、绝对转移指令
AJMPaddr11;PC←(PC+2PC10~0←addr11
指令的功能是先使程序计数器PC值加2(完成取指并指向下一条指令的地址),然后将指令提供的addrll作为转移目的地址的低11位,和PC当前值的高5位形成16位的目标地址,程序随即转移到该地址处执行。

3、相对转移指令
SJMPrel;
PC←(PC+2+rel
操作数为相对寻址方式。指令的功能是先使PC+2(完成取指并指向下一条指令地址),然后把PC当前值与地址偏移量rel相加作为目标转移地址。即:
目标地址=PC+2+rel=(PC)+rel
rel是一个带符号的8位二进制数的补码(数值范围是–128~+127),所以SJMP指令的转移范围是:以PC当前值为起点,可向前(“–”号表示)跳128个字节,或向后(“+”号表示)跳127字节。
当满足转移范围的条件下,可采用“SJMPaddr16”形式。
4、间接转移指令
JMP@A+DPTR;
PC←(A)+(DPTR)
指令的功能是将累加器A中8位无符号数与DPTR的16位内容相加,和作为目标地址送入PC,实现无条件转移。

(二)条件转移指令
条件转移指令要求对某一特定条件进行判断,当满足给定的条件,程序就转移到目标地址去执行,条件不满足则顺序执行下一条指令。可用于实现分支结构的程序。
这类指令中操作数都为相对寻址方式,目标地址的形成与SJMP指令相类似。当满足转移范围的条件下,均可用“addr16”代替“rel”。

1、累加器A的判零转移指令
JZrel;
若(A)=0则PC←(PC+2+rel,若(A)≠0则PC←(PC+2
JNZrel;若(A)≠0则PC←(PC+2+rel,若(A)=0则PC←(PC+2
第一条指令的功能是如果累加器A的内容为零,则程序转向指定的目标地址,否则程序顺序执行。
第二条指令的功能是如果累加器A的内容不为零,则程序转向指定的目标地址,否则程序顺序执行。
【例2-12】将片内RAM的40H单元开始的数据块传送到片外RAM的1000H开始的单元中,当遇到传送的数据为零则停止传送。
START:MOVR0,#40H;
片内RAM数据块首址MOVDPTR,#1000H;
片外RAM数据块首址LOOP:MOVA,@R0;
取数
JZABD;
等于零,结束MOVX@DPTR,A;
不为零,送数
20

INCR0;
地址指针加1INCDPTR;
地址指针加1SJMPLOOP;
转LOOP,继续取数ABD:SJMPABD;
踏步
2、比较转移指令
CJNEA,#data,rel;
若(A)≠data,则PC←(PC)+3+rel,若(A)=data,则PC←(PC)+3
CJNEA,direct,rel;
若(A)≠(direct),则PC←(PC)+3+rel,若(A)=(direct),则PC←(PC)+3CJNERn,#data,rel;
若(Rn)≠data,则PC←(PC)+3+rel,若(Rn)=data,则PC←(PC)+3CJNE@Ri,#data,rel;
若((Ri))≠data,则PC←(PC)+3+rel,若((Ri))=data,则PC←(PC)+3
该组指令的功能是将前两个操作数进行比较,若不相等则程序转移到指定的目标地址执行,相等则顺序执行。
指令执行过程中,对两个操作数进行比较是采用相减运算的方法,因此比较结果会影响CY标志。如前数小于后数,则CY=1,否则,CY=0。我们可以进一步根据对CY值的判断确定两个操作数的大小,实现多分支转移功能。

【例2-13】当Pl口输入数据为55H时,程序继续运行,若不为55H则程序进入等待状态。程序如下:
WAIT:MOVA,P1;
A←(P1)
CJNEA,#55H,WAIT;
(A)≠55H,转向WAIT;
(A)=55H,则顺序执行
……
【例2-14】某温度控制系统中,温度的测量值T存在累加器A,温度的给定值Tg存在60H单元。
要求:T=Tg时,程序返回(符号地址为FH);
T>Tg时,程序转向降温处理程序(符号地址为JW);

T<Tg时,程序转向升温处理程序(符号地址为SW),试编制程序。
相应的程序如下:
CJNEA,60H,L00P;
T≠Tg,转向L00PAJMPFH;
T=Tg,转向FH
LOOP:JCSW;
TTg,转向JW
3、循环转移指令
DJNZRn,rel;若(Rn)–1≠0,则PC←(PC)+2+rel,若(Rn)–1=0,则PC←(PC)+2DJNZdirect,rel;若(direct)–1≠0,则PC←(PC)+3+rel,若(direct)–1=0,则PC←(PC)+3第一条是将Rn的内容减1后进行判断,若不为零则程序转移到目标地址处执行;
若为零,则程序顺序执行。
第二条是将direct单元的内容减1后进行判断,若不为零,则程序转移到目标地址;
若为零,则程序顺序执行。
【例2-15】将片内RAM的30H~39H单元置初值00H~09H。
MOVR0,#30H;
设定地址指针MOVR2,#0AH;
数据区长度设定MOVA,#00H;
初值装入A
LOOP:MOV@R0,A;
送数

21

INCR0;
修改地址指针
INCA;
修改待传送的数据
DJNZR2,LOOP;
未送完,转LOOP地址继续送,否则传送结束
HERE:SJMPHERE;
踏步


(三)子程序调用和返回指令单片机的应用程序由主程序和子程序等形式组成。
主程序可通过调用指令去调用子程序,子程序执行完后再由返回指令返回到主程序,因此,调用指令应放在主程序中,返回指令应放在子程序中(放在最后一条的位置)。
同一个子程序可以被多次调用,子程序还可调用别的子程序,称为子程序嵌套。1、调用指令(1)长调用指令
LCALLaddr16addr16:子程序入口地址
(2)绝对调用指令
ACALLaddr11
addr11:子程序入口地址的低11位(高5位由PC定)
2、返回指令
(1)子程序返回指令RET
指令的功能:从子程序返回到主程序的断点地址。图2-1子程序的调用和返回示意图
(2)中断返回指令
RETI
指令的功能:从中断服务程序返回到主程序的断点地址。

(四)空操作指令
NOP;
PC←(PC)+1
该指令执行时不进行任何有效的操作,但需要消耗一个机器周期的时间,所以在程序设计中
22

可用于短暂的延时。

五、位操作指令

在MCS-51存储器中有两个可位寻址的区域,可利用位操作指令对这些位进行单独的操作。存储器中的两个位寻址区的分布是:
(1)片内RAM的20H~2FH区域;

(2)特殊功能寄存器中地址可被8整除的单元。
位操作指令中,bit是位变量的位地址,可使用四种不同的表示方法,下面以CY位为例进行说明。
(1)位地址(如:D7H)(2)位定义名(如:CY)
(3)寄存器名.位(如:PSW.7)
注意:累加器必须表示成:ACC.0~ACC.7。
(4)字节地址.位(如:D0H.7)

标志位CY在位操作指令中称作位累加器,用符号C表示。
(一)位传送指令
MOVC,bit;CY←(bitMOVbit,C;bit←(CY
第一条指令的功能是将bit位的内容传送到CY,第二条指令是将CY的内容传送到bit位。
(二)置位和清零指令
CLRC;CY←0
CLRbit;bit←0SETBC;CY←1
SETBbit;bit←1前两条指令的功能:位清零。
后两条指令的功能:位置1。【例2-16】
SETBRS1
CLRRS0;
设定工作寄存器2区为当前工作区
(三)位逻辑运算指令
ANLC,bit;
CY←(CY)∧(bit)ANLC,/bit;
CY←(CY)∧(bit)ORLC,bit;
CY←(CY)∨(bit)ORLC,/bit;
CY←(CY)∨(bit)CPLC;
CY←(CY)CPLbit;
bit←(bit)
【例2-17】用编程的方法实现图2-2所示电路的功能。

23



程序清单:
MOVC,P1.1
图2-2
ORLC,P1.2ANLC,P1.0MOVP1.3,C
(四位条件转移指令1、判CY的条件转移指令
JCrelJNCrel
第一条指令功能是对CY进行判断,若(CY)=1,则转移到目标地址去执行;
若(CY)=0,则程序顺序执行。
第二条指令也是对CY进行判断,若(CY)=0,则转移;
若(CY)=1,则顺序执行。若发生转移,则:目标地址=PC+2+rel
转移范围与SJMPrel指令相同,当满足转移范围的条件下,可用“addr16”代替“rel”。2、判位变量的条件转移
JBbit,relJNBbit,relJBCbit,rel
第一条指令的功能是若bit位内容为1,转移到目标地址,目标地址=(PC)+3+rel;
若为0,程序顺序执行。
第二条指令的功能是是若bit位内容为0(不为1),转移到目标地址,目标地址=(PC)+3+rel;
若为1,程序顺序执行。
第三条指令的功能是若bit位内容为1,则将bit位内容清0,并转移到目标地址,目标地址=(PC)+3+rel;
若bit位内容为0,程序顺序执行。



24


第三章汇编语言程序设计

一、程序设计概述(一)程序设计语言
1.机器语言
机器语言是用机器码编写程序。能被计算机直接识别和执行。2.汇编语言
汇编语言是用助记符编写程序。
汇编:计算机不能直接识别和执行汇编语言程序,而要通过“翻译”把源程序译成机器语言程序
(目标程序)才能执行,这一“翻译”工作称为汇编。汇编有人工汇编和计算机汇编两种方法。
反汇编:有时需要根据已有的机器语言程序,将其转化为相应的汇编语言程序,这个过程称为
反汇编。汇编语言是面向机器的,每一类计算机分别有自己的汇编语言。汇编语言占用的内存单元少,执行效率高,广泛应用于工业过程控制与检测等场合。
本章将介绍MCS-51系列单片机的汇编语言程序设计。
3.高级语言
高级语言是一种面向算法和过程并独立于机器的通用程序设计语言。如BASIC、C语言等。在MCS—51系列单片机开发应用中,单片机C语言,C51正得到越来越广泛的应用。
(二)MCS—51单片机汇编语言语句格式
标号:操作符操作数;
注释START:MOVA,30H;
A←(30H)
1.标号
标号用来标明语句地址,它代表该语句指令机器码的第一个字节的存储单元地址。标号一般规定由1~8个英文字母或数字组成,但第一个符号必须是英文字母。2.注释
注释只是对语句或程序段的含义进行解释说明,以方便程序的编写、阅读和交流,简化软件的维护,一般只在关键处加注释。(三)伪指令
伪指令:伪指令只用于汇编语言源程序中,对汇编过程起控制和指导的作用,不生成机器码。汇编结束,自动消失。
MCS—51单片机主要有8条伪指令。1.定义起始地址伪指令ORGORG16位地址或标号
功能:定义以下程序段的起始地址。

25

【例3-1】
地址指令代码源程序ORG0000H
0000H022000LJMPMAIN;
上电转向主程序
ORG0023H;
串行口中断入口地址0023H02XXXXLJMPSERVE1;
转中断服务程序ORG2000H;
主程序
2000H758920MAIN:MOVTMOD,#20H;
设T1作方式22003H758DF3MOVTH1,#0F3H;
赋计数初值2006H758BF3MOVTL1,#0F3H
2009HD28ESETBTR1;
启动T1

2.汇编语言结束伪指令END
END伪指令放在源程序的末尾,用来指示源程序到此全部结束。
3.赋值伪指令EQU
EQU用于给它左边的“字符名称”赋值,其格式为:字符EQU操作数
操作数可以是8位或16位二进制数,也可以是事先定义的标号或表达式。【例3-2】ORG0500H
AAEQUR1A10EQU10HMOVR0,A10;
R0←(10H)MOVA,AA;
A←(R1)┇
注意:EQU伪指令中的字符必须先赋值后使用,故该语句通常放在源程序的开头。
4.数据地址赋值伪指令DATA
其格式为:
字符名称DATA表达式
DATA伪指令功能和EQU相类似,它把右边“表达式”的值赋给左边的”字符名称”。这里的表达式可以是一个数据或地址,也可以是一个包含所定义字符名称在内的表达式。
DATA伪指令和EQU伪指令的主要区别是:EQU定义的字符必须先定义后使用,而DATA伪指令没有这种限制,故DATA伪指令可用于源程序的开头或结尾。
5.定义字节伪指令DB其格式为:
标号:DB项或项表项或项表:可以是一个8位二进制数或一串8位二进制数(用逗号分开)。数据可以采用二、十、十六进制和ASCll码等多种表示形式。
标号:表格的起始地址(表头地址)。
指令的功能是把“项或项表”的数据依次定义到程序存储器的单元中,形成一张数据表(只是一张定义表,数据并未真正存入这些单元)。
6.定义字伪指令DW
26

其格式为
标号:DW项或项表
DW伪指令的功能和DB伪指令相似,其区别在于DB定义的是一个字节,而DW定义的是一个字(即两个字节),因此DW伪指令主要用来定义16位地址(高8位在前,低8位在后)。
7.定义存储空间伪指令DS其格式为:
标号:DS表达式
DS伪指令指示汇编程序从它的标号地址开始预留一定数量的存储单元作为备用,预留数量由DS语句中“表达式”的值决定。8.位地址赋值伪指令BIT其格式为:
字符名称BIT位地址将位地址赋值给指定的字符。【例3-3】
K1BITP1.0
A2BIT20H
(四)机器汇编
试对如下源程序进行机器汇编:ORG1000H
SUMDATA1FHBLOCKDATA20HSTART:MOVR0,#BLOCK
MOVA,@R0CJNEA,#00H,LOOPHERE:SJMPHERELOOP:CLRA
NEXT:INCR0ADDA,@R0DJNZBLOCK,NEXTMOVSUM,ASJMPHERE
END
(五)汇编语言程序设计步骤和基本程序结构1.汇编语言程序设计步骤(1)分析问题(2)确定算法
(3)设计程序流程图
标准的流程图符号见下图:


教师演示
27



程序执行顺序流
流线端点符号
程序的开始和结束符
处理符号表示处理功能
判断符号
表示判断功能用来实现流
连接符号
图3-1流程图符号

(4)分配内存单元:分配内存工作单元,确定程序和数据区的起始地址。(5)编写汇编语言程序(6)调试程序:2.基本程序结构
包括顺序结构、分支结构、循环结构。
图3—2三种基本程序结构流程图
3.程序质量的评判标准
(1)能可靠地实现系统所要求的各种功能
(2)本着节省存储单元,减少程序长度和加快运算时间的原则
(3)程序结构清晰、简捷,流程合理,各功能程序模块化、子程序化。
二、顺序结构程序设计
1.顺序结构程序
【例3-4】编写运算程序。
设数a存放在R1中,数b存放在R2中,计算y=a2-b,并将结果放入R4和R5中。
ORG0000H
MOVA,R1
28

MOVB,AMULABCLRC
SUBBA,R2MOVR4,AMOVA,BSUBBA,#00HMOVR5,ASJMP$END
【例3-5】编写拆字程序。
将MCS—51片内RAM中20H单元中的高半字节送21H单元的低半字节,低半字节送22H单元的低半字节,两个单元的高半字节为0。
程序如下:
MOVA,20H
SWAPA
ANLA,#0FHMOV21H,AMOVA,20HANLA,#0FHMOV22H,A
课堂练习:
1.编写拼字程序。将8051片内RAM50H单元中的高半字节和51H单元的低半字节拼成一个数,
送52H单元。
【例3-6】编写查表程序。
将十六进制数转换为ASCII码。设1位十六进制数存在R0寄存器的低4位,转换后的ASCII码仍送回R0中。

解:待转换的十六进制数为0~F。根据ASCII码表可知,0~9的ASCII码为30H~39H,A~F的ASCII码为41H~46H。将以上ASCII码值列成表格。

ORG0000H
MOVDPTR,#ASCTABMOVA,R0ANLA,#0FH
MOVCA,@A+DPTR;A中为表格中数据的序号,DPTR中放表头地址MOVR0,ASJMP$
ASCTAB:DB30H,31H,32H,33H,34HDB35H,36H,37H,38H,39H
DB41H,42H,43H,44H,45H,46HEND

29

三、分支结构程序设计在程序设计中,经常需要计算机对某情况进行判断,然后根据判断的结果选择程序执行的流向,这就是分支程序。
在汇编语言程序中,通常利用条件转移指令形成不同的程序分支。1.单分支程序【例3-7】在片内RAM30H单元中存有一个带符号数,试判断该数的正负性,若为正数,将6EH
位清0;
若为负数,将6EH位置1。
SUB1:MOVA,30H;
30H单元中的数送A
JBACC.7,LOOP;
符号位等于1,是负数,转移CLR6EH;
符号位等于0,是正数,清标志位RET;
返回
LOOP::SETB6EH;
标志位置1
RET;
返回

2.多分支程序
【例3-8】比较片内RAM的50H和51H单元中两个8位无符号数的大小,把大数存入60H单元,若两数相等则把标志位70H置1。
SUB:MOVA,50H
CJNEA,51H,LOOPSETB70HRET
LOOP:JCLOOP1MOV60H,ARET
LOOP1:MOV60H,51HRET
四、循环结构程序设计
循环程序设计不仅可以大大缩短所编程序的长度,使程序所占内存单元数最少,也能使程序结构紧凑和可读性变好。(一)循环程序的基本结构
1.循环初始化
2.循环工作部分(是循环程序的主体,需要重复执行的程序段)3.循环控制部分(完成对变量的修改)4.循环终止判定部分
(二)循环结构程序设计
【例3-9】试编写程序,求片内RAM的30H~39H单元中数的和,将结果存放在R2和R3中。
ORG0000H
NSUN:MOVR1,#10;
数据块长度送R1,(计数器置初值)
图3-3循环程序结构
MOVR2,#00H;
R2清零
MOVR3,#00H;
R3清零
MOVR0,#30H;
数据块首地址送R0
30

LOOP:MOVA,R3ADDA,@R0MOVR3,A;
和数的低字节送R3
CLRA
ADDCA,R2
MOVR2,A;
和数的高字节送R2INCR0;
修改地址指针
DJNZR1,LOOP;
数据未加完继续执行RETEND
【例3-10】求一组单字节无符号数中最大值。设内部RAM20H单元为数据块的起始地址,块长度为10,试编程求数据块中的最大值并存入30H单元中。
相应的程序为:
MOVR0,#20H;
数据块首地址送R0MOVR6,#0AH;
数据块长度送R6MOV30H,#00H;
30H←00H
LOOP::MOVA,@R0;
数据块的数读入A中CJNEA,30H,NEXT
NEXT:JCLOOP1;
(A)(30H)则大数送30HLOOP1:INCR0;
修改数据块指针R0
DJNZR6,LOOP;
未比较完,转LOOP(循环)SJMP$图3-4找最大值程序流程图
思考:若将程序中的JC指令改为JNC指令,要使程序功能不变,程序将作如何修改。



31

第四章并行I/O口
一、并行I/O口的应用举例
1.按键控制发光二极管(K1按下L1亮,K2断开L2亮。
+5V
12345678
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7
39383736353433322122232425262728
470Ω
L1
470Ω
L2
21
21+5V
10K10K
20P1918
XTAL1XTAL2
K1K2
GND
20P
+5V
4.7u9
RESETALE
30
GND
1K
INT0
MCS-51
12

GND
图4-1
2.流水灯控制(P1口接8个发光二极管,每隔0.1秒轮流点亮一个发光二极管。
+5V
470Ω
L0
21
470Ω
L7
21
12345678
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7
39383736353433322122232425262728
20P1918
XTAL1XTAL2
GND
20P
+5V
+
4.7u9
RESETALE
30
1k
INT0
MCS-51
12

GND
图4-2
32

二、并行口基本知识
MCS—51系列单片机芯片内部集成有四个并行I/O口(P0~P3),共32条I/O线,每一个I/O线都能独立地用作输入或输出。8位同时使用可实现8位数据同时传送。(一)并行I/O口的功能
1.P0~P3口的第一功能:
作通用输入/输出口,用于连接外部设备。2.P0、P2、P3口的第二功能
(1)P0、P2口用于扩展外部总线
图4-3MCS—51单片机片外三总线的扩展方法
(2)P3口的第二功能(表4-1)

表4-1P3口各位的第二功能
P3口引脚P3.0P3.1P3.2P3.3
第二功能
RXD(串行口输入端)TXD(串行口输出端)
P3口引脚P3.4P3.5P3.6P3.7
第二功能
T0(定时器0外部输入)T1(定时器1外部输入)
INT0(外部中断0输入)INT1(外部中断1输入)
WR(外部数据存储器写脉冲输出)
RD(外部数据存储器读脉冲输出)

(二)各口的位结构原理
1.每个口中由8位锁存器构成一个8位的特殊功能寄存器,即P0~P3寄存器。2.P0口要外接上拉电阻,以满足输出高电平的需要。3.P0~P3口作输入口时,要向口内的锁存器写1。
(三)I/O口的负载能力
每条I/0线的最大电流为1mA。
(四)输入/输出操作
有三种操作方式:输出数据方式、读锁存器方式和读引脚方式。
33

1.输出数据方式
通过一条数据操作指令即可把输出数据写入P0~P3端口锁存器,然后通过输出驱动器送到端口引脚线输出。例如:
MOVPX,A
或:MOVPX,#ata
2.读引脚方式
它可从端口引脚线上读入数据。读引脚时,首先应使欲读引脚对应的端口锁存器置位,以便使驱动器中V2管截止;
然后打开输入三态门,使相应引脚上的信号输入内部总线。因此读引脚时必须连续使用两条指令:
MOVPX,#0FFH;
将PX口各位置1
MOVA,PX;
读入PX口引脚线信号

3.读端口数据方式
它是一种仅对端口锁存器中数据进行读入的操作方式,读入的数据并非是端口引脚线上的数据。这些指令都是属于读端口锁存器的“读一修改一写”指令。
例如下面的一些指令:
ANLPx,#data
ORLPx,#data
XRLPx,#data
图4-4并行I/O口内部结构图

34

三、并行I/O口的程序设计

1.按键控制发光二极管(见图4-1
ORG0000H
START:MOVP2,#0FFHLOOP:MOVC,P2.5JNCK1CLRP1.2SJMPK2K1:SETBP1.2K2:MOVC,P2.6JCK21CLRP1.3SJMPLOOPK21:SETBP1.3
SJMPLOOP
END
2.流水灯(见图4-2)
ORG0000HMOVA,#01H
LOOP:MOVP1,A
LCALLDELAYRLA
SJMPLOOP
DELAY:MOVR2,#200DEL1:MOVR3,#126
NOP
DEL2:DJNZR3,DEL2DJNZR2,DEL1
RET;延时0.1秒子程序
END
四、音乐输出
单片机P1.0带一个蜂鸣器,发出生日快乐的音乐。
单片机用作可编程乐曲演奏器的原理是:通过控制定时器的定时来产生不同音阶的声音,再利用延迟来控制发音时间的长短,即可控制音频中的节拍。把乐谱中的音符和相应的节拍变换为定常数和延迟常数,作成数据表格存放在存储器中。由程序表得到定时常数和延迟常数,分别用以控制定时器产生方波的频率和发出该频率方波的持续时间。当延迟时间到时,再查下一个音符的定时常数和延迟常数。依次进行下去,就可自动演奏出悦耳动听的乐曲。

35

下面是歌曲“新年好”的一段简谱:
1=C1115|33331|1355|433—|
用定时器T0方式1来产生歌谱中各音符D200(延时200ms)次数来实现,以每拍800ms的节拍时间为例,那么一拍需要循环调用D200延时子程序4次。同理,半拍就需要调用2次。设单片机晶振频率为6MHz,乐曲中的音符、频率及定时常数三者的对应关系如下:
C调音符频率(Hz)半周期(ms定时值

53921.28
64401.14
74941.01
15240.95FE25
25880.85FE57
36600.76FE84
46980.72FE98
57840.64FEC0
68800.57FEE3
79880.51FF01
FD80FDC6FE07

图4-5
程序清单:
ORG0000HAJMPMAINORG000BH
MOVTH0,R1MOVTL0,R0CPLP1.0RETIORG0050H
MAIN:MOVTMOD,#01HMOVIE,#82HMOVDPTR,#TABLOOP:CLRAMOVCA,@A+DPTRMOVR1,A
36
INCDPTR
CLRAMOVCA,@A+DPTRMOVR0,AORLA,R1JZNEXT0MOVA,R0ANLA,R1CJNEA,#0FFH,NEXTSJMPMAIN
NEXT:MOVTH0,R1MOVTL0,R0SETBTR0
SJMPNEXT1
NEXT0:CLRTR0

NEXT1:CLRAINCDPTRMOVCA,@A+DPTRMOVR2,ALOOP1:ACALLD200DJNZR2,LOOP1INCDPTRAJMPLOOPD200:MOVR3,#0a0HCJNER3,#00H,D200B
RET
TAB:DB0FEH,25H,02H,0FEH,25H,02HDB0FEH,25H,04H,0FDH,80H,04HDB0FEH,84H,02H,0FEH,84H,02HDB0FEH,84H,04H,0FEH,25H,04HDB0FEH,25H,02H,0FEH,84H,02HDB0FEH,0C0H,04H,0FEH,0C0H,04HDB0FEH,98H,02H,0FEH,84H,02HD200B:MOVA,#0FFHD200A:DECAJNZD200ADECR3



DB0FEH,57H,08H,00H,00H,04HDB0FFH,0FFHEND
37

第五章并行I/O口的扩展

一、并行I/O口的扩展方法
1.总线扩展方法
必须先扩展单片机外部三总线。使用通用I/O扩展芯片(如8255)、TTL等芯片进行扩展。
2.串行口扩展方法
下面只讨论前一种方法。
二、外部三总线扩展
(一)外部三总线的结构
AB)地址总线(


MCS51
数据总线(DB)
单片机



控制总线(CB)

数据存储器
程序存储器
I/O接口
I/O接口


外部设备
外部设备
图5-1MCS-51单片机外部三总线结构
(二)外部三总线的扩展

MCS-51单片机的外部三总线主要是由它的P0、P2口及P3口的部分结构扩展而成的。1、地址总线
地址总线共16条:P0口(P0.7~P0.0)作低8位地址线(A7~A0);
P2口(P2.7~P2.0)作高8位地址线(A15~A8)。2、数据总线
数据总线有8条:P0口(P0.7~P0.0)作8位数据线(D7~D0)。3、控制总线
(1)ALE:地址锁存信号,实现对P0口上送出的低8位地址信号的锁存。(2)RD(P3.7):片外读选通信号,低电平有效。(3)WR(P3.6):片外写选通信号,低电平有效。
P0口既要用作低8位地址总线,又要用作数据总线,使用时只能是分时起作用。用地址锁存器锁存低8位地址。


38


图5-2MCS—51单片机片外三总线的扩展方法
4.地址锁存器

地址锁存器一般选择以下降沿锁存的芯片,例如:74LS373、8282等;


图5-3
三、地址译码器74LS138

图5-4
1.引脚功能
74LS138芯片内部是一个3:8译码器。引脚功能如下:
E1、E2、E3:使能端,E1、E2低电平有效,E3高电平有效
A、B、C:译码器的输入端
Y0~Y7:译码器的输出端,可用作片选信号
39

74LS138的真值表

2.地址译码
+5V
10K×8
D7~D03478131417181
GND
D0D1D2D3D4D5D6D7E
74LS373
Q0Q1Q2Q3Q4Q5Q6Q7G
25691215161911
A7~A0
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7
20P
1819
GND
20P
+5V
4.7u9
U?XTAL2GNDXTAL1
P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7RDWRALE
MCS-51
3938373635343332
RST
2122232425262728171611
123645
ABCE3E1E2
1k
Y0Y1Y2Y3Y4Y5Y6Y7
15141312111097
CS0(8000HCS1(9000HCS2(A000HCS3(B000HCS4(C000HCS5(D000HCS6(E000HCS7(F000H
GND
74LS138
GND

图5-5

四、应用一
1.用8255A芯片扩展并行I/O口(18255A内部的并行I/O口3个并行I/O口,均为8位:
PA口:通过编程可以分别设置成单向输出、单向输入或者分时输入输出。
40

PB口:通过编程可以分别设置成单向输出和单向输入。
PC口:可分为高4位PC7~4和低4位PC3~0两个独立部分。PC端口可否独立控制取决
于PA端口和PB端口的工作方式。
另外,还有一个命令口,放命令字。(2引脚
数据总线D7~D0:8255A与CPU交换控制和数据信息的路径。片选输入控制线CS:来自I/O地址译码电路,低有效。
读出控制RD和写入控制WR:来自CPU的读写输出控制信号,低有效。
地址输入线A1、A0:来自地址锁存器输出,用于寻址内部PA端口、PB端口、PC端口和
命令端口之一。

A1A0地址
选中的端口
00PA01PB10PC11
命令端口

复位控制输入线RESET:8255A电路与CPU同步复位。PA7~0:PA端口的8位I/O引脚,传送方向由编程决定。
PB7~0:PB端口的8位I/O引脚,传送方向由编程决定。PC7~0:PC端口的8位I/O引脚,传送方向由编程决定。(3)8255A的命令字格式与功能

图5-68255A命令字格式
功能说明:

D0PC3~PC0方向设置,0---输出方向;1---输入方向D1PB端口方向设置0---输出方向;
1---输入方向D2PB端口工作模式0---通用输入/输出口(模式0);

1---选通输入/输出口(模式1)
D3PC7~PC4方向设置0---输出方向1---输入方向D4PA端口方向设置0---输出方向1---输入方向D6、D5PA端口工作模式
00通用输入/输出(模式0)01选通输入/输出(模式1)
1X选通输入/输出(模式2)
(4)接口电路(PA作输出口)

41


+5V
10K×8
34333241322
L1
+5V
P0.03934D0D1Q0Q125D0D1PA0PA1470Ω
P0.1387378D2Q2631D2PA2D3Q39174LS04
P0.23613D4Q41230D3PA340P0.33514D5Q51529D4PA439P0.43417D6Q61628D5PA538P0.53318D7Q71927
D6PA6D7PA73712
P0.6P0.7
32
1E
G
11
PB01820P
181974LS04
XTAL2U?9PB1A02019
GNDGND
PB22174LS373
8A1PB321XTAL1
P2.022PB422P2.1236
CS
PB523GND
P2.224115PB62420P
P2.3252AY014PB725P2.4P2.5263BY127CY213PC014P2.6286Y312PC1159
P2.74E3Y41116RST
RD17PC2165
E1Y5105E2
Y6936RDWRPC317WR11
Y7
7
35
RESET
PC413ALE
PC512MCS-51
GND
74LS138
PC611PC7
10
8255
图5-7

2.流水灯控制
用8255A的PA口接8个发光二极管,每隔0.1秒轮渡点亮一个发光二极管。
ORG0000H
MOVDPTR,#8003HMOVA,#80H
MOVX@DPTR,A;将PA口置为模式0,输出方式MOVA,#01H
MOVDPTR,#8000HLOOP:MOVX@DPTR,A
LCALLDELAYRLA
SJMPLOOP
DELAY:MOVR2,#200DEL1:MOVR3,#126
NOP
DEL2:DJNZR3,DEL2
42
470Ω
L7

DJNZR2,DEL1
RET;延时0.1秒子程序
END
五、应用二
LED16x16点阵显示汉字1.16x16点阵电路的原理

图5-8

2.程序

ROWLOWEQU0B002H;行低八位地址ROWHIGHEQU0B003H;行高八位地址COLLOWEQU0B000H;列低八位地址COLHIGHEQU0B001H;列高八位地址

ORG0000HLJMPMAINMAIN:MOV40H,#0
MOV41H,#0;清屏
MOVA,#00H;行驱动高有效

43

MOVDPTR,#ROWLOWMOVX@DPTR,A
MOVDPTR,#ROWHIGHMOVX@DPTR,A
MOVA,#0FFH;列驱动低有效MOVDPTR,#COLLOWMOVX@DPTR,A
MOVDPTR,#COLHIGHMOVX@DPTR,A
LOOP0:LOOP:NEXTROW:44
MOVR5,#0;汉字个数
MOVR4,#50;每个字显示的时间MOV40H,#01;选择显示行MOVR2,#16;每行16列
MOVA,R5;字模的起始地址MOVB,#32MULAB
MOVDPTR,#FONTADDA,DPLMOV42H,AMOVA,BADDCA,DPHMOV43H,A
MOVA,#00H;先关闭显示
MOVDPTR,#ROWLOWMOVX@DPTR,A
MOVDPTR,#ROWHIGHMOVX@DPTR,A
MOVDPL,42H;取出该行字模MOVDPH,43HCLRA
MOVCA,@A+DPTRMOVR0,AINCDPTRCLRA
MOVCA,@A+DPTRMOVR1,AINCDPTR
MOV42H,DPL;指向下行字模MOV43H,DPH
MOVDPTR,#COLLOW;输出字模数据MOVA,R0CPLA
MOVX@DPTR,A
MOVDPTR,#COLHIGH

MOVA,R1CPLA
MOVX@DPTR,A
MOVA,40H;点亮该行MOVDPTR,#ROWLOWMOVX@DPTR,AMOVA,41H
MOVDPTR,#ROWHIGHMOVX@DPTR,ACLRC
MOVA,40HRLCA
MOV40H,AMOVA,41HRLCA
MOV41H,A;指向下一行MOVR7,10LCALLDELAY
DJNZR2,NEXTROWDJNZR4,LOOP;每个字要重复显示INCR5;指向下个汉字MOVA,R5CJNER5,#10,NEXTCHARLJMPMAIN;NEXTCHAR:LJMPLOOP0
DELAY:DJNZR7,DELAYRET
;字模每个16X16点阵汉字为:8位X2X16=256位,32字节FONT:
;南
DB008H,040H,014H,041H,004H,041H,004H,041HDB0F4H,05FH,004H,041H,004H,041H,0F4H,05FHDB044H,044H,024H,048H,0FEH,07FH,004H,001HDB000H,001H,0FEH,0FFH,004H,001H,000H,001H;京
DB000H,002H,008H,025H,018H,011H,030H,009HDB040H,009H,000H,001H,0F0H,01FH,010H,010HDB010H,010H,010H,010H,0F8H,01FH,010H,000HDB0FEH,0FFH,004H,001H,000H,001H,000H,002H;伟
DB040H,010H,040H,010H,048H,010H,054H,010HDB044H,010H,044H,010H,0FEH,01FH,044H,010HDB040H,090H,0FCH,057H,048H,030H,040H,010HDB0FEH,017H,044H,008H,040H,008H,040H,008H

45

;福
DB004H,014H,0FCH,017H,044H,014H,044H,014HDB0FCH,017H,044H,014H,044H,094H,0FEH,057HDB004H,038H,0F8H,013H,008H,00AH,008H,0FAHDB0F8H,003H,000H,010H,0FCH,017H,008H,020H;实
DB004H,060H,00CH,018H,010H,004H,020H,002HDB040H,001H,000H,001H,0FEH,0FFH,084H,004HDB080H,00CH,080H,010H,080H,002H,084H,086HDB;业
DBDBDBDB;有
DBDBDBDB;限
DBDBDBDB;公
DBDBDBDB;司
DBDBDBDBEND
46
002H,048H,0FEH,07FH,000H,001H,000H,002H000H,000H,0FEH,0FFH,044H,004H,040H,004H040H,004H,060H,014H,050H,014H,050H,014H048H,014H,048H,024H,044H,024H,044H,044H040H,004H,040H,004H,040H,004H,040H,004H020H,008H,050H,008H,010H,008H,010H,008H0F0H,00FH,010H,088H,010H,048H,0F0H,02FH010H,018H,010H,008H,0F8H,00FH,010H,004H000H,004H,0FEH,0FFH,004H,002H,000H,002H000H,041H,084H,041H,04EH,041H,010H,051H020H,069H,050H,045H,088H,045H,004H,045H0F8H,049H,008H,049H,008H,051H,0F8H,049H008H,049H,008H,045H,0FCH,07DH,008H,000H000H,000H,010H,000H,0F0H,01FH,020H,010H040H,008H,000H,004H,000H,002H,004H,0C2H00EH,021H,010H,011H,020H,008H,040H,008H040H,004H,080H,004H,080H,000H,000H,000H010H,000H,028H,000H,088H,020H,088H,03FH088H,020H,088H,020H,088H,020H,088H,020H0C8H,03FH,088H,000H,008H,000H,0E8H,0FFH048H,000H,008H,000H,0FCH,03FH,008H,000H

第六章中断系统

一、中断系统概念
(一)什么是中断系统?
是指单片机中实现中断功能的相关硬件和软件的集合。
(二)什么是中断功能?
当CPU正在执行程序时,单片机的内部或外部发生了某一事件(如定时/计数器溢出,INT0、INT1引脚上电平突变等)请求CPU迅速去处理,于是CPU暂时中断当前的程序,转去处理发生的事件(执行一段中断服务程序),处理完成后,再回到原来被中断的地方,继续执行原来的程序,这一过程称为中断。
中断过程由中断系统自动完成。
(三)什么是中断源?
在中断系统中,把引起中断的设备或事件称为中断源。

二、MCS-51中断系统
1.中断源
(1)内部中断源3个
T0:定时/计数器0中断,由T0加1计数溢出置TCON寄存器的TF0位为1,从而向CPU申请中断。
T1:定时/计数器1中断,由T1加1计数溢出置TCON的寄存器的TF1位为1,从而向CPU申请中断。
TI/RI:串行口发送(TXD)及接收(RXD)中断,串行口完成一帧字符发送/接收后置SCON的TI/RI位为1,从而向CPU申请中断。

(2)外部中断源2个
外部中断0(INT0):由P3.2端口接入,低电平或下降沿触发。外部中断1(INT1):由P3.3端口接入,低电平或下降沿触发。

2.中断入口地址
CPU响应某个中断事件时,将会自动转入固定的地址执行中断服务程序,各个中断源的中断入口地址见表6—1。
表6—1各中断源的入口地址
中断源
外部中断0
中断入口地址
0003H000BH0013H001BH0023H
INT0INT1
定时/计数器0溢出中断T0外部中断1
定时/计数器1溢出中断T1串行口中断TI/RI

3.中断标志与中断控制寄存器(1)中断控制寄存器TCON

47

推荐访问:单片机 调研报告 单片机应用调研报告 单片机应用调研报告 单片机调查报告

版权所有:360文档网 2013-2025 未经授权禁止复制或建立镜像[360文档网]所有资源完全免费共享

Powered by 360文档网 © All Rights Reserved.。备案号:京ICP备13037083号-1