资源简介
利用51单片机控制AD9850产生正弦信号,利用矩阵键盘实现实现频率预置,通过LCD1602显示预置频率
代码片段和文件信息
# include
# include
# include
sbit ad9850_w_clk =P2^2;
sbit ad9850_fq_up =P2^1;
sbit ad9850_rest =P2^0;
sbit ad9850_bit_data =P1^7;
sbit lcden=P2^5;
sbit lcdrs=P1^0;
sbit lcdrw=P1^1;
#define uint unsigned int
#define uchar unsigned char
uchar s1s2s3s4s5s6s7s8;
uchar abcdefgh;
unsigned long shu=1000;
uchar numtempweiok;
uchar code table1[]=“freq:sin“;
uchar code table[]=“0123456789“;
void delay(uint z)
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void ad9850_reset_serial()
{
ad9850_w_clk=0;
ad9850_fq_up=0;
ad9850_rest=0;
ad9850_rest=1;
ad9850_rest=0;
ad9850_w_clk=0;
ad9850_w_clk=1;
ad9850_w_clk=0;
ad9850_fq_up=0;
ad9850_fq_up=1;
ad9850_fq_up=0;
}
void ad9850_wr_serial(unsigned char w0double frequence)
{
unsigned char iw;
long int y;
double x;
x=4294967295/125;
frequence=frequence/1000000;
frequence=frequence*x;
y=frequence;
w=(y>>=0);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
w=(y>>8);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
w=(y>>16);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
w=(y>>24);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
w=w0;
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
ad9850_fq_up=1;
ad9850_fq_up=0;
}
void keyscan();
void lcd_init();
void display();
void main()
{
ad9850_reset_serial();
ad9850_wr_serial(0x001000);
lcd_init();
while(1)
{
keyscan();
if(wei!=0)
{
switch(wei)
{
case 1: a=num;s1=a; break;
case 2: b=num;s2=b; break;
case 3: c=num;s3=c; break;
case 4: d=num;s4=d; break;
case 5: e=num;s5=e; break;
case 6: f=num;s6=f; break;
case 7: g=num;s7=g; break;
case 8: h=num;s8=h; break;
}
}
if(ok)
{
ok=0;
switch(wei)
{
case 1: shu=s1; break;
case 2: shu=s2+s1*10; break;
case 3: shu=s3+s2*10+s1*100; break;
case 4: shu=s4+s3*10+s2*100+s1*1000; break;
case 5: shu=s5+s4*10+s3*100+s2*1000+s1*10000; break;
case 6: shu=s6+s5*10+s4*100+s3*1000+s2*10000+s1*100000; break;
case 7: shu=s7+s6*10+s5*100+s4*1000+s3*10000+s2*100000+s1*1000000; break;
case 8: shu=s8+s7*10+s6*100+s5*1000+s4*10000+s3*100000+s2*1000000+s1*10000000; break;
}
display();
ad9850_reset_serial();
ad9850_wr_serial(0x00shu);
wei=
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6092 2015-06-29 21:15 AD9850显示+键盘\main.c
文件 18145 2015-06-29 20:07 AD9850显示+键盘\main.LST
文件 19296 2015-06-29 20:07 AD9850显示+键盘\main.OBJ
文件 16863 2015-06-29 20:07 AD9850显示+键盘\pp
文件 7606 2015-06-29 20:07 AD9850显示+键盘\pp.hex
文件 38 2015-06-29 20:07 AD9850显示+键盘\pp.lnp
文件 18827 2015-06-29 20:07 AD9850显示+键盘\pp.M51
文件 977 2015-06-29 21:21 AD9850显示+键盘\pp.Opt
文件 170 2015-06-29 21:21 AD9850显示+键盘\pp.plg
文件 2129 2015-06-26 21:58 AD9850显示+键盘\pp.Uv2
文件 977 2015-06-29 21:15 AD9850显示+键盘\pp_Opt.Bak
文件 0 2015-06-26 19:34 AD9850显示+键盘\pp_Uv2.Bak
目录 0 2015-08-04 09:10 AD9850显示+键盘
----------- --------- ---------- ----- ----
91120 13
- 上一篇:51单片机红外遥控器程序
- 下一篇:abaqus裂纹模拟
评论
共有 条评论