如何成为过硬的硬件工程师-之初识单片机
单片机其实就是一块亿姣灵秀类似计算机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是不是在一亮一灭的运行呢?呵呵 希望这篇入门实验能给大家带来乐趣,勾起你们求知的欲望,因为这只是开始,跟住我,一定你们会学到更多.......