<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>芷菁博客 &#187; AT89C51</title>
	<atom:link href="http://www.stars625.com/tag/at89c51/feed" rel="self" type="application/rss+xml" />
	<link>http://www.stars625.com</link>
	<description>记录生活点滴，分享学习体会，专注微嵌开发。</description>
	<lastBuildDate>Sun, 18 Jul 2010 02:55:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>基于AT89C51及ADC0809模数转换系统的设计</title>
		<link>http://www.stars625.com/51ad.html</link>
		<comments>http://www.stars625.com/51ad.html#comments</comments>
		<pubDate>Fri, 29 May 2009 15:45:39 +0000</pubDate>
		<dc:creator>stars_625</dc:creator>
				<category><![CDATA[学习分享]]></category>
		<category><![CDATA[AD]]></category>
		<category><![CDATA[ADC0809]]></category>
		<category><![CDATA[AT89C51]]></category>
		<category><![CDATA[单片机]]></category>
		<category><![CDATA[数模转换]]></category>

		<guid isPermaLink="false">http://www.stars625.com/?p=75</guid>
		<description><![CDATA[我的专业是计算机科学与技术，大三初期才从一位老师那听说了嵌入式系统，他为我分析了嵌入式系统的前景，这也使用决定转变专业方向投入嵌入式软件开发。在还分不清单片机和ARM之间关系的时候，就制作了这个AD转换的微系统参加学校的电子设计大赛。]]></description>
			<content:encoded><![CDATA[<p>一、概述</p>
<p>该作品主要实现了板载0~5V电压的采集并显示，以及与上位机通讯进行数据的同步显示。作品以AT89C51为中心控制各模块的运行，通过ADC0809进行A/D转换，两个八段数码管显示电压，精确到0.1V，另外通过串口与上位机进行通信，上位机既可以通过超级终端、串口调试助手等接收信息也可以使用配套的数据采集软件进行数据的同步接收。</p>
<p>由于第一次真正接触电路的设计及焊接，在电路的合理性、稳定性以及布线、降噪处理等方面都做得不是很好，外接电源也未做太多的稳压处理，形成了一定的误差，但是本电路仅作为一次练习，在精度方面也能基本满足要求。</p>
<div id="attachment_200" class="wp-caption aligncenter" style="width: 478px"><a href="http://www.stars625.com/51ad.html/51ad_main" rel="attachment wp-att-200"><img src="http://www.stars625.com/wp-content/uploads/51ad_main.jpg" alt="AT89C51 AD转换板" title="AT89C51 AD转换板" width="468" height="287" class="size-full wp-image-200" /></a><p class="wp-caption-text">AT89C51 AD转换板</p></div>
<p>二、功能说明</p>
<p>该电路由于只采集一路信号所以直接选通ADC0809，使用查询方式，判断转换是否结束。由于电路仅作演示用，对精度要求不高，遂将参考基准电压输入端直接接到VCC（Vref+）和GND(Vref-)上。在0～5V范围内的测量的精度为：5/256<0.1,完全能满足要求。</p>
<p>在本电路数码管显示时，为了简化硬件电路，将所有位的段选线相应地并联在一起，由一个单片机的8位I/O口（P0）控制，形成段选线的多路复用。而各位数码管的共阳极由单片机独立的I/O口（P2.7、P2.6）控制，顺序循环地点亮每位数码管，这样的数码管驱动方式就称为“动态扫描”。在这种方式中，虽然每一时刻只选通一位数码管，但由于人眼具有一定的“视觉残留”，只要延时时间设置恰当，便会感觉到多位数码管同时被点亮了。</p>
<p>在本系统中，PC机为上位机，也就是说，由单片机主动发送数据，PC机被动等待接收数据。打开PC机上位机通讯软件，单片机将电压信息发送给PC机。PC机成功接收到单片机发来的数据后，通过软件将接收的信息在窗口上显示出来，并同时描绘出曲线图。</p>
<p>三、程序描述</p>
<p>实验程序使用C语言编写，对控制口均在代码头部进行了宏定义方便调用，提高可读性。除了主程序之外，将延时模块、LED显示模块、数字处理模块、串口数据发送模块均独立出来，提高程序的灵活性。</p>
<p>四、操作说明</p>
<p>演示时，直接将USB口插入电脑的USB口，取5V作电源。此时，调节电位器即可调整输入电压，将数值反映在LED数码管上。如果将左边那个开关向下时，单片机即可通过串口向上位机发送数据，反之则停上向串口发送数据。如果将右边那个开关向上时，即可模拟电压表锁定电压值的功能，使采集数据停止，显示固定值。按左上角的按钮可以复位电路。</p>
<p>上位机串口通讯软件主要是由Visual Basic编写，使用9600波特率、1位开始和停止位，无校验位，通过串口1通信，并且以上信息不能更改。前电压可即时地显示当前电压值（单位：伏），电压电录可显示近期电压变化情况。</p>
<p>当前电压每300ms刷新一次，人眼不会感觉到有延时。电压记录可以显40s内的电压变化情况。</p>
<p>使用前先安装上位机软件，然后将电路的串口与电脑机联，插上USB口再打开软件即可实现通信。</p>
<div id="attachment_201" class="wp-caption aligncenter" style="width: 472px"><a href="http://www.stars625.com/51ad.html/51ad_uart" rel="attachment wp-att-201"><img src="http://www.stars625.com/wp-content/uploads/51ad_uart.jpg" alt="AD转换上位机通讯软件" title="AD转换上位机通讯软件" width="462" height="177" class="size-full wp-image-201" /></a><p class="wp-caption-text">AD转换上位机通讯软件</p></div>
<p>五、主要问题</p>
<p>第一次设计系统，就遇到了几个问题经过别人的帮助才得以解决：AT89C51存储器选择问题，默认情况下，MCU会读取扩展ROM的程序启动，要从内部启动需要将一个口拉低；设计稳定的复位电路，这点相当重要，其它资料上说得非常详细，这边就不多说了；I/O口对于LED的驱动能力问题，要不要上拉等。</p>
<p>说一下整个开发过程：首先选择项目，选了个典型的、难度不是很大的AD转换；在实验箱上调试通过，确定可行；布线、焊接，将仿真器连到电路上进行仿真试验并能过；把Bin文件写到AT89C51里，插上芯片正常运行，其中最后两步从仿真成功到真实成功还是有一些问题在里面的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stars625.com/51ad.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
