程序:
#include<reg52.h>
#include <intrins.h>
#define AddWr 0x90
#define AddRd 0x91
sbit RST=P2^4;
sbit Sda=P2^0;
sbit Scl=P2^1;
sbit Fm=P2^3;
sbit dula=P2^6;
sbit wela=P2^7;
void mDelay(unsigned char j)
{
unsigned int i;
for(;j>0;j--)
{
for(i=0;i<125;i++)
{
;}
}
}
void Start(void)
{
Sda=1;
_nop_();
Scl=1;
_nop_();
Sda=0;
_nop_();
Scl=0;
}
void Stop(void)
{
Sda=0;
_nop_();
Scl=1;
_nop_();
Sda=1;
_nop_();
Scl=0;
}
void Ack(void)
{
Sda=0;
_nop_();
Scl=1;
_nop_();
Scl=0;
_nop_();
}
void Send(unsigned char Data)
{
unsigned char BitCounter=8;
unsigned char temp;
do
{
temp=Data;
Scl=0;
_nop_();
if((temp&0x80)==0x80)
Sda=1;
else
Sda=0;
Scl=1;
temp=Data<<1;
Data=temp;
BitCounter--;
}
while(BitCounter);
Scl=0;
}
void DAC(unsigned char Data)
{
Start();
Send(AddWr);
Ack();
Send(0x40);
Ack();
Send(Data);
Ack();
Stop();
}
void cmg(void)
{
dula=1;
P0=0x00;
dula=0;
wela=1;
P0=0x00;
wela=0;
RST=0;
}
void main(void)
{
unsigned char i;
Fm=1;
cmg();
while(1)
{
for(i=0;i<255;i++)
{
DAC(i);
mDelay(20);
}
for(i=255;i>0;i--)
{
DAC(i);
mDelay(20);
}
}
}