打印

手把手教你学习应用51单片机(第一章)原创!

[复制链接]
2612|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ahai0306|  楼主 | 2008-12-4 20:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

第一章  认识单片机及其如何工作
 
一、单片机简单说明
目前单片机主要8位、16位、32位单片机, 8位单片机应用最为广泛,教材也比较多,16位和32位在最近几年也应用的越来越广泛。
51单片机是8位单片机中使用最早,在我国使用最广泛的一种。常见的品牌有atmel, STC, SST, NXP(飞利浦) ,freescale(原摩托罗拉),华邦,高性能C8051F等品牌。
Intel的8031,8051早就不生产了,其它公司都是根据其内核生产的,使用其指令系统和结构,但是各个品牌又增加了自己很多功能,如FLASH存储器,内置看门狗,AD功能等功能,各个品牌的功能也不大一样。
作为学生或者初学者,学习51非常适合入门,资料丰富,例子较多,对以后学习其它高级的单片机是一个非常好的基础。
本开发板选用的是STC89C51单片机,该单片机是最近几年新出的,完全兼容MCS-51,增加了FLASH,ISP下载,大容量RAM,看门沟,内部复位电路,EEPROM,及最高80M的运行速度等功能。
大家如果对以上介绍的不太了解,不要紧,随着学习和积累经验,就明白了。
 
二、单片机工作的条件
1、一个51单片机要工作需要具备哪些条件?
DC5V电源(有的单片机是3.3V),复位电路,和晶振,单片机只要有了这三点就可以工作了。
(但是有的单片机内部集成了复位电路或晶振,这时候外部的电路就可有可无了,比如STC单片机的内部集成了复位电路,C8051F单片机的内部集成了晶振电路)
复位电路,大部分51是高电平复位的(如下图),C8051F是低电平复位的,电阻和电容要更换位置。
  
晶振电路:常用的电容是22P或30P,晶振选择11.0592是为了通信的时候拨特率0误差。大家可以找教程查查拨特率和晶振的对应关系。

 
三、单片机如何编写程序呢?
单片机除了具备以上的硬件条件,还要有程序才能真正运行,就象电脑需要装操作系统才能用一样的道理。
单片机编程可以使用MCS-51汇编语言和C语言编程。其实单片机真正执行的是BIN或HEX文件,那么BIN和HEX文件是如何得到的呢,是通过汇编语言或C语言编写的程序,经过专门的软件编译后最后生成的。
C语言的编译软件主要用KEIL软件,也是最好用最常用的软件。汇编语言的编译软件比较多了,常用的有WAVE软件。
   四、单片机如何下载/烧录程序呢?
       1、使用通用的编程器烧录(并口烧录,可以烧录各种品牌的)
       2、使用下载线进行ISP下载,(只需要2-3根线),这种下载方式非常方便,缺点是各个品牌的下载方式不统一。比如STC,SST,飞利浦的使用TXD,RXD下载,比较方便;而atmel的,只有AT89S系列的才可以下载,AT89C51的就不可以ISP下载,并且使用P15,P16,P17三个引脚下载,而且下载线要有专用的下载电路。
        ISP下载的非常适合学习和实验,而通用烧录的适合工厂生产。
现在,你已经学会了单片机怎么使用了,休息一下!进行第二章的讲解
 
不明白的地方和我交流!
QQ:464976346
http://blog.**/ahai0306/(我的EDN博客)
 
相关链接:http://blog.**/ahai0306/

相关帖子

沙发
ahai0306|  楼主 | 2008-12-4 20:41 | 只看该作者

手把手教你学习单片机(2.1)


第二章  单片机基础实验
一、单片机控制发光二极管实验


