89c51单片机程序设计!!!
要求:通过输入电压的变化控制5个或5个以上的发光二极管的亮或灭。
顺便告诉我下控制adc0809模数转换的C语言源码~谢谢! 展开
题目的要求可以理解为,将电压的变化以二进制数字的形式表示出来(即用发光
二极管来表示二进制数)。
硬件需要单片机、发光二极管、ad转化器(如TLC549)
下面提供一个例子。
/********************************************************************
* 文件名 : TLC549.c
* 描述 : TLC549是一个新型的AD转换器,具有8位的分辨率,具有控制简单,体积小的优点。
***********************************************************************/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit AD_Out = P3^4; //TLC549输出端
sbit CS = P1^4; //TLC549片选信号
sbit AD_In = P1^3; //TLC549输入端
/********************************************************************
* 名称 : AD_Change(void)
* 功能 : TLC549驱动程序
* 输入 : 无
* 输出 : temp (电压值)
***********************************************************************/
uchar AD_Change(void)
{
uchar i,temp = 0;
AD_In = 0;
_nop_();
_nop_();
CS = 0;
_nop_();
_nop_();
_nop_();
_nop_();
if(AD_Out == 1) temp += 1;
for(i=0; i<8; i++)
{
AD_In = 1;
_nop_();
_nop_();
AD_In = 0;
_nop_();
_nop_();
if(i != 7)
{
temp = temp << 1;
if(AD_Out == 1) temp += 1;
}
}
CS = 1;
return temp;
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main(void)
{
while(1)
{
P0= AD_Change();
}
}
其中,R12是一个电位器,通过调节可以使P0口的八个led亮灭模拟数字量输出。
用什么口做检测?什么口输出?
还有,这种题目书上都有例子,你依葫芦画瓢就可以自定搞定的
提示一下,先想想怎样把发光二极管点亮。