for(j=0;j<110;j++)
for(m=0;m<100;m++)
;
}
voiddisp(ucharceng,ucharlie1,ucharlie2)
{
delay100ms(7);
P1=ceng;
P2=lie1;
P0=lie2;
}
voidmain(void)
{unsignedcharhang,shu1;
unsignedcharcodeC1[][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}
};
unsignedcharcodeL1[][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},//列扫描
};
unsignedcharcodeL2[][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]);
//}
//}
}
}
6.心得体会
此次为期半个多月的课程设计,让我感受颇深。
最终看到了绚丽多姿,变化多端的LED光立方的图案。
在这半个多月的学习中,在很大程度上培养了自己的独立思考及其动手能力。
学会了自己独立的发现问题、分析问题。
老师还为我们提供了网络,遇到不明白的问题,首先是通过上网查阅相关资料、翻阅书籍找出问题的答案。
而且还有老师在实验室指导我们的设计,在查阅资料仍找不到但答案的还可以请教老师。
尽管此次设计过程中遇到些问题,但最终还是一步一个脚印过来了。
本次我主要的是负责程序的编写。
在刚开始烧写程序进去调试时,发现LED灯P0口和P2口控制的两组灯点亮的有点延时,不能够同步显示图案的效果。
检查程序后发现,原来是在送完P0口数据后,就立马加了个延时,再送P2口数据,再延时,这样导致P0口与P2口之间的显示效果在视觉上慢了半拍,达不到预期图案要显示的效果,最后将中间的那个延时程序调到送完P2口数据之后再给其进行延时,通过调试发现能够正常显示。
另外在编写各种图案显示代码的时候,让我深刻的体会到,要想编好相应的代码,光立方的三维空间的想象能力还是比较重要,54个灯到底是要求哪个灯给高电平哪个灯给低电平,还要根据显示要求组合好。
以防出现乱码显示情况。
在汇编程序中,刚开始想用移位指令来实现代码的传送,发现在一些简单的图案还可以(如扫描极有规律的显示),但在复杂一点的立体图就无法使用了,最后还是将其全部统一改写成调用数组的形式送代码,这样既简单又不容易出错。
此次设计在丁老师的指导下完成的,老师扎实的专业知识,让我觉得自己还有好多的知识需要去学习。
在这大学的时间,要好好的提升自己的相关技能。
七.参考文献
1.张毅刚.《新编MCS-51单片机应用设计》.哈尔滨工业大学出版社2003
2.朱兆优、陈坚等.《单片机原理及应用》.电子工业出版社2010
3.秦曾煌.《电工学》高等教育出版社.2009
4.欧阳斌林.《单片机原理及应用》.中国水利水电出版社2006
5.潭浩强.《C程序设计》.北京航空航天出版社
6.付晓光.《单片机原理与实用技术》.清华大学出版社
7.邹寿彬.《电子技术基础》.清华大学出版社
8.许熙文.《电路基础》.高等教育出版社