专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

图文并茂单片机

作者:佚名   来源:本站原创   点击数:  更新时间:2013年06月09日   【字体:

看到不少人对单片机感兴趣,但是不知道怎么玩。近日闲来无事,翻出之前自己当初学习单片机的时候DIY的板子,今天我就按照我以前的学习单片机经历谈谈单片机,图文并茂、力求用通俗的说法,让大家了解的更透彻!

先看单片机,上图:

(AT89S52单片机)

单片机就是一个大的集成电路;通常是DIP—40脚封装的。

讲的通俗些,就是:单片机就是用程序控制周边电路工作的一颗IC集成电路;通过向这颗IC写入不同的程序,来实现不同的控制功能。这与我们常见的数字模拟电路不一样,传统的电路一旦硬件确定了,你的电路各个运行参数的输入、输出也就是不变的了(比如大家做扬声器继电保护电路,一旦充放电电容电阻确定了,延时时间就定了,除非换硬件,才可改变开关切换时间)。但是有了单片机的参与却可以在硬件不变的情况下,通过更新软件来得到更多的功能(好比一台电脑CPU、主板、内存、硬盘等硬件是确定的,但是可以通过编写不同的软件,得到更多的实用功能)。

模拟单片机的闪烁程序流程

举个简单的例子,看看单片机的实际用途

看下图,通过向单片机写不同程序完成不同功能(这是一个单片机的最小化工作板+外围电路)。下图是单片机控制单片机显示图片,当然你可以通过单片机在LCD上面显示任何画面汉字,是不是很有趣!

1、单片机小实验板+LCD12864点阵液晶

上面是单片机控制常用的点阵液晶显示器,可以显示图片LOGO或者文字,总之你所以想到的,单片机基本都可以显示出来。

2、单片机小实验板+数码管+红外接收头

上面是单片机控制数码管显示数字;还可以外接红外接收头,接受遥控器发来的按键显示相应的数字字母。

当然还可以做很多有趣的有用的试验,大家继续往下看,你就会体会到单片机的神奇之处!

言归正传,继续漫谈单片机:

通常,也有人常把单片机比作微电脑/微处理单元(MCU----micro computer unit)。说白了,就是用个单片机写几个小程序,然后配合一些电路模块产生特定频率的脉冲嘛......

其实,单片机在我们现实生活中用的很多,比如说马路边的10秒自动翻转一次的滚动广告牌、车站银行的大屏幕信息显示牌、全自动洗衣机控制核心、做饭用的电磁炉控制核心、坐公交车使用的公交IC卡读卡器等等。

简单的说一下,单片机在音响DIY上可以用来做开机延时保护、遥控音量控制、音源选择、液晶/数码管显示、自动开关机、设置参数记忆等等。所有你可以想到的功能(然而实现这全部功能只需要一片单片机、几个三极管、继电器、数码管、遥控器,就可以全部搞定) !

可能会有人会忽然想到,既然单片机要运行程序才能工作,那单片机是不是也得有存储程序的地方,要不然程序放到哪里?既然有了程序单片机要跑程序是不是要有速度和频率的?

联想到我们现在上网的电脑,我们知道我们的主机电脑配置有:
1.CPU(速度:PIII800MHZ,32 位处理器)
2.硬盘:外置160G
3.内存:外置512M
4.主板:XX主板(外部接口:打印机口、串口、鼠标接口、USB接口、网口、键盘口等)
5.电源:ATX电源(+-12V、+-5V、3.3V)

有了这样的配置,电脑就可以启动工作了!

那么单片机呢?我们也可以和PC机对比一下(拿单片机AT89S52来说):
1.CPU(速度:24MHZ,8位处理器)
2.硬盘 :IC内置8K
3.内存: IC内置512字节
4.主板: IC内置(外部接口:串口,8位数据口线P0、P1、P2、P3)
5.电源:5V直流电源

有了这样的配置,单片机就可以工作了!

有一点要特别说明,AT89S52这颗IC里面已经集成包含了前四项项,因此,我们只需要加上电源和一些附加原件就可以让它工作了!

也许大家通过对比之后会觉得单片机太落后!速度慢不说,而且资源都比不上PC电脑。我可以先说明一下:AT89S52可不是用来运行WINDOS-XP和游戏的,它的长处在于控制!家电需要的是小而精巧够用,当然价格也很重要!

好了,现在我们就自己动手组装一台单片机电脑玩玩吧!

首先,这个图是完整的单片机最小图,就像电脑主机一样,你需要额外的附加功能,只需要外接其他板卡连接主板就可以了!

根据上面的电路图,我们需要准备的配件:AT89S52单片机*1;11.0592MHZ晶振一只+30P电容两只;IC座一只;10K电阻一只,10K排阻一只;10UF电容一只;电源开关一只;小按键一只;470R电阻+LED发光管几只。

我们把原件按上面的电路,在万用板上面搭建起来。

再来分析一下上面的原理图:

