对于单片机初学者而言,从51单片机入手无非是最佳的选择。51单片机是对所有兼容Intel 8031指令系统的单片机的总称。关于51单片机的来历以及作用不作概述,下面就开始本次内容。
首先,学习单片机要掌握以下知识:
1)最小系统运行的必要条件:
a.电源—— 一般采用+5V电压
b.晶振—— 晶体振荡器,产生振荡频率
c.复位电路——用来使电路恢复到起始状态的电路设备
2)对任意I/O口的操作:
a.输出控制电平的高低
b.输入检测电平的高低
3)定时器:一般采用方式2
4)中断:掌握外部、定时器、串口中断几种常见类型中断
5)通信:单片机之间、单片机与计算机之间
此外,我们知道51单片机的编程语言有两种,汇编语言与C语言。由于常用C语言,所以下面代码都是用C语言编写。值得说的是,单片机里用的C语言与我们平时学的C语言还是有些差别的。
1、声明
sfr 特殊功能寄存器声明 例:sfr SCON=0x98;
sfr16 sfr的16位数据声明
sbit 特殊功能位声明 例:sbit OV=PSW^2;
2、赋值
单片机里赋值是针对端口的,但是其中要通过一个变量才能实现 。
如: sbit LED=P0^0; //P0^0代表P0口的第一位,有8位,0~7
LED=0;
要通过创建LED变量,才能间接对PO口的位赋值。当然也可以整体赋值,如下:
P0=0xfe; //0x表示十六进制符号,这样相当于对P0口整体进行赋值
再谈下学习单片机所需要的开发板以及软件。一般推荐使用AduC848开发板,至于编程软件就是keil软件。
ADuC848的简要介绍详细情况请参考芯片手册。
1、8051-based core、5V供电电压;
2、可以通过串口在线下载程序和单步、断点、运行到某一行等方式调试程序;
3、16位8通道Σ-ΔADC,片内有1.25V参考电压、buffer和PGA;
4、12位电压输出DAC、Dual 16-BIT Σ-Δ DAC;
5、32kbyte程序存储器、4kbyte用户信息Flash存储器、256RAM+2048XRAM(byte);
6、PLL(12.58 MHz max)(片外只需接32.768kHz晶振);
7、3×16位定时/计数器、看门狗定时器;
8、11中断源(2优先级)、11位堆栈指针;
9、24I/O+8模拟或数字输入;
10、UART、 SPI和I2C、高速115200波特率发生;
11、Power supply monitor、上电复位、Dual 200μA激励电流源。
至于keil软件的使用,附件中有word文档资料,大家可以下载浏览。
-----------------------------------------------------------------------------------------------------------------------------
下面我讲下对于开发板与编程软件的结合学习。编程就是针对开发板上的端口位赋值,置1或者清零,从而对元器件进行控制,如控制二极管亮灭、数码管显示、蜂鸣器的鸣响。那么,你会问,我怎么知道哪些端口能控制这些器件呐?答案就是:看硬件原理图!!!!(附件里有完整学习板原理图)
我们可以看到aduC848芯片的各个端口上标有字母,那些字母代表端口的引出部分,有些就是控制器件的电路。通过对原理图芯片的端口以及各个模块的熟悉,我们自然而然就能进行编程控制器件。
下面,就开始谈编程部分~~
同C语言一样,第一句也是先保护库文件:#include<aduc848.h>。大家都会写,那么这句到底有什么作用呢?
我们可以选中这句话,然后单击右键再点击“open the document <aduc848.h>”,然后就会打开一个aduc848.h的文件。里面对端口赋了地址值而且对一些重要端口位赋给了变量。之后我们就可以赋值给这些变量进而赋给端口位,而不需要自己再另外设置变量。
接下来,再谈下一个重要的函数,延时函数,如字面意思,是用来延时的。这个函数是需要我们自己编写的,下面给出例子:
//延时函数 void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=150;y>0;y--); }
注意,前面其实有了定义#define uint unsigned int,故这里用uint代替了数据类型unsigned int。函数里面的数据,我们可以通过设置断点进行测量,最终可以达到延时整值的效果。如 delay(5)就是延时5秒,这里“150”是我自己设的,大家要重新设才能达到上述效果。
下面就是控制二极管其中一位的反复亮灭的代码:
#include<aduc848.h> #define uchar unsigned char #define uint unsigned int sbit Led=P0^0; //设置变量,控制二极管灯的亮灭 void delay(uint z); void main() { while(1) { delay(10); Led=0; //二极管灯亮 delay(10); Led=1; //二极管灯灭 } } //延时函数 void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=150;y>0;y--); }
相关推荐
51单片机入门详细教程 郭天祥完整单片机入门教程 使使用者一周能 入门
51单片机入门的C语音例程,有IO口的各种输入输出操作,各种样式的LED点亮、数码管的使用、各种中断和定时器的操作、电机和蜂鸣器的使用
单片机基础 一、 单片机基础知识 1.1 51 系列单片机简介: 51 系列单片机是单片机领域中的一类,也是影响最为深远,使用最为广泛的单片机系 列。51 单片机是指 Intel 的 MCS 51 系列及和其具有兼容内核的单片机。51 ...
51单片机快速入门 51单片机快速入门 51单片机快速入门 51单片机快速入门 51单片机快速入门 51单片机快速入门
51单片机入门级别常用函数,主要包括I/O口、定时器、计数器、中断、通信等。
51单片机C语言入门教程.pdf 51单片机C语言入门教程.pdf 51单片机C语言入门教程.pdf 51单片机C语言入门教程.pdf 51单片机C语言入门教程.pdf 51单片机C语言入门教程.pdf 51单片机C语言入门教程.pdf 51单片机C语言入门...
写的很简洁,看起来很容易明白,感觉很好,比看书本教材强多了!51单片机初学者很适用。
51单片机入门学习,简单的流水灯,数码管,计时器,中断
51单片机入门教程,51单片机入门教程51单片机入门教程,51单片机入门教程
51单片机入门C语言入门教程
51单片机c语言简单入门教程51单片机c语言简单入门教程51单片机c语言简单入门教程51单片机c语言简单入门教程51单片机c语言简单入门教程51单片机c语言简单入门教程51单片机c语言简单入门教程51单片机c语言简单入门教程...
89c51单片机入门
很不错的c51单片机入门教程,通俗易懂,比较基础
51单片机入门系列视频中用的资料&相关仿真文件&源代码.zip 51单片机入门系列视频中用的资料&相关仿真文件&源代码.zip 51单片机入门系列视频中用的资料&相关仿真文件&源代码.zip 51单片机...
DL-51单片机入门系列教程之六《3×3矩阵键盘识别》.pdf
从零开始学习单片机技术
相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了。单片机是一块在集成电路芯片上集成了一台有一定...
51单片机入门C语言程序 keil C开发 内包含hex文件
单片机C编程语言,51单片机下位机开发,单片机学习文档及代码