第5章-数码管显示制_第1页
第5章-数码管显示制_第2页
第5章-数码管显示制_第3页
第5章-数码管显示制_第4页
第5章-数码管显示制_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章数码管显示,1、静态显示2、动态显示,数码管介绍,共阳数码管和共阴数码管,数码管和单片机的连接,数码管显示段码表,在内部RAM开拓空间,MOVA,RiMOVRi,AMOVRi,#data;MOVRi,directMOVdirect,Ri,MOVA,R0,MOVR0,A,寄存器间接寻址指令,存入数据到内部RAM之中,从内部RAM取出数据,流水数码管汇编程序流程,利用C语言实现对数据存储器(RAM)的存取,在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别一维数组的定义方式为:类型说明符数组名常量表达式;例如:inta10;/说明整型数组a,有10个元素floatb10,c20;/说明实型数组b,有10个元素,实型数组c,有20个元素charch20;/说明字符数组ch,有20个元素,a5表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a0,a1,a2,a3,a4。数组初始化赋值是指在数组定义时给数组元素赋予初值。数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。初始化赋值的一般形式为:类型说明符数组名常量表达式=值,值值;其中,在中的各数据值即为各元素的初值,各值之间用逗号间隔。例如:charcha10=0,1,2,3,4,5,6,7,8,9;,而片内RAM的存储类型为DATA。因此指定数组的存储类型为DATA,就可以在RAM连续的空间存入数值。例如:unsignedchardataLED10=0 xc0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90;,流水数码管C程序流程,汇编语言对程序存储器(ROM)的开拓,前面的程序是将数码管的段码值放入到内部RAM之中。数据存储器(RAM)的存储速度虽然非常快,但是51单片机内部可供我们使用的数据存储器器容量仅为128字节,非常的少。而且数码管的显示段码值,是固定的,并不需要改变。我们能不能将这些数据存放在一旦写入就无法改变的程序存储器(ROM)之中呢?AT89C52内部的ROM容量为8KB,传统51单片机的内部ROM容量也达到了4KB。相比少的可怜的RAM容量,这些空间是非常广阔的。,程序存储器数据传送指令组,程序存储器既包括内部程序存储器,也包括外部程序存储器,程序存储器可扩展至64K。由于对程序存储器只能读而不能写,因此数据传输都是单向的,即从程序存储器中读出数据,并且只能传送给累加器A。总共有两条指令:,大家可以看到,此两条指令同样使用了间接寻址的符号,表示的意思就是累加器A的值加上数据指令DPTR的值,将这个值作为地址,将此地址里面的数据传送给A。DPTR在第2章简单作过介绍,它是51单片机中唯一可供我们使用的16位寄存器,因为程序存储器的地址范围可达216=65536=10000H,显然像R0这类的8位寄存器已无法覆盖所有的程序存储器的所有区域,所以使用16位寄存器DPTR就成为必然选择。程序存储器传送指令的助记赋是在MOV的后面加C,“C”是Code(代码)的简写。,MOVCA,A+DPTRMOVCA,A+PC,定义数据表格的伪指令,51单片机中有两条非常好用的伪指令用于指定程序存储器(ROM)的某一位置定义一系列常用数据,在程序运行过程中,利用程序存储器数据传送指令取出这些值。称这些被定义的常用数据称之为数据表格,称取出这些数据的过程称之为查表操作。,DB(DefineByte)定义字节命令本命令用于定义从指定地址开始,在程序存储器的连续单元中定义多个8位字节数据,命令格式:DB举例说明:LED_CODE:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H此指令表示在程序寄存器地址标号LED_CODE的位置定义了10个字节数据。,DW(DefineWord)定义数据字命令本命令用于从指定地址开始,在程序存储器的连续单元中定义多个16位的数据字。命令格式:DW存放时,数据字节的高8位在前,低8位在后。例如:D_ADDR:DW0FFEEH,0FFBBH,0AABBH,0AACCH,2344H此指令表示在程序寄存器地址标号D_ADDR的位置定义了5个16位字数据。,查表操作过程,数码管动态显示,将显示缓存区分配在RAM地址30H起始地址,数码管动态显示程序设计思路,建立显示缓存区。为了存放显示的数字,通常在内部RAM中开辟区域用于显示缓存区。在本实例中运用了8个数码管,就需要开辟8个字节的显示缓存区。在表5-3中,将30H作为显示缓存区的起始地址。,利用查表操作赋值段码给P0口。当然得在ROM建立共阳极数码管的段码数据表格。将显示缓存器内的值,加上数据表格的首地址,就可查到给当前数码管显示段码的地址,利用查表指令将此地址的值取出后直接给P0口,段码值就此获取。,位控信号的产生。某一时刻只能有一个数码管显示,所以P1口某一时刻只能有一个端口为高电平,因为使用的是共阳极数码管。利用循环左移或是循环右移指令控制P1端口让高电平不断的移动,依次点亮每个数码管。,延时同步。位控制信号和段码值必须同步的产生,以便指定某个数码管显示特定的数值,这样的值通过延时程序保持一定的时间,下个数码管的段码信号和位控信号同时产生,数码管显示脉冲计数器,主程序流程,中断服务程序流程,数据缓存区分配表,加1子程序设计方法,两字节合并汇编语言的加法指令只针对1个字节,所以要将两个字节的数值合并为一个。例如我们要处理个、十位这一部分。这一个字节分成两个部分,高4位用于放置十位,低四位用于放置个位,合并完毕后再加1。加1操作两个字节

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论