首页 > 电脑专区 > 电脑教程 >

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

来源:互联网 2023-02-20 17:18:59 490

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

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

2、安装好两款软件后我们先来启动Proteus 7.9,然后我来来添加几个原件,按照下图操作,首先我们添加单片机的仿真原型:fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

添加晶振:fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

添加电容:fgW办公区 - 实用经验教程分享!

添加电阻:fgW办公区 - 实用经验教程分享!

添加LED:fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

2、我们来绘制仿真电路,注意修改原件参数需要在对应的文字或者器件上双击,然后将要修改的内容填写到文本框内就可以了:fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

3、电路图绘制好后,我们打开Keil uv4,选择Project->New uVision Project,新建一个工程:fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

跳出新建工程对话框,输入工程名,点击保存:fgW办公区 - 实用经验教程分享!

保存按钮按下后,会跳出选择单片机的选项,我们选择Atmel公司的AT89C51,点击OKfgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

我们发现在左侧工程列表内多了一个Target1,这就是我们刚刚新建的工程,点击圆圈内的新建按钮:fgW办公区 - 实用经验教程分享!

在新建的文本内输入如下内容:fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

输入好后,我们保存该代码文本,在文件名条目内输入文件名称:fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

在工程条目上点击右键,选择Add Files to Group Source Group 1 将刚才新建的.c文件加入到工程中来:fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

4、我们来完善全部的代码:fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

#include reg51.h>fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

#define uint8_t unsigned charfgW办公区 - 实用经验教程分享!

#define uint16_t unsigned intfgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

sbit P0_0=P0^0; // 端口定义fgW办公区 - 实用经验教程分享!

sbit P0_1=P0^1; // 端口定义fgW办公区 - 实用经验教程分享!

sbit P0_2=P0^2; // 端口定义fgW办公区 - 实用经验教程分享!

sbit P0_3=P0^3; // 端口定义fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

void LEDDelayTime(uint16_t Time); // 函数声明fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

void LEDDelayTime(uint16_t Time) // LED闪烁间隔时间fgW办公区 - 实用经验教程分享!

{fgW办公区 - 实用经验教程分享!

uint16_t i = 0;fgW办公区 - 实用经验教程分享!

uint16_t j = 0;fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

for(i=0;iTime;i )fgW办公区 - 实用经验教程分享!

{fgW办公区 - 实用经验教程分享!

for(j=0;j1000;j )fgW办公区 - 实用经验教程分享!

{fgW办公区 - 实用经验教程分享!

;;fgW办公区 - 实用经验教程分享!

}fgW办公区 - 实用经验教程分享!

}fgW办公区 - 实用经验教程分享!

}fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

void LEDFlicker(void)// LED控制函数fgW办公区 - 实用经验教程分享!

{fgW办公区 - 实用经验教程分享!

P0_0 = 1; // 关闭D1fgW办公区 - 实用经验教程分享!

P0_1 = 1; // 关闭D2fgW办公区 - 实用经验教程分享!

P0_2 = 1; // 关闭D3fgW办公区 - 实用经验教程分享!

P0_3 = 1; // 关闭D4fgW办公区 - 实用经验教程分享!

LEDDelayTime(200); // 延迟fgW办公区 - 实用经验教程分享!

P0_0 = 0; // 打开D1fgW办公区 - 实用经验教程分享!

P0_1 = 0; // 打开D2fgW办公区 - 实用经验教程分享!

P0_2 = 0; // 打开D3fgW办公区 - 实用经验教程分享!

P0_3 = 0; // 打开D4fgW办公区 - 实用经验教程分享!

LEDDelayTime(200); // 延迟fgW办公区 - 实用经验教程分享!

}fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

void main(void)fgW办公区 - 实用经验教程分享!

{fgW办公区 - 实用经验教程分享!

while(1)fgW办公区 - 实用经验教程分享!

{fgW办公区 - 实用经验教程分享!

LEDFlicker();fgW办公区 - 实用经验教程分享!

}fgW办公区 - 实用经验教程分享!

}fgW办公区 - 实用经验教程分享!

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

fgW办公区 - 实用经验教程分享!

6、我们将HEX文件装入仿真电路,我们回到刚刚新建好的Proteus工程,双击CPU,然后跳出下图,我们点击红色圆圈内的文件夹,将地址指向刚刚生成的HEX文件,然后点击OK按钮。fgW办公区 - 实用经验教程分享!

7、我们完成了以上操作,马上就成功在望了,我们点击下图的运行按钮来看一下效果吧,看看LED是不是按照我们刚刚设计程序运行了呢?呵呵 答案是肯定的:fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

fgW办公区 - 实用经验教程分享!

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

以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!fgW办公区 - 实用经验教程分享!


标签: 硬件工程师

办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码