0

关于投票
51单片机使用点滴
来源:电子世界  作者:吴健
点击看大图
  8051单片机是我们最常见的一种单片机,我用8051已经很久了,也教过一段时间的单片机课程,在这里把自己的心得与大家分享一下。

一、硬件部分
  • 一定要记得接晶振和复位电路。很多学生在Proteus上仿真成功后,焊板子的时候总是不记得把晶振和复位电路接上,这样板子是不会工作的。
  • 一般没有特殊要求的话,选用11.0592MHZ的晶振。这样有利于得到没有误差波特率。特别是当与PC机进行通信的话,选用这种晶振比较好。
  • 复位电路的电容可以选择10uF或者22uF。如果是10uF的话,充电电阻R的值要高于4K欧姆,如果你的单片机工作速度很慢,可以选择8.2K欧姆。
  • 每个大规模的数字IC旁边都要放一个0.1uF的电容(一端接电源,一端接地)来去除高频的干扰。
  • 在板子上最好做一个ISP下载座子与单片机相连,这样调试改写程序的时候就不用把单片机拔来拔去的,调试的周期也可以缩短。
  • 目前比较好用的51单片机有ATMEL公司的AT89S系列、SST公司的SST89系列,现在新出现一个公司的好51单片机,价格更便宜,听说性能也不错,就是STC系列单片机

二、软件部分

  • 能用C语言开发就用C语言,这样开发速度比较快,而且代码也比较容易维护。
  • 将你常用的芯片的服务编成函数库,这样就能重复利用了,降低开发的周期。
  • 善于利用KEIL C51的开发环境与PROTEUS仿真环境的联合调试,可以降低开发的成本。
  • 平常多做设计练习,多学多看,尤其要多多地收集别人公开的驱动源程序,这样可以在设计的时候少写很多代码。
  • 设计完成后,要结合电路图和代码写出设计说明书,这样可以很好地保存自己的设计思路,对以后维护设计和移植设计都是很有好处的。
  • 多看看《软件工程》和《数据结构与算法》,提高自己代码的可重用能力。
  • 好的程序员是热爱程序的程序员,把你编写的每个源代码文件都加上自己的名字和版权说明,在能保护自己的知识产权的同时,也是对自己的一种激励。
  • 大一点的设计都要写出数据词典,这样在用变量、写功能的时候就不会晕头转向。
系统分类: 单片机
用户分类: 8051单片机
标签: 8051
来源: 转贴
发表评论 阅读全文(711) | 回复(0)

0

关于投票
什么是复位电路?
  简单地说,单片机的复位就和计算机的重起是一样的概念、任何单片机在工作之前都要有个复位的过程,复位对单片机来说,是程序还没有开始执行,是在做准备工作。一般的复位只需要5ms的时间。
  如何进行复位呢?只要在单片机的RET引脚上加上高电平就可以了.按上面所说时间不少于5ms。为了达到这个要求,需要在外部设计复位电路。
  复位电路的实现可以用很多种方法.但是从功能上一般分为两种:一种是电源源位,即外部的复位电路在系统通上电源之后直接使单片机工作,单片机的起停通过电源控制;另一种方法是在复位电路中设计按键开关.通过按键开关触发复位电平,控制单片机的复位。
系统分类: 单片机
用户分类: 8051单片机
标签: 复位电路
来源: 转贴
发表评论 阅读全文(1827) | 回复(0)

0

关于投票
什么是单片机的定时器?
  MCS—51系列的单片机一般有两个内部的16位定时器/计数器.分别称为T0和Tl。这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。
  那么这个定时/计数器是如何产生定时作用的呢?举个例子,如果将时钟定时到1分钟,那么秒针计数到60次后,时钟闹铃就会响。这里有个计数和定时之间的概念转化,时间表示为秒针计数值,即秒针每一次走动的时间正好是ls。
  单片机中的定时器和计数器是复用的,计数器是记录外部脉冲的个数,而定时器则是由单片机提供的一个非常稳定的计数源。定时器是由单片机的晶振经过12分频后获得的一个脉冲源。当单片机的晶振为12MHz时,计数值1代麦的时间就是1us。
  计数器的容星是16位,也就是最大的计数值到65536,因此计数计到65536就会产生溢出。当定时器/计数器计溢出时,就会使得相关的寄存器标志产生变化,单片机将由此I而产生定时中断,在中断服务程序中处理定时到而需要完成的任务。
系统分类: 单片机
用户分类: 8051单片机
标签: 8051
来源: 转贴
发表评论 阅读全文(1349) | 回复(3)

0

关于投票
初学者的第一个单片机程序

/*
***************************************************************************
*     (C) Copyright 2007,单片机初学者园地
*                          All Rights reserved.
*
*项目名称:    51单片机学习开发系统
*             
*本文件名称:first_mcu.c      
* 完成作者 : 歪歪 
* 当前版本 : V1.0   
* 描    述 :      这个程序专门为刚刚开始接触单片机的学习者设计的,
*             主要是帮助其学会单片机是怎么调试的,如何自己编写的程
*             序,从课本的迷团中走出来。
*                本程序结构简单、合理,有帮助于初学者养成良好的编
*             程风格。
****************************************************************************
*/


#include           //调用头文件(单片机内部的寄存器定义)

/******本段为硬件I/O口定义********/
sbit  LED0   = P0 ^ 0;
sbit  LED1   = P0 ^ 1;
sbit  LED2   = P0 ^ 2;
sbit  LED3   = P0 ^ 3;

/************主程序**************/
main()
{
    LED0=1;    //LED0发光二极管灭
    LED1=0;    //LED1发光二极管亮
    LED2=1;    //LED2发光二极管灭
    LED3=0;    //LED3发光二极管亮

  while(1);    //单片机在这里等待(待机
}

;*                               与上面对应的汇编程序
;**************************************************************************
;      (C) Copyright 2007,单片机初学者园地
;                          All Rights reserved.
;
;项目名称:    51单片机学习开发系统
;              
;本文件名称:first_mcu.asm     
; 完成作者 : 歪歪 
; 当前版本 : V1.0   
; 描    述 :      这个程序专门为刚刚开始接触单片机的学习者设计的,
;             主要是帮助其学会单片机是怎么调试的,如何自己编写的程
;             序,从课本的迷团中走出来。
;                本程序结构简单、合理,有帮助于初学者养成良好的编
;             程风格。
;***************************************************************************
;*
;***********本段为硬件I/O口定义************
LED0             EQU                   P0.0
LED1             EQU                   P0.1
LED2             EQU                   P0.2
LED3             EQU                   P0.3

               ORG    0000H                ;上电后程序从这里运行
               AJMP  MAIN
              
MAIN:        SETB  LED0               ;LED0发光二极管灭
                   CLR    LED1               ;LED1发光二极管亮
                   SETB  LED2               ;LED2发光二极管灭
                   CLR    LED3               ;LED3发光二极管亮
                   SJMP   $                     ;单片机在这里等待(待机)
                   END

转自:http://www.ednchina.com/blog/ahai0306/19917/message.aspx

系统分类: 单片机
用户分类: 8051单片机
标签: 无标签
来源: 转贴
发表评论 阅读全文(578) | 回复(0)
总共 , 当前 /