首先学习一下硬件,拿第一路为例,R1为限流电阻,发光二极管导通后的压降为Ud,那么流过此二极管的电流为(U-Ud)/R,大家可以根据二极管的大小来调整电阻大小,以保证亮度。开发板用的0805/1206发光二极管使用1K电阻即可。如果是大功率的发光管需要加驱动如三极管电路之类的,不能直接连接单片机引脚的。各种品牌的IO驱动能力不一样的,STC89C51的IO灌电流能力是20mA。
上面发光二极管的原理是,P00为高电平(5V),D1截止,不亮;P00为低电平(0V),D1导通,发光。二极管控制就这么简单,下面来编写程序吧
C语言程序:
#include        <reg52.h>   //调用头文件(单片机内部的寄存器定义)
sbit  LED0   = P0 ^ 0;  //必须定义,P0 ^ 0 脱离开sbit指令是其它意思
main()         //主函数
{
  LED0=0;      //LED0发光二极管亮(P00输出低电平)
  while(1);    //单片机在这里等待(待机)

汇编程序:
;***********硬件I/O口定义************
LED0             EQU                   P0.0
               ORG    0000H                ;上电后程序从这里运行
               AJMP  MAIN
               
MAIN:       
                   CLR    LED0               ;LED0发光二极管亮(P00输出低电平)
                   SJMP   $                     ;单片机在这里等待(待机)
                   END
 
第一个程序已经编写完了,编译后下载到单片机体验一下吧,我以前写过初学者的第一个单片机程序,大家可以看看:
http://blog.**/ahai0306/19917/message.aspx
 
这时候大家已经会点亮第一个灯了,然后大家可以随便点亮其它的灯了,可以使用P0直接点亮8个灯了
C语言程序:
#include        <reg52.h>   //调用头文件(单片机内部的寄存器定义)
main()         //主函数
{
  P0=0;      //P0口的8个发光二极管全亮
  while(1);    //单片机在这里等待(待机)

汇编程序:
               ORG    0000H                ;上电后程序从这里运行
               AJMP  MAIN
MAIN:       
                   MOV P0    #00H              ;P0的8个发光二极管全亮
                   SJMP   $                     ;单片机在这里等待(待机)
                   END
现在大家可以用移位指令加上适当延时,来进行流水灯实验了,大家先思考一下如何实现?
不明白的地方和本人交流!
QQ:464976346
http://blog.**/ahai0306/(我的EDN博客)
相关链接:http://blog.**/ahai0306/

使用特权

评论回复
板凳
最最| | 2008-12-4 22:25 | 只看该作者

原创的,顶下。

使用特权

评论回复
地板
zoudem500| | 2008-12-5 09:17 | 只看该作者

学习

学习中

使用特权

评论回复
5
zoudem500| | 2008-12-5 09:17 | 只看该作者

期待继续

第二章呢?

使用特权

评论回复
6
夜ˇ| | 2008-12-6 22:02 | 只看该作者

支持

呵呵 ~~

使用特权

评论回复
7
原野之狼| | 2008-12-6 22:46 | 只看该作者

顶!

继续写~

使用特权

评论回复
8
saul2006| | 2008-12-6 23:51 | 只看该作者

支持原创

使用特权

评论回复
9
dspjs| | 2008-12-7 10:35 | 只看该作者

re

支持,帮你顶下~~~

使用特权

评论回复
10
弟儿| | 2008-12-8 19:05 | 只看该作者

如何利用51单片机编程实现直流电动机调速!

新手上路,
如何利用51单片机编程实现直流电动机调速!给点思路吧!

使用特权

评论回复
11
弟儿| | 2008-12-8 19:21 | 只看该作者

如何利用51单片机编程实现直流电动机调速!给点思路吧!

这是我的邮箱:1065463644@qq.com

使用特权

评论回复
12
ahai0306|  楼主 | 2009-2-16 16:22 | 只看该作者

回复楼上的

楼上的,请把详细说明写下吧,

使用特权

评论回复
13
zigbee笔记| | 2009-2-16 17:26 | 只看该作者

顶,支持原创!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

158

帖子

1

粉丝