AD9850+12864Word格式.docx
- 文档编号:18678950
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:21
- 大小:19.98KB
AD9850+12864Word格式.docx
《AD9850+12864Word格式.docx》由会员分享,可在线阅读,更多相关《AD9850+12864Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
x;
j++)
for(i=0;
i<
120;
i++);
}
}
voidsend_command(ucharcommand_data)
uchari_data,temp_data1,temp_data2;
i_data=0xf8;
delay_1ms(10);
cs=1;
sclk=0;
8;
i++)
sid=(bit)(i_data&
0x80);
sclk=1;
i_data=i_data<
<
1;
i_data=command_data;
i_data&
=0xf0;
temp_data1=i_data&
0xf0;
temp_data2=i_data&
0x0f;
temp_data1>
>
=4;
temp_data2<
i_data=temp_data1|temp_data2;
cs=0;
voidsend_data(ucharcommand_data)
i_data=0xfa;
voidlcd_init()
ucharcommand_data;
//psb=0;
delay_1ms(100);
command_data=0x30;
send_command(command_data);
/*功能设置:
一次送8位数据,基本指令集*/
command_data=0x04;
/*点设定:
显示字符/光标从左到右移位,DDRAM地址加1*/
command_data=0x0c;
/*显示设定:
开显示,不显示显示光标,当前显示位不反白闪动*/
command_data=0x01;
/*清DDRAM*/
command_data=0x02;
/*DDRAM地址归位*/
command_data=0x80;
/*把显示地址设为0X80,即为第一行的首位*/
voidwelcome()
{uchari,j;
send_command(0x01);
delay_1ms(50);
WriteLCD(0x82,"
欢迎使用"
);
WriteLCD(0x92,"
Welcome"
WriteLCD(0x89,"
Waiting."
for(j=0;
=1;
j++)
{
send_command(0x8d);
send_data(0x20);
for(i=0;
i++)
send_data(0x2e);
delay_1ms(1000);
}
}
voidWriteLCD(unsignedcharStartAddress,unsignedcharCharactors[])
{
unsignedchar*i=Charactors;
//字符串的首地址
send_command(StartAddress);
while(*i)//判断字符串结尾,*i为0代表结束
{
send_data(*i);
i++;
if(*i=='
\0'
)
break;
StartAddress=ChangeAddress(StartAddress);
unsignedcharChangeAddress(unsignedcharStartAddress)
{
switch(StartAddress)
case0x87:
send_command(0x90);
StartAddress=0x90;
break;
case0x8F:
send_command(0x98);
StartAddress=0x98;
case0x97:
send_command(0x88);
StartAddress=0x88;
default:
StartAddress+=1;
returnStartAddress;
math.h>
AD9850.H"
#include"
intrins.h"
//unsignedcharCON_word[5];
//Worddata[7]data[6]data[5]data[4]data[3]data[2]data[1]data[0]
//W0PhasebPhaseb3Phaseb2Phaseb1Phaseb0PowerDownControlControl
//W1Freq-b31Freq-b30Freq-b29Freq-b28Freq-b27Freq-b26Freq-b25Freq-b24
//W2Freq-b23Freq-b22Freq-b21Freq-b20Freq-b19Freq-b18Freq-b17Freq-b16
//W3Freq-b15Freq-b14Freq-b13Freq-b12Freq-b11Freq-b10Freq-b9Freq-b8
//W4Freq-b7Freq-b6Freq-b5Freq-b4Freq-b3Freq-b2
//--------------------------------------------------------------------------------------------------
//函数名称:
delay
//入口参数:
N
//函数功能:
延时子程序,实现(16*N+24)us的延时
//系统采用12MHz的时钟时,延时满足要求,其它情况需要改动
voiddelay(unsignedintN)
inti;
N;
WRITE_AD9850
将控制字写入AD9850
voidWRITE_AD9850(unsignedcharCON_word[5])
unsignedchari;
FQ_UD=0;
W_CLK=0;
delay(0);
CON_word[0]=CON_word[0]&
0xFC;
//置工作方式选择位为00
5;
data_OUT=CON_word[i];
//送控制字
W_CLK=1;
//上升延
FQ_UD=1;
//上升延要求AD9850改变输出
/*
voidAD9850_init(void)
reset=0;
reset=1;
fq_ud=0;
w_clk=0;
WriteLCD(0x80,"
(AD9850)"
WriteLCD(0x90,"
频率:
000.000HZ"
WriteLCD(0x88,"
相位:
0度"
WriteLCD(0x98,"
JustDoIt..."
}*/
voidsend_fivewords(unsignedcharDATA[5])//顺序为F0_31,三位控制,P0_4)
{unsignedchari;
control_words=DATA[i];
w_clk=1;
_nop_();
//for(i=0;
100;
w_clk=0;
fq_ud=1;
}*/
voidAD9850_DISPLAY(floatF,floatP)
{unsignedchardecimal_code[10]={'
0'
'
1'
2'
3'
4'
5'
6'
7'
8'
9'
};
unsignedchardisplay_tmp[8]={'
.'
};
unsignedcharphasic[6]={'
unsignedintbufh,bufl;
if(F>
=1000000)
{F/=1000;
bufh=(unsignedint)(F/1000);
bufl=(unsignedint)(F-bufh*1000);
display_tmp[0]=decimal_code[bufh/100];
bufh%=100;
display_tmp[1]=decimal_code[bufh/10];
bufh%=10;
display_tmp[2]=decimal_code[bufh];
display_tmp[4]=decimal_code[bufl/100];
bufl%=100;
display_tmp[5]=decimal_code[bufl/10];
bufl%=10;
display_tmp[6]=decimal_code[bufl];
for(i=0;
2;
if(display_tmp[i]=='
display_tmp[i]='
'
;
elsebreak;
for(i=6;
i>
i--)
if(display_tmp[i]=='
{
display_tmp[i]='
if(i==4)display_tmp[3]='
else;
}
WriteLCD(0x93,display_tmp);
WriteLCD(0x97,"
M"
elseif(F>
=1000)
{bufh=(unsignedint)(F/1000);
bufl=(unsignedint)(F-bufh*1000);
display_tmp[0]=decimal_code[bufh/100];
{display_tmp[i]='
K"
elseif(F>
0)
{bufh=(unsignedint)F;
bufl=(unsignedint)(F*1000-bufh*1000);
HZ"
}
if((unsignedint)(P*100)%100==0)
phasic[3]=0;
bufh=(unsignedint)P;
bufl=(unsignedint)(F*100-bufh*100);
phasic[0]=decimal_code[bufh/100];
bufh%=100;
phasic[1]=decimal_code[bufh/10];
bufh%=10;
phasic[2]=decimal_code[bufh];
phasic[4]=decimal_code[bufl/10];
bufl%=10;
phasic[5]=decimal_code[bufl];
if(phasic[i]=='
phasic[i]='
for(i=5;
if(phasic[i]=='
{phasic[i]='
WriteLCD(0x8B,phasic);
voidfrequency_to_phase(unsignedlongF,unsignedcharDATA[5])//转换为DATA[1]-----DATA[4]
{unsignedlongphase;
phase=F/125.0/1000*1024.0/1000*1024.0*4096;
DATA[1]=phase/16777216;
DATA[2]=phase/65536;
DATA[3]=phase/256;
DATA[4]=phase;
voidphasic_to_phase(floatP,unsignedcharDATA[5])//转换为DATA[0]的高5位
DATA[0]=(unsignedchar)(P/11.25+0.5)<
3;
/***************串行程序*********************/
voidDDS_set_freq(void)
unsignedcharbyte_temp;
unsignedlongfreq_word=0x0505AAFF;
//频率控制字
floatfTemp;
fTemp=mulFreq;
fTemp=fTemp*65536/DDS_CLK_IN*65536;
freq_word=fTemp;
//freq_word=(float)mulFreq*65536/DDS_CLK_IN*65536;
_nop_();
DDS_UPDATE=0;
DDS_CLK=0;
for(byte_temp=0;
byte_temp<
32;
byte_temp++)
freq_word=freq_word>
1;
DDS_DATA=CY;
DDS_CLK=1;
_nop_();
//实际应用应在延迟
DDS_CLK=0;
8;
DDS_DATA=0;
DDS_UPDATE=1;
}*/
voidinit_dds(void)
DDS_RESET=0;
delay
(2);
DDS_RESET=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AD9850 12864
![提示](https://static.bdocx.com/images/bang_tan.gif)