Ⅰ 单片机P1口与集成的好的led点阵模块接法
MHZ或更高频率晶振,以获得较高的刷新频率,时期显示更稳定。单片机的串口与列驱动器相连,用来显示数据。P1口低4位与行驱动器相连,送出行选信号;P1.5~P1.7口则用来发送控制信号。P0口和P2口空着,在有必要的时候可以扩展系统的ROM和RAM。
2列驱动电路
列驱动电路有集成电路74HC595构成。它具有一个8位串入并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行列数据的同时,传送下一行的列数据,既达到重叠处理的目的。
74HC595的外形及内部结构如图3所示。它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。引脚SI是串行数据的输入端。引脚SCK是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SI的下一个数据打入最低位。
移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端。RCK是输出锁存器的打入信号,其上升沿将移位寄存器的输出打入输出锁存器。引脚G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高组态。SCLR信号是移位寄存器清零输入端,当其为低时移位寄存器的输出全部为零。由于SCK和RCK两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰。芯片的输出端为QA~QH,最高位QH可作为多片74HC595级联应用时,向上一级的级联输出。但因为QH受输出锁存器的打入控制,所以还从输出锁存器前引出QH,作为与移位寄存器完全同步的级联输出。
QB 1 16 Vcc
QC 2 15 QA
QD 3 14 SI
QE 4 13 G
QF 5 12 RCK
QG 6 11 SCK
QH 7 10 SCLR
GND 8 9 QH
图3. 74HC595外形及引脚
4.1.3行驱动器
单片机P1口低4位输出的行号经4/16线译码器74LS154译码后生成16条行选通信号线,再经过驱动器驱动对应的行线。一条行线上要带动16列的LED进行显示,按每一LED器件20MA电流计算,16个LED同时发光时,需要320MA电流,选通三极管8550作为驱动管可满足要求。
4.2.系统程序的设计
显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。根据软件分层次设计的原理,可以把显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。显示驱动器程序由定时器T0中断程序实现。系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。
从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用C语言编写。
4.2.1显示驱动程序
显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下:
刷频率(帧频)=1/16×T0溢出率
=1/16×f/12(65536-t)
其中f位晶振频率,t为定时器T0初值(工作在16位定时器模式)。
然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。图4为显示驱动程序(显示屏扫描函数)流程图。
4.2.2系统主程序
本文设计的系统软件能使系统在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。
系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后以“卷帘出”效果显示图形,停留约3s;接着向上滚动显示“我爱单片机”这5个汉字及一个图形,然后以“卷帘入”效果隐去图形。由于单片机没有停机指令,
所以可以设置系统程序不断的循环执行上述显示效果。
单元显示屏可以接收来自控制器(主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容。
5性能分析与总结
5.1 性能分析
LED显示屏硬件电路只要硬件质量可靠,引脚焊接正确,一般无需调试即可 正常工作。软件部分需要调试的主要有显示屏刷新频率及显示效果两部分。显示屏刷新率由定时器T0的溢出率和单片机的晶振频率决定,表5.1给出了实验调试时采用的频率及其对应的定时器T0初值。
表5.1 显示平刷新率与T0初值关系表(24MHz晶振)
刷新率 25 50 62.5 75 85 100 120
T0初值 0Xec78 0Xf63C 0Xf830 0xF97E 0XFA42 0XFB1E 0xFBEE
从理论上来说,24Hz以上的刷新频率就能看到稳定的连续的显示,刷新率越高,显示越稳定,同时刷新频率越高,显示驱动程序占用的CPU时间越多。试验证明,在目测条件下刷新频率40Hz一下的画面看起来闪烁较严重,刷新频率50Hz以上的已基本察觉不出画面的闪烁,刷新频率达到85Hz以上时再增加画面闪烁没有明显的改善。
显示效果处理程序的内容及方法非常广泛,其调试过程在此不作具体讨论,读者可以照源程序自行分析。
这个方案设计的16x16的点阵LED图文显示屏,电路简单,成本较低,且较容易扩展成更大的显示屏;显示屏各点亮度均匀、充足;显示图形或文字稳定、清晰无串扰;可用静止、移入移出等多种显示方式显示图形或文字。
5.2 总结
本文设计的一个室内用16x16的点阵LED图文显示屏,能够在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。
总结本文的研究工作,主要做了下面几点较突出的工作:
一、通过查阅大量的相关资料,详细了解了LED的发光原理和LED显示屏的原理,了解了LED的现状,清楚地了解了LED显示屏与其它显示屏相比较有那些
优点,明确了研究目标。
二,本文设计的LED显示屏能够实现在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。
三,文章给出了系统具体的硬件设计方案,硬件结构电路图,软件流程图和具体汇编语言程序设计与调试等方面。
四,在这次毕业设计的过程中学会了 Protel 99se 的基本使用,感到Protel 99se 对自动化专业的同学来说是一门很有用的课程。
五,通过这次毕业设计,重新复习并进一步学习了MCS-51;熟练掌握了WORD软件的使用。
六,存在缺陷:没有考虑抗干扰的问题。
Ⅱ 我用串口调试助手向单片机发送数据 并让P2口的数码管显示 我发送了 p2口怎么没有变化啊
你用T0做溢出率是不行的,T0没有方式2的功能,只有T1才有自动载入功能.
要用T1来做,并且你的REN=1;SM0=0;SM1=1;顺序也有问题
改成:
void init()
{
TMOD=0X20;
TH1=0Xfd;
TL1=0Xfd;
TR1=1;
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;
}
Ⅲ 51单片机用T0计数器计算T1定时器的溢出次数,该如何实现
方法一:
只开T1定时器中断,在T1定时器中断子程序中对(TH0 TL0)做加一运算。
方法二:
T1定时器模式,T0计数器模式,在T1定时器中断子程序中对某一固定引脚Px.x做“置1-清0-置1”操作,并将对应引脚连接在T0(P3.4)引脚。默认情况下T0中断比T1中断权限高,每次定时器T1溢出后,会在中断子程序内对引脚Px.x进行“置1-清0-置1”,过程中1到0的下降沿跳变会引起(TH0 TL0)加一;直到计数器T0溢出前的“置1-清0”时刻后“置1”时刻前,T0产生溢出中断,中断T1的中断子程序。
比较:
如果仅仅为了计算“T1定时器的溢出次数”的话,随便定义两个字节的“内部RAM数据存储器”就可以了,和方法一类似,在中断子程序中,对寄存器内数值加一,完全可以实现。
用T0算T1太浪费资源了!
定义“内部RAM数据存储器”计算“T1定时器的溢出次数”的程序:
可以用Keil仿真以下,能看出效果的!
Ⅳ 51单片机模拟通讯通讯的启动串口接收函数,TL0 = 256 - ((256-TH0)>>1)这句话怎么分析
首先你要明白溢出率怎么算,溢出率等于每溢出一次时间的导数,也就是定时时间的导数。256-TH0算出来的是定时时间,右移以为相当于除2。然后再用256减去,付给TL0
Ⅳ stc12c5a60s2单片机 输出自带pwm频率怎么改变,比如说我现在需要50hz的频率
1,stc12c5a60s2一般pwm频率=PCA时钟源/256
2,PCA时钟源设置有4种方式,一般都有T0的溢出率,来设置PCA时钟源,
一般在COMD这个寄存器的B2,B1两位来确定是那种方式,10方式就是T0溢出方式(1T更快),可以做可变PCA时钟源时钟源,从而得到可变频率的pwm输出。
3,理论可生成(1-65535)个频率级别,如12MHz主频,(1T)方式最小可以做到12MHz,但实际是到了的最快也就是1/2SYsclk,即6MHz,然后除以256,理想可以输出23Khz~0.5Hz左右的频率范围
Ⅵ 定时器t0的溢出率计算公式是什么
计时器在方式2时的溢出率=fosc/{12×[256-(TH1)]},其中fosc是晶振的频率,是11.0952MHz
Ⅶ 51单片机的溢出率什么意思
指的是定时器一秒钟溢出多少次,它是串口通信的时间基准,不管是同步通信还是异步通信
通信时定时器工作在8位模式,最大计数值是256个脉冲(如果晶振12兆,256个脉冲即256uS),如果装入初值156,则经过100个脉冲后计数值达到256,即溢出,所以100us溢出一次,溢出率即每秒10000次
Ⅷ 请问单片机中的定时器1的溢出率是怎么回事呢
肯定“0o小威哥o0”在2013年给出的评论。
我从书上看到了这样的解释,稍后把资料源摆在下面:
定时器T1有方式0、1、2、3。区别在于位数和装载方式不同。
因为方式2的计数器位数是8位的,而且可以自动重装载(计数器计满以后,硬件自动把计数初值装载到8位计数器里面),所以适合可以比较精确的计时。
我赞同定时器的溢出率是每秒溢出的个数的说法。对于您给出的计算公式,我想修正完善一下:
当单片工作在12分频模式时,定时器T1的溢出率=(fsys/12)/(256-TH1)。
解释一下,fsys作为单片机CPU、内部接口的时钟成为系统时钟。您给出的fosc,据我所知是时钟源(振荡器时钟)信号的频率。fsys与fosc有什么关系呢?
因为时钟源信号需要经过一个可编程(也就是可以位操作或直接对某寄存器操作)的时钟分频器再提供给单片机CPU和内部接口的。关系就是靠一个分频系数N得到的。fsys=fosc/N。可编程时钟分频器是靠时钟分频寄存器CLK_DIV(PCON2)控制的。当分频系数N=1的时候,显然有fsys=fosc。因为时钟分频器是可编程的,所以fsys与fosc就有不相等的可能性。通过控制PCON2寄存器的CLKS2、CLKS1、CLKS0,可以分别获得1、2、4、8、16、32、64、128的分频系数N。注意:我这里说的12分频工作模式只针对与系统时钟频率,不针对与时钟源频率,对于某时钟源频率fosc经过4分频得到系统时钟频率fsys,在计时器T1的高8位计数器TH1计数的时候每经过12个时系统钟频率,计数器才加1。
参考书籍:单片微机原理与接口技术,丁向荣主编,电子工业出版社。全书第30页,系统时钟与时钟分频寄存器。
参考资料:STC89C52系列单片机指南,下载地址 www.stcmcu.com ,网页比较大,内容比较多(建议用ctrl+F 开启网页查找:stc89c52,立马就搜索到了,下载这个技术手册,找到235页)。
最后想要补充的,君子美美与共,和而不同:D 。我认为,分享学习到的知识是我学习与表达生活的一种方式。知识经过分享,让更多人收益,帮助到其他人,才有可能发挥知识的价值。知识留在书本上,一点价值都没有,要是用来考试的话就太可悲了。有不对的地方,希望包含。
Ⅸ 51单片机定时计数器溢出率计算和串口的波特率之间的关系
串口工作在方式1和3,则波特率由定时器T1的溢出率来决定,关系如下:
波特率 = ((2^SMOD)/32)*T1溢出率,
这里T1溢出率 = fosc/[12×(28-X)],则:
波特率=((2^SMOD)/32)×fosc/[12×(28-X)]
2^SMOD是2的SMOD次方,SMOD是波特率是否要加倍的控制位,默认是0,
fosc就是晶振的值,
X就是装入TH1的值。
Ⅹ 关于stc12c5a单片机的问题 写的pwm 发生程序 如何使频率 占空比变化 TMOD=0x10 CMOD=0x04
1直接赋值就可以,将数据送到变量a,将a赋给cCCAP1H
cCCAP1L就可以了改变占空比了 ,
如:a=0x80;
CCAP1H=CCAP1L =a;输出一半50%,
2改变频率可以,通过改变T0的溢出率来调频,设置CMOD=0x04;表示用用T0来调频