上面的电路是单片机AT89S52的最工作基本电路。就是说,只要有单片机都必须有这些外围器件才可以工作,下面分析一下电路:

1.晶振+18P电容*2

11.0592MHZ晶振是为单片机提供频率的(好比我们的电脑CPU主频是2.4G),当然这个频率是可以改变的,你也可以换成24MHZ、36MHZ的晶振,频率越高,单片机工作速度越快。电容是起补偿作用的,我们不用理会;

2.复位电路

在单片机的第9脚RST脚有一个10K电阻和10UF电容,组成上电复位电路,只要按下按键,就会产生高低电平从而导致单片机重启。(和电脑主机上面的热启动效果是一样)

3.工作电压5V

AT89S52要工作在5V电压下。

4.10K排阻

因为我们要使用P0口做控制试验,这个10K的电阻接在5V电源起上拉作用是不能少的。(具体原因大家可以查AT89S52单片机的相关资料)

5.双排10芯插座(也可用双排排阵代替)

这个是和“ISP编程器”连接的接口,我们到时候向单片机里面烧写程序的时候,通过这个座子连接电脑,向单片机里面写程序(就像MP3通过USB线连接电脑,向MP3里面拷贝歌曲一样)

6.电源开关

这个简单,就不说了。

最终焊接好的电路如下:(为了做实验方便,额外添加了其他电路,暂且不管)

下面,我们就来按照上面的原理图,做一个最基本的亮灯实验:这个实验是单片机上电后,接在P0.0的小灯不断的以1S的间隔闪烁(大家可以想一想,如果要用纯粹硬件,该怎么实现)!

程序实现思路:

上电后,单片机运行程序,我们让P0.0输出高电平1(在程序里面高电平是1,低电平是0;对应的端口输出电平是1----->5V,0----GND),灯就不会亮;如果输出低电平0(相当与P00接地),灯就会亮,我们在两灭之间插入延时,OK!

对应程序:(假如还没有学过C语言的话,先做个最简单的)
Loop:
P00=1;    //P00口输出5V,此时灯灭
Delay(1S);  //延时1S,让灯亮1S
P00=0;       //P00口输出0V,相当于接GND,此时灯亮 
Delay(1S);  //再延时1S,让灯灭1S
goto Loop; //在跑到刚才的程序起始开头Loop:的地方不断循环

只需要上面几句话,就可以完成那个灯闪烁功能了!(是不是很简单)

下面这段程序是标准的C语言,在上面的代码上添加了编译器的语法,因此可以直接在KEIL C51编译器下面运行。看代码,其实很简单:

#include "reg52.h"
sbit led = P0^0;    //管脚定义 类似于起名字用led 来代替P00 管脚,程序可读性强
 //使用者一看就知道P00管脚接的是LED       
