基于89C51单片机的旋转显示屏设计与实现Word文件下载.docx
- 文档编号:20332421
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:15
- 大小:656.42KB
基于89C51单片机的旋转显示屏设计与实现Word文件下载.docx
《基于89C51单片机的旋转显示屏设计与实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于89C51单片机的旋转显示屏设计与实现Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
计算机先通过RS232接口将数据传送到一个89C2051单片机,将数据用38KHz调制后利用红外设备传输。
此外,在显示屏高速旋转时,显示内容的稳定与否取决于转动的相位与LED发光时间的配合精度,所以还需要一个校准器件来判断显示屏的转动是否到达准确位置并根据结果做出校正处理,本设计中选用了霍尔元件进行相位检查并完成校正功能,使LED发光与旋转保持同步。
图3硬件构成图
2.部分单元电路的设计
在硬件电路中,对几个关键电路我们采用的设计是:
(1)显示电路
图4显示电路图
发光二极管的亮度决定了显示屏的视觉效果,我们采用2803芯片为发光二极管提供驱动,驱动电流达35mA(为保证发光二极管在该电流下能正常工作,我们对发光二极管进行了抽样测试,在45mA下工作十个小时,没有损坏)。
另外,由于89C51是8位数据处理器,我们可显示的最大数据位数可为16位,在设计时使用两片74HC573对接的方法提供两级数据锁存、缓冲,实现对端口的扩展能力。
2、字库电路
图5字库电路图
我们为89C51扩展了一片512KB容量的存储器芯片29C040,能够满足普通使用要求。
3、红外发送、接收电路
从计算机串口接收数据,可以在显示屏工作的状态下直截通过电脑进行显示内容的改变。
实现该功能的是红外发送和接收电路。
红外发送电路有双重功能:
一是从计算机串口接收数据,二是将接收的信号调制成红外传输信号。
计算机的数据可以通过串口调试软件直接发出,发出的数据每包为固定的20个ASCII字符或10个汉字,采用低速发送以提高红外传输的准确度。
为了在显示屏高速旋转工作的状态下能准确无误地接收到红外数据,我们,在与显示主板相联的旋转中轴上端打一个通孔,在通孔上安装红外接收模块,让红外模块接收到的数据直截送给显示主板上的控制器。
在红外接收模块的正上方上固定安装的一个与红外发射头相联的发射板。
发射板是以AT89C2051为控制核心。
所有从电脑串口传送过来的数据都是通过它转变成带有38K载波的红外数据格式送给红外发射头供发射使用。
具体电路如下:
图6红外发送电路
电路中,T1完成从RS232到单片机串口的电平转换。
T2是红外发光管的驱动管。
图7红外接收端电路图
该红外接收端位于转轴顶部,自带38KHz解码功能,电路设计简单、使用方便。
AT89C2051中的程序如下:
ORG0
JMPSTART
ORG0BH
JMPT0_INT
START:
CLRP3.5
MOVTMOD,#2
MOVTH0,#243;
红外发射38K参数设置
MOVTL0,#243
SETBEA
SETBET0
WAIT:
CLRP1.0;
信号指示灯
JBP1.7,WAIT;
P1.7串口信号输入
SETBP3.5
SETBTR0
SETBP1.0
JNBP1.7,$
CLRTR0
MOVTH0,#243
JMPWAIT
T0_INT:
CPLP3.5;
载波38K输出
RETI
END
4、相位检测电路
图8相位检测电路图
图中CON3为霍尔元件,当显示屏旋转到磁铁所在位置时,输出低电平脉冲至89C51,作为位置基准信号。
三、控制程序
显示内容的接收、转换、同步、显示都在控制器的控制之下。
根据数据的处理过程,我们编写了相应的控制软件。
1、控制程序流程图
图9控制程序流程图
2、控制程序说明
(1)当程序开始运行的时候,首先就是要对程序进行初始化,主要作用就是让程序按照我们所设计的初始值去运行。
初始化之后,由红外接收器判断是否有数据送入,如果有数据送入就通过红外接收器进行接收,然后将该数据转换为点阵,再存入显示缓冲区,再根据霍尔元件检测到的同步信号,对数据进行校对,如果有数据输入的话那就将数据计数器进行清零。
执行完成后返回到初始化操作之后重复以上的操作。
(2)如果红外接收器没有检测到数据输入,则直接检查霍尔元件是否有同步信号,有则就返回初始化操作,无就直接读取片外存储器提取字库,然后进行显示。
对送数据计数器进行加1指令。
随后返回到初始化操作之后进行循环扫描。
四、设计制作过程中问题的解决
1、结构问题
我们认为,整机的机械结构是决定作品成败的关键。
经过试验,结构强度对稳定性影响很大,因此采用角钢支架,以钢板为底,同时对转盘进行平衡调节,基本解决了转动的稳定性问题。
防振采取了以下措施:
(1)在各种元器件的摆放位置上都做到平衡放置的要求;
(2)将电源、变压器设为一体以便加大主体的重量,从而抑制振动;
(3)采用钢质材料,从而加固各级子部件之间的联接,来减小振动;
(4)关键传动部位,严格要求加工精度,从根本上消除振动。
3、噪声问题
由于我们的框架是纯手工制作,所以它的精度并不是很高,在高速旋转的情况下难免会有一定的声音,于是我们采取了一系列的方法来减少噪音,比如让中间的主旋转框架在旋转的过程中尽量保持平衡,不致因哪一方过重从而导致噪音过大,在齿轮和轴承上添加润滑油以减小噪音的产生,在主框架外加上玻璃罩以隔离噪音。
4、供电问题
由于我们的电路板是随主框架一起高速旋转的,所以不可能使用导线进行供电,因为这样会把导线缠上,所以我们就另外想了两种方案。
(1)在中心轴的周围装上4个电刷,由电源通过电刷对高速旋转中的主电路板进行供电。
采用电刷供电的优点是结构简单、成本低。
但有电火花干扰的顾虑。
(2)在中心轴上面放一个小型发电机,发电机的定子为磁铁,固定在轴上,线圈为转子,直接连接在电路上,高速旋转时即可产生电流,对主电路进行供电。
这种方法可克服由电刷产生的干扰。
在制作过程中我们先进行了实验,用单片机做了个循环灯控制器作为主电路,然后用电刷进行供电,结果发现使用碳刷后再使用稳压电路,可保证单片机系统的正常工作,因此我们选择了由电源通过电刷来对主电路板进行供电。
5、信号传输问题
由于控制单片机是在旋转的支架上,从计算机到单片机的数据传送也成了一个问题。
数据的传输不能采用电刷来进行,因此采用了红外传输的方式。
为了使红外传输可靠,采用了家电红外遥控的38KHz调制方式,使用了带有放大和解调功能的接收模块,很好地解决了这一问题。
6、同步问题
显示的图像或文字要稳定,同步是关键。
要达到同步的目的,同步信号的取得是关键。
在设计前,我们考虑了多种方案,如光电式、磁场式等,最后选择了使用霍尔器件的磁场方式,达到很好的效果。
五、小结
本系统以单片机芯片为核心部件,通过电脑来控制和调节所要显示的内容,通过红外数据传输可实现在显示屏旋转中对显示内容进行更改。
在设计过程中,力求硬件线路简单,充分发挥软件在编程方面灵活的特点,来满足系统设计的要求。
制作的成品也能完全实现显示所要达到的要求,能够显示出清晰,美丽的图案,但由于时间有限,系统还存在一些误差,存在很多有待改进的地方。
在竞赛的过程中,我们遇到了许多突发性的不太好解决的问题,也曾有过对自己没有信心的时候,但经过仔细冷静地思考之后,我们还是以最快的时间调整自我,回归参赛状态,继续进行设计。
通过这次比赛,我们深深的体会到了团队间的共同协作的重要性,提高了自己的动手能力和解决问题的能力。
C51源程序:
#include<
reg51.h>
sbitgate11=P3^0;
sbitgate12=P3^1;
#defineunitunsignedint
#defineucharunsignedchar
ucharcodeGB_16[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"
"
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x34,0x40,0xC4,0x38,0x04,0x0F,//"
欢"
0xC4,0x07,0xFC,0x3C,0x3E,0x98,0x24,0x60,
0x18,0x30,0x0E,0x1C,0xEF,0x0F,0xCA,0x07,
0x48,0x1C,0x38,0x70,0x1C,0xE0,0x08,0x40,
0x00,0x00,0x40,0x40,0x46,0xE0,0xDC,0x3F,//"
迎"
0xE8,0x1F,0x40,0x32,0xFE,0x67,0xFC,0xC3,
0x06,0xC2,0x03,0xC1,0xFD,0xFF,0xFC,0xDF,
0x04,0xC2,0xFC,0xC7,0xFE,0xC3,0x04,0x40,
0x00,0x00,0x00,0x80,0x80,0x80,0x82,0x40,//"
光"
0xBC,0x60,0x98,0x38,0x80,0x1F,0xFF,0x07,
0xFE,0x00,0x80,0x7F,0xE0,0xFF,0xB8,0xC0,
0x9E,0xC0,0xC4,0xC0,0x80,0xF0,0x00,0x40,
0x00,0x00,0xF8,0x0F,0xF0,0x07,0x00,0x00,//"
临"
0xFF,0xFF,0xFE,0x7F,0x80,0x00,0x60,0xFF,
0x38,0x7E,0x1E,0x42,0x3F,0x7E,0x6A,0x7E,
0x68,0x42,0xC8,0xFE,0x4C,0x7F,0x08,0x02,
0x00,0x00,0x04,0x00,0x04,0x00,0x44,0x70,//"
艺"
0x44,0xF8,0x5F,0xCC,0x5F,0xC6,0x44,0xC2,
0x44,0xC1,0xC4,0xC1,0xFF,0xC0,0x5F,0xC0,
0x04,0xC0,0x04,0xC0,0x06,0xF8,0x04,0x60,
0x00,0x00,0x44,0x22,0x4C,0x1A,0x7C,0x4E,//"
新"
0xD7,0xFF,0xE6,0x7F,0x7C,0x0E,0x5C,0x9A,
0x44,0x60,0xFE,0x3F,0xFC,0x1F,0x46,0x00,
0xC2,0xFF,0xC3,0xFF,0x62,0x00,0x40,0x00,
0x00,0x00,0x00,0x40,0x04,0x40,0x04,0x40,//"
工"
0x04,0x40,0x04,0x40,0x04,0x40,0xFC,0x7F,
0xFC,0x7F,0x04,0x40,0x04,0x40,0x04,0x40,
0x06,0x40,0x04,0x60,0x00,0x40,0x00,0x00,
0x00,0x00,0x80,0x00,0x60,0x00,0xF8,0xFF,//"
作"
0xEF,0x7F,0x06,0x00,0x40,0x00,0x30,0x00,
0x1C,0x00,0xFF,0xFF,0xFA,0xFF,0x48,0x04,
0x48,0x04,0x68,0x04,0x4C,0x06,0x08,0x04,
0x00,0x00,0x08,0x00,0x1C,0x80,0x0E,0x81,//"
室"
0x94,0x8B,0xD4,0x89,0x75,0x89,0x37,0xFF,
0x16,0xFF,0x34,0x89,0xD4,0x89,0x94,0x8B,
0x1C,0x81,0x0E,0xC0,0x04,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unitdisp1,disp2,key1,key2;
unita,w,ii,jj,kk;
voidDelay(unitms)
while(--ms);
}
voiddisplay_HZ(void)
gate11=key1;
gate12=key2;
for(ii=0;
ii<
5;
ii++){
for(jj=0;
jj<
16;
jj++){
P2=~GB_16[jj*2+ii*32+kk*2];
P1=~GB_16[1+jj*2+ii*32+kk*2];
Delay(120);
P1=0xff;
P2=0xff;
}
voidintersvr0(void)interrupt0
key1=!
key1;
key2=!
key2;
w=1;
if(kk<
240)kk++;
elsekk=0;
voidmain(void)
EA=1;
IT0=1;
EX0=1;
key1=0;
key2=1;
for(;
;
){
w=0;
Delay(40);
if(w==1)display_HZ();
利用人眼的视觉暂留效应,使手在摆动到不同位置的时候,让位于一条直线上的LED显示二维图像的不同的列,实现图形扫描显示。
T__V)s?
.<
?
~1[_{_,Rr=
物理机制:
_`)WFk_L
T_|2_\NZFw
当我们在摆动手臂的时候,短时间内摆动位置和左右幅度不会有太大变化,利用我们手臂的这个运动规律,只要能得到棒从一侧摆动到另一侧的时间,然后把这个时间分成N份,然后在每一份的时间里显示不同的花样就能实现图形的显示。
当我们在摆动手臂的时候,并不能预先得知此次摆动需要的时间,怎样得到从一侧摆动到另一侧的时间呢?
再想想,短时间内我们手臂的摆动频率也不会有特别大的变化,我们只要能得到前一次摆动所用的时间,然后用这个时间近似得到下一次摆动所需要的时间,然后分N份就可以了。
得到一次摆动所需的时间的任务由光遮断器完成,在棒上装一个可以摆动的用来遮挡光遮断器光线的细杆,粗细比光遮断器的狭缝稍宽,我用的是整流桥焊后剪下的一段管脚。
每左右摆动一次这个杆就会通过一次光遮断器,使单片机产生一次中断,两次中断之间的时间就是想要得到的时间,实现这个功能用掉2051的一个定时器T0和外部中断INT0。
然后用2051的另一个定时器T1,其定时时间是T0的N分之一,每次中断依次显示一列,就是照片上的效果。
D]_7{_{w;
(T&
___2Xb
再细想一下,手臂摆动的频率大于2Hz的时候才大概能由视觉暂留看出图形,再快也不过十几Hz,由T0为16位定时器的最长计时时间得到2051的时钟频率1MHz最合适,还有遮挡__.a__EJ8@
Cg{1<
4~KK
用的细杆的粗细也可以大概估算,使其不会对计时精度产生太大影响。
O_,{d(wWC
]0Rs*1_NbL
所用元件:
___[_2w&
&
8bD_$O+/,
AT89C20518元Uv7WDz**,0
高亮LED共8个3.6元_]q+}9(_=
电池盒0.5元B0:
_u>
U5t
单面万用板8元可以裁成3块,做3个摇棒&
.HPNNP*]
陶瓷谐振器1元
W<
Vu[_op_
光遮断器2元tX>
X|K]6Z
电阻电容导线2元,Vxm,u"
NE3
外壳*0.7元可以裁成2块_Kc__JM
X
%YX~):
5_
可选元件:
<
__l_
_)
电源开关1元_{K7_>
4.8t
|J$)o,JEql
总成本不超过20元V_s__(__5
__{NMr_'
'
d
*外壳我用在家乐福买的半透明文件夹卷成的HTTG__Fo%h
(Qy_K_
/
8%sG_+s_P
此电路电路非常简单,代码短,但是用到了2051的外部中断编程和T0、T1定时器编程,非常适合初学者练习。
我制作这个玩具花费了两个晚上的时间。
此电路和程序还有扩展改进@h8B)_Q-Js
%LdBU__$z
的空间,如在长时间不摆动的情况下可以使单片机进入省电模式,显示不仅限于对称图片等,大家可以试试。
_S\pi_1V*_
以下是源程序:
aBly_?
_qT
_$I(Irwi+N
=_U_dUut>
h
/*************************************************************************/M]_nP_0n
wqYQ4#(
#defineSEG17//每帧图片分成17列
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 89 C51 单片机 旋转 显示屏 设计 实现