51单片机 漩涡流水点阵
来源:互联网 发布:javascript格式化xml 编辑:程序博客网 时间:2024/05/17 05:54
#include <reg52.h>typedef unsigned char uchar;typedef unsigned int uint;typedef unsigned long ulong;sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;uchar image[8] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};uchar T0RH, T0RL;uint rate;void LEDScan();void resetImage();void configTmr0(uint ms1, uchar ms2);void main() {EA = 1;ADDR3 = 0;ENLED = 0; configTmr0(50, 2); while (1) ;}void configTmr0(uint ms1, uchar ms2) { ulong tmp; rate = ms1 / ms2; tmp = 11059200 / 12; //定时器计数频率 tmp = (tmp * ms2) / 1000; //计算所需的计数值 tmp = 65536 - tmp; //计算定时器重载值 tmp = tmp + 12; //补偿中断响应延时造成的误差 T0RH = tmp >> 8; //定时器重载值拆分为高低字节 T0RL = tmp;TMOD &= 0xF0; TMOD |= 0x01; TH0 = T0RH; TL0 = T0RL; ET0 = 1; TR0 = 1; }#define LEDScan(); {\ static uchar i = 0; \ P0 = 0xFF;\ P1 = (P1 & 0xF8) | i;\ P0 = image[i];\ i = ++i & 0x07;\}void resetImage() { static uchar x = 0, y = 0; image[y] ^= (0x80 >> x); if (x == 3 && y == 4) { x = 0; y = 0; } else if (y <= x + 1 && x + y < 7) { x++; } else if (x + y >= 7 && y < x) { y++; } else if (y >= x && x + y > 7) { x--; } else y--;}void interruptTmr0() interrupt 1 { static uint i = 0; TH0 = T0RH; TL0 = T0RL; LEDScan(); if (i == rate) { resetImage(); i = 0; } else i++;}
双向流水:
#include <reg52.h>typedef unsigned char uchar;typedef unsigned int uint;typedef unsigned long ulong;sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;uchar image[8] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};uchar T0RH, T0RL;uint rate;void LEDScan();void resetImage();void configTmr0(uint ms1, uchar ms2);void main() {EA = 1;ADDR3 = 0;ENLED = 0; configTmr0(50, 2); while (1) ;}void configTmr0(uint ms1, uchar ms2) { ulong tmp; rate = ms1 / ms2; tmp = 11059200 / 12; //定时器计数频率 tmp = (tmp * ms2) / 1000; //计算所需的计数值 tmp = 65536 - tmp; //计算定时器重载值 tmp = tmp + 12; //补偿中断响应延时造成的误差 T0RH = tmp >> 8; //定时器重载值拆分为高低字节 T0RL = tmp;TMOD &= 0xF0; TMOD |= 0x01; TH0 = T0RH; TL0 = T0RL; ET0 = 1; TR0 = 1; }#define LEDScan(); {\ static uchar i = 0; \ P0 = 0xFF;\ P1 = (P1 & 0xF8) | i;\ P0 = image[i];\ i = ++i & 0x07;\}void resetImage() { static uchar x = 0, y = 0; image[y] ^= (0x80 >> x);image[7-y] ^= (0x01 << x);if (x == 3 && y == 4) {x = 0;y = 0;}else if (y <= x+1 && x + y < 7)x++;else if (x + y >= 7 && y < x-1)y++;else if (y >= x-1 && x + y > 7)x--;elsey--;}void interruptTmr0() interrupt 1 { static uint i = 0; TH0 = T0RH; TL0 = T0RL; LEDScan(); if (i == rate) { resetImage(); i = 0; } else i++;}
0 0
- 51单片机 漩涡流水点阵
- 51单片机 漩涡流水点阵
- 51单片机 8*8LED点阵横向流水 使用位运算生成中间帧
- 51单片机 8*8LED点阵横向流水 使用位运算生成中间帧
- 51单片机点阵解析
- 51单片机流水灯
- 51单片机STC89C52 流水灯
- 51单片机流水灯制作
- 51单片机闪烁流水灯
- 51单片机流水灯程序
- 51_单片机_点阵深度分析
- 51单片机之声双色点阵驱动
- 51单片机之声双色点阵驱动
- 51单片机——流水灯源代码
- 51单片机第一弹---流水灯
- 51单片机 流水灯 蜂鸣器应用
- 嵌入式 51单片机 流水灯原理详解
- 51单片机的流水灯--逻辑实现
- 搞定flexpaper的搜索的X轴定位的问题
- yidong
- Razor入门
- C# WinForm 封装自定义组件(控件)Dll
- C# 同步异步的区别
- 51单片机 漩涡流水点阵
- 像知乎、iOS那样滑动Activity
- UVALive_6606_Meeting Room Arrangement(最大独立集)
- Android命令Monkey压力测试,详解
- listary文件查找工具下载及使用
- 贪吃蛇
- spoj 220 Relevant Phrases of Annihilation(每个字符串至少出现两次且不重叠的最长子串)
- 关于android的listview的数据解析和性能优化问题
- 【C语言疯狂讲义】(四)C语言分支语句