// 函数声明                               
void delay (unsigned int d_time); //作用:灯亮和灭必须持续一定时间,人眼才能分辨出来
// *******************************************************
// 主函数
//通常主函数都是一个无限循环,在循环里面不断处理任务。
void main (void)
{
while (TRUE)                        //死循环        
{led = 1;                     //点亮 小灯
  delay (50000);                //延时时间长度
  led = 0;                        //熄灭 小灯
   delay (50000);                //延时时间长度}
}
// 延时子函数
// 参数范围 0-65536
void delay (unsigned int d_time)  
{for(; d_time>0; d_time--);}

然后,通过KEIL软件,可以编译生成往单片机里面烧写的软件。(具体可以去网上搜索)通过KEIL编译生成LED.HEX文件,我们就可以把这个文件烧写进单片机了。实际运行结果如下图:

可以看到,接在单片机P00口线上面的红色LED小灯在不断的以1S的周期闪烁(当然,时间是可以变的),你只要改变1S的延时就可以了,改一下程序,仅此而已!  

说到这里,还有一个很重要的中间步骤:就是如何向单片机里面下载程序!其实,在早些时候向单片机写程序就像刻录光盘一样有专门的工具,这种工具就是编程器。(一般编程器很贵,我们DIYER都用不起)很多单片机大都需要12V的编程电压才可烧写进去程序,学习试验,来回插拔IC也不方便。

如果你去升级电脑BIOS失败,去修过电脑,一般修电脑的商家都有烧写BIOS的工具,那就是编程器。一般这种编程器支持数百个厂家的单片机品牌,使用范围很广。

随着科技的发展,有些厂家推出了FLASH型的单片机,比如AT89S52,支持5V编程操作,就像使用U盘一样,可以很容易的反复地COPY写入程序文件上万次都不会损坏。且不需要专用的编程器,这对于我们DIY可真是福音啊!我就DIY了一个下载线,非常好用,花费才不到二十元!

言归正传,我们这里就需要另外一个东西,类似于USB线的一个ISP下载线编程工具

大家可以看到:连接单片机实验板和计算机的就是一个叫ISP的下载线,我们继续发扬DIY精神,DIY这个ISP下载线:

我们去买一个DB—25的并口座(见下图),连接计算机的打印口,还有一片74HC244、若干电阻等,按照上图DIY。

上图就是ISP下载线,用以连接电脑并口和单片机实验板之间的下载程序工具。

简单介绍单片机ISP下载线:

ISP是在系统编程的英文缩写(In-System Programming)。简单的说,就是不用插拔芯片,也不需要专用编程器,就可以在你的单片机试验板上直接对单片机编程(也就是直接向单片机里面擦除和写入新程序),使用非常方便。

举个列子,我们把单片机实验板比作MP3,你如果想要往MP3里面COPY音乐,就必须通过一条USB数据线连接MP3和电脑,然后就可以写入音乐。

单片机ISP下载线的作用也如此,通过DIY的单片机下载i线可以连接计算机和单片机;由于单片机本身没有USB通讯接口,因此就不能使用USB数据线,就要是用上面DIY的并口下载线。

假如说我们已经按照上面的电路图做好下载线,接下来:下载线做好了那么怎么使用呢?

我们看到上图有个Header5X2的插头,插头对应的就是AT89S52的对应口线,找到AT89S52的datasheet数据手册,我们看到在AT89S52的文档中详细列举出了各管脚使用说明,因此我们把对应的下载线接口一一对应到单片机实验板的口线上面,就可对其进行编程操作,在学习板的那副小图片上面也有10芯插座是对应这个下载线的:MOSI—-MOSI;MISO---MISO;RST----RST;SCK---- SCK;VCC---VCC;GND----GND

对应连接之后就可以了,然后一边连接计算机并口:

看到了吧:计算机主板后面的那个红色的插座就是并口插座(也叫打印机插座,25针)!

OK!这个下载线的并口座子正好可以插到主板上面!

然后,下载线另外一边通过10芯扁平线缆,连接单片机实验板,检查无误!我们接下来就是下载程序了,

要下载程序还要专用的SLISP下载软件,我们可以到这里下载:

安装打开:1.安装完毕之后运行软件;

2.双击SLISP图标

3.接着,显示如下图操作界面:

(注意:在设置下载速率里面有相关5选项——TURBO 极速;FAST 快速;NORMAL 正常;SLOW 慢速;TURBO SLOW 缓慢),每台计算机性能不一样,可以先从高到低,找一个适合自己PC性能的速度,分别尝试几次;

4.点击编程,等待进度条提示下载程序完成。如下:可以看到下载线正在下载程序:

5.下载程序完成:擦除完成,写入FLASH完成,校验完成!

(程序已经写进单片机里面,如果修改单片机的程序,请重复以上步骤)

注意:如果有时候出现了下载失败,那么需要检查一下硬件:

1.检查并口下载线和单片机对应管脚连接是否正确,要保证做到对应:MOSI—-MOSI;MISO---MISO;RST----RST;SCK----SCK;VCC---VCC;GND----GND

2.单片机实验板+5V电源是不是已经打开;

3.最小化实验板,就是第一张电路图的硬件是不是百分百连接正确。

只要保证上面的全部OK,如果电脑打印机口好的话,肯定是百分百可以随意擦除下载了!

通过上面的讲述,我们知道了如何向单片机写入程序!

单片机遥控套件分析

如果大家看到HIFIDIY主页上面的DIY商城里面有一个遥控套件的话,一定会注意到套件上面有两个数码管,看下图:

上面的两个8字的就是数码管,我们仔细看一下它的用法以及结构:

上面的是数码管的正面图和反面图。注意到上面有10个引脚,其中有两个是公共的阳极,就是接电源(+5V)的管脚,剩余8个管脚一次对应数码管的8.字上面的八个笔画,具体见下图:

一般单片机用共阳的比较多,就是上图的第二个数码管。

怎么和单片机接?

由于单片机有40个脚,除去电源地和其他的脚,还剩下4*8=32个引脚(P0*8,P1*8,P2*8,P3*),我们取P0的8条口线接数码管的a、b、c、d、e、f、g、dp,就可以控制每个数码管的比划两灭,就像上面讲的闪烁灯一样方便。

换句话说,同时控制口线输出高低就可控制数码管显示"0,1,2,3...........",这就是程序的妙处。

下面做一个试验:实验目的——数码管接在单片机的P0口,每隔1S钟,数码一次从0 , 1  ,2 ....8 , 9 之间变化。

按照下图先做一个红外遥控数码管试验,可以为今后做遥控功放做下铺垫,有兴趣的朋友可以照图自己试试玩玩!

先找个遥控器,这个遥控器是很常见的,在电脑城里面很多车载MP3都是用的这个遥控器。

全家福:

开始做实验:

程序的作用是检测红外接手头又没有接收到红外信号,如果接收到判断是哪一个遥控按键按下,然后在数码管上面显示相应的数字。

由于感觉随时用万用面包板搭电路做实验有些费事!干脆画PCB做了些单片机试验板,专门给大家讲解,大家也好理解一些!

关闭窗口

相关文章