- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第四部分单片机实验基础篇
前言C语言主要有三种结构:顺序结构、选择结构、循环结构。不管哪几种结构,所有的程序都是从main函数开始的。本章节通过五个项目的实例讲解,复习第三部分中C语言基础:常量和变量;运算符与表达式;分支语句,包括:if、if-else、switch;循环语句,包括:while、do-while、for;函数的调用等。
4.1LED显示LED是日常生活中运用广泛的显示器件之一,包括LED灯、数码管等。本小节我们通过LED灯程序,学习IO口的位控制、并行操作。【例4.1.1】硬件电路如图4.1.1所示,参数如表4.1.1。设计一个LED闪烁灯:让P1.0为高电平,延时一段时间后,让P1.0为低电平。以此循环就可以让D1闪烁。
表4.1.1序号元件元件参数Proteus中元件名1电阻R1:10K;R2:300欧RES2电容C1:10uF;C2、C3:30PCAP3LEDD1:红色LED-RED4晶振X1:12MCRYSTAL5单片机AT89C51AT89C51
图1.1.2上拉电阻
4.1LED显示#includeREGX52.H//单片机头文件,包含相关特殊寄存器物理映射。voiddelay()//延时程序{unsignedinti=50000;//局部变量i。while(i--);}voidmain(void){while(1)//死循环{P1_0=1;//让P1.0输出高电平,LED灭。delay();//延时函数的调用P1_0=0;//让P1.0输出低电平,LED亮。delay();//延时函数的调用}}//////////////////////////////////////////////////////////////////////////////
此后,双击Proteus中AT89C51,将ProgramFile路径指向KeiluVision4生成的HEX文件,即可在Proteus中看到仿真结果。图4.1.1中单片机18、19脚的晶振电路和9脚的复位电路在仿真中可以不用画出。
4.1LED显示【例4.1.2】为了更好的描述程序与硬件的关系,例4.1.1的程序经常使用sbit、define等语句让程序通俗易懂、方便修改。#includeREGX52.H#defineon0//用define定义on为0,以下所有on都表示为0。#defineoff1//用define定义off为0,以下所有off都表示为1。sbitLED1=P1^0;//用sbit定义LED1为单片机的P1.0引脚voiddelay(void)//延时程序{unsignedinti=50000;//局部变量i。while(i--);}voidmain(void){while(1)//死循环{LED1=off;//让P1.0输出高电平,LED灭。delay();//延时函数的调用LED1=on;//让P1.0输出低电平,LED亮。delay();//延时函数的调用}}
4.1LED显示【例4.1.3】硬件电路如图4.1.3所示,设计一个流水灯程序:让LED从上往下做流水动作,如表格4.1.3所示,用于练习并行口的程序编写。首先让P1值为0xfe,延时一段时间后让P1值为0xfd,以此类推到P1值为0x7f,并以此循环。(图4.1.3中R1是排阻,在Proteus中的元件名为:respack-8。单片机的外部晶振电路、复位电路在仿真中都可省略。)
LEDD7D6D5D4D3D2D1D0P1值P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.00xfe111111100xfd111111010xfb111110110xf7111101110xef111011110xdf110111110xbf101111110x7格4.1.3图4.1.3#includeREGX51.Hvoiddelay(void)//延时函数{unsignedinti=50000;//局部变量i。while(i--);}voidmain(){while(1){P1=0xfe;delay();P1=0xfd;delay();P1=0xfb;delay();P1=0xf7;delay();P1=0xef;delay();P1=0xdf;delay();P1=0xbf;delay();P1=0x7f;delay();}}
4.1LED显示【例4.1.4】上例4.1.3中程序可以采用调
文档评论(0)