AVR单片机 红外接收与发射实验
- 格式:doc
- 大小:33.00 KB
- 文档页数:5
电子电路综合设计实验报告设计实验选题七(接收部分)---基于单片机的红外遥控收发系统的设计实现摘要红外线是现代社会中已经极为常见,在遥测、遥控等领域中,往往使用微机与单片机组成多机通信系统来完成测控任务。
其中,常用的方法是使用微机的RS-232C串行接口进行串行数据通信。
由于受环境的影响以及RS-232C串行接口电气性能的限制,加上连接线长、接线麻烦等缺点,其通信的空间范围总是受到限制,并使人们感到不便。
因此,人们想到了无线传输。
常用的无线传输方式有无线短波传输和红外线传输,但这两种方式都有一定的局限性,如短波方式易受外界电磁场的干扰,线外线传输方式不能隔墙传输等等,本文将介绍采用最新的无线长波收发模块638以及三态编解码芯片MC145026/ MC145027来设计无线数据通信装置的方法。
该装置具有抗干扰性能好、穿透性强、传输距离远等特点。
由于串行接口传输速度慢,信号处理电路复杂,外接模块困难。
因此,本装置选用并行接口通信,从而使得电路简单易做、可靠性高。
本设计是以STC89C51单片机为控制核心,本装置主要由数据编解码和发射接收两大模块组成,设计系统组成图如下:发射部分电路模块:STC889C51单片机作为主控核心,采用三态编解码芯片MC145026作为编码芯片,CD4011逻辑器件作为反相用途,采用单段的数码管显示发射的数字,采用八位按键输入,采用MAX232作为电平转换电路作为单片机与PC机之间的程序下载用途。
接收部分电路模块:STC889C51单片机作为主控核心,与MC145026配对使用的三态编解码芯片MC145027作为解码芯片。
74LS02逻辑器件作为反相用途,采用单段的数码管显示发射的数字,八位的发光二极管显示顺序,638作为红外的接收头,采用MAX232作为电平转换电路作为单片机与PC机之间的程序下载用途。
实现方法:本实验采用单片机控制,发射部分的数据经过调制编码后送入电光变换电路经过红外发射管转换为红外光脉冲发射出去,为了增加抗干扰能力将编码的信号调制在较高的频率载波上发射。
基于A VR单片机的红外遥控仿真设计摘要:Proteus提供了兼容SIRC的IRLINK组件,使得在虚拟环境下仿真红外遥控收发成为可能。
本设计中,当按下发射器的任一按键时,对应的12位编码被“发送”到接收端的红外接收头,经程序解码后,12-Bit的编码将会显示在3个数码管上。
关键词:红外遥控A VR单片机Proteus仿真红外遥控技术实际上是一种远程遥控技术,它在工业控制、家用电器等领域应用广泛。
红外遥控是一种无线、非接触式的控制技术,具有抗干扰能力强,信息传输可靠等优点,被越来越多的电子设备广泛采用,并逐渐应用到计算机系统中。
1 红外遥控的原理及特点红外遥控的发射端采用红外发光二极管来发出经过调制的红外光波;红外接收端主要由红外接收二极管组成,能将红外发射端发出的红外光转换为相应的电信号。
由于红外遥控不具备像无线电遥控那样穿过障碍物去控制被控对象的能力,所以同类产品的红外遥控器,可以有相同的遥控编码,而不会出现遥控信号“串门”的情况。
这为大批量生产以及在家用电器上普及红外遥控提供了极大的方便。
2 Proteus仿真软件简介Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及其外围器件。
它是目前最好的仿真单片机及其外围器件的工具。
使用Proteus丰富的硬件资源库和强大的仿真能力,它能够仿真现阶段大部分常用型号的单片机及其外围电子系统。
在软件调试方面,将其与单片机编译器联合调试,可以立即进行硬、软件联调的系统仿真,直接使用仿真器来调试系统,观察调试效果。
3 设计思路红外光的波长为950nm,低于人眼的可见光谱,因此我们是看不见这种光线的。
在大量的电子产品中都能使用红外遥控器对受控设备进行非接触式控制,但由于有热量的物体都能发出红外光,所以为了保证红外遥控器发出的红外信号能够不受干扰地被接收端识别,应将红外信号进行编码。
红外发射与接收测试报告LLZ一、红外线原理红外线遥控器在家用电器和工业控制系统中已得到广泛应用,了解他们的工作原理和性能、进一步自制红外遥控系统,也并非难事。
1.红外线的特点人的眼睛能看到的可见光,若按波长排列,依次(从长到短)为红、橙、黄、绿、青、蓝、紫,如图1所示。
由图可见,红光的波长范围为0.62μm~0.76μm,比红光波长还长的光叫红外线。
红外线遥控器就是利用波长0.76μm~1.5μm之间的近红外线来传送控制信号的。
红外线的特点是不干扰其他电器设备工作,也不会影响周边环境。
电路调试简单,若对发射信号进行编码,可实现多路红外遥控功能。
2.红外线发射和接收人们见到的红外遥控系统分为发射和接收两部分。
发射部分的发射元件为红外发光二极管,它发出的是红外线而不是可见光,如图2所示。
常用的红外发光二极管发出的红外线波长为940nm左右,外形与普通φ5mm发光二极管相同,只是颜色不同。
一般有透明、黑色和深蓝色等三种。
判断红外发光二极管的好坏与判断普通二极管一样的方法。
单只红外发光二极管的发射功率约100mW。
红外发光二极管的发光效率需用专用仪器测定,而业余条件下,只能凭经验用拉距法进行粗略判定。
接收电路的红外接收管是一种光敏二极管,使用时要给红外接收二极管加反向偏压,它才能正常工作而获得高的灵敏度。
它的工作原理:其实就是一个NB的红外光敏电阻在红外照射下处于超低阻值状态分到的电压超级小当红外光断开以后处于高阻状态有接近6K那么大,完全避光可能还不止,在电路中分到的电压就很大了,一般分到4V以上不成问题。
红外接收二极管一般有圆形和方形两种。
由于红外发光二极管的发射功率较小,红外接收二极管收到的信号较弱,所以接收端就要增加高增益放大电路。
然而现在不论是业余制作或正式的产品,大都采用成品的一体化接收头,如图3所示。
红外线一体化接收头是集红外接收、放大、滤波和比较器输出等的模块,性能稳定、可靠。
所以,有了一体化接收头,人们不再制作接收放大电路,这样红外接收电路不仅简单而且可靠性大大提高。
目录一、设计任务与设计要求 (2)1.1设计任务 (2)1.2设计要求 (2)二、设计的目的意义和主要功能 (2)2.1设计的目的意义 (2)2.2主要功能 (2)三、设计方案 (2)3.1总体方案 (2)3.2工作原理 (3)四、系统硬件设计 (5)4.1红外发射硬件设计 (5)4.2红外接收硬件设计 (8)五、系统软件设计 (9)5.1发射模块 (10)5.2接收模块 (11)5.3调试 (12)六、心得体会 (13)参考文献 .......................................... 错误!未定义书签。
附图.1 发射接收模块原理图和PCB图 (14)附图.2 发射接收模块仿真电路图 (15)附录.3 原件清单 ................................... 错误!未定义书签。
一、设计任务与设计要求1.1设计任务利用单片机、红外线发射管和一体化接收头以及键盘接口和显示接口电路实现数据的收发。
1.2设计要求1. 应用STC89C52单片机设计简单红外收发器;2. 选用红外发射、红外接收器,红外发射;二、设计的目的意义和主要功能2.1 设计的目的和意义训练学生综合运用已学课程的基本知识,独立进行单片机应用技术和开发工作,掌握单片机程序设计、调试和应用电路设计、分析及调试检测。
简单红外收发器是在红外遥控的基础上,利用红外线进行点对点的数据通信装置。
目前,其相应的软件和硬件技术都已比较成熟。
它是把红外线作为载体的遥控方式。
红外遥控是一种无线、非接触控制技术,具有结构简单、制作方便、成本低廉、抗干扰能力强、信息传输可靠、易实现,同时,由于采用红外线收发器件时,工作电压低、功耗低、外围电路简单等优点,因此,被诸多电子设备,特别是家用电器广泛采用,并越来越多的应用到计算机系统中。
2.2 主要功能1.红外线传输,实现较长距离(10M)的数据收发;2.实现发送数据的现实和接收到的数据进行显示。
单片机红外遥控实验报告【实验报告】单片机红外遥控摘要:本实验通过使用单片机和红外遥控器,实现了对电器设备的远程控制。
首先,介绍了红外遥控技术的原理和应用场景;接着,详细描述了实验所使用的硬件与软件配置;然后,阐述了实验的步骤和过程;最后,总结了实验结果与心得体会。
1. 简介红外遥控技术是一种基于红外线信号传输的无线控制技术,广泛应用于家电、汽车、医疗设备等领域。
它通过红外线发射器将指令信号转换为红外线信号,并通过红外线接收器接收并解码信号,从而实现对电器设备的远程控制。
2. 硬件配置本实验所使用的硬件配置包括单片机、红外发射模块、红外接收模块、继电器模块和电器设备。
其中,单片机作为控制中心,通过编程控制红外发射模块发射特定的红外信号,红外接收模块接收信号并解码,继电器模块实现对电器设备电源的切换。
3. 软件配置3.1 单片机编程使用C语言编写单片机的控制程序。
首先,通过引入相应的库函数,对单片机进行初始化配置。
然后,定义红外信号对应的按键码,并设置相应的工作模式。
最后,编写主循环程序,实现对红外发射模块的控制和对红外接收模块的解码处理。
3.2 红外遥控器配置在红外遥控器上配置对应的按键码与功能,将其与实验中的电器设备进行匹配。
通过学习功能,将红外遥控器上的按键码与相应操作绑定。
4. 实验步骤4.1 硬件连接将红外发射模块、红外接收模块和继电器模块连接到单片机的相应引脚上,并保证连接正确可靠。
4.2 单片机编程根据实验需求,编写单片机的控制程序,并将程序下载到单片机的存储芯片中。
4.3 红外遥控器学习使用红外遥控器学习功能,将红外遥控器上的按键码与需要控制的电器设备进行匹配。
4.4 实验执行先使用红外接收模块接收红外遥控器发送的信号,并解码得到相应的按键码。
然后,通过单片机的控制程序判断收到的按键码,并控制继电器模块对电器设备进行功率切换。
5. 实验结果经过实验,验证了红外遥控技术在远程控制电器设备中的有效性。
单片机红外发射与接收实验报告指导老师:报告人:一·实验选题:基于单片机的红外发射与接收设计任务要求:设计一个以单片机为核心控制器件的红外收发系统。
发射载频:38KHz工作温度:-40℃--+85℃接收范围:2m二·系统概述方案设计与论证红外遥控收发系统(以下简称红外遥控系统)是指利用红外光波作为信息传输的媒介以实现远距离控制的装置。
从实际系统的硬件结构看,红外遥控系统包括发射装置和接收装置,其中发射装置包括电源模块、输入模块、红外发射模块和单片机最小系统,接收装置包括电源模块、红外接收模块、输出模块和单片机最小系统。
本设计选题设计任务要求设计一个以单片机为核心控制器件的红外收发系统。
其中,发射载波 38KHz,电源 5V/0.2A 5V/0.1A,工作温度-40℃--+85℃,接收范围 2m,传输速率 27bit/s,反应时间 2ms。
利用单片机的定时功能或使用载波发生器(用于产生载波的芯片)均可产生 38KHz 的发射载波。
单片机系统可以直接由 5V/0.1A 的电源供电,也可以通过三端稳压芯片由 9V/0.2A 电源供电。
采用工业级单片机可以工作在-40℃--+85℃。
为保证接收范围达到 2m,在发射载频恒为 38KHz 的前提下,应采用电流放大电路使红外发射管发射功率足够大。
传输速率和反应时间取决于所使用的编码芯片或程序的执行效率。
通过上述分析可知,为实现设计任务并满足设计指标,应采用工业级单片机,由电流放大电路驱动红外发射管。
将针对设计任务提出两种设计方案。
三·程序功能将程序编译通过并下载成功后,两个板上的红外光电器件都要套上黑色遮光罩,就可以进行实验了。
测距实验:手持1号板和2号板,两管相对,慢慢拉远或移近两管的距离,观察LED的读数变化。
阻断实验:可请另一人协助,将一张纸或其他障碍物放在两管之间再拿开,会看到读数有大幅度的变化。
反射实验:将1号和2号实验板并排拿在手中,并形成一个小夹角,向一张白纸移动观察读数变化。
基于A VR单片机的红外感应一设计方案(一)功能及技术指标要求1、功能:被动式热释电红外探测感应,它是利用热释电红外传感器检测人体红外信号来完成防盗监测的。
当有人进入传感器的监测区域时,报警装置通电工作,发出报警声。
2、指标要求:探测距离大于30cm,实现超低功耗,电源采用2节干电池(3.6v),电池利用时间达到一年以上。
(二)设计内容按设计技术指标完成硬件电路部分的设计及部分软件代码(三)设计思路及关键技术1、设计时首先要充分认识两个问题:(1)低功耗如何才能实现?感应器工作应分为两种状态:工作模式和省电模式。
工作模式即当有人进入感应区,热释电传感器感应出信号,通过信号处理电路,再将信号送到MCU处理,进行相应的执行操作。
而在大部分时间内,感应器是要处于省电模式,此时消耗的功率非常低,即人尚未进入感应区范围,或者人离开了感应区,此时电路进入省电模式状态。
明白了这两点,就要设计这两种模式下的工作状态。
(2)探测范围问题,包括探测的距离和角度。
设计要求的在30cm 距离范围内,一般的传感器都会达到这个距离,即先不在讨论这里。
然后是角度问题,包括立体空间角度。
在传感器上加个半球开的盖可以大大增大探测角度,减小盲区。
当人体在这个监视范围内运动时,顺次地进入某一单元透境视场,又走出这一视场,热释电元件对运动物体一会儿看得见一会儿看不见,就产生了信号。
2、设计思路:本设计方案包括三大部分组成:人体信号检测电路,单片机控制电路,显示电路。
(1)人体信号检测电路采用biss0001红外传感信号处理器,信号检测电路如图所示。
(1)单片机控制电路采用A VR单片机,A VR单片机工作在1MHz,3V时的典型功耗:正常工作模式为1.1mA,掉电工作模式为<1uA,通过软件来设计使有信号时,单片机工作在正常状态,无信号时工作在掉电模式。
设计电路如图所示:(3)显示电路处理部分,可根据不同的性能要求作出相应的处理。
实验二十一红外发射接收实验一、实验目的了解红外通信知识,掌握红外数据收发的电路、编解码的编程方法。
二、实验内容根据系统提供的红外收发电路,单片机一方面从发送端发出数据,一方面从接收端接收数据,并比较收到的数据与发送的是否一致。
三、实验要求按实验内容编写程序,并在实验仪上调试和验证。
四、实验说明在很多单片机应用系统中,常常利用非电信号(如光信号、超声波信号等)传送控制信息和数据信息,以实现遥控或遥测的功能。
红外通信具有控制简单、实施方便、传输可靠性高的特点,是一种较为常用的通信方式。
实现单片机系统红外通信的关键在于红外接口电路的设计以及接口驱动程序的设计。
1.红外通信的基本原理红外通信是利用950nm近红外波段的红外线作为传递信息的媒体,即通信信道。
发送端采用脉时调制(PPM)方式,将二进制数字信号调制成某一频率的脉冲序列,并驱动红外发射管以光脉冲的形式发送出去;接收端将接收到的光脉转换成电信号,再经过放大、滤波等处理后送给解调电路进行解调,还原为二进制数字信号后输出。
2.红外发送器红外发送器电路包括脉冲振荡器、驱动管Q1和Q2、红外发射管Q3等部分。
其中脉冲振荡器由2206组成,用以产生38kHz的脉冲序列作为载波信号;红外发射管Q3用来向外发射950nm的红外光束。
红外发送器的工作原理为:串行数据由单片机的串行输出端DATA送出并驱动Q1管,数位“0”使Q1管导通,通过Q2管调制成38kHz的载波信号,并利用红外发射管Q3以光脉冲的形式向外发送。
数位“1”使Q1管截止,红外发射管Q3不发射红外光。
若传送的波特率设为1200bps,则每个数位“0”对应32个载波脉冲调制信号的时序,如图21-1所示。
图21-1 调制信号时序图3.红外接收器红外接收电路选用专用红外接收模块。
该接收模块是一个三端元件,使用单电源+5V电源,具有功耗低、抗干扰能力强、输入灵敏度高、对其它波长(950nm以外)的红外光不敏感的特点,其内部结构框图如图21-2所示。
AVR单片机捕获中断实现红外线解码摘要:AVR单片机是Atmel公司推出的一个单片机系列。
由于该系列单片机的集成度高,因此,其软/硬件设计都变得更加简洁。
文中介绍通过AVR单片机的捕获中断来实现红外线通讯解码的一种方法。
关键词:AVR;红外线解码;输入捕获中断1 红外线编码红外线编码是数据传输和家用电器遥控常用的一种通讯方法,其实质是一种脉宽调制的串行通讯。
家电遥控中常用的红外线编码电路有μPD6121G型HT622型和7461型等。
本文就以这些电路的编码格式来讨论怎样使用AVR单片机的捕获中断功能来实现其解码。
红外线通讯的发送部分主要是把待发送的数据转换成一定格式的脉冲,然后驱动红外发光管向外发送数据。
接收部分则是完成红外线的接收、放大、解调,还原成同步发射格式相同(但高、低电位刚好相反的脉冲信号。
这些工作通常由一体化的接收头来完成,主要输出TTL兼容电平。
最后通过解码把脉冲信号转换成数据,从而实现数据的传输。
图1是一个红外线遥控制系统的原理框图。
图2示出该红外遥控系统的编码格式。
图中,μPD6121G遥控器的二进制“0”由0.56ms的间隔加0.565ms的脉冲表示;二进制“1”由0.56ms的间隔加1.685ms的脉冲表示。
每次发送的32二进制码可分成两部分,其中前16位是遥控器辨识码,主要用于区别不同遥控器,后16位是操作码。
这两个部分的后8位都是前8位的反码,用作数据校验。
每帧数据以9ms的间隔加4.5ms的脉冲作为数据头。
2 AVR单片机AVR系列单片机是Atmel公司于1997年推出的一款全新配置的、采用精简指令(RISC-Redued Instruction Set CPU)结构的新型8位单片机。
由于AVR 单片机采用单指令操作,所以,在相同时钟的情况下,AVR的指令周期只有8051型机的1/2,而且AVR采用两极指令流水线,可以在执行当前指令的同时获取下一条指令,所以具备1MI/s/MHz的调整处理能力。
遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理(一般家庭用的DVD、VCD、音响都使用这种编码方式)。
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
一、电路实现红外发射器很容易找到,我们平时家用的电视、DVD遥控器都可以用来进行实验。
下面的电路图是红外接收部分的电路图,二、红外接收原理关于红外发射部分,由于我们采用的是现成的遥控器,而不同的遥控器其实现电路各不相同,这里我们就不详细介绍。
我们只需要知道遥控器发射出来的数据格式,然后通过红外接收器接收数据,并根据数据格式将其进行分解,得到相应键值即可。
遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。
一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,发射波形图如下:当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms 发射代码由一个引导码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。
如果键按下超过108ms仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(2.25ms)组成。
其中32位数据格式如下:这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,波形如下图:三、程序实现在本实例中,我们利用串口将单片机从一体化红外接收器接收到的红外遥控键值发送到计算机上,通过计算机的串口助手观察接收到的数据。
AVR单片机红外接收与发射实验
供单片机入门学习者练习用的AVR单片机的红外接收与发射实验程序。
用单片机入门实验套件提供的红外接收与发射套件完成红外的反射、阻断等实验。
红外发射与接收器件广泛应用于机器人竞赛项目中,像寻迹、追光、蔽障等都会用到红外接收与发射器件。
该程序用AVR- Studio-4 开发,在AVR单片机Atmega48上调试通过。
本实验的详细说明和硬件搭建请参考>>
;----------------------------------------------------------------------------------
;--------单片机入门实验红外接收与发射实验 AVR 汇编程序----------- ;----------------------------------------------------------------------------------
;作者: 超简单工作室
;Email: fullmous@
;软件版本: AVR Studio 4.13.571 Service Pack 2
;创建日期: 2008.3
;版本 V1.00
;
; Target : M48
; Crystal: 8.0000Mhz
;*****************************************************
.include "m48def.inc"
.org $0000
rjmp _main
.org $0020
_port_init: ;端口初始化
; PORTB = 0x00;
clr R2
out 0x5,R2
; DDRB = 0xFF;
ldi R24,255
out 0x4,R24
; PORTC = 0x00;
out 0x8,R2
; DDRC = 0x06;
ldi R24,6
out 0x7,R24
ret
_adc_init: ;ADC 初始化
; ADCSRA = 0x00; 设置前,先关闭ADC
clr R2
sts 122,R2
; ADMUX = (1<<REFS0) ; 选择内部AVCC为基准
ldi R24,64
sts 124,R24
; ACSR = (1<<ACD); 关闭模拟比较器
ldi R24,128
out 0x30,R24
; 使能ADC,启动ADC单次转换,选64分频
; ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1); ldi R24,198
sts 122,R24
ret
_adc_get:
; ADC 转换函数
; ADCSRA |= (1<<ADSC); 启动ADC转换
lds R24,122
ori R24,64
sts 122,R24
L4:
; while( ADCSRA & (1<<ADSC)); 判断ADC转换是否结束
lds R2,122
sbrc R2,6
rjmp L4
lds R16,120
lds R17,120+1
ret
_delay_us: ;微秒级延时
L8:
subi R16,1
sbci R17,0
ldi R24,1
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L8
ret
_delay_ms: ;毫秒级延时
st -y,R20
st -y,R21
mov R20,R16
mov R21,R17
L12:
ldi R16,low(1000)
ldi R17,high(1000)
rcall _delay_us
subi R20,1
sbci R21,0
cpi R20,0
cpc R20,R21
brne L12
ld R21,y+
ld R20,y+
ret
_div16: ;双字节除法。
同时得到整数和余数
; 入口:除数在r18:r19中,被除数在r16:r17中
push R25 ;r24:r25存中间值,最后是商
push R24
clr R25
clr R24
L_div:
cp R16,R18 ;被除数与除数比较
cpc R17,R19
brlt L_end_div ;小于除数,结束
adiw R25:R24,1 ;否则,中间值加1
sub R16,R18 ;被除数减除数
sbc R17,R19
rjmp L_div ;返回继续
L_end_div:
mov R18,R24 ;除法运算结束,商存r18:r19中,余数留在r16:r17中mov R19,R25
pop R24
pop R25
ret
_main:
rcall _port_init
rcall _adc_init
L16:
; ADC转换一次
rcall _adc_get ;结果在r16:r17中
; adc_v = adc_v/10;
ldi R18,10 ;结果除10,保证AD转换的最大值100
rcall _div16
mov R17,R19 ;除10得到的结果送r16:r17
mov R16,R18
cpi R16,100 ;被除数与除数比较
brlt L17 ;大于100,置成99
ldi R16,99
L17:
; t = adc_v /10;
ldi R18,10 ;继续除10
ldi R19,0
rcall _div16 ;得到一个小于10的商在r18中,10的模在r16中
ldi R24,2
mul R24,R18 ;将r18中的值乘2,结果在r0:r1中
movw R30,R0 ;将r0:r1的值赋给r30:r31,作为偏移量
ldi R24,low(_tabs<<1) ;获取字符表基地址
ldi R25,high(_tabs<<1)
add R30,R24 ;偏移量+基地址构成z指针
adc R31,R25
lpm R18,Z+0 ;取字型送入r18
out 0x5,R18 ;字型送PortB,输出
ldi R24,4
out 0x8,R24 ;4送端口portc,即置位portc.2
; delay_ms(10);
push R16 ;r16中是除10的余数,即10的模,保存
ldi R16,10
ldi R17,0
rcall _delay_ms ;延时10ms
;
pop R16 ;弹出r16
ldi R24,2
mul R24,R16 ;将r16中的值乘2,结果在r0:r1中
movw R30,R0 ;将r0:r1的值赋给r30:r31,作为偏移量
ldi R24,low(_tabs<<1) ;获取字符表基地址
ldi R25,high(_tabs<<1)
add R30,R24 ;偏移量+基地址构成z指针
adc R31,R25
lpm R16,Z+0 ;取字型送入r16
out 0x5,R16 ;字型送PortB,输出
out 0x8,R24 ;2送端口portc,即置位portc.1 ; delay_ms(10);
ldi R16,10 ;延时10ms
ldi R17,0
rcall _delay_ms
rjmp L16
ret
_tabs: ;字形定义表
.dw 192
.dw 249
.dw 164
.dw 176
.dw 153
.dw 146
.dw 130
.dw 248
.dw 128
.dw 152。