描述

本文为您讲解基于51单片机的4*4*4光立方程序实现原理及程序代码。LED光立方的复位电路、时钟电路、每层LED灯电路控制逻辑,系统总原理图,工作流程及相关C语言源码实现。希望能够对你学习了解LED光立方程序编写及LED立方实体制作起到一定的帮助指导作用。

3.1单片机资源分配情况

将4*4*4的LED光立方分层4层,分别由单片机的P1.0,P1.1,P1.2,P1.3,四个口来控制每一层,且给低电平有效,再有P0口和P1的总共16个口来控制16列,给高电平有效,P0和P1口加上位排阻,再给每一列加三极管放大,三极管的基极接单片机的P0和P1口,集电极接5V电源,发射极接每一列。这样就可以通过控制每个口的输出信号来控制每个的亮灭。

3.2复位电路

通过某种方式,是单片机内部各类寄存器的值变为出事状态的操作称为复位。单片机的复位是通过外部电路来实现的,复位引脚RET通过一个施密特触发器与复位电路相连接,施密特触发器用作噪声抑制,伟哥机器周期的S5P2时刻,复位电路采样一次施密特输出电平,获得内部复位操作所需要的信号。单片机的时钟电路正常工作后,CPU在RET/VPD引脚上连续采集到两个机器周期的高电平后就可以完成复位操作了,但实际应用时,复位电平的脉冲宽度一般大于1ms。复位电路通常采用上电复位、手动按键复位和看门狗复位三种方式,本次采用的是上电复位方式。

3.3时钟电路

单片机的各个功能部件的运行都是是时钟控制信号为基准,一拍一拍的工作。因此时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机

系统的可靠性和稳定性。常用的时钟电路设计为内部时钟方式,单片机内部有一个由反向放大器构成的震荡电路,芯片上的XTAL1和XTAL2分别为震荡电路的输入和输出端。只要在这两个引脚上接一个石英晶体振荡器和两个微调电容就构成内部方式的振荡器电路,有振荡器产生自激振荡,便构成一个完整的震荡信号发生器。

一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1、C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。本系统的C1、C2的值为33pf。

单片机在工作时,有内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,f表示。图2中的时钟频率为12MHz,即f=12MHz,则时钟周期为1/12us。

附注: 三极管可以不接,只是会影响光源亮度。

3.4系统的工作原理图

光立方一、二层:

光立方三、四层:

单片机口点连接:

三极管放大电路:

总原理图:

3.5 焊接实物图

元器件清单:

3.3 C语言程序

#include

#define uchar unsigned char

void delay100ms(uchar data1ms)

