下载此文档

51单片机应用:8只数码管同时显示多个不同字符.doc


文档分类:通信/电子 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
51单片机应用:8只数码管同时显示多个不同字符设计要求单片机控制8只数码管,同时显示8个字符。例如,从左至右显示“”,接着显示“”,在接着显示“”,……“”,“”,分析及方案设计:本题可以采用扩展I/O口或直接用单片机自身的I/O口的方法实现。为节省硬件设施并使电路连线尽量简单,采用直接使用单片机自身I/O口的方式,8个数码管同时显示数字则需采用动态显示方法,初步设定以P0口给出数码管显示字段,P1口选中某一时刻动态点亮的数码管。软件设计可以有以下几种方案:将全部显示状态列出,放在主程序中不断循环将显示状态放入8个数组中,每个状态循环一次后主程序重新开始循环只设置两个数组,其中一个取值不变,为正序的从1到8的共阳极数码管段码,另一个数组中的数值不断被修改,即每次显示状态改变的时候都相应改变一次,如从的段码改为的段码。从上述方案可以看出,若设置太多的数组或列出所有显示状态,程序虽然清晰易懂但占用程序存储空间明显较大,且用delay()函数延时的话会不断占用CPU;用两个数组和两个定时器虽然算法略复杂,但程序可以达到最简化。详细的方案说明:采用数码管动态显示方法。8个数码管由P3控制位选,即决定某一时刻哪一个数码管亮,由P0发出的总线控制显示的段码。定时器T0和T1同时工作,,采用方式1定时,每次溢出后由软件重装初值。设置中间变量temp,用于不断左移并给P3赋值;数组display[]为code即取之不变的数组,数组show[]中的取值变化。每次T0计数溢出时,temp左移一次,相应的P3左移一次,数码管由第i个点亮变为第i+1个点亮,与此同时赋给P0口的值由show[i]变为show[i+1],达到动态显示的效果。,但只有到1秒时才执行定时器1中断中修改数组show[]取值的程序,用变量t记录T1溢出的次数,达到200次时数组show[]中的内容开始进行修改并且t清零。假设showp[0]到show[7]中的取值分别为共阳极数码管显示1、2、3、4、5、6、7、8的段码,修改后分别变为显示2、3、4、5、6、7、8、1的段码,这样显示状态自然发生了改变。修改show[]中的取值为本程序中细节最多的部分,设置无符号长整型变量n(无符号长整型变量的取值为0到,按1秒增加1的速度计算,在实验范围内不会溢出)为显示状态总共改变的次数,易知show[0]的值为display[p],p为n除以8的余数,从此处开始循环给show[]重新赋值。硬件电路设计:程序:#include<>#include<>inti,t,m,a;unsignedlongn;unsignedcharcodedisplay[]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80};unsignedcharshow[]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80};//数组display的取值不变,数组show的取值每次显示状态改变时均改变一次,T0中断程序只管流水使得位选从0到7时依次显示show[]中从0到7的取值//unsignedchartemp; //定时器T1中断程序控制数组show[]取值的改变,使得现实状态相应改变//u

51单片机应用:8只数码管同时显示多个不同字符 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人gxngqvk
  • 文件大小51 KB
  • 时间2020-06-09