收藏 分销(赏)

单片机控制LED灯点亮(C语言)教学教材.ppt

上传人:a199****6536 文档编号:10280954 上传时间:2025-05-14 格式:PPT 页数:45 大小:275.50KB 下载积分:14 金币
下载 相关 举报
单片机控制LED灯点亮(C语言)教学教材.ppt_第1页
第1页 / 共45页
单片机控制LED灯点亮(C语言)教学教材.ppt_第2页
第2页 / 共45页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单片机控制,led,灯点亮,主要内容,一、点亮板子上的第一个灯,D0,二、点亮板子上的,D0,、,D2,、,D4,、,D6,灯,与,D1,、,D3,、,D5,、,D7,灯交替闪烁,三、流水灯:从,D0-D7,依次点亮,一、点亮板子上的第一个灯,D0,1,)目标,了解单片机的基本设计思路和编程方法,和单片机的最小系统。,2,)分析,利用单片机的一个输入,/,输出口来控制一盏发光二极管点亮。,引脚:,1)4,个,I/O,口占了,32,个引脚,2),电源和接地又占了,2,个引脚,3),剩下的,6,个引脚是时钟引脚和控制引脚,硬件说明,使用单片机的P1口来驱动8个LED,发光二极管的阳极接高电平,故P1口为低电平时,就可以驱动其点亮,D0与P1.0口是相连的,P1.0用来表示P1口的最低位;,本任务中给单片机的P1.0口一个低电平信号即可完成控制。所以,只需给P1.0低电平信号,其他引脚均为高电平。,点亮D0灯:,D7 D6 D5 D4 D3 D2 D1 D0,1 1 1 1 1 1 1 0,从二进制转化为十六进制:0 xfe,源程序,#include,void main(),P1=0 xfd;,Keil的使用,掌握,Keil,工程的建立和软件的开发;,1,启动,Vision,Vision2,是一个标准的,Windows,应用程序,双击,Keil,Vision2,图标即可启动,也可以选择“开始”“程序”,Keil,Vision,2”,命令来启动运行。其主界面如图,1-28,所示。,2创建一个项目并选择单片机,选择“Project”(项目)“New Project”(新建项目)命令,如图1-29所示,将弹出“Greate New Project”(新建项目)对话框,随后会弹出一个对话框,要求选择单片机的型号。在该对话框中显示了,Vision2,的器件数据库,从中可以根据使用的单片机来选择。,AT89S52,8051 based Full Static CMOS controller with Three-Level Program Memory Lock,32 I/O lines,3 Timers/Counters,8 Interrupts Sources,Watchdog Timer,2 DPTRs(DATA POINTER REGISTERS),8K Flash Memory,256 Bytes On-chip RAM,基于8051全静态CMOS控制器、三级加密程序存储器、32个I/O口、三个定时器/计数器、八个中断源、看门狗定时器、2 个数据指针 寄存器、8k字节Flash,256字节片内RAM,3创建一个新的源程序文件,并把这个源文件添加到项目中,单击工具栏中的新建文件图标(或选择“File”(文件)“New”(新建)命令),文件操作窗口即可出现新建文件。保存该空白文件,单击工具栏中的保存图标(或选择“File”(文件)“Save”(保存)命令),弹出如图1-32所示的“Save as”(保存为)对话框,在“文件名”文本框中输入欲保存的文件名,保存时注意加上正确的后缀名。,单击Target 1前面的+号,然后在Source Group 1上单击鼠标右键,弹出快捷菜单。,选择“Add Files to Group Source Group 1”(添加文件到项目)命令,弹出如图1-34所示的对话框。选中文件(注意选择文件类型),然后单击“Add”(添加)按钮,即可添加选中文件到项目中。,4输入源程序:此时就可以输入源程序了。,5设置目标硬件的工具选项,程序编写完成后,还要对项目进行进一步的设置,以满足要求。,“,Output”,选项卡,如图所示,其中有多个选项,此处选择“,Create HEX File”,复选框用于生成可执行代码文件,该文件可以用编程器写入单片机芯片,文件的扩展名为,.HEX,,默认情况下该项未被选中,如果要写芯片做硬件实验,就必须选中该项。其余选项均取默认值,不做任何修改。,6,编译项目并创建,HEX,文件,可以通过工具栏中的图标直接进行。从左到右的图标分别是:编译、编译连接、全部重建、停止编译和对工程进行设置。,对源程序编写之后编译,最终要得到结果,提示0个错误,0个警告。同时还可看到,该程序的内部RAM的使用量(data=8.0),外部RAM的使用量(xdata=0),代码量(code=18)等一些信息。,7.,将生成的,hex,文件,通过,ISP,下载到板子中。,请观察现象!,源程序,#include,void main(),P1=0 xfd;,C语言复习,Main,函数格式:,void main(),特点:无返回值,无参。任何一个,C,程序有且仅有一个,main,函数,它是整个程序开始执行的入口。例:,void main(),总程序从这里开始执行,;,其他语句;,C语言-51单片机的头文件,通常有,:,reg51.h reg52.h math.h ctype.h stdio.h stdlib.h absacc.h,常用有,:,reg51.h reg52.h,(定义特殊功能寄存器和位寄存器);,math.h,(定义常用数学运算);,十六进制,是二进制的简短表示形式。,十进制中的,0-15,分别表示为十六进制的,0,、,1,、,2,、,3,、,4,、,5,、,6,、,7,、,8,、,9,、,A,、,B,、,C,、,D,、,E,、,F,熟练掌握二进制与十六进制之间的转换。,规律:一般把四个二进制数放在一起转换成一个十六进制数,转换时先把二进制数转换成十进制数,再把十进制数转换成十六进制数。,二进制和十六进制的转换,如:,0001B-1H,B,表示为二进制,,H,为十六进制,1001B-9H,1010B-AH,0010 1100-2CH,1111 1110-FEH,在,C,语言编程中是不能用,H,的,.,十六进制整常数的前缀为,0X,或,0 x,。,十六进制整常数,十六进制整常数的前缀为,0X,或,0 x,。其数码取值为,09,,,AF,或,af,。,以下各数是合法的十六进制整常数:,0X2A(,十进制为,42)0XA0(,十进制为,160)0XFFFF(,十进制为,65535),以下各数不是合法的十六进制整常数:,5A(,无前缀,0X)0X3H(,含有非十六进制数码,),各种进位制的对应关系,十进制,二进制,十六进制,十进制,二进制,十六进制,0,0,0,9,1001,9,1,1,1,10,1010,A,2,10,2,11,1011,B,3,11,3,12,1100,C,4,100,4,13,1101,D,5,101,5,14,1110,E,6,110,6,15,1111,F,7,111,7,16,10000,10,8,1000,8,二、点亮板子上的0、2、4、6灯,与1、3、5、7灯交替闪烁,点亮0、2、4、6灯:,D7 D6 D5 D4 D3 D2 D1 D0,1 0 1 0 1 0 1 0,从二进制转化为十六进制:0 xaa,点亮1、3、5、7灯:,D7 D6 D5 D4 D3 D2 D1 D0,0 1 0 1 0 1 0 1,从二进制转化为十六进制:0 x55,#include,#define uint unsigned int,#define uchar unsigned char,void delay();,void main(),while(1),P1=0 xaa;,delay();,P1=0 x55;,delay();,void delay(),uint x,y;,for(x=100;x0;x-),for(y=600;y0;y-),;,1,)宏定义,#define uint unsigned int,#define uchar unsigned char,#define,标识符 字符串,C,语言中的例子:,#define PI 3.1415926,2,)函数声明,函数声明是指函数的定义在后面,而前面需要对它进行调用,这样就需要预先作声明,一般来说函数的声明只是函数首部加上分号即可。,3,)数据类型,Int,signed int,范围是多少?,unsigned int,范围是多少?,char,可以表示小整数或者单个字符。,当,char,表示整数时,,signed char,的范围是多少?,unsigned char,的范围是多少,?,C,51,的数据类型,基本数据类型,类型,符号,关键字,数的表示范围,所占位数,整型,字符型,实型,有,无,(signed)int,16,-3276832767,(signed)short,16,-3276832767,(signed)long,32,-21474836482147483647,16,unsigned int,065535,32,04294967295,unsigned long int,unsigned short int,16,065535,有,float,32,3.4e-383.4e38,有,double,64,1.7e-3081.7e308,有,char,8,-128127,无,unsigned char,8,0255,4,),While,(表达式),语句(内部也可为空),特点:先判断表达式,后执行语句。原则:若表达式不是,0,,即为真,那么执行语句。否则跳出,while,语句。,While,(,1,),while,(,1,),就是,while,(true),,条件判断直接为,true,,循环永远不会退出。也称为死循环。,5,),delay(),函数,是一个延时函数。,两个,for,语句,构成了循环嵌套。用数数的方式消耗时间产生延迟效果。具体延迟多久取决于若干因素,以后再讨论。,void delay(),uint x,y;,for(x=100;x0;x-),for(y=600;y0;y-),;,注意:第二个,for,循环体是一条空语句。,5)for循环,for(表达式1;表达式2;表达式3)语句(内部可为空)执行过程:1.求解一次表达式1.2.求解表达式2,若其值为真(非0 即为真),则执行for中语句。然后执行第3步。否则结束for 语句,直接跳出,不再执行第3步。3.求解表达式3.4.跳到第2步重复执行。,三、流水灯:从D0-D7依次点亮,分析:,D0亮 0 xfe 11111110,D1亮 0 xfd 11111101,D2亮 0 xfb 11111011,D3亮 0 xf7 11110111,D4亮 0 xef 11101111,D5亮 0 xdf 11011111,D6亮 0 xbf 10111111,D7亮 0 x7f 01111111,软件分析:,1,)依次把这,8,个值赋给,P1,口,延时一段程序,void main(),while(1),P1=0 xfe;,delay(100);,P1=0 xfd;,delay(100);,P1=0 xfb;,delay(100);,P1=0 xf7;,delay(100);,P1=0 xef;,delay(100);,P1=0 xdf;,delay(100);,P1=0 xbf;,delay(100);,P1=0 x7f;,delay(100);,2),将,0 xfe,赋给,P1,口,然后使用移位函数来改变,P1,口的值,达到流水灯的效果,移位函数:,_crol_,,,_cror_,:将,char,型变量循环向左,(,右,),移动指定位数后返回。,_crol_,,,_cror_,:,c51,中的,intrins.h,库函数,#include,#include,#define uint unsigned int,#define uchar unsigned char,uchar temp;,void delay(uint);,程序如下:,void main(),temp=0 xfe;,while(1),for(num=0;num0;x-),for(y=110;y0;y-),;,课后练习,请在,keil,环境下编写一下程序:,1.,点亮最后一个,LED,2.,点亮,1,、,2,、,5,、,6,这四个,LED,3.,让第三个,LED,闪烁,4.,设计出流水灯程序,从,D7D0,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服