{uchar i,j,m;

for(i=0;i

for(j=0;j<110;j++)

for(m=0;m<100;m++)

;

}

void disp(uchar ceng,uchar lie1,uchar lie2 )

{

delay100ms(7);

P1=ceng;

P2=lie1;

P0=lie2;

}

void main(void)

{unsigned char hang,shu1;

unsigned char code C1[][16]={

{0x07,0x0B,0x0D,0x0E,0x0E,0x0C,0x08,0x00,0x00,0x08,0x0C,0x0E,0x0C,0x08,0x00,0x00},

{0x08,0x0C,0x0E,0x0C,0x08,0x00,0x00,0x08,0x0C,0x0E,0x0C,0x08,0x00,0x00,0x08,0x0C},

{0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E},

{0x0C,0x08,0x00,0x00,0x08,0x0C,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0C,0x0E,0x0F,0x0E,0x0C,0x08,0x00},

{0x00,0x00,0x00,0x00,0x00,0x0D,0x0D,0x0D,0x05,0x09,0x09,0x09,0x0D,0x0D,0x0D,0x05},

{0x09,0x09,0x09,0x00,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09},

{0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09}

};

unsigned char code L1[][16]={

{0xFF,0xFF,0xFF,0xFF,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x96,0x96,0x96,0x96,0x96},

{0x96,0x96,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC},

{0x01,0x03,0x07,0x0F,0x8E,0x8C,0x88,0x80,0x00,0x00,0x00,0x10,0x30,0x70,0x70,0x60},

{0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xCC,0x0F,0x33,0x66,0xCC,0xF0,0x33,0x66,0xCC},

{0x66,0x33,0xF0,0xCC,0x66,0x33,0xF0,0xCC,0xCC,0xCC,0xCC,0xCC,0x60,0x60,0x60,0x60},

{0xE8,0x74,0x32,0x11,0x00,0x06,0x66,0x60,0x60,0x60,0x00,0x00,0x06,0x66,0x60,0x60},

{0x60,0x00,0x00,0x00,0x80,0x40,0x20,0x20,0x20,0x60,0x62,0x60,0x30,0x10,0x80,0xC0},

{0x60,0x60,0x60,0x60,0x64,0x60,0x30,0x10}

// {0x01,0x02,0x04,0x08,0x80,0x40,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//列扫描

};

unsigned char code L2[][16]={

{0xFF,0xFF,0xFF,0xFF,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x69,0x69,0x69,0x69,0x69},

{0x69,0x69,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x33,0x33,0x33,0x33,0x33,0x33,0x33},

{0x00,0x00,0x00,0x00,0x00,0x08,0x88,0xC8,0xE8,0xF0,0x71,0x31,0x11,0x10,0x04,0x06},

{0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x33,0xF0,0xCC,0x66,0x33,0x0F,0xCC,0x66,0x33},

{0x66,0xCC,0x0F,0x33,0x66,0xCC,0x0F,0x33,0x33,0x33,0x33,0x33,0x06,0x06,0x06,0x06},

{0x8E,0x47,0x23,0x11,0x00,0x00,0x00,0x06,0x06,0x06,0x66,0x60,0x00,0x00,0x06,0x06},

{0x06,0x66,0x60,0x00,0x08,0x0C,0x06,0x66,0x06,0x06,0x06,0x06,0x03,0x01,0x00,0x08},

{0x04,0x64,0x06,0x06,0x06,0x06,0x03,0x01}

// {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x80,0x40,0x20,0x10}

};

while(1)

{

for(hang=0;hang<8;hang++)

{for(shu1=0;shu1<16;shu1++)

disp(C1[hang][shu1],L1[hang][shu1],L2[hang][shu1]);

}

// for(hang=0;hang<1;hang++)

// {

// for(shu1=0;shu1<16;shu1++)

// {shu2=0;

// disp(C1[shu2][shu2],L1[hang][shu1],L2[hang][shu1]);

// }

// }

}

}

打开APP精彩内容

点击阅读全文

光立方体c语言程序,444光立方程序怎么写 光立方原理图、源代码及制作教程相关推荐

  1. 单片机自动调光C语言,C51单片机控制40w调光电源C语言程序

    C51单片机控制40w调光电源C语言程序,12M晶振,500Hz 2ms,1000Hz 1ms,300Hz 3.3ms,330Hz 3ms .3ms为一个周期,30us中断一次,共可以有100次中断, ...

  2. c语言常考的程序,复试C语言常考趣味程序方案.doc

    复试C语言常考趣味程序方案 狼追兔子 1 巧夺偶数 2 五猴分桃 3 高次方数 4 借书方案 5 过桥问题 6 数制转换 7 打渔晒网 8 喝酒问题 9 哥德巴赫猜想 10 打印日历 11 抓交通肇事 ...

  3. 大家都在学C语言吧,作为程序员这有一个问题,秃顶算工伤吗?

    在各个年龄段的程序猿中,70后以年龄优势遥遥领先,80后开始油腻,90后开始掉发,掉发的迅猛程度隐隐有赶超80后的趋势,脱单已然不是他们最担心的问题,脱发才是! 程序猿敲掉不不光是键盘上的字母,更是头 ...

  4. c语言编程Turbo C 程序假想初步

    本节关键讲授Turbo C程序假想的全然步调及似果何编译.调试和运行源程序. 同时给出Turbo C的常用编纂号令.末了讲授Turbo C编译.毗连和运行时的常见错 误. 一.Turbo C程序假想全 ...

  5. c语言大学程序设计题库,黑龙江大学C语言程序设计试题库程序单选

    <黑龙江大学C语言程序设计试题库程序单选>由会员分享,可在线阅读,更多相关<黑龙江大学C语言程序设计试题库程序单选(5页珍藏版)>请在人人文库网上搜索. 1.黑龙江大学C语言程 ...

  6. c语言小学生加法考试题程序4,c语言编程题及答案.doc

    c语言编程题及答案.doc C C 语言编程题及答案(三)语言编程题及答案(三) 1. 给小学生出加法考试题 编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列 要求以循序渐 ...

  7. Apache Spark学习:利用Scala语言开发Spark应用程序

    Spark内核是由Scala语言开发的,因此使用Scala语言开发Spark应用程序是自然而然的事情.如果你对Scala语言还不太熟悉,可以阅读网络教程 A Scala Tutorial for Ja ...

  8. python语言能够整合各类程序代码-python语言概述

    python语言的发展 python语言诞生于1990年,由Guide van Rossum设计并领导开发. python语言是开源项目的优秀代表,其解释器的全部代码都是开源的. 编写Hello程序 ...

  9. python计算在月球的体重程序_# Python程序语言设计基础(第二版)程序练习题

    Python程序语言设计基础(第二版)程序练习题 3.1 重量计算,月球上物体的体重是在地球上的16.5%,假如你在地球上每年增长0.5kg,编写程序输出未来10年你在地球和月球上的体重状况. cur ...

  10. 用C语言用指针怎么算通用定积分,C语言:利用指针编写程序,用梯形法计算给定的定积分实例...

    题目要求 利用指针编写程序,用梯形法计算下列公式中的定积分: 参考代码 首先说明一下指针的用处:因为所传递的参数均为数字,并不需要使用指针提高效率,故这里使用指针指向函数. 请注意calc()函数中的 ...

最新文章

  1. “时隔 10 年,重新开始写代码的我要崩溃了!”
  2. Java互联网架构 百度云_java互联网架构师
  3. 标 题:[转帖]SQL Server日期计算(收藏)
  4. jquery 悬浮验证框架 jQuery Validation Engine
  5. lucene 索引优化
  6. 服务器事件刷新消息,Windows Server 2003 中的 DNS 事件消息 1616 到 6702
  7. matlab 的excel 对象,MATLAB 中的 COM 对象
  8. 数据结构课上笔记15
  9. python爬取新闻网站内容findall函数爬取_Python爬取新闻网标题、日期、点击量
  10. 浅谈 OneAPM 在 express 项目中的实践
  11. 手机语音翻译的小妙招,一步一步教你!一键音频转文字
  12. 修改初始Manager QuerySets,重写Manager.get_query_set()函数之后,发现并没有按照我们指定的方法执行。...
  13. 鼠标移上去切换背景色
  14. SQL中的Having与Where的区别(面试常问)
  15. 七夕抢付限量优惠,全新XPS13二合一笔记本戴尔官网独家首发
  16. 混合罚函数c语言程序,混合惩罚函数法.ppt
  17. 比特率,比特,字节的计算
  18. 如何在线批量将Word转换为PDF格式
  19. win2012R2无法打开匿名级安全令牌,安装.net 3.5
  20. IDEA直接查找快捷键来修改这个快捷键

热门文章

  1. MFC中MSChart控件安装使用
  2. squid服务的应用 转
  3. 【实用数学手册(第2版)扫描版.pdf】和【免安装Matlab.7.0.绿色破解U盘便携移...】 百度网盘下载地址
  4. android 修复工具下载,安卓数据恢复软件(FonePaw for Android)
  5. 适合计算机类研究生参加的比赛
  6. SAP 货币类型和公司代码的货币设置
  7. 【scratch高阶案例教学】scratch斐波那契数列 scratch创意编程 少儿编程 小朋友们也可以完成如此神奇的数列
  8. cad计算机绘图实操视频,cad工程制图教程视频
  9. 知道焊缝长度如何确定节点板尺寸_钢结构节点板(钢结构节点板尺寸如何选取)...
  10. 深度学习简明教程系列 —— 基础知识(合集)