📄 max539c.c
字号:
/******************************************************************/
/* 这是MAX539 C51语言程序-不是调用汇编的,文件名为MAX539C.C */
/* 功能:本程序是用C51语言编写的实现MAX539芯片的D/A转换程序。 */
/* 程序中转换的十六进制值依次为0x0fff,0x07ff,0x03ff,0x01ff,0 */
/* VOUT脚输出转换后的模拟信号,它既可用万用表的直流电压档测试*/
/* ,也可用示波器的探头点在此处观察。 */
/******************************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay1(uint x);
uchar i;
sbit DIN= P1^0;
sbit SCK= P1^1;
sbit CS = P1^2;
sbit DOUT=P1^3;
void delay1(uint x) //延时程序
{
uchar tw;
while (x-->0){
for (tw=0;tw<125;tw++){;}
}
}
void send(uchar ch) // 发送数据子程序,ch为要发送的数据
{
uchar BitCounter = 8; //位数控制
uchar tmp; //中间变量控制
bit C;
do
{
tmp = ch;
SCK = 0;
if ((tmp&0x80)==0x80) //如果最高位是1
C = 1;
else
C = 0;
DIN=C;
SCK = 1;
tmp = ch<<1; //左移
ch = tmp;
BitCounter--;
}
while(BitCounter);
SCK = 0;
}
void main() //主程序
{
SP=0xcf;
delay1(1000);
EA=0;
CS=1;
CS=0;
send(0x0f); // 将十六进制值0x0fff送MAX539芯片作D/A转换
send(0xff);
CS=1;
delay1(1000); // 延时
CS=0;
send(0x07); // 将十六进制值0x07ff送MAX539芯片作D/A转换
send(0xff);
CS=1;
delay1(1000); // 延时
CS=0;
send(0x03); // 将十六进制值0x03ff送MAX539芯片作D/A转换
send(0xff);
CS=1;
delay1(1000); // 延时
CS=0;
send(0x01); // 将十六进制值0x01ff送MAX539芯片作D/A转换
send(0xff);
CS=1;
delay1(1000); // 延时
CS=0;
send(0x00); // 将十六进制值0x0000送MAX539芯片作D/A转换
send(0x00);
CS=1;
delay1(1000); // 延时
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -