- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于89S52单片机的旋转LED数字时钟的设计报告
学 部:电子信息与电气工程学部
小组成员信息
蒋小波 200881228 电气信息类 电0816 郭也畅 200881489 电气信息类 电0816 李占东 200881381 电气信息类 电0816
大连理工大学
Dalian University of Technology
基于89S52单片机的旋转LED多变换模式时钟的设计报告
总体设计思路
关于原理:
人眼具有视觉暂留的错觉,无法区分间隔小于0.1s的图像。
因此,我们所要设计的旋转时钟大体有两部分构成:单片机控制系统部分和电机转动部分。
单片机控制部分由一系列的二极管及单片机最小系统组成。主要用来控制各二极管的亮与灭、计时等,以正确显示相应时间所对应的数字。
电机转动部分是一个转速约为5400rpm的硬盘电机,带上负载后,转速有所下降,电机带动单片机系统板和外围LED板转动。
这样,旋转时钟的基本框架就已构成:通过单片机控制二极管的亮灭,利用电机的转动,使人眼产生视觉暂留的错觉,呈现出数字时钟的走动的图像。
关于计时和电机转速监测的实现:
开启单片机内部的Timer0,晶振频率f=12MHz,t=Val(FFFF-MMLL+1)(us)TH0=MM,TL0=LL。
关于数字显示模式的实现:
先对0—9十个数字进行编码,这里应用5X7点阵相关特性,例如,若要用点阵实现4的显示,则对5X7点阵作如下编码:1110111、1000111、0000001、1110111、0000000。通过程序控制每一行显示0.02s。每列二极管在小于0.1秒内转动一圈时,人眼所看到的就是各位置二极管发光时所产生的图像的重合。因此,数字显示模式得到实现。
关于英文短语的实现:
原理与数字显示模式极为相似,先构建字模,然后再通过控制时序,使之显示英文短语, 如“I Love You”。
2.主体框架图:
3.电路原理图及PCB设计图:
3.1直流线性稳压电源:
通过9V电池加市售的三端集成稳压芯片7805来实现给单片机供电,由于单片机要随电机高速旋转,所以选用9V电池,电池固定在单片机上方,与转轴在同一位置,有效地减小离心力,防止电池被甩出。
3.2单片机主控模块:
通过 P1口下载程序, P0 , P2口控制下层板上的16个贴片LED,低电平有效
3.2.1电路原理图:
3.2.2 PCB图:
3.3 LED显示模块:
3.3.1电路原理图:
3.3.2 PCB图:
4.单片机程序:
4.1英文短语“I Love You”程序:
#includereg52.h
#define uint unsigned int
#define uchar unsigned char
uchar code I[]={0x7d,0x01,0x7d};
uchar code L[]={0x01,0xfd,0xfd,0xfd};
uchar code o[]={0xe3,0xdd,0xe3};
uchar code v[]={0xc7,0xfb,0xfd,0xfb,0xc7};
uchar code e[]={0xe3,0xd5,0xd5,0xe5};
uchar code Y[]={0x3f,0xdf,0xe1,0xdf,0x3f};
uchar code u[]={0xc3,0xfd,0xfd,0xc3};
//组成字母各自的字表,类似点阵
void delay(uint t)
{
register uint bt;
for(;t;t--)
for(bt=0;bt25;bt++)
;
} //定义延时函数,延时时间较短,能用延时更精确调节显示周期
void main()
{
char i;
while(1)
{
for(i=3;i=0;i--)
{P0=u[i];delay(2);}
P0=0xff;
delay(3);
//显示u
for(i=2;i=0;i--)
{P0=o[i];delay(2);}
P0=0xff;
delay(3);
//显示o
for(i=4;i=0;i--)
{P0=Y[i];delay(2);}
P0=0xff;
delay(10);
//显示Y,一个单词过后增加LED灯灭延时
for(i=3;i=0;i--)
{P0=e[i];delay(2);}
P0=0xff;
delay(3);
//显示e
for(i=4;i=0;i--)
{P0=v[i];delay(2);}
P0=0xff;
delay(3);
//显示v
for(i=2;i=0;i--)
文档评论(0)