51单片机应用200实例_51单片机基础与应用8天速成(一)

本文引导初学者通过Keil和Proteus软件进行单片机学习,从创建工程到编写C语言代码,实现LED灯一秒间隔闪烁的仿真。首先介绍Keil和Proteus的安装与联调,接着详细讲解构建单片机最小系统及LED连接。通过实例演示如何在Keil中编写代码并在Proteus中验证效果,帮助理解单片机工作原理。
摘要由CSDN通过智能技术生成

点击上方蓝字关注我们

     很多计算机专业学生或爱好者,在系统学习计算机相关知识时,一定会接触到 《计算机体系结构》这门课程,如果你热爱编程,C语言往往是首选也是基础。很多人会认为这两门课程过于基础,很难看到现实的应用。

     如果你也这么认为,那么来看一下单片机吧835fc5dae4bb41f3e58fb396f25cd41b.gif,小小的芯片却五脏俱全,用简单的C语言直接操作寄存器,实现各种花哨功能,并且单片机还是嵌入式学习的基础入门,在物联网时代无疑会得到更广泛的应用。

      在接下来的8次课程中,我们将会从仿真软件的使用开始,依次了解学习GPIO、外部中断、定时器中断以及串口中断,并在最后用三天时间,利用仿真软件模拟制作一辆简单的超声波避障小车车~

骑上我心爱的小车车~~72ae0804e6adfb53ad31ab74398765d7.gif它永远不会堵车~

2feabc64025ce8af9bfde24f3eeec0d4.png

第一天

        单片机一套开发板成本大约400左右,如果囊中羞涩,我们可以先利用仿真软件进行学习(932aa13ccac614609320bec81df59fd9.gif但强烈推荐购买一块开发板!!!)

f4bc54a6cc2826108591c2913ef70d89.png

        Keil与Proteus

        这两款软件是常见的搭配,Keil负责软件编译,Proteus则是原理图的制作,可以直观的看到程序运行时各个器件的工作状态。

        今天我们会学习Keil与Proteus软件的基本操作与联调方式,并创建一个以一秒为间隔闪烁的LED小项目进行练习、验证。‍

咳咳咳,以下为正儿八经步骤哈:

c0302cda6993dd56140a1c4bc4e9fe50.png

安装Keil与Proteus软件

        Keil与Proteus是开发单片机常见的编译与仿真软件,网上有很多分享版本与安装教程,请各位小可爱小宝贝小甜心儿自行百度下载安装,教程中的所有程序全部使用Keil4与Proteus8编译仿真通过。

建立Keil与Proteus的联调

c0302cda6993dd56140a1c4bc4e9fe50.png

分别安装成功后,Keil与Proteus如何联调工作?

第一步

        将Proteus 8 Professional\MODELS 目录中的VDM51.dll文件复制到Keil/C51/BIN 目录下(如果没有可以百度下载并放入两个目录内)

402b996558bc45a4922aac455d6b7791.png

第二步

        用记事本打开Keil安装目录下的TOOLS.INI文件,添加黄色标识的内容,注意红线标注的数字是顺延的,因人而异。

994f91e9189c1ecd5182fad9731fb333.png c0302cda6993dd56140a1c4bc4e9fe50.png

编写第一个LED闪烁仿真程序

第一步

        打开Proteus软件,选择新建,依次设置工程名、工程路径、使用模板(选择“default”)、PCB布版设计(无)、固件项目(无),完成工程创建,进入原理图绘制界面。

7c958a597d14ed40a55d18ed9a791c33.png

第二步

        选择放入所需的元器件

        点击元件模式,选择“P”,在关键字一栏中输入所需要的元器件名称,这里依次查找并放入 AT89C51、CAP、CAP-ELEC、CRYSTAL、RES,在“终端模式”中找到并放入POWER(电源)、GROUND,并如下图连接

de0d3f54b4bce3adc3b51daac6d40c0d.png

d672b59772622aec737103764fd36b46.png

        这样我们就完成了单片机最小系统的构建

第三步

        在“元器件模式”中找到LED-YELLOW模块,用连接线连接,如下图所示

8333bf9b19239458b63d560356926186.png

第四步

        打开Proteus的远程编译监控器功能

675f55bff832ee5f3779305e2e8be5a4.png

        确保该选项上有对勾

        此时我们就完成了该案例在Proteus中的全部操作~~~~

第五步

        打开Keil软件,新建一个工程,数据库选择为Atmel中的AT89C51,创建.C 文件并将该文件添加至刚刚创建的工程中

f76ad7ea9544093dd0a5ede6ce9b09e5.png

        (创建新工程)

c4861f3cfa0074c7d9e8ab2ba2fafdfc.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

4a762e4e680cac292d363730381499db.png

54efe3d54b20a4f9bbbf5176552756cd.png

        Output选项卡中选择生成的HEX文件就是联调时所传输给Proteus的文件,也是实际单片机中所要烧录的内容。

第八步

        在Keil中运行程序,到Proteus中查看结果(Proteus应该处于开启状态,且已经打开了远程调试监视器功能)

62e0461b253a57ccff1456d084a70fa0.png

        (选择start Debug)

a126ea255a0c3896f632f1fa6d2d5027.png

(Run!)

71d04f03ebc46a584073ca32269470fc.png

        (在Proteus中观察实验现象)

        如果可以观察到LED以一秒为间隔闪烁,那么表示试验成功

