版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子工业出版社,单片机控制技术 项目式教程 (C语言版,电子工业出版社,项目4 单片机控制 LED灯的设计,能了解51单片机I/O口的结构; 能掌握51单片机I/O口的特点及应用; 能掌握51单片机控制LED灯的硬件设计方法; 能熟练编写单片机控制LED灯闪烁的程序,学习目标,工作任务,叙述51单片机I/O口的结构和特点; 设计单片机控制单个LED灯闪烁的电路和工作软件; 设计单片机控制多个循环LED灯的电路和工作软件,任务4.1 单片机控制单个LED灯 任务4.2 单片机控制多个循环LED灯 项目拓展 实验板彩灯的花式控制 项目小结 思考与训练,项目4 单片机控制LED灯的设计,任务4.1
2、单片机控制单个LED灯,4.1.1 MCS-51单片机的I/O口介绍,MCS-51系列单片机有4个8位的并行I/O接口:P0、P1、P2和P3口。它们是特殊功能寄存器中的4个。这4个口,既可以作输入,也可以作输出,既可按8位处理,也可按位方式使用。输出时具有锁存能力,输入时具有缓冲功能,1P0口,P0口是一个三态双向口,包括一个输出锁存器、两个三态缓冲器、输出驱动电路和输出控制电路组成 ,它的一位结构如图,输出驱动器,控制电路,P0口功能,1、通用IO接口:不需要外部扩展时,内部控制信号将使MUX开关接通到锁存器。此时,由于P0口没有内部上拉电阻,通常要在外部加一个上拉电阻来提高驱动能力,2、
3、地址/数据分时复用:需要进行外部扩展时,内部控制信号将使MUX开关接通到内部地址数据线。此时,P0口在ALE信号的控制下,分时输出低8位地址和8位数据信号,P0口的工作原理,1)通用I/O口,方式1(读锁存器): Q 缓冲器2 D 内部总线, 适于“读修改写” 方式2(读引脚):P0.x 缓冲器1 D 内部总线,作为通用I/O使用,是一个准双向口:“在输入数据时应先把口置1, 使V1、V2都截止,引脚处于悬浮状态, 可作高阻抗输入,2)地址/数据总线口 输出:地址/数据为1,P0 x 高 地址/数据为0,P0 x 低 输入:经缓冲器1读入,1)P0口既可作地址/数据总线使用,也可作通用I/O口
4、使用。当P0口作地址/数据总线使用时,就不能再作通用I/O口使用了。 (2)P0口作输出口使用时,输出级属漏极开路,必须外接上拉电阻,才有高电平输出。 (3)P0口作输入口读引脚时,应先向锁存器写1,使V1、V2截止,不影响输入电平,P0口特点,2. P1口,P1口是准双向口,它只能作通用I/O接口使用。结构与P0口不同, 它的输出只由一个场效应管V1与内部上拉电阻组成,1)P1口是唯一的单功能口,仅能作为通用I/O口使用。因在其输出端接有上拉电阻,可以直接输出而无需外接上拉电阻。 (2)同P0口一样,当作输入口时,必须先向锁存器写“1”,使场效应管V1截止,P1口特点,3. P2口,P2口也
5、是准双向口,它有两种用途:通用I/O接口和高8位地址线,P2口作I/O端口使用时:内部控制信号使MUX开关接通到锁存器,此时P2口的用法与P1口相同。 P2口作外部地址总线使用时:内部控制信号使MUX开关接通到内部地址线,此时P2口的引脚状态由所输出的地址决定,需要特别指出的是,由于对片外地址的操作是连续不断的,只要进行了外部系统扩展,此时P0口和P2口就不能再用作I/ O端口了,4. P3口,P3口用作通用I/O口时,其工作原理同P1口类似。 此外,它的每一根线还具有第二种功能,在真正的应用电路中,P3口的第二功能显得更为重要,4.1.2 单片机控制单个LED灯闪烁的设计,1任务要求 设计一
6、个电路,AT89C52单片机的P1.7引脚连接一个LED灯,控制LED闪烁。 2任务分析,以单片机为核心的电子设计,硬件设计,软件设计,单片机最小系统加上最简单的输出电路来驱动LED,编程控制P1.7引脚的电平状态,使其持续一段时间的高电平,再持续一段时间的低电平,3任务设计,1)器件的选择,发光二极管,发光二极管:单向导电性,通过5mA左右电流即可发光,电流越大,亮度越强,但若电流过大会烧毁二极管,一般控制在320mA。 工作电压: 红色发光二极管1.7-2.5V 绿色发光二极管2.0-2.4V 黄色发光二极管1.9-2.4V 蓝/白色发光二极管3.0-3.8V,限流电阻,二极管串联电阻的目
7、的是为了防止发光二极管和P1.7引脚流过的电流过大,烧毁二极管或单片机,所以该电阻也称为“限流电阻”。 限流电阻的选择: 假设电源电压为VCC,发光二极管的导通压降为VDD,导通时流过二极管的电流为I,则限流电阻R为: R = (VCC-VDD)/I 例如,若二极管的导通压降为2.2V,导通时流过的电流为5mA,则限流电阻为560,器件清单,2)硬件原理图设计,再次强调:图中的单片机元件没有“VCC”和“GND”引脚,这是因为Proteus软件中,元件模型中的“电源”和“地”已经进行了连接,“VCC”接到了“+5V”电源,“GND”接到了“地”,所以隐藏了这两个引脚,3)软件程序设计,incl
8、ude /宏定义 sbit led=P17; / 用sbit 关键字定义P1.7引脚 / 延时子函数 void Delay(unsigned int t) while(-t); /主函数,控制P1.7引脚的LED灯闪烁 void main (void) while (1) /主循环 led=0; /将P1.7引脚置0,对外输出低电平 Delay(20000); /调用延时程序 led=1; /将P1.7引脚置 1,对外输出高电平 Delay(20000); /调用延时程序,在软件编程中,通常使用空循环来达到延时的效果。延时时间的长短可以在Keil C51的调试状态下分析,4)软硬件联合调试,1
9、任务要求 设计一个电路,AT89C52单片机的P1口连接8只LED灯,按以下顺序点亮,形成流水灯的效果: 从P1.0到P1.7连接的8只LED灯逐个点亮; 从P1.0到P1.7连接的8只LED依次全部点亮; 从P1.7到P1.0连接的8只LED灯逐个点亮; 从P1.7到P1.0连接的8只LED依次全部点亮,任务4.2 单片机控制多个LED灯,2任务分析 任务要求单片机控制8个LED灯,当需要对某个I/O口的八位一起操作时,一般采用整体操作的方式,即总线的方式。在软件设计时可以定义一个变量来给P1口赋值,赋的值不同点亮的LED灯不同。由于8只LED灯要按一定规律点亮,这就要求对给P1口赋的变量进
10、行移位,移位操作既可以用标准C中的左移、右移运算符来实现,也可以用C51库自带的函数来实现,移位运算符,循环移位函数,注意:循环移位函数_crol_( )和_cror_( )包含在intrins.h头文件中,因此如果在程序中要用到这类函数,就必须在程序的开头处包含intrins.h这个头文件,由于用到的发光二极管较多,每个发光二极管都需要限流电阻,硬件电路会显得比较复杂,所以这里使用了排阻。 排阻,就是若干个参数完全相同的电阻,它们的一个引脚都连到一起,作为公共引脚,其余引脚正常引出。如果一个排阻是由n个电阻构成的,那么它就有n+1个引脚,一般来说最左边的那个是公共引脚。它在排阻上一般用一个色
11、点标出来,直插式排阻 贴片式排阻,排阻一般用在数字电路上,比如作为某个并行口的上拉或者下拉电阻用。使用排阻比用若干只固定电阻更方便,3任务设计,1)器件的选择,器件清单,2)硬件原理图设计,3)软件程序设计,include /宏定义,52单片机头文件 #include /包含_crol_、_cror_函数所在的头文件 #define uint unsigned int #define uchar unsigned char /延时子函数 void Delay(unsigned int t) while(-t); /主函数,循环点亮LED灯 void main() uchar k,recy; w
12、hile(1) /大循环 recy=0 xfe; for(k=1;k=8;k+) /8只LED灯从P1.0到P1.7逐个点亮 P1=recy; /先点亮P1.0的LED灯 Delay(50000); /延时一段时间 recy=_crol_(recy,1); /将recy循环左移1位后再赋给recy,recy=0 xfe; for(k=1;k1; /将recy右移1位后再赋给recy P1=0 xff; /全部熄灭 Delay(50000);,4)软硬件联合调试,将编写的程序在Keil C51中编译成*.hex后调入Proteus硬件电路图的AT89C52中运行,八只LED灯从P1.0到P1.7
13、逐个点亮,接下来再从P1.0到P1.7依次全部点亮,然后全部熄灭后又从P1.7到P1.0逐个点亮,最后再从P1.7到P1.0依次全部点亮,如此反复形成流水灯,项目拓展 实验板彩灯的花式控制,在任务4.2中设计的流水灯为八个LED按一个方向循环点亮,此外我们还可以通过编程控制LED灯,使它以我们想要的各种方式点亮,而且LED灯点亮频率可以通过改变延时时间来实现。下面编写程序控制实验板上的八个LED灯按照不同花式循环点亮,1)实验板8个LED灯电路如图所示。RP1为390欧姆排阻;J9为插针,用于连接需要使用的I/O口,此处用杜邦线连接单片机的P1口,2)编写程序,控制八个LED灯使其以1s左右的
14、时间间隔按不同形式循环点亮。 /宏定义 #include #define uint unsigned int #define uchar unsigned char void delay(uint); /声明延时函数 uint a; /定义循环用变量 /定义循环用数据表格 uchar code table= 0 xff, /全灭 0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f, /从第0位到第7位依次逐个点亮 0 xfe,0 xfc,0 xf8,0 xf0,0 xe0,0 xc0,0 x80,0 x00, /从第0位到第7位/依次全部点亮 0 x
15、80,0 xc0,0 xe0,0 xf0,0 xf8,0 xfc,0 xfe,0 xff, /从第7位到第0位依次全部熄灭 0 x7e,0 xbd,0 xdb,0 xe7,0 xe7,0 xdb,0 xbd,0 x7e, /分别从第7位和第0位向中间靠拢逐个点亮 /然后从中间向两边分散逐个点亮 0 x7e,0 x3c,0 x18,0 x00,0 x00,0 x18,0 x3c,0 x7e, /分别从第7位和第0位向中间靠拢全部点亮,/然后从中间向两边分散熄灭 0 x00 /全亮 ; /定义循环用数据表格,延时子函数,通过time值改变延时时间 void delay(uint time) uin
16、t i,j; for(i=time;i0;i-) for(j=110;j0;j-); /* /主函数,循环点亮LED灯 void main() while(1) for(a=0;a42;a+) P1=tablea; /以a做索引号,从数组中取值送给P1口 delay(1000); /调用延时子程序,晶振频率12MHz时,延时约1s,分析:这个程序中,根据LED灯点亮的方式,将需要送向P1口的数据预先存放到数组中,程序运行中,只要按照顺序将这些数组元素送向P1口,就可以实现不同花式的彩灯。数组定义时,写“code”的含义是告诉单片机,定义的数组要放在ROM(程序存储区)里面,写后就不能再更改。程
17、序可以简单的分为code(程序)区和data(数据)区,code区在运行的时候是不可以更改的,data区放全局变量和临时变量,是要不断改变的,CPU从code区读取指令,对data区的数据进行运算处理。由于单片机上的RAM区很小,而ROM区相对来说比较大,当需要定义的数据太多时,会存在RAM区放不下的情况。所以编写程序时,对于那些在程序运行中一直不变的数据,可在数据类型名和变量名之间加上“code”,这样数据就会被存放到ROM区,节省了RAM区的空间,注意:在单片机编程中,要根据变量的取值范围,合理的定义变量的数 据类型,节省RAM区,3)将调试通过的程序下载到实验板观察效果,实验板上的单片机
18、为STC89C52,可直接使用STC-ISP下载软件将程序烧写到单片机上。STC-ISP的打开界面如图所示。按照界面中操作步骤,依次选取单片机型号、打开HEX文件、选择串口、点击下载就可以将程序下载到单片机中,注意: STC单片机下载时必须进行冷启动,即在点击“下载”之前实验板电源是关闭的,点击下载按钮后,大概2秒钟,打开实验板电源,出现蓝色进展条并有提示音表示下载成功,项目小结,本项目主要介绍了51单片机I/O口结构和应用,通过两个任务实现了单片机对单个LED灯闪烁和多个循环LED灯的控制。 51单片机有4个8位的并行I/O接口:P0、P1、P2和P3口。对于P0口要注意其内部没有上拉电阻,所以在硬件设计中要给P0口外接上拉电阻,以保证P0口可以输出高电平。P1口是唯一一个只有输入/输出功能的I/O口。P0口和P2口当有外部扩展存储器时,作为数据/地址的复用口。P3口每一位都具有第二功能。 对于单片机的编程,离不开对特殊功能寄存器的操作,所以在程序中一定要有包含对特殊功能寄存器声明的头文件,思考与训练,一)知识思考: 1P1口与P0口在结构上有何区别? 2P0口P3口的负载能力分别如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024二手电梯买卖合同3篇
- 网络推广 合同范本
- 门面租赁合同个人版模板
- 合股协议合同书模板
- 卸煤合同范本
- 室外工程承包合同书
- 建筑工地材料采购合同范本
- 低碳环保鞋类制造与品质标准研究考核试卷
- 果园流转合同范本
- 广告与墓地与殡葬服务宣传考核试卷
- 24.2.1 点和圆的位置关系 课件 2024-2025学年人教版数学九年级
- 天津市红桥区2024-2025学年八年级上学期期中英语试题(带答案)
- 2024-2025年全国《保安员》岗位工作职责资格知识考试题库与答案
- 学生自主管理班级制度
- 学校文艺汇演舞台设备方案
- 2023年《安徽大学学生手册》在线考试学习通超星期末考试答案章节答案2024年
- 2024年家装家居行业解决方案-淘天集团
- 西南师大版六年级上册解方程练习300题及答案
- 教育心理学-形考作业3(第七至九章)-国开-参考资料
- 第18课《我的白鸽》公开课一等奖创新教学设计
- 2024-2030年中国短视频行业发展现状调查与未来前景趋势研究研究报告
评论
0/150
提交评论