本文目录一览:
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
以上是百度百科上的词条,随便看看就行了,下面说一下我对单片机的理解:
我们都知道,我们的电脑是由CPU、内存、磁盘、IO设备等组成的,而单片机简而言之,就是一个微型电脑,它在一块芯片上包含了CPU,硬盘(flash)和内存条(ram)以及基本输入输出设备(io口)。

二、怎么学习单片机
void 学习单片机()
{
while(1){
动手写单片机程序;
调试程序;
发现程序中的语法与逻辑错误;
改正程序中的错误;
}
}
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
三、点亮一个LED灯
说了这么多,现在步入正题。
3.1 在Proteus上搭建LED灯的电路
首先打开Proteus软件,界面如图

左侧的一栏是各种类型的组建,其中我们主要需要用到的有组件选项(component mode)和终端选项(Terminals mode)。
组件选项包括了我们用到的芯片,元件和其它的一些东西。
终端选项包括了VCC、GND等一些组件。

首先在组件选项中点击“P”按钮,找到我们需要的89c51芯片,并放入到主面板里。

同理
在组件选项中输入LED-YELLOW找到led灯放入主面板
在终端选项中选择POWER放入到主面板。

然后就要连接电路。power为电路提供电源输入,即电路的正极,所以将power的线连接到led灯的正极,然后我们把led灯的另一端接到单片机的P2^0引脚上。
之后我们就可以在程序中给P2^0引脚一个低电平(即电路的负极)使其构成一个回路,就可以达到点亮led灯的目的。

3.2 在keil中创建工程
3.2.1新建一个工程
打开keil,在菜单栏中找到工程(project),点击第一个,然后选择工程保存路径并点击保存。

然后选择单片机型号,找到Atmel点击左边的小加号,选择at89c51(或at89c52),点击确定。
j
接下来的窗口是提示我们“是否把启动代码添加到工程中”,我们选择确定。

这样我们的工程就创建好了。

随后我们需要给工程创建源码文件。
点击“文件”-“新建”,使用组合键ctrl+s保存文件,命名为main.c(可以随便命名,但是后面要加上 .c),点击保存。

右击源组,点击添加文件到源组。


点击这里的魔术棒,选择output,选中create hex file。


至此就可以编写代码了。
在文件中输入以下代码:
#include reg52.h
sbit led = P2^0;
void main(){
while(1){
说一下这几句代码是什么意思。
第一行是包含头文件,头文件里面定义了单片机寄存器的一些定义。初学者不理解也没有关系。
第二行是声明了P2^0端口,相当于给这个端口起了一个名字。
第三行是main函数,代码从这里开始执行。
第四行是一个while死循环,程序会一直执行while循环里面的内容。
第五行是给名字为led的端口(即P2^0端口)一个低电平(1代表高电平,0代表低电平),使led灯的两端构成回路。
然后编译程序,点击左上角的编译按钮。可以看到"0 error , 0 warning"的提示。

3.3 将程序导入到单片机中运行
我们已经搭建好了电路,写好了程序,生成了hex文件,之后需要在电路上运行我们的程序。
打开3.1中创建的仿真电路,双击单片机,找到3.2生成的hex文件,点击打开。

左下角的一排控制按钮意思分别是运行 单步 暂停 结束,我们点击运行就可以看到led灯被点亮。


点亮 小灯的程序我们第二课完成了,就是让 LED = 0。熄灭小灯的程序也很简单,就是 LED = 1。点亮和熄灭都会了,那么如果我们在亮和灭中间加个延时,反复不停的点亮和熄灭小灯,就成了闪烁了。
我们首先复习一下 Keil 写程序的过程,建立工程--保存工程--建立文件--添加文件到工程--编写程序--编译--下载程序。
LED 对于有 C 基础的同学来说很简单,那我先写出来,大家可以先看下。没有C 语言基础的同学也可以跟着抄一遍,下节课我会补充部分 C 语言基础知识,这样你先抄一遍后,再跟着看 C 语言基础知识的时候也比较容易理解透彻。
纯文本复制
#reg52.h
sbit LED = P0^0;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
main(){ //void 即函数类型
//以下为声明语句部分
unsigned int i = 0; //定义一个变量 i,并赋初值 0
//以下为执行语句部分
ENLED = 0; //U3、U4 两片 74HC138 总使能
ADDR3 = 1; //使能 U3 使之正常输出
ADDR2 = 1; //经 U3 的 Y6 输出开启Q16
ADDR1 = 1;
ADDR0 = 0;
(1){
LED = 0; //点亮小灯
for (i=0; i30000; i++); //延时一段时间
LED = 1; //熄灭小灯
for (i=0; i30000; i++); //延时一段时间
}
}
大家把这个程序编译一下,下载到里,就会发现 LED2 这个小灯会闪烁了。
keil使用教程编写第一个led灯程序
1、新建一个空文件夹
2、打开keil--newuVisionproject
3、选择目录,命名文件
4、选择芯片
5、添加文件
6、编写C51单片机程序
7、生成可以加载单片机里的hex文件
8、编译生成hex文件
9、将hex文件导入单片机
以51单片机为例 LED接到P1.0端口的 #include “reg51.h” sbit LED=P1^0; mail() { LED=0; //初始化LED为关闭状态 while(1) { LED=1; //点亮LED } } 完 最主要还要看看你的硬件
单片机的话,如端口上电默认高电平,那直接led一头接电源一头接端口,一个led对应一个端口。
一、简单讲:想要灯亮,就将对应端口置0。反之就是灯灭。
二、详细讲:假设用keil编写,新建工程-选择单片机型号-新建源文件-设置output(点魔术棒图标勾选create hex file)。
我们用P2^0端口连接一个led(led另一端连电源)。先给端口起别名sbit led1=P2^0;之后代码中需要灯亮就写led1=0;即可。(头文件自行导入)。
程序写好,编译后将生成的hex(路径在之前的设置中)写入单片机或加载到仿真电路中运行。