如何成为过硬的硬件工程师-之初识单片机

时间:2014-05-02 20:07:17 发布者:sreen_114 本站编辑:越南语翻译


单片机其实就是一块类似计算机CPU的集成芯片,集成了若干组双向IO口,定时器、比较器,在芯片内部还有保存程序书写代码的存储器ROM和控制临时代码数据交换的RAM,光说不练怎么行,那我们就现在做一个最简单的实验吧!

1、首先我们要使用到的两款软件就是,Proteus 7.9和Keil uv4这两个软件,一个是做电路仿真,而领一个是单片机软件编写时使用的,大家可以再网上搜索下载就可以了,建议大家在学习的时候还是先用和谐过的,以后工作了如果有需要再使用正版的。

2、安装好两款软件后我们先来启动Proteus 7.9,然后我来来添加几个原件,按照下图操作,首先我们添加单片机的仿真原型:

添加晶振:

添加电容:

添加电阻:

添加LED:

2、我们来绘制仿真电路,注意修改原件参数需要在对应的文字或者器件上双击,然后将要修改的内容填写到文本框内就可以了:

3、电路图绘制好后,我们打开Keil uv4,选择Project->New uVision Project,新建一个工程:

跳出新建工程对话框,输入工程名,点击保存:

保存按钮按下后,会跳出选择单片机的选项,我们选择Atmel公司的AT89C51,点击OK

我们发现在左侧工程列表内多了一个Target1,这就是我们刚刚新建的工程,点击圆圈内的新建按钮:

在新建的文本内输入如下内容:

输入好后,我们保存该代码文本,在文件名条目内输入文件名称:

在工程条目上点击右键,选择Add Files to Group Source Group 1 将刚才新建的.c文件加入到工程中来:

4、我们来完善全部的代码:

#include <reg51.h>

#define uint8_t unsigned char

#define uint16_t unsigned int

sbit P0_0=P0^0; // 端口定义

sbit P0_1=P0^1; // 端口定义

sbit P0_2=P0^2; // 端口定义

sbit P0_3=P0^3; // 端口定义

void LEDDelayTime(uint16_t Time); // 函数声明

void LEDDelayTime(uint16_t Time) // LED闪烁间隔时间

{

uint16_t i = 0;

uint16_t j = 0;

for(i=0;i<Time;i++)

{

for(j=0;j<1000;j++)

{

;;

}

}

}

void LEDFlicker(void)// LED控制函数

{

P0_0 = 1; // 关闭D1

P0_1 = 1; // 关闭D2

P0_2 = 1; // 关闭D3

P0_3 = 1; // 关闭D4

LEDDelayTime(200); // 延迟

P0_0 = 0; // 打开D1

P0_1 = 0; // 打开D2

P0_2 = 0; // 打开D3

P0_3 = 0; // 打开D4

LEDDelayTime(200); // 延迟

}

void main(void)

{

while(1)

{

LEDFlicker();

}

}

5、我们来生成仿真用的HEX文件:右键点击工程条目->选择Output->输入生成HEX文件名称->选择HEX文件保存目录->勾选对号(代表可以生成HEX文件),点击OK,然后点击编译工程,系统会生成HEX文件在你刚刚选择的目录:

6、我们将HEX文件装入仿真电路,我们回到刚刚新建好的Proteus工程,双击CPU,然后跳出下图,我们点击红色圆圈内的文件夹,将地址指向刚刚生成的HEX文件,然后点击OK按钮。

7、我们完成了以上操作,马上就成功在望了,我们点击下图的运行按钮来看一下效果吧,看看LED是不是按照我们刚刚设计程序运行了呢?呵呵 答案是肯定的:

LED是不是在一亮一灭的运行呢?呵呵 希望这篇入门实验能给大家带来乐趣,勾起你们求知的欲望,因为这只是开始,跟住我,一定你们会学到更多.......



Copyright ©2016 zgdxyuan.com越南语翻译 本站所有内容源自互联网,有事请联系站长邮箱:abc998666@126.com百度sitemap 好搜sitemap 搜狗sitemap 神马sitemap googlesitemap