完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这就是点阵。
那么线阵到底是啥? 一条线的点阵就可以变成线阵,那么线阵到底是啥? 那就是让他转起来。。。 开始制作
电机+纽扣 电机驱动 大电池 电钻,用来打洞 工具 下面是自己写的一个接口: 图片或者字符转二进制 源码: 首先导入STC15系列的头文件 #include "stc15f2k60s2.h" 宏定义几个常用的 #define u8 unsigned char #define u16 unsigned int #define u32 unsigned long #define f(i,a,b) for((i)=(a);(i)<(b);(i)++) 写两个常用的延时函数 //4微秒 延时 void delay4us(u16 us) { u16 i; u8 m; for(i=0;i } //1毫秒 延时 //ms 1ms的倍数 void delay1ms(u16 ms) { u16 m; for(m=0;m } 真对 IAP15W4K61S4 STC15W4K56S4 系列 IO口初始化 io口初始化 P0 P1 P2 P3 P4 为准双向IO口 注意: STC15W4K32S4系列的芯片,上电后所有与PWM相关的IO口均为 高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用 相关IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2 P2.3/P2.7/P3.7/P4.2/P4.4/P4.5 void IO_init(void) { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; } 我这里用的是双色的,确定一下引脚的控制 左:绿 上:P47-P40 下:P37-P30 右:红 上:P17-P10 下:P27-P20 #define sgreen P4 #define xgreen P3 #define sred P1 #define xred P2 写两个函数分别控制红绿灯的亮灭 原理是通过高低8位来控制 void greenLed(u16 index){ sgreen = index>>8; xgreen = index; } void redLed(u16 index){ sred = index>>8; xred = index; } 接下来就是主函数了 main() { u16 len = 40; // 定义显示的长度 char GledStr[16][40] = { // 这个数组可以通过上面说到的那个我自己写的 转 二进制一个网址来生成,这里显示的是“牛B” {"0000000110000000000000000"}, {"0000110110000000000000000"}, {"0000110110000000111111000"}, {"0001111111111000111111100"}, {"0001111111111000110001100"}, {"0001100110000000110001100"}, {"0011000110000000110011100"}, {"0001000110000000111111000"}, {"0011111111111110110011100"}, {"0011111111111110110000110"}, {"0000000110000000110000110"}, {"0000000110000000110011110"}, {"0000000110000000111111100"}, {"0000000110000000000000000"}, {"0000000110000000000000000"}, {"0000000110000000000000000"}, }; u16 i,j; u16 msg; IO_init(); // IO初始化 while(1) { greenLed(0x0000); // 红绿灭,需要产生电平的减压,不然会影响视觉效果 redLed(0x0000); f(i,0,len){ // 将需要显示的16进制二维数组,一列一列的显示出来 // 灭灯 delay4us(360); greenLed(0x0000); redLed(0x0000); msg = 0x0000; // 初始化 16 进制 f(j,1,16+1){ // ledStr 列转16进制, 其实这里就是关键代码,看着就这几行,他确实很简单 if(GledStr[j]=='1') msg |= 1<<(16-j); // 将数组二进制存到 msg,用16进制理解 } // 亮灯 redLed(msg); greenLed(msg); delay4us(60); } delay1ms(10); } } 编译之后生成十六进制、就可以考代码了 其实肉眼看着效果要好一点,可能是该换手机了。 这个项目需要注意的地方:
|
|
|
|
只有小组成员才能发言,加入小组>>
2513 浏览 0 评论
1083浏览 2评论
700浏览 1评论
452浏览 0评论
193浏览 0评论
329浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 08:18 , Processed in 1.124202 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号