另外~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        如果Proteus中提示“No program code load”,这一般是Proteus没有找到需要加载的二进制文件,请在Proteus中双击AT89C51芯片,在打开的窗口中“Program File”下,手动查找添加Keil生成的HEX文件,再次运行,往往可以解决该问题。

(其他文中没有提到的问题或读者有什么好的建议,欢迎后台留言~3e1d405b7797c316a77c0dbc40b323de.gif)

b24ee195ac3bbb844f4522993640aa8e.png

关注我们

发现更多精彩

~吖白白小注 关迎欢,果效病椎颈疗治有转不,野视屏大有拥能就度90转翻
第一章.... 4 【实例1】使用累加器进行简单加法运算:... 4 【实例2】使用B寄存器进行简单乘法运算:... 4 【实例3】通过设置RS1,RS0选择工作寄存器区1:... 4 【实例4】使用数据指针DPTR访问外部数据数据存储器:... 4 【实例5】使用程序计数器PC查表:... 4 【实例6】if语句实例:... 4 【实例7】switch-case语句实例:... 4 【实例8】for语句实例:... 4 【实例9】while语句实例:... 5 【实例10】do…while语句实例:... 5 【实例11】语句形式调用实例:... 5 【实例12】表达式形式调用实例:... 5 【实例13】以函数的参数形式调用实例:... 5 【实例14】函数的声明实例:... 5 【实例15】函数递归调用的简单实例:... 5 【实例16】数组的实例:... 6 【实例17】指针的实例:... 6 【实例18】数组与指针实例:... 6 【实例19】P1口控制直流电动机实例... 6 第二章.... 8 【实例20】用74LS165实现串口扩展并行输入口... 8 【实例21】用74LS164实现串口扩展并行输出口... 10 【实例22】P0 I/O扩展并行输入口... 12 【实例23】P0 I/O扩展并行输出口... 12 【实例24】用8243扩展I/O端口... 12 【实例25】用8255A扩展I/O口... 14 【实例26】用8155扩展I/O口... 19 第三章.... 26 【实例29】与AT24系列EEPROM接口及驱动程序... 26 【实例30】EEPROM(X5045)接口及驱动程序... 30 【实例31】与铁电存储器接口及驱动程序... 33 【实例32】与双口RAM存储器接口及应用实例... 35 【实例33】与NANDFLASH(K9F5608)接口及驱动程序... 35 第四章.... 43 【实例34】独立键盘控制... 43 【实例35】矩阵式键盘控制... 44 【实例36】改进型I/O端口键盘... 46 【实例37】PS/2键盘的控制... 49 【实例38】LED显示... 53 【实例39】段数码管(HD7929)显示实例... 54 【实例40】16×2字符型液晶显示实例... 55 【实例41】点阵型液晶显示实例... 61 【实例42】LCD显示图片实例... 63 第五章.... 70 【实例43】简易电子琴的设计... 70 【实例44】基于MCS-51单片机的四路抢答器... 71 【实例45】电子调光灯的制作... 76 【实例46】数码管时钟的制作... 81 【实例47】LCD时钟的制作... 96 【实例48】 数字化语音存储与回放... 103 【实例49】电子标签设计... 112 第六章.... 120 【实例50】指纹识别模块... 121 【实例51】数字温度传感器... 121 第七章.... 124 【实例53】超声波测距... 124 【实例54】数字气压计... 125 【实例55】基于单片机的电压表设计... 132 【实例56】基于单片机的称重显示仪表设计... 133 【实例57】基于单片机的车轮测速系统... 136 第八章.... 138 【实例58】电源切换控制... 138 【实例59】步进电机控制... 140 【实例60】单片机控制自动门系统... 141 【实例61】控制微型打印机... 144 【实例62】单片机控制的EPSON微型打印头... 144 【实例63】简易智能电动车... 145 【实例64】洗衣机控制器... 149 第九章.... 152 【实例65】串行A/D转换... 152 【实例66】并行A/D转换... 153 【实例67】模拟比较器实现A/D转换... 154 【实例68】串行D/A转换... 155 【实例69】并行电压型D/A转换... 156 【实例70】并行电流型D/A转换... 156 【实例71】file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image002.gif接口的A/D转换... 157 【实例72】file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image002.gif接口的D/A转换... 161 第十章.... 164 【实例73】单片机间双机通信... 164 【实例74】单片机间多机通信方法之一... 166 【实例75】单片机间多机通信方法之二... 171 【实例76】 PC与单片机通信... 176 【实例77】红外通信接口... 178 第十一章.... 180 【实例79】单片机实现PWM信号输出... 180 【实例80】实现基于单片机的低频信号发生器... 182 【实例81】软件滤波方法... 183 【实例82】FSK信号解码接收... 186 【实例83】单片机浮点数运算实现... 187 【实例84】神经网络在单片机中的实现... 192 【实例85】信号数据的FFT变换... 194 第十二章.... 198 【实例86】file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image005.gif总线接口的软件实现... 198 【实例87】SPI总线接口的软件实现... 200实例88】1-WIRE总线接口的软件实现... 205 【实例89】单片机外挂CAN总线接口... 207 【实例90】单片机外挂USB总线接口... 210 【实例91】单片机实现以太网接口... 214 【实例92】单片机控制GPRS传输... 221 【实例93】单片机实现TCP/IP协议... 223 第十三章.... 229 【实例94】读写U盘... 229 【实例95】非接触IC卡读写... 234 【实例96】SD卡读写... 238 【实例97】高精度实时时钟芯片的应用... 242 第十四章.... 247 【实例98】智能手机充电器设计... 247 【实例99】单片机控制门禁系统... 248
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值