📄 chuankou.c
字号:
/*
DAC0832(c编程)
[ 2007-7-27 15:59:00 | By: 小刚 ]
DA0832测试程序
用单片机输出一个数字波形输入到DAC里检测DAC硬件
P2.7接DAC的CS端,P3.6接WR1, P0口接D
\********************************************************/
#include <AT89X51.H>
#include <intrins.h>
#include <absacc.h>
#define uchar unsigned char
#define data_OUT XBYTE[0x7fff] // 数据输出口
uchar flag;
uchar code table1[]={
0 , 0 , 2 ,4 , 7 , 10 , 14 , 18 ,23 ,25 ,25 , 25 , 25 , 22 , 18 , 14 , 10, 6 ,2 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,0 , 0 ,0 , 0 , 0 ,0 , 0 , 0 , 1 , 3 , 5 , 7 , 9 ,11,
14 , 17 , 20 , 23 , 23, 23 ,23 , 20 ,16 , 12 ,8 , 4 , 0 , 0 , 0 , 1 , 1 , 1 , 2 , 2 ,
2 , 6 ,10 ,15 ,20 ,25 , 27 , 27 , 27 ,27 , 25 , 23 ,19 ,15 , 11 ,7 ,3 ,0 , 0,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0 , 0 , 0, 2 ,5 ,8 , 12 , 16 , 20 , 25 , 25 , 25 , 25 ,
24 ,24 ,22 , 23 ,22 , 21 , 20 , 19 , 18 ,17 , 15 , 14 , 12 , 8 , 4, 0, 0 , 1 , 1 ,2 ,
2 , 6 , 9 ,13 ,17 ,21 , 26 ,26 ,26 , 22 , 17 , 12 , 7 ,3 , 0 ,0 , 0 , 0 , 0 ,0 , 2 ,
4, 6 , 8 ,8 , 8 , 6 , 4 , 2 , 0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0,
0 ,0 , 0 , 0 , 0 , 0 ,2 , 5 , 8 ,12, 16 ,20 ,26 ,28 ,28 , 28 ,26 , 24 , 22 ,20 ,
18 , 16 , 14 , 11 , 8 ,5 , 3 , 1 , 0 ,0 ,0 , 0, 0, 0 ,0 ,0 , 0 ,0 , 0 , 0 , 0 , 0 ,
1 ,3, 5, 8, 11 , 14 ,17 ,20 , 22 , 22 ,22 ,20 , 18 ,16 , 14 ,12 ,10 , 8 , 6 ,4 , 2 ,
1,0 , 0 ,0, 0 ,0 , 0, 0 , 0
};
uchar code table2[]={
0 , 1 , 1 , 2 , 2 , 3 ,3 , 4 ,4 , 5 , 5 , 5 ,4 ,4 ,3 ,3 , 2 , 2, 1 , 1, 0 ,0 ,0 ,5 ,10 , 20,
30 , 50 , 60 ,60 ,55 , 50 ,38 , 31 , 25 , 17 ,12 , 6 , 0, 0 , 0, 0, 0, 0 ,0, 1 , 1 ,1,
1 , 1 , 2 , 2 ,2 ,3 ,3 , 3 , 4 ,4, 4 , 5 , 5 , 5 , 6 , 6 , 7 , 7 ,8 , 8 , 9 ,9 ,10, 10 , 11,
11 , 12 , 12 , 13 , 13 , 13 , 13 ,12 ,11 , 10, 9, 8 , 7 , 6 , 5 ,4 , 3 , 3 , 1, 1, 0 , 0 , 0,11
};
void delay(unsigned int N)
{
unsigned int i;
for(i=0;i<N;i++);
}
/****************************数字信号输出*******************/
void conversion_once_0832(unsigned char out_data)
{
data_OUT = out_data; //输出数据
delay(10); //延时等待转换
}
/****************************三角波信号(一个周期)**********/
//void triangle()
//{
// uchar k;
// for(k=0;k<2000;k++)
// conversion_once_0832(k);
// for(;k>0;k--)
// conversion_once_0832(k);
//}
/***************************方波信号(一个周期)***************/
//void pulse()
//{
// conversion_once_0832(0xff);
// delay(1000);
// conversion_once_0832(0x00);
// delay(1000);
//}
void main()
{
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(P1_0==0)
{
delay(1000);
if(P1_0==0)
{ flag++;if(flag==4)flag=1;
while(P1_0==0);
}
}
}
}
void t0(void) interrupt 1 using 0
{
unsigned int tcnt,i;
tcnt++;
if(tcnt==200)
{
tcnt=0;
if(flag==1)
{P2=0xf5;
conversion_once_0832(table1[i]);i++;
if(i==220)i=0;
}
if(flag==2)
{ P2=0x0f;
conversion_once_0832(table2[i]);i++;
if(i==100)i=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -