使用51单片机输出控制LED显示

用11、0592MHz单片机P0端作LED输出,P2.0、P2.1作位选,P3.2接按键,控制显示实际与设定的内容。 {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳LED显示0,1,2,3,4,5,6,7,8,9。请大侠指教!!!

第1个回答  2011-04-09
热心人还是不少的,我就不瞎掺合了呵呵。顺便打个广告呵呵呵
步行者=====电子单片机团
个人主页(欢迎光临):http://hi.baidu.com/ball648500361/home追问

11.0592MHz,P1.0接受DS18B20信号,P1.1输出控制光耦通断,P0接LED数码管,P2.0、P2.1控制十位个位,P3.2接键盘,控制设定与实际值的显示。高手,能按这个还有那图给我写一个吗?要不给个联系方式,我把自己变得给你看看,帮我改进改进吧!

追答

qq1320249827

本回答被提问者采纳
第2个回答  2011-04-09
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软件的使用。
六,存在缺陷:没有考虑抗干扰的问题。
第3个回答  2011-04-08
是想做2位数码管显示程序吧?我有例子,给我信箱发给你,xsr@sina.com
第4个回答  2011-04-08
说具体一点追问

就是我在用51单片机和DS18B20控温,自己写的程序导入学习板后没反应,贴一个电路图你看看吧。帮我编下可以吗?

追答

#include"reg51.h"
#include "intrins.h" //_nop_();延时函数用
#define uchar unsigned char
#define uint unsigned int
#define SEG_OUT P2 //段码输出口
#define BIT_OUT P3 //扫描口
uchar code tab[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};
/* 共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-" */
uchar data dis_buff[4]={0,0,0,0,}; //待显示单元数据,共6个数据
/*************1毫秒延时程序**************/
delay1ms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
//
/***********LED显示动态扫描函数**********/
display()
{
char k;
char m=0xfe;
for(k=0;k<4;k++) //6位LED扫描控制
{ BIT_OUT=0xff;
SEG_OUT=tab[dis_buff[k]];
BIT_OUT=m;
delay1ms(3);
m=(m<<1)|0x01;

}
}
dis_buff[0]=temp/1000;
dis_buff[1]=(temp%1000)/100;
dis_buff[2]=(temp%100)/10;
dis_buff[3]=temp%10;
}
/****************主程序******************/
main()
{
while(1)
{
display();

}
}
四位数码管的显示

追问

11.0592MHz,P1.0接受DS18B20信号,P1.1输出控制光耦通断,P0接LED数码管,P2.0、P2.1控制十位个位,P3.2接键盘,控制设定与实际值的显示。高手,能按这个还有那图给我写一个吗?要不给个联系方式,我把自己变得给你看看,帮我改进改进吧!

怎么用51单片机一个IO口控制两个LED分别亮
1、新建项目,如图所示。2、添加头文件,创建延迟函数。3、创建C主函数。4、添加死循环效果。5、点亮LED灯。P1=0x7e;二进制11111110。6、添加延迟效果即可。注意事项:Proteus 自从有了单片机也就有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。它代表着汇编...

51单片机控制74hc595输出进而控制发光二极管点亮?
51单片机控制74hc595输出进而控制发光二极管点亮:74hc595是一个反极性驱动,也就是说如果用的是共阴数码管,段选端本应高电平点亮,如果在单片机的p口送个高电平,但是经过74hc595后你的高电平就变成低电平了,所以要在单片机那面往595送低电平,共阳相反,然后在将位选选通,如果想固定显示某个数或者循...

用51单片机,怎么来控制1000个左右的LED灯呢?
方法1:1000个左右的灯,需要10根地址线选通,51的IO管脚应该是没有问题。剩下的就是要用大量的译码器,把二进制信息转换为管脚信息。估计你仅仅是控制亮和灭,如果是这样选通也就可以进行明暗的控制,否则输出的信息也要加进去,就是说需要加驱动电路。方法2:用移位电路,比如HC595,在51中地址做...

利用51单片机控制3个LED数码管在3个数码管上显示字符LED,怎样编写程序...
delay_ms(1);\/\/延迟1ms这个时间越小越好拉 P2^0=0;\/\/关掉第1个数码管显示 P2^1=1;\/\/开始第二个数码管显示 \/\/然后就以此类推,3个,4个甚至8个数码管这样子写

Keil uVision4实例 51单片机控制LED灯闪烁
Keil uVision4实例 51单片机控制LED灯闪烁,关键看C语言的编程细节。建立项目:LED灯闪烁。新建C文件:LED灯闪烁 引用51头文件。将所有的灯都点亮。让所有的灯全部灭了。添加循环语句。添加一个变量。使用循环语句创造延迟。

请教c51单片机,c语言编程,关于控制LED灯闪烁频率?
即高优先级)。在无限循环中,不断检测K1和K2按键状态,以改变全局变量“freq”并控制LED灯的闪烁频率;然后使用一个计时器中断服务程序来控制LED灯的闪烁,具体实现方式请参考代码注释。最后,为了保证每个周期的闪烁持续时间与频率相符,应该在循环内部加入一个延时操作,等待一定时间再进入下一次循环。

【51单片机系列】74HC595实现对LED点阵的控制
在proteus中设计硬件,采用74HC595芯片进行控制。代码实现包含DS引脚输入串行数据、SHCP上升沿进行移位操作与STCP上升沿输出数据至并行端口。仿真结果显示了流水灯效果的实现。在另一应用中,利用74HC595控制LED点阵实现对角线灯亮的功能。proteus设计中的代码实现与仿真结果展示了对角线点亮效果的达成。

51单片机控制led灯点亮与熄灭
\/\/ 51单片机控制八个发光二极管 左右循环。include<reg52.h> define uchar unsigned char define uint unsigned int unsigned char TAB[]= {0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff}; \/\/ 改变这里 LED 各种花样 uchar t...

用51单片机写一个C程序,红外线反射管开关程序控制一个LED的亮灭
红外反射管 高低电平输出接P1.0 led接P1.1 程序如下:include"regc51.h"sbit IR=P1^0;sbit led=P1^1;main(){ while(1) { led=IR; }}

51单片机一键控制一个LED,每按一下按键LED闪烁一种频率,共闪烁三种频 ...
MAIN: SETB LED ;LED 灭 LL1: JB KEY , LL1 ;等待按键第一次按下 LCALL YS ;延时去抖 JB KEY,LL1 ;按键第一次按下 则往下执行 LL12: MOV TMOD,#10H MOV TH1, # 00H ;送时间常数较小 定时时间长 MOV TL1, #1CH SET...

相似回答