点击上方蓝字关注我们
很多计算机专业学生或爱好者,在系统学习计算机相关知识时,一定会接触到 《计算机体系结构》这门课程,如果你热爱编程,C语言往往是首选也是基础。很多人会认为这两门课程过于基础,很难看到现实的应用。
如果你也这么认为,那么来看一下单片机吧,小小的芯片却五脏俱全,用简单的C语言直接操作寄存器,实现各种花哨功能,并且单片机还是嵌入式学习的基础入门,在物联网时代无疑会得到更广泛的应用。
在接下来的8次课程中,我们将会从仿真软件的使用开始,依次了解学习GPIO、外部中断、定时器中断以及串口中断,并在最后用三天时间,利用仿真软件模拟制作一辆简单的超声波避障小车车~
骑上我心爱的小车车~~它永远不会堵车~
![2feabc64025ce8af9bfde24f3eeec0d4.png](https://i-blog.csdnimg.cn/blog_migrate/201f357c7a7696046cbe872693ac3d8e.png)
第一天
单片机一套开发板成本大约400左右,如果囊中羞涩,我们可以先利用仿真软件进行学习(但强烈推荐购买一块开发板!!!)
![f4bc54a6cc2826108591c2913ef70d89.png](https://i-blog.csdnimg.cn/blog_migrate/9922bf3b0474f788a95b67552da122bc.png)
Keil与Proteus
这两款软件是常见的搭配,Keil负责软件编译,Proteus则是原理图的制作,可以直观的看到程序运行时各个器件的工作状态。
今天我们会学习Keil与Proteus软件的基本操作与联调方式,并创建一个以一秒为间隔闪烁的LED小项目进行练习、验证。
咳咳咳,以下为正儿八经步骤哈:
![c0302cda6993dd56140a1c4bc4e9fe50.png](https://i-blog.csdnimg.cn/blog_migrate/f3e7b900ba4e87815d0e8c10a0b63c04.png)
安装Keil与Proteus软件
Keil与Proteus是开发单片机常见的编译与仿真软件,网上有很多分享版本与安装教程,请各位小可爱小宝贝小甜心儿自行百度下载安装,教程中的所有程序全部使用Keil4与Proteus8编译仿真通过。
建立Keil与Proteus的联调
![c0302cda6993dd56140a1c4bc4e9fe50.png](https://i-blog.csdnimg.cn/blog_migrate/f3e7b900ba4e87815d0e8c10a0b63c04.png)
分别安装成功后,Keil与Proteus如何联调工作?
第一步
将Proteus 8 Professional\MODELS 目录中的VDM51.dll文件复制到Keil/C51/BIN 目录下(如果没有可以百度下载并放入两个目录内)
![402b996558bc45a4922aac455d6b7791.png](https://i-blog.csdnimg.cn/blog_migrate/7b457a8d3d17d5fefd9da4e9fe74fbec.png)
第二步
用记事本打开Keil安装目录下的TOOLS.INI文件,添加黄色标识的内容,注意红线标注的数字是顺延的,因人而异。
![994f91e9189c1ecd5182fad9731fb333.png](https://i-blog.csdnimg.cn/blog_migrate/c4464ee2f0789b9154979ad9bc53083f.png)
![c0302cda6993dd56140a1c4bc4e9fe50.png](https://i-blog.csdnimg.cn/blog_migrate/f3e7b900ba4e87815d0e8c10a0b63c04.png)
编写第一个LED闪烁仿真程序
第一步
打开Proteus软件,选择新建,依次设置工程名、工程路径、使用模板(选择“default”)、PCB布版设计(无)、固件项目(无),完成工程创建,进入原理图绘制界面。
![7c958a597d14ed40a55d18ed9a791c33.png](https://i-blog.csdnimg.cn/blog_migrate/aab46bc89ff3380ef8ca66fde333c2ca.png)
第二步
选择放入所需的元器件
点击元件模式,选择“P”,在关键字一栏中输入所需要的元器件名称,这里依次查找并放入 AT89C51、CAP、CAP-ELEC、CRYSTAL、RES,在“终端模式”中找到并放入POWER(电源)、GROUND,并如下图连接
![d672b59772622aec737103764fd36b46.png](https://i-blog.csdnimg.cn/blog_migrate/52ad030049fe3e794c08d8369c5d663e.png)
这样我们就完成了单片机最小系统的构建。
第三步
在“元器件模式”中找到LED-YELLOW模块,用连接线连接,如下图所示
![8333bf9b19239458b63d560356926186.png](https://i-blog.csdnimg.cn/blog_migrate/86c47dd40eb0cb6831ad8e9b8c9b552f.png)
第四步
打开Proteus的远程编译监控器功能
![675f55bff832ee5f3779305e2e8be5a4.png](https://i-blog.csdnimg.cn/blog_migrate/87d1ccf679d24fd54e8d4baecfcec8e4.png)
确保该选项上有对勾
此时我们就完成了该案例在Proteus中的全部操作~~~~
第五步
打开Keil软件,新建一个工程,数据库选择为Atmel中的AT89C51,创建.C 文件并将该文件添加至刚刚创建的工程中
![f76ad7ea9544093dd0a5ede6ce9b09e5.png](https://i-blog.csdnimg.cn/blog_migrate/34d2d726ebe09153343e7e7061d98817.png)
(创建新工程)
![c4861f3cfa0074c7d9e8ab2ba2fafdfc.png](https://i-blog.csdnimg.cn/blog_migrate/340a25c384fc6ef0b20688419bd3bf49.png)
(将C文件添加到该工程中)
第六步
输入如下代码:
#include
sbit LED = P0^0;
void delay(unsigned int c)
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
void main()
{
while(1)
{
LED = ~LED;
delay(100);
}
}
第七步
选择“target option“,设置输出选项与联调软件
![9fa1ea5752807608a606eafc7eacbb11.png](https://i-blog.csdnimg.cn/blog_migrate/b5e6e724b34ad59d5f9b5b62e046af4c.png)
![54efe3d54b20a4f9bbbf5176552756cd.png](https://i-blog.csdnimg.cn/blog_migrate/cd64171fb1bbbebfd90e2421bf336921.png)
Output选项卡中选择生成的HEX文件就是联调时所传输给Proteus的文件,也是实际单片机中所要烧录的内容。
第八步
在Keil中运行程序,到Proteus中查看结果(Proteus应该处于开启状态,且已经打开了远程调试监视器功能)
(选择start Debug)
![a126ea255a0c3896f632f1fa6d2d5027.png](https://i-blog.csdnimg.cn/blog_migrate/1fabd2a0e8b3eaef8e311d9af6f15299.png)
(Run!)
![71d04f03ebc46a584073ca32269470fc.png](https://i-blog.csdnimg.cn/blog_migrate/1f2b5a482e0c17f4e4e149a9f459089f.png)
(在Proteus中观察实验现象)
如果可以观察到LED以一秒为间隔闪烁,那么表示试验成功!
另外~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如果Proteus中提示“No program code load”,这一般是Proteus没有找到需要加载的二进制文件,请在Proteus中双击AT89C51芯片,在打开的窗口中“Program File”下,手动查找添加Keil生成的HEX文件,再次运行,往往可以解决该问题。
(其他文中没有提到的问题或读者有什么好的建议,欢迎后台留言~)
![b24ee195ac3bbb844f4522993640aa8e.png](https://i-blog.csdnimg.cn/blog_migrate/9643093ad914278c541b76cd7b272380.jpeg)
关注我们
发现更多精彩
~吖白白小注 关迎欢,果效病椎颈疗治有转不,野视屏大有拥能就度90转翻