视觉暂留编程主要涉及利用人眼的视觉暂留特性来创建动态的视觉效果。以下是一些关于如何进行视觉暂留编程的基本步骤和示例:
实验设备
PC机
实验教学板
实验内容
编写一个程序,从一个I/O口输出扫频信号,驱动LED灯闪动,频率范围为10HZ~99HZ,扫描时间为30秒。在LED闪动期间观察,一旦发现无法识别LED灯闪动时,按下按键K1,立即停止输出,并将此时的信号频率显示在数码管上,该信号的周期即为测试者的视觉暂留时间。
实验要求
1. 设计硬件电路,画出电路原理图。
2. 画出主程序、子程序、中断服务程序流程图,并设计相应程序,加上详细注释。
3. 在Keil C51编译环境下完成程序编译。
示例代码
```c
include
sbit RS = P1^0;
sbit RW = P1^1;
sbit EN = P1^2;
unsigned char code table[] = {0b00000000, 0b00000001, 0b00000010, 0b00000011,
0b00000100, 0b00000101, 0b00000110, 0b00000111,
0b00001000, 0b00001001, 0b00001010, 0b00001011,
0b00001100, 0b00001101, 0b00001110, 0b00001111,
0b00010000, 0b00010001, 0b00010010, 0b00010011,
0b00010100, 0b00010101, 0b00010110, 0b00010111,
0b00011000, 0b00011001, 0b00011010, 0b00011011,
0b00011100, 0b00011101, 0b00011110, 0b00011111};
void main() {
unsigned char i, j, k;
while (1) {
for (i = 0; i < 16; i++) {
RS = 0;
RW = 0;
EN = 0;
for (j = 0; j < 8; j++) {
P1 = table[i * 8 + j];
EN = 1;
EN = 0;
}
}
for (k = 0; k < 16; k++) {
RS = 0;
RW = 1;
EN = 0;
for (j = 0; j < 8; j++) {
P1 = table[i * 8 + j];
EN = 1;
EN = 0;
}
}
}
}
```
解释
硬件连接 :将LED灯连接到P1口的某个位(例如P1^0),使用一个I/O口输出扫频信号。程序编写
使用定时器产生扫频信号。
使用中断服务程序检测按键输入,并在按下按键时停止输出。
将信号频率显示在数码管上。
建议
硬件电路设计:
确保硬件电路设计正确,LED灯和按键的连接稳定。
程序调试:在Keil C51环境下进行程序编译和调试,确保程序能够正确运行。
视觉暂留测试