lcd12864 “睡 眠模式”有什么用??

一、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

上一篇:下一篇:如何测液晶显示器的驱动板好坏
下一篇:上一篇:返回栏目