AT89C51小白的LTC1549 A/D转换器 电压表
来源:互联网 发布:mysql运行原理 编辑:程序博客网 时间:2024/04/29 15:56
#include <reg51.h>
#include <stdio.h>
#include <intrins.h>
sbit CLK = P2^0;
sbit DATA = P2^1;
sbit CS = P2^2;
sbit BUZ_CON = P3^7;
unsigned int ADConvert(void);
void Delay(void);
void Display(void);
unsigned char DisplayBuf[5] = {0};
unsigned char code CharCode1[] =
{
0xc0, 0xF9, 0xA4, 0xB0, 0x99,
0x92, 0x82, 0xF8, 0x80, 0x90
};
unsigned char code CharCode2[] =
{
0x40, 0x79, 0x24, 0x30, 0x19
};
void main(void)
{
unsigned int i,ad;
unsigned char pos;
float adf;
int j,zh,i1,i2;
while(1)
{
ad = ADConvert();
ad = ADConvert();
adf = (ad*5.0)/1024.0;
zh = (int)(adf*100)/100;
i1 = (int)(adf*100)/10%10;
i2 = ((int)(adf*100))%10;
if(zh == 4)
{
if(i1 == 9)
{
if(i2 == 9)
{
BUZ_CON = 0;
for(j = 0; j < 1000; j++);
BUZ_CON = 1;
}
}
}
P0 = 0;
P1 = 0xff;
DisplayBuf[0] = 0;
DisplayBuf[1] = i2;
DisplayBuf[2] = i1;
DisplayBuf[3] = zh;
pos = 0x80;
for(i=0;i<3;i++)
{
P1=CharCode1[DisplayBuf[i]];
P0=pos;
pos>>=1;
Delay();
}
P1=CharCode2[DisplayBuf[3]];
P0=pos;
pos>>=1;
Delay();
P1=CharCode1[0];
P0=pos;
pos>>=1;
Delay();
}
}
unsigned int ADConvert(void)
{
int i;
unsigned int ad;
ad = 0;
DATA = 1;
CS = 0;
for(i=0; i<10; i++)
{
ad <<= 1;
CLK = 0;
_nop_ ();
_nop_ ();
_nop_ ();
CLK = 1;
if(DATA) ad |= 0x01;
else ad &= 0xFFFE;
}
CS = 1;
return ad;
}
void Delay(void)
{
int i;
i= 100;
while(i--);
}
#include <stdio.h>
#include <intrins.h>
sbit CLK = P2^0;
sbit DATA = P2^1;
sbit CS = P2^2;
sbit BUZ_CON = P3^7;
unsigned int ADConvert(void);
void Delay(void);
void Display(void);
unsigned char DisplayBuf[5] = {0};
unsigned char code CharCode1[] =
{
0xc0, 0xF9, 0xA4, 0xB0, 0x99,
0x92, 0x82, 0xF8, 0x80, 0x90
};
unsigned char code CharCode2[] =
{
0x40, 0x79, 0x24, 0x30, 0x19
};
void main(void)
{
unsigned int i,ad;
unsigned char pos;
float adf;
int j,zh,i1,i2;
while(1)
{
ad = ADConvert();
ad = ADConvert();
adf = (ad*5.0)/1024.0;
zh = (int)(adf*100)/100;
i1 = (int)(adf*100)/10%10;
i2 = ((int)(adf*100))%10;
if(zh == 4)
{
if(i1 == 9)
{
if(i2 == 9)
{
BUZ_CON = 0;
for(j = 0; j < 1000; j++);
BUZ_CON = 1;
}
}
}
P0 = 0;
P1 = 0xff;
DisplayBuf[0] = 0;
DisplayBuf[1] = i2;
DisplayBuf[2] = i1;
DisplayBuf[3] = zh;
pos = 0x80;
for(i=0;i<3;i++)
{
P1=CharCode1[DisplayBuf[i]];
P0=pos;
pos>>=1;
Delay();
}
P1=CharCode2[DisplayBuf[3]];
P0=pos;
pos>>=1;
Delay();
P1=CharCode1[0];
P0=pos;
pos>>=1;
Delay();
}
}
unsigned int ADConvert(void)
{
int i;
unsigned int ad;
ad = 0;
DATA = 1;
CS = 0;
for(i=0; i<10; i++)
{
ad <<= 1;
CLK = 0;
_nop_ ();
_nop_ ();
_nop_ ();
CLK = 1;
if(DATA) ad |= 0x01;
else ad &= 0xFFFE;
}
CS = 1;
return ad;
}
void Delay(void)
{
int i;
i= 100;
while(i--);
}
阅读全文
0 0
- AT89C51小白的LTC1549 A/D转换器 电压表
- ADC0808和AT89C51利用LCD的数字电压表
- 51单片机A/D转换接口扩展,做一个16进制显示的电压表
- A/D转换器的原理和结构
- STC15F2K60S2芯片A/D转换器的应用
- [嵌入式]A/D转换器
- 实验3.10 D/A、A/D转换器
- D/A与A/D转换器
- D/A与A/D转换器
- A/D转换器(华中师范)
- D/A转换器(华师)
- A/D转换器的选型技巧及注意事项
- A-D转换器以及S5PV210的相关编程
- 单片机小知识系列-4-D/A转换器双极性工作和偏移二进制码(offset binary)
- TLC5615 10位D/A转换器
- TLC1549驱动 10位A/D转换器
- 模数(A/D)转换器工作原理
- 数-模(D/A)转换器
- window对象(二)
- 求无序数组中三元素相加等于特定值的所有情况
- MyBatis 延迟加载,一级缓存,二级缓存设置
- Linux命令之五--tar
- 编译原理实验六—代码优化
- AT89C51小白的LTC1549 A/D转换器 电压表
- 新入手一个新系统,如何重构和梳理
- 纯C++版的Faster-Rcnn(通过caffe自定义RPN层实现)
- jq---在jq中如何扩充jQuery对象,$.fn.extend与$.extend的区别是什么?
- 华中农业大学第五届程序设计大赛 【10/12】个人训练总结
- golang中sync.RWMutex和sync.Mutex
- [转载]Python模块之Collections
- Lua知识点八 面向对象程序设计
- Hibernate 学习 (1)