一、lcd12864 “睡 眠模式”有什么用??
你好:
进入睡眠模式可以省电,但背光是亮的,那么只能是内部控制器进入了一种低功耗模式,但是背光不由控制器控制所以还开着吧。
12864我很久没用了,你看看是否还有其他低功耗模式,可以把背光也关掉。
希望我的回答能帮助到你。
二、12864液晶程序
#include <stdio.h>
#include <math.h>
#include <reg52.h>
#include <string.h>
sbit RS=P2^3; //注意:一定要看12864液晶模块的资料,来确定怎样操作
sbit WRD=P2^4;
sbit E=P2^5;
sbit PSB=P2^0;
sbit RES=P2^2;
void TransferData(char data1,bit DI);
void delayms(unsigned int n);
void delay(unsigned int m);
void lcd_mesg(unsigned char code *addr1);
//下面来定义要显示的汉字,8*4
unsigned char code IC_DAT[]={
陈
};
unsigned char code IC_DAT2[]={
爱一个人难却还爱
交结朋友可路更宽
诚实守信加油努力
成功做人成功做事
};
void initinal(void) //初始化,12864有要求的要写上
{
delay(40);
PSB=1; //并口工作模式
delay(1);
RES=0; //复位
delay(1);
RES=1; //复位置高
delay(10);
TransferData(0x30,0);
delay(100);
TransferData(0x30,0);
delay(37);
TransferData(0x08,0);
delay(100);
TransferData(0x10,0);
delay(100);
TransferData(0x0C,0);
delay(100);
TransferData(0x01,0);
delay(10);
TransferData(0x06,0);
delay(100);
}
void main(void) //分两屏来不断显示上面定义的IC_DAT和IC_DAT2汉字
{
while(1)
{
initinal();//调用LCD字库初始化程序
delay(100);
lcd_mesg(IC_DAT);
delayms(240); //延时程序必要的,长与短,自己调节
delayms(240);
initinal();
delay(100);
lcd_mesg(IC_DAT2);
delayms(240);
delayms(240);
}
}
void lcd_mesg(unsigned char code *addr1) //显示汉字函数,8*4=32
{
unsigned char i;
TransferData(0x80,0);
delay(100);
for(i=0;i<32;i++)
{
TransferData(*addr1,1);
addr1++;
}
TransferData(0x90,0);
delay(100);
for(i=32;i<64;i++)
{
TransferData(*addr1,1);
addr1++;
}
}
void TransferData(char data1,bit DI) //传送数据或是命令,当DI=0时,传送命令,当DI=1时,传送数据
{
WRD=0;
RS=DI;
delay(1);
P0=data1;
E=1;
delay(1);
E=0;
}
void delayms(unsigned int n) //延时子程序
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<2000;j++);
}
void delay(unsigned int m)
{
unsigned int i,j;
for(i=0;i<m;i++)
for(j=0;j<10;j++);
}
三、用89S52在12864LCD上显示一个点,之后能擦除吗,就像没写过一样的效果
直接刷新那个点就行了啊,不就没有了。
(武汉谷鑫科技)专业从事单片机驱动TFT彩色液晶屏模块。
玩过了单色的液晶之后开始升级玩彩色的了,到他们的网站上去看看资料吧,很不错的。
四、基于FPGA的并行迭代法实现FFT...请问哪位大虾能给个指导,有程序最好了
我曾做过语音分析的实验,不知你是否一样,不会写 C, 只能给你个 VB 的参考,不知有没有帮助,写 FPGA 的话,参考过别人的资料,为了节省内存,加快计算速度,要考虑把蝶形因子固化在静态储存器中。
Option Explicit
'复数
Public Type COMPLEX
re As Double '实部
im As Double '虚部
End Type
'############################################################'
'FFT 算法
'############################################################'
'nFFTn 样本数列的长度。
'aFFT 储存 FFT 变换的数组,由于使用同址变换,结果保存回此数组。
Public Sub m_DIT_FFT(nFFTn As Long, aFFT() As COMPLEX)
Dim i As Long, j As Long, k As Long, k2 As Long
Dim m As Long, n As Long
Dim Numerator As Double, Pn As Long
Dim Iterations As Long, Block As Long, Level As Long
Dim XX As COMPLEX, WP As COMPLEX, BC As COMPLEX
'----------------------------------------'
' 确定 N = 2^M 有效样本长度
'----------------------------------------'
m = m_Log2(nFFTn) '有效样本长度指数
n = 2 ^ m '有效样本长度
'----------------------------------------'
' FFT 输入序列预排序
'----------------------------------------'
j = n / 2
For i = 1 To n - 2
If i < j Then
XX.re = aFFT(i).re
XX.im = aFFT(i).im
aFFT(i).re = aFFT(j).re
aFFT(i).im = aFFT(j).im
aFFT(j).re = XX.re
aFFT(j).im = XX.im
End If
k = n / 2
If j >= k Then
Do While (j >= k)
j = j - k
k = k / 2
Loop
End If
j = j + k
Next
'----------------------------------------'
' 时域抽取 FFT 同址变换
'----------------------------------------'
Numerator = 2 * PI / n '采样角分子
For Iterations = 1 To m '迭代次数
Level = 2 ^ Iterations
Block = Level / 2
For j = 0 To Block - 1 '蝶形级数
Pn = j * 2 ^ (m - Iterations)
WP.re = Cos(Pn * Numerator)
WP.im = -Sin(Pn * Numerator)
For k = j To n - 1 Step Level '蝶形单元
k2 = k + Block
XX.re = aFFT(k).re
XX.im = aFFT(k).im
BC.re = aFFT(k2).re * WP.re - aFFT(k2).im * WP.im
BC.im = aFFT(k2).re * WP.im + aFFT(k2).im * WP.re
aFFT(k).re = XX.re + BC.re
aFFT(k).im = XX.im + BC.im
aFFT(k2).re = XX.re - BC.re
aFFT(k2).im = XX.im - BC.im
Next
Next
Next
End Sub
' 计算以 2 为底的对数值 log2(N)
Public Function m_Log2(nNumber As Long) As Double
m_Log2 = Log(nNumber) / Log(2#)
End Function