第一篇:单片机实习报告 - 副本
单片机实习报告
姓名:
专业:
班级:
学号:
实习日期: 指导教师:
目录
一、实习名称与简介。。。。。。。。。。。。。。。。。。。
二、实习原理。。。。。。。。。。。。。。。。。。。。。。
三、实习目的。。。。。。。。。。。。。。。。。。。。。。
四、实习步骤与内容。。。。。。。。。。。。。。。。。。。
五、实习结论。。。。。。。。。。。。。。。。。。。。。。
六、实习心得。。。。。。。。。。。。。。。。。。。。。。
一、实习名称与简介
数字电子时钟设计实习
单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,单片机都起到了举足轻重的作用。
所以单片机技术也日趋成熟。单片机是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强。而51系列单片机是各单片机中最为典型和最有代表性的一种。
此次单片机原理及应用实习通过利用51单片机对电子钟的设计,从而达到学习、了解单片机相关指令在各方面的应用,以及初步了解开发软、硬件的知识。
二、实习原理
本文数字时钟设计原理主要利用AT89C51单片机, P2口控制LCD1602显示。整个系统工作时,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计
60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”计数器的输出,通过LCD1602显示器显示出来。
三、实习目的课程设计的主要目的是通过对电子时钟的设计实践,了解单片机系统控制过程、设计要求、应完成的工作内容和具体设计方法。通过设计也有助于复习、巩固以往所学的知识,达到灵活应用的目的。课程设计应强调能力培养为主,在独立完成设计任务的同时,还要注意其他方面的能力的培养与提高,如独立工作能力与创造力;综合运用专业及基础知识的能力,解决实际工程技术问题的能力;差于图书资料、产品手册和各种工具书的能力;工程绘图的能力;书写技术报告和编制技术资料的能力。
四、实习步骤与内容
程序:
五、实习结论(截图)
六、实习心得
七、参考文献:
[1] 华成英,童诗白.模拟电子技术基础.高等教育出版
社,2007年8月
[2] 李群芳,张士军,黄建.单片微型计算机.电子工业出版社,2009年2月
[3] 赵辉,刘印华.PROTEL 99电子线路CAD.北京邮电大学出版社.2008年1月
[4] 实用单片机电子钟的设计/丁辉、姚庆文
年合订本
[ 无线电2003
第二篇:单片机实习报告
单片机实习报告
单片机>实习报告
(一)这次实习我们使用控制电路的单片机是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。特性是:⑴8031 CPU与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以及其他功能部件,如串行口,中断都恢复到一个确定初始状态,并从这个状态开始工作。
复位电路有两种:上电、按钮复位,考虑到各部件影响,采用按钮复位,当电阻给电容充电,电容的电压为高电平,当按下按钮时芯片复位脚近似低电平,于是芯片复位。
单片机实习报告
(二)一、生产实习的目的和意义:
生产实习是培养本科学生理论联系实际,提高实际动手操作能力的重要教学环节。本专业的生产实习旨在使学生广泛了解实际电子产品生产的全过程,熟悉电子产品的主要技术管理模式,并在实习的操作过程中学习、掌握电子产品的焊接、安装、调试的实际操作技能。巩固和加深理解所学的理论,开阔眼界,提高能力,为培养高素质大学本科人才打下必要的基础。通过学习,是理论与实际相结合,可以使学生加深对所学知识的理解,并为后续专业课的学习提供必要的感性知识,同时使学生直接了解本业的生产过程和生产内容,为将来走上工作岗位提供必要的实际生产知识。
二、实习的基本内容:
集中授课,进行相关知识的学习。
学习、掌握电子产品的独立性设计与安装、调试的能力;进一步掌握电子测量仪器的正确使用方法,电元器件的测量与筛选技术。
初步了解电子整机产品的工艺过程。
为能使学生得到充分的锻炼,较大的提高学生的实际动手能力,本次生产实习安排每一位学生独立完成全部系统的设计与安装工作。
本实习环节,学生要独立使用电焊铁及各种电子测试设备电路安装与调试,要学生严格遵守电器设备的使用安全,遵守实验室的各项>规章制度。
三、基本要求:
在教师的指导下练习在测试电路德核心板上焊接元件,掌握焊接要领。
熟悉元器件的性能及管脚分配。
在给定的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,3.3V电压转换芯片LM1117-3.3,2.5V电压转换芯片LM1117-2.5。
该电路的设计思想主要是了解芯片的作用和特点,寻找各芯片之间的联系,VS1003芯片是该模块的主要部分。单片机设有单独解码MP3文件的功能,而单片机可与通过VS1003的接口电路的连接,进行MP3的解码,实现音频的输出。通过芯片各引脚的功能和特点,合理的设计出相应的外围电路。
(四)RFID模块电路的设计
该模块的电路所用到的主要芯片为13.56MHZ的非接触式通信读卡芯片FM1702。该芯片是基于ISO/4443标准的非接触卡读卡机专用芯片,采用0.6微米CMOS、EEPROM工艺,支持13.56MHZ频率下的type A非接触式通信协议,支持多种加窗算法,兼容philips的MFRC530(SPI接口)读卡机芯片。
该模块的电路设计思想是基于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,0.5K的数据RAM,串行的控制和数据输入接口,4个通用IO口,1个UART口;同时片内带有一个可变采样率的DAC,一个立体声DAC以及音频耳机放大器;VS1003通过一个串行接口来接收输入的比特流,它可以作为一个系统的从机。
与单片机连接的引脚主要有7个,分别为:SO、SI、SCLK、XDCS、XRESET、DREQ、MOSI,只有保证它们与单片机正确可靠的连接,才能对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(ACMDA口)命令断开上拉电阻的连接。MMC卡的该引脚在SD模式下为保留引脚,在SD模式下无任何作用。对于2号引脚CMD,MMC卡在SD模式下为IO/PP/OO,MMC卡在SPI模式下为I/PP。
关于电压匹配问题,SD卡的逻辑电平相当于3.3V TTL电平标准,而单片机的逻辑电平为5V。因此,它们之间不能直接相连,否则会有烧毁SD卡的可能。解决逻辑器件接口的电平兼容问题,原则主要有两条:一为输出电平器件输出高电平的最小电压值,应大于接受电压器件识别为高电平的最低电压值;二为输出电平器件输出低电平的最大电压值,应小于接受器件识别为低电平的最高电压值。考虑到SD卡在SPI协议的工作模式下,通讯都是单向的,于是在单片机向SD卡传输数据时采用晶体管加上拉电阻法的方案。在SD卡向单片机传输数据时,可以直接连接。因为它们之间的电平刚好满足上述的电平兼容原则,既经济又实用。该方案可以双电源供电(一个5V电源,一个3.3V电源供电),3.3V电源可用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、寄存器内部PWR、VP和PRIM、RX共同控制。nRF24L01所有的配置都由配置寄存器来定义,这些配置寄存器可通过SPI口访问。SPI接口由SCK、MOSI、MISO及CSN组成,在配置模式下单片机通过SPI接口配置nRF24L01的工作参数,在发射或接收模式下单片机SPI接口发送和接收数据。
单片机的控制指令从nRF24L01的MOSI引脚输入,而nRF24L01的状态信息和数据是从其MISO引脚输出并送给单片机的。利用SPI传输数据时,是先传输低位字节,再传输高位字节,并且在传输每个字节时是从高位传起。
六、单片机软件系统工作流程
通过使用STC-ISP软件,STC12C5A60S2单片机可实现串口在线编程。由于现在大的数据计算机都不存在提供单独的串口,所以需要USB转RS232串口线。
USB转RS232串口设备驱动程序的安装
STC-ISP V483串口下载软件
七、实习过程心得:
新学期伊始,就迎来了为期四周的单片机生产实习。在这次生产实习过程中,我受益颇多。这是我们经历的第一次广泛了解实际电子产品生产的全过程。从最初的设计,到焊接,安装,调试,我们都是逐一亲自动手操作完成的。在这次实习中,我们遇到了不少问题,但正是因为有了这些问题,才有了我们更加深入学习的机会。为了解决这些问题,我们查资料,探讨,请教老师,充分利用自己身边的一切资源来学习。这样的学习过程让我们对所学内容理解的更深刻,而且大大提高了我们的团结协作能力。在实际操作焊接的过程中,我们从笨拙到熟练,动手能力不断提高,有了很大的进步。这为我们以后步入工作岗位做了良好的铺垫。
总之,通过这次生产实习,我受益匪浅,各方面的能力都有了提高。最后,感谢在实践过程中悉心指导的每一位老师!
第三篇:单片机实习报告
实
习
报
告
实习名称 :
嵌入式系统 实习
系部名称 :
信科院
专业班级:
:
计本 08 -5
学生姓名:
:
陈鹏任
学
号:
:
3080417907
指导教师:
:
陈小琴 金红 杨光杰
日 日
期:
2010.12.18
一. 引言
目前,嵌入式技术已成为通信和消费类产品的共同发展方向。嵌入式系统几乎包括了生活中的所有电器设备,如掌上PDA、移动计算设备、电视机顶盒、手机上网、数字电视、多媒体、汽车、微波炉、数字相机、家庭自动化系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备、工业自动化仪表与医疗仪器等。
嵌入式系统是先进的计算机技术、半导体技术、电子技术和各个行业的具体应用相结合的产物,这就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统一般指非PC系统。它是以应用为中心、软硬件可裁减的、能适应应用系统对功能、可靠性、成本、体积、功耗等综合性要求的专用计算机系统。简单地说,嵌入式系统是集系统的应用软件与硬件于一体,类似于PC中BIOS的工作方式,具有软件代码小、高度自动化、响应速度快等特点,因此特别适合于要求实时和多任务的系统。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成。
通过这次实训,老师让我们了解最基本的嵌入式系统设计,开发的流程,结合掌握所学的知识,做出一个单片机与上位机通信的简单嵌入式系统。
二.课题设计 1 .基本原理
MCS-51 单片机串行口发送/接收数据时,通过 2 个串行缓冲器 SBUF 进行,这 2 个缓冲器采用一个地址(98H),但在物理上是独立的。其中接收缓冲器只能读出不能写入,发送缓冲器只能写入不能读出。
① 发送过程,由指令 MOV SBUF,A 启动,此时待传送的数据由 A 累加器传入串行发送缓冲器 SBUF,由硬件自动在发送字符的始、末加上起始位(低电平)、停止位(高电子)及其它控制位(如奇偶位等),而后在移位脉冲的控制下,低位在前,高位在后,逐位从 TXD 端(方式 0 除外)发出。
② 接收过程,串行口的接收与否受制于允许接收位 REN 的状态,当 REN 被软件置“1”后,允许接收器接收。串口的接收器以所选波特率的 16 倍速对 RXD线进行监视。当“1”到“0”跳变时,检测器连续采样到 RXD 线上低电平时。便认定 RXD 端出现起始位,继而接收控制器开始工作。在每位传送时间的第 7、8、9 三个脉冲状态采样 RXD 线,决定所接收的值为“0”或“1”。当接收完停止位后,控制电路使中断标志 R1 置为“1”,此时程序可通过 MOV
A,SBUF指令将接收到的字符从 SBUF 送入累加器 A,从而完成一帧数据的接收工作。
2.原理框架
3.硬件电路原理 图,对各模块进行分别介绍
单
片
机 LCD 显示电路 复位电路 时钟电路 电源电路 串行口通信电路
3.1 液晶显示模块
1602LCD 采用标准的 14 脚(无背光)或 16 脚(带背光)接口,各引脚接口如下所示
接口信号说明 编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 Data I/O 2 VDD 电源正极 10 D3 Data I/O 3 VL 液晶显示偏压信号 11 D4 Data I/O 4 RS 数据/命令选择端(H/L)D5 Data I/O 5 R/W 读/写选择端(H/L)D6 Data I/O 6 E 使能信号 14 D7 Data I/O 7 D0 Data I/O 15 BLA 背光源正极 8 D1 Data I/O 16 BLK 背光源负极 用 LCD1602 液晶显示模块显示字符或字符串之前必须对其进行初始化,LCD1602 液晶显示模块的初始化流程如下:
5.0 初始化过程(复位过程)
5.1 延时 15ms 5.2 写指令 38H(不检测忙信号)
5.3 延时 5ms 5.4 写指令 38H(不检测忙信号)
5.5 延时 5ms 5.6 写指令 38H(不检测忙信号)
5.7(以后每次写指令、读/写数据之前均需检测忙信号)
5.8 写指令 38H:显示模式设置 5.9 写指令 38H:显示关闭 5.10 写指令 01H:显示清屏 5.11 写指令 06H:显示光标移动设置 5.12 写指令 0CH:显示开关及光标位置
表 8 LCD1602 液晶模块内部的控制器控制指令 指令 指令码
说明
RS
R/W D0
D1
D2
D3
D4
D5
D6
D7
清屏
0 0 0 0 0 0 0 0 0 1 清显示,光标回位
光标返回
0 0 0 0 0 0 0 0 1 * ADD=0 时,回原位
输入方式
0 0 0 0 0 0 0 1 I/D S 决定是否移动以及移动方向
显示开关
0 0 0 0 0 0 1 D C B D-显示,C-光标,B-光标闪烁
移位
0 0 0 0 0 1 S/C R/L * * 移动光标及整体显示
功能设置
0 0 0 0 1 DL N F * * DL-数据位数,L-行数,F-字体
CGRAM 地址设置
0 0 0 1 A5 A4 A3 A2 A1 A0 设置 CGRAM 的地址 DDRAM 地址设置
0 0 1 A6 A5 A4 A3 A2 A1 A0 设置 DDRAM 的地址 忙标志/读地址计数器
0 1 BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 读出忙标志位(BF)及 AC 值 CGRAM/DDRAM 数据写0 写数据 将内容写入 RAM 中 CGRAM/DDRAM 数据读1 读数据 将内容从 RAM 中读出
LCD1602 液晶显示模块可以和单片机 AT89C51 直接接口,电路如下图所示。
RP110KGND1VDD2VO3RS4RW5E6DB07DB18DB29DB310DB411DB512DB613DB714BL115BL216U2LCD1620X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10GND20VCC40EA/VP31nPSENRXDTXDALEU1AT89S51P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7+5VP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7RWRSE+5VnWRVCCnWRnRD
AT89S52 和 LCD1602 液晶模块连接电路 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表 9 是 LCD1602 的内部显示地址。即第 1 行的显示地址应为 80H+显示位置,第 2 行的显示地址应为 40H+显示位置。
表 9
LCD1602 的内部显示地址
3.2 串口通信模块 RS-232C 标准(协议)的全称是 EIA-RS-232C 标准,其中 EIA(Electronic Industry Association)代表美国电子工业协会,RS(recommended standard)代表推荐标准,232 是标识号,C 代表 RS232 的最新一次修改,在这之前,有 RS232B、RS232A,它规定连接电缆和机械、电气特性、信号功能及传送过程。RS-232C 适合于数据传输速率在 0~20000b/s 范围内的通信。
PC 机常用 DB-9 连接器作为提供多功能 I/O 卡或主板上 COM1 和 COM2 两个串行接口的连接器,它只提供异步通信的 9 个信号,9 针串口功能见表 10,并且对电缆长度也有要求:
RS-232C 标准规定,若不使用 MODEM,在码元畸变小于 4%的情况下,DTE 和 DCE 之间最大传输距离为 15m(50 英尺)。可见这个最大的距离是在码元畸变小于 4%的前提下给出的,为了保证码元畸变小于 4%的要求,接口标准在电气特性中规定,驱动器的负载电容应小于 2500pF。
表 10针串口功能一览表 针脚 功能 针脚 功能 1 载波检测 6 数据准备完成 2 接收数据 7 发送请求 3 发送数据 8 发送清除 4 数据终端准备完成 9 振铃指示 5 信号地线
本方案对 RS-232-C 接口采用 3 线制(RXD、TXD、GND)软握手的零 MODEM 方式进行单片机和 PC 之间的数据通信,即 PC 机和单片机的发送数据线(TXD)与接收数据(RXD)交叉连接,二者的地线(GND)直接相连,其它信号线如握手信号线均不用,而采用软件握手。但由于 RS-232-C 的逻辑电对地是对称的,与 TTL、MOS 逻辑电平完全不同,逻辑 0 电平规定为+5~ +15V 之间,逻辑 1 是电平为-5~-15V 之间,因此利用 MAX232芯片进行电平转换,电路连接如图 11。
C1-3V+2C2+4C2-5V-6R209D2110VCC16GND15D1014R1113R1012D1111R218D207C1+1IC2MAX232C13C12C11C10VCC162738495J232DB9 图 RS-232-C 通信连接电路
3.3 电源模块 +220PFC5C60.1uFS12Vin+5VGNDU37805R81.5KD0LED123POWCON3SPD2
充电电路
4.软件设计 ((1)流程图
((2)代码附录 //示 接收电脑送过来的数据,并且显示 16 进制数,并将数据回传到电脑 脑 #include
InitLcd();//初始化 LCD
myflag=0x00;//标志痊
SendCommandByte(0x80);//调用发送命令
Delay(2);
SendDataByte(“c”);//初始化显示 CPR:
SendDataByte(“p”);
SendDataByte(“r”);
SendDataByte(“:”);
TMOD=0x20;//定时器的设置
TH1=0xf3;//计时器
TL1=0xf3;
SCON=0x50;//设定串行工作方式
TR1=1;
REN=1;//允许中断
IE=0x90;//中断允许标志
while(1)
{
if(recokbit==1)//接收数据
{
recokbit=0;
disprec();
}
} }
//以下为串口中断程序 void rs232(void)interrupt 4//中断串行口
{
if(RI==1)//控制电路使中断标志 R1 置为“1 此时程序可通过 MOV
A,SBUF 指令将接收到的字符从 SBUF 送入累加器 A,从而完成一帧数据的接收工作
{
RI=0;
recdata[recv_p]=SBUF;
SBUF=recdata[recv_p];
recv_p++;if(recv_p>27)recv_p=0;//
recokbit=1;//接受完成}
} void Delay(unsigned int t)
// delay 40us {
for(;t!=0;t--);} //============================================= void SendCommandByte(unsigned char ch){
RS=0;
RW=0;
P0=ch;
E=1;//使能端口为 1,接收命令
Delay(1);
E=0;
Delay(100);
//delay 40us }
//=============================================
//-------------------------------------------------------void SendDataByte(unsigned char ch){
TI=0;//开始发送数据
SBUF=ch;
while(!TI);
RS=1;//输入数据
RW=0;//为 0 时写,1 时读
P0=ch;
E=1;
Delay(1);
E=0;//使能信号为 0 时,不能输入
Delay(100);//delay 40us } //-------------------------------------------------void InitLcd(void){ unsigned char i;for(i=0;i<28;i++)recdata[i]=0x30;//初始化数组 0 recv_p=0;
SendCommandByte(0x30);
SendCommandByte(0x30);
SendCommandByte(0x30);
SendCommandByte(0x38);//设置工作方式
SendCommandByte(0x0c);//显示状态设置
SendCommandByte(0x01);//清屏
SendCommandByte(0x06);//输入方式设置 } void disprec(void){
unsigned char i;
for(i=0;i<12;i++)
{
SendCommandByte(0x84+i);
SendDataByte(recdata[i]);
}
for(i=0;i<16;i++)
{
SendCommandByte(0xc0+i);
SendDataByte(recdata[i+12]);
}
}
5.调试过程((1)测试数据
采用 RS232 把 PC 机与单片机连接起来,运行上位机程序如下图所示:
向单片机发送信息时,PC 机显示信息重复了。
((2))
数据分析
PC 机发送的数据给单片机能正常显示,但单片机返回给 PC 机的信息重复了,经过反复检查,原来是 recdata[recv_p]=SBUF;SBUF=recdata[recv_p];这语句重写了,删了,就恢复正常通信显示了。
三. 结论 经过这次嵌入式系统实训,熟悉了单片机设计,开发的流程,在杨琴老师,金红老师,杨光杰老师的辛勤指导下,在和组员庞卡努力下,从最初的元件领取,电路焊接,利用 PROTEL99 画电路原理图,到代码的编写,我负责下位机程序,庞卡负责上位机的程序,经过我们的共同努力,加上各位老师的指导,终于在老师规定的时间内完成了单片机与上位机的通信。
这次嵌入式系统实训,学习了嵌入式系统简单开发流程,加深所学知识的理解。
第四篇:单片机实习报告
重庆城市管理职业学院
信息工程学院
单片机实习报告
专业班级电子A0801
学号0401080112
姓名吕爽
组号第一组
实 验 室 单片机实训室
成绩评定
老师签名
2009年 12月 25日
实训课题:99数字跑表
实训目的:通过实验掌握显示的接口电路及程序设计,熟悉各种操作指令,子程序的调用以及中断知识和计数器的计数
实训原理:通过把设计好的程序利用软件将编译得到HEX格式文件加载到单片机芯片中,实现仿真电路,得到仿真电路结果。
实验仪器:电脑,Keil软件,Proteus软件
实训要求:(1)四位LED数码管动态显示,显示最小时间为0.01秒,最多显示时间99秒;
(2)由按键控制,第一次按下键,开始计时,第二次按下键,停止计时,第三次按下键,清零。
在Keil软件中,新建一个项目,命名为跑表,然后根据程序流程图和仿真电路图编写程序。调试程序,检查程序是否有误,保存。得程序如下:
编写程序
ORG0000H
LJMPMAIN
ORG0003H
LJMPL1
ORG0030H
/*开始程序*/
MAIN:SETBIT0
SETBP1.0;至高电频
SETBEA;开中断控制位
SETBEX0;开外部中断0
MOVDPTR,#TAB;将TAB所代表的地址送入DPTR
MOV30H,#0
MOV40H,#0
MOVR1,#0
/*判断R1,然后进行判断*/
L4:JBP1.0,L14;P1.0的值为1,则转移至L14
INCR1;R1加1
SETBP1.0
L14:MOVR3,#2
/*使时间达到0.01秒*/
L9:ACALLL3;绝对调用L3程序
ACALLL2
DECR3;寄存器减1
CJNER3,#0,L9
/*当按一次开关时进行跑秒*/
CJNER1,#1,L5;寄存器R1中的值不为1,则转移到L5
MOVA,30H
ADDA,#1
DAA
CJNEA,#99H,L6
ACALLL7
CLRA
L6:MOV30H,A
/*当再一次按键时,暂停*/
L5:CJNER1,#2,L10
SJMPL4;转移到L4
/*当继续按键时,清零*/
L10: CJNER1,#3,L11
MOV30H,#0
MOV40H,#0
MOVR1,#0
L11: SJMPL4
/*跑秒显示后两位*/
L2:
CLRP2.3
MOVA,30H
ANLA,#0FH
MOVCA,@A+DPTR
MOVP0,A
LCALLL3
SETBP2.3
CLRP2.2
MOVA,30H
SWAPA
ANLA,#0FH
MOVC A,@A+DPTR
MOVP0,A
LCALLL3
SETBP2.2/*跑秒显示前两位*/
CLRP2.1
MOVA,40H
ANLA,#0FH
MOVCA,@A+DPTR
MOVP0,A
LCALL L3
SETB P2.1
CLRP2.0
MOVA,20H
SWAP A
ANLA,#0FH
MOVCA,@A+DPTR
MOVP0,A
LCALLL3
SETBP2.0
RET
/*显示用的时间*/
l3: MOVR7,#250
J0: NOP;延迟一个机器周期的时间
NOP
DJNZR6,J0;寄存器减1不为0,转移到J0
RET
/*终端打开*/
L1: CLR EA
CLR P1.0
SETBEA
RETI
/*秒位显示*/
L7: MOVA,40H
ADDA,#1
DAA
CJNEA,#99H,L8
CLR A
L8: MOV40H,A
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
四:检查程序是否有误,然后修改,并将无误的程序保存编译为HEX格式文件,然后加载到单片机芯片中,查看电路,观看仿真电路结果.得到课题要求的结果。
五、实训小结
1)通过实训,我们自己动手分析设计程序加深了对知识的理解和对指令的运用。
2)通过对程序的编译和电路的仿真,使我们能够更直观得看到程序运行的结果。
3)通过实训与所学知识的结合,提高我们动手的能力和对技能的熟悉。强化了我们得专业技能,能更好的运用所学知识。
第五篇:单片机实习报告
1602液晶显示设计
一、实验简介:
通过学习本门课程,能够掌握利用51单片机完成简单项目的应用系统设计和调试,掌握单片机应用程序的编写和调试过程。本次实习,我的题目是用51单片机控制1602液晶显示指定字符的设计,需要分别设计系统的硬件电路及调试软件程序,并能够正确演示调试结果。
二、实验要求:
1、查找资料学习单片机的LCD点阵显示原理;
2、理解KST-51的LCD点阵显示电路图;
3、编制程序在点阵LCD上实现字母:我爱单片机绘制原理图;
4、完成实验报告的撰写。
三、硬件电路:
(一)89C52系列单片机
89C52是INTEL公司MCS-51系列单片机中基本的产品,它内置8位中央处理单元、512字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。
1、单片机最小系统
KST-51单片机开发板
最小系统是指单片机正常工作的最基本的外围配置,主要包括时钟电路、复位电路等。
51单片机最小系统是利用XTAL1和XTAL2两个引脚外接晶体振荡器的内部时钟方式,C1和C2的作用是稳定频率和快速起振,典型值为30pf,晶体振荡器的振荡频率典型值为6 MHZ、12 MHZ或者11.0592 MHZ,系统与PC通信时常采用11.0592MHZ。
复位电路设计形式包括:上电复位、按键复位、和利用专业的复位芯片进行管理,本次设计采用按键复位方式。
51单片机最小系统
2、单片机引脚功能
51系列单片机有40个引脚,包括2个 电源引脚,2个外界晶振引脚,4个控制或 其他电源复用引脚,32个I/O引脚。1)主电源引脚(2根)VCC(Pin40):电源输入,接+5V电源 GND(Pin20):接地线 2)外接晶振引脚(2根)
XTAL1(Pin19)、XTAL2(Pin18)主要用来构成单片机的时钟电路。时钟电路用来产生单片机工作所需的时钟信号。时钟信号分为内部时钟方式和外部时钟方式。3)控制引脚(4根)
RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号
EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。4)输入/输出引脚(32根)
P0口是一个双功能的8位并行口,可以用做地址/数据总线,另外P0口还可以作为通用I/O口使用,此时为准双向口,且内部无上拉电阻。
P1口是单功能的I/O口,只能作为通用的I/O口使用,为准双向口,但内部有上拉电阻。
P2口是一个双功能口,为准双向口,但内部有上拉电阻,P2口功能主要有一下两个方面:一是作为高8位地址输出线使用时,P2口可以输出外部存储器的高8位地址,与P0口输出的低8位地址一起构成16位地址,可以寻址64位的地址空间;二是作为通用I/O口使用时,与P1口使用方法一样。
P3口作为通用I/O口时使用方法与P1一样。另外,P3口主要作为第二功能使用。
(二)1602字符液晶
P3口第二功能表
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,1602是指显示的内容为16*2,即可以显示两行,每行16个字符。字符液晶绝大多数是基于HD44780液晶芯片的。
1602实物图 1、1602LCD的特性
+5V电压,对比度可调 内含复位电路
提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能
有80字节显示数据存储器DDRAM 内建有160个5X7点阵的字型的字符发生器CGROM 8个可由用户自定义的5X7的字符发生器CGRAM
2、字符型LCD1602接口 引脚2、1为1602的电源和地,引脚15、16 为背光电源,引脚4、5、6为控制端口,引脚7-14为 数据端口,以下为各个端口的详细介绍。3、1602存储器
HD44780内置了DDRAM(显示数据存储RAM)、CGROM(字符存储ROM)和CGRAM(用户自定义RAM)。
DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表:
在DDRAM的00H地址处显示数据,则必须将00H加上80H,即0X80+0x00,若要在DDRAM的01H处显示数据,则必须将01H加上80H即 0X80+0x01。以此类推。
字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常 用的符号、和日文假名等,每一个字符都有一个固定的代码。4、1602指令表
对DDRAM的内容和地址操作,HD44780的指令集及其设置说明,共有11条指令: 1)清屏指令
功能:<1> 清除液晶显示器,即将DDRAM的内容全部填入“空白”的字符码20H;<2> 光标归位,即将光标撤回液晶显示屏的左上方;<3> 将地址计数器(AC)的值设为0。
2)光标归位指令
功能:<1> 把光标撤回到显示器的左上方;<2> 把地址计数器(AC)的值设置为0;<3> 保持DDRAM的内容不变 3)输入模式设置指令
功能:设定每次写入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。参数设定的情况如下所示: 位名 设置
I/D 0=写入新数据后光标左移 1=写入新数据后光标右移
S 0=写入新数据后显示屏不移动 1=写入新数据后显示屏整体右移1个字 4)显示开关控制指令
功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情况如下:
位名 设置 D 0=显示功能关 1=显示功能开 C 0=无光标 1=有光标 B 0=光标不闪烁 1=光标闪烁 5)设定显示屏或光标移动方向指令
功能:使光标移位或使整个显示屏幕移位。参数设定的情况如下: S/C R/L 设定情况
0 0 光标左移1格,且AC值减1 0 1 光标右移1格,且AC值加1 1 0 显示器上字符全部左移一格,但光标不动 1 1 显示器上字符全部右移一格,但光标不动 6)功能设定指令
功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下: 位名 设置
DL 0=数据总线为4位 1=数据总线为8位 N 0=显示1行 1=显示2行 F 0=5×7点阵/每字符 1=5×10点阵/每字符 7)设定CGRAM地址指令
功能:设定下一个要存入数据的CGRAM的地址。8)设定DDRAM地址指令
功能:设定下一个要存入数据的CGRAM的地址。9)读取忙信号或AC地址指令
功能:<1> 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;当BF=0时,液晶显示器可以接收单片机送来的数据或指令;<2> 读取地址计数器(AC)的内容。10)数据写入DDRAM或CGRAM指令
功能:<1> 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;<2> 将用户自己设计的图形存入CGRAM。11)从CGRAM或DDRAM读出数据的指令
功能:读取DDRAM或CGRAM中的内容。
5、时序图
(1)读状态 输入:RS=0,RW=1,E=1 读数据 输入:RS=1,RW=1,E=1(2)写指令 输入:RS=0,RW=0,E=下降沿脉冲,DB0~DB7=指令码 写数据 输入:RS=1,RW=0,E=下降沿脉冲,DB0~DB7=数据
四、实习结果与讨论:
通过程序的编辑在1602型LCD上实现了显示英文字符,通过本次实验的学习进一步熟悉了1602型LCD,对其操作有了更多的心得体会,在本次实验中获益匪浅。
五、实验程序: #include
sbit LCD_RS = P2^0;sbit LCD_RW = P2^1;sbit LCD_EN = P2^2;
uchar code dis1[] = {“woai danpianji”};uchar code dis2[] = {“huizhi yuanlitu”};uchar code dis3[] = {“chen jian”};uchar code dis4[] = {“ dianzihua 1101 ”};
void delay(int ms){ int i;while(ms--){ for(i = 0;i< 250;i++){ _nop_();_nop_();_nop_();_nop_();} } }
bit lcd_busy(){ bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();result =(bit)(P0&0x80);LCD_EN = 0;return result;} void lcd_wcmd(uchar cmd){ while(lcd_busy());LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();LCD_EN = 0;}
void lcd_wdat(uchar dat){ while(lcd_busy());LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();LCD_EN = 0;}
void lcd_pos(uchar pos){ lcd_wcmd(pos|0x80);//数据指针=80+地址变量 }
void lcd_init(){ lcd_wcmd(0x38);//16*2显示,5*7点阵,8位数据 delay(5);lcd_wcmd(0x38);delay(5);lcd_wcmd(0x38);delay(5);lcd_wcmd(0x0c);//显示开,关光标 delay(5);lcd_wcmd(0x06);//移动光标 delay(5);lcd_wcmd(0x01);//清除LCD的显示内容 delay(5);}
void flash(){ delay(600);//控制停留时间 lcd_wcmd(0x08);//关闭显示 delay(200);//延时 lcd_wcmd(0x0c);//开显示 delay(200);//延时 lcd_wcmd(0x08);//关闭显示 delay(200);//延时 lcd_wcmd(0x0c);//开显示 delay(200);} main(){ uchar i;delay(10);lcd_init();// 初始化LCD
while(1){ lcd_wcmd(0x06);//向右移动光标
lcd_pos(0);//设置显示位置为第一行的第1个字符 i = 0;while(dis1[i]!= ' '){ //显示字符“ woai danpianji” lcd_wdat(dis1[i]);i++;delay(30);//控制两字之间显示速度 }
lcd_pos(0x40);//设置显示位置为第二行第1个字符 i = 0;
while(dis2[i]!= ' '){ lcd_wdat(dis2[i]);//显示字符“ huizhi yuanlitu ” i++;delay(30);//控制两字之间显示速度 }
flash();//闪动二次
lcd_wcmd(0x01);//清除LCD的显示内容 delay(200);//控制转换时间 lcd_wcmd(0x04);//向左移动光标
lcd_pos(15);//设置显示位置为第一行的第16个字符 i = 0;while(dis3[i]!= ' '){ //显示字符“ chen jian ” lcd_wdat(dis3[i]);i++;delay(30);//控制两字之间显示速度 } lcd_pos(0x4F);//设置显示位置为第二行的第16个字符 i = 0;while(dis4[i]!= ' '){ lcd_wdat(dis4[i]);//显示字符“ dianzihua1101 ” i++;delay(30);//控制两字之间显示速度 }
flash();//闪动二次
lcd_wcmd(0x01);//清除LCD的显示内容 delay(200);//控制转换时间 } }