89c51单片机程序设计!!!

用c语言编写一个控制89c51单片机的程序.要求:通过输入电压的变化控制5个或5个以上的发光二极管的亮或灭。顺便告诉我下控制adc0809模数转换的C语言源码~谢谢!... 用c语言编写一个控制89c51单片机的程序.
要求:通过输入电压的变化控制5个或5个以上的发光二极管的亮或灭。
顺便告诉我下控制adc0809模数转换的C语言源码~谢谢!
展开
 我来答
lzf_12266
2010-06-26 · TA获得超过757个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:69.6万
展开全部

题目的要求可以理解为,将电压的变化以二进制数字的形式表示出来(即用发光

二极管来表示二进制数)。

硬件需要单片机、发光二极管、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亮灭模拟数字量输出。

百度网友e265721
2010-06-26 · TA获得超过121个赞
知道答主
回答量:66
采纳率:0%
帮助的人:0
展开全部
办法比较多,89c51自己是不带ad的,那么外接ad程序比较麻烦,你这对电压也不测量精确值,所以用不着ad,只要能区分电压值不同就行了。考虑到程序的简单,就用比较器,比如说接五个比较器,阈值分别为1v、2v、3v、4v、5v,把他们的输入端接在一起,输出端接在单片机的五个io口上,再接五个发光二极管在另外五个io口上,发光二极管的另一端分别串个限流电阻接在电源上,硬件完成了。程序就好写多了,只要判断五个比较器输出端电平,然后控制相应的灯亮灭就行了。比较器也不一定五个,三个两个也一样,这样精度就不太高而已。不过程序就几行代码。简单。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友123234ad1
2010-06-25
知道答主
回答量:8
采纳率:0%
帮助的人:0
展开全部
是作业吧??你想用什么解决方案呢?ADC有逐次比较型ADC0804并行输出和差分电压V-T串行输出.

用什么口做检测?什么口输出?

还有,这种题目书上都有例子,你依葫芦画瓢就可以自定搞定的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Reuben_
2010-06-25 · TA获得超过820个赞
知道小有建树答主
回答量:797
采纳率:0%
帮助的人:332万
展开全部
呵呵 刚开始学单片机吧 ,学会控制io口的高低电平是最基本的,一定要到达随意控制的程度,这样你就可以体会到单片机的乐趣了。
提示一下,先想想怎样把发光二极管点亮。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gasolhu
2010-06-28 · TA获得超过180个赞
知道答主
回答量:131
采纳率:0%
帮助的人:127万
展开全部
用A/D芯片,将模拟量转换成数字量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式