单片机课程设计-单片机的4x4光立方课程设计.doc_第1页
单片机课程设计-单片机的4x4光立方课程设计.doc_第2页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中州大学机电与汽车工程术学院单片机课程设计报告书题目: 4x4 光立方 姓 名: 班 级: 14电气自动化对口一班 学 号: 指导教师: 同 组: 时 间: 2015.12.28 目 录一 、摘要32、 设计目的与要求4 2.1设计目的42.2设计要求4三、硬件方案设计43.1单片机资源分配情况53.2复位电路53.3时钟电路53.4系统的工作原理图64、 软件设计114.1系统框图114.2程序流程图114.3程序13五、心得体会17六、参考文献17摘要当今社会,随着电子行业的不断发展,单片机凭借着其极高的性能价格比,受到人们的重视和关注,应用广泛,发展迅猛。单片机体积小,质量小,抗干扰能力强,对环境要就不高,价格低廉,灵活性好,已广泛的应用在工业自动化、通信、自动检测、信息家电、电力电子航空航天等各个方面。成为现代生产和生活中不可缺少的一部分。对于大三的我们来说,学习单片机也好久了,对单片机有了大体的了解,此次单片机课程设计,我们采用的是stc89c52rc系列的单片机,利用此单片机来控制一个“光立方”。光立方顾名思义就是一个立方体,我们采用的是4*4*4的模式,将led灯分成四层,利用程序来编写各种不同的效果来控制led的亮灭,最终使得整个立方体展现不同的造型和图案,使其变得美轮美奂,绚丽多彩。2、 设计目的与要求2.1设计目的 进一步掌握单片机的原理及其功能。学会利用单片机做一些课外电子设计与制作。 熟悉led点亮条件及其工作原理。 熟悉光立方显示的原理及其相关的线路连接。 通过此次的电路焊接和调试提高自己的动手及其分析问题的能力。2.2设计要求 .利用单片机控制4*4*4的led光立方显示一些3d的图形,通过编程编写一些程序控制单片机输出一些高低电平从而控制某个和某些led等亮和暗,由此来通过灯光显示一些3d图形。设计内容包括了时钟电路、复位电路、三极管驱动电路、led光立方电路等几部分的设计。根据内容画出相应的电路图,再编写出相应的程序。 .编写完程序后,进行实物的焊接,将程序烧写到单片机上,最后进行调试。三 硬件方案设计3.1单片机资源分配情况将4*4*4的led光立方分层4层,分别由单片机的p2.0,p2.1,p2.2,p2.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.1系统方框图时钟电路stc89c51rc芯片复位电路三极管驱动点路led光立方电路3.2程序流程图开始取层和列的数据调用显示子程序disp调用延时子程序delay元器件清单:名称数量彩灯64个at89s521片大led灯4个901316个102排阻2个1k电阻16个20pf瓷片电容2个12mhz晶振1个10uf电容1个330电阻1个4.7k电阻1个3.3 c语言程序#include #define uchar unsigned char void delay100ms(uchar data1ms) uchar i,j,m; for(i=0;idata1ms;i+) for(j=0;j110;j+) for(m=0;m100;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 c116= 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 l116= 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 l216= 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;hang8;hang+) for(shu1=0;shu116;shu1+) disp(c1hangshu1,l1hangshu1,l2hangshu1); / for(hang=0;hang1;hang+)/ / for(shu1=0;shu116;shu1+)/ shu2=0;/ disp(c1shu2shu2,l1hangshu1,l2hangshu1);/ / 6 心得体会此次为期半个多月的课程设计,让我感受颇深。最终看到了绚丽多姿,变化多端的led光立方的图案。在这半个多月的学习中,在很大程度上培养了自己的独立思考及其动手能力。学会了自己独立的发现问题、分析问题。老师还为我们提供了网络,遇到不明白的问题,首先是通过上网查阅相关资料、翻阅书籍找出问题的答案。而且还有老师在实验室指导我们的设计,在查阅资料仍找不到但答案的还可以请教老师。尽管此次设计过程中遇到些问题,但最终还是一步一个脚印过来了。本次写程序的过程中。在刚开始烧写程序进去调试时,发现led灯p0口和p2口控制的两组灯点亮的有点延时,不能够同步显示图案的效果。检查程序后发现,原来是在送完p0口数据后,就立马加了个延时,再送p2口数据,再延时,这样导致p0口与p2口之间的显示效果在视觉上慢了半拍,达不到预期图案要显示的效果,最后将中间的那个延时程序调到送完p2口数据之后再给其进行延时,通过调试发现能够正常显示。另外在编写各种图案显示代码的时候,让我深刻的体会到,要想编好相应的代码,光立方的三维空间的想象能力还是比较重要,64个灯到底是要求哪个灯给高电平哪个灯给低电平,还要根据显示要求组合好。以防出现乱码显示情况。在汇编程序中,刚开始想用移位指令来实现代码的传送,发现在一些简单的图案还可以(如扫描极有规律的显示),但在复杂一点的立体图就无法使用了,最后还是将其全部统一改写成调用数组的形式送代码,这样既简单又不容易出错。此次

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论