单片机控制LED灯点亮(C语言)课件.ppt

上传人:牧羊曲112 文档编号:2144653 上传时间:2023-01-18 格式:PPT 页数:43 大小:402.50KB
返回 下载 相关 举报
单片机控制LED灯点亮(C语言)课件.ppt_第1页
第1页 / 共43页
单片机控制LED灯点亮(C语言)课件.ppt_第2页
第2页 / 共43页
单片机控制LED灯点亮(C语言)课件.ppt_第3页
第3页 / 共43页
单片机控制LED灯点亮(C语言)课件.ppt_第4页
第4页 / 共43页
单片机控制LED灯点亮(C语言)课件.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《单片机控制LED灯点亮(C语言)课件.ppt》由会员分享,可在线阅读,更多相关《单片机控制LED灯点亮(C语言)课件.ppt(43页珍藏版)》请在三一办公上搜索。

1、单片机控制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口的最

2、低位;本任务中给单片机的P1.0口一个低电平信号即可完成控制。所以,只需给P1.0低电平信号,其他引脚均为高电平。,点亮D0灯:D7 D6 D5 D4 D3 D2 D1 D0 1 1 1 1 1 1 1 0从二进制转化为十六进制:0 xfe,源程序,#includevoid main()P1=0 xfe;,十六进制,是二进制的简短表示形式。十进制中的0-15分别表示为十六进制的0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F熟练掌握二进制与十六进制之间的转换。规律:一般把四个二进制数放在一起转换成一个十六进制数,转换时先把二进制数转换成十进制数,再把十进制数转换成十六进制数。,二

3、进制和十六进制的转换,如: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(含有非十六进制数码),各种进位制的对应关系,Keil的使用,掌握Keil工程的建立和软件的开发;,1启动Vis

4、ion Vision2是一个标准的Windows应用程序,双击Keil Vision2图标即可启动,也可以选择“开始”“程序”Keil Vision2”命令来启动运行。其主界面如图1-28所示。,2创建一个项目并选择单片机 选择“Project”(项目)“New Project”(新建项目)命令,如图1-29所示,将弹出“Greate New Project”(新建项目)对话框,随后会弹出一个对话框,要求选择单片机的型号。在该对话框中显示了Vision2的器件数据库,从中可以根据使用的单片机来选择。,3创建一个新的源程序文件,并把这个源文件添加到项目中 单击工具栏中的新建文件图标(或选择“Fi

5、le”(文件)“New”(新建)命令),文件操作窗口即可出现新建文件。保存该空白文件,单击工具栏中的保存图标(或选择“File”(文件)“Save”(保存)命令),弹出如图1-32所示的“Save as”(保存为)对话框,在“文件名”文本框中输入欲保存的文件名,保存时注意加上正确的后缀名。,单击Target 1前面的+号,然后在Source Group 1上单击鼠标右键,弹出快捷菜单。选择“Add Files to Group Source Group 1”(添加文件到项目)命令,弹出如图1-34所示的对话框。选中文件(注意选择文件类型),然后单击“Add”(添加)按钮,即可添加选中文件到项目

6、中。,4输入源程序:此时就可以输入源程序了。5设置目标硬件的工具选项 程序编写完成后,还要对项目进行进一步的设置,以满足要求。,“Output”选项卡 如图所示,其中有多个选项,此处选择“Create HEX File”复选框用于生成可执行代码文件,该文件可以用编程器写入单片机芯片,文件的扩展名为.HEX,默认情况下该项未被选中,如果要写芯片做硬件实验,就必须选中该项。其余选项均取默认值,不做任何修改。,6编译项目并创建HEX文件可以通过工具栏中的图标直接进行。从左到右的图标分别是:编译、编译连接、全部重建、停止编译和对工程进行设置。,对源程序编写之后编译,最终要得到结果,提示0个错误,0个警

7、告。同时还可看到,该程序的内部RAM的使用量(data=8.0),外部RAM的使用量(xdata=0),代码量(code=18)等一些信息。,7.将生成的hex文件,通过ISP下载到板子中。请观察现象!,源程序,#includevoid main()P1=0 xfe;,C语言复习,Main 函数格式:void main()特点:无返回值,无参。任何一个C程序有且仅有一个main函数,它是整个程序开始执行的入口。例:void main()总程序从这里开始执行;其他语句;,C语言-51单片机的头文件,通常有:reg51.h reg52.h math.h ctype.h stdio.h stdlib

8、.h absacc.h常用有:reg51.h reg52.h(定义特殊功能寄存器和位寄存器);math.h(定义常用数学运算);,二、点亮板子上的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 mai

9、n()uint a;while(1)P1=0 xaa;a=50000;while(a-);P1=0 x55;a=50000;while(a-);,1)宏定义#define uint unsigned int#define uchar unsigned char#define 标识符 字符串 C语言中的例子:#define PI 3.1415926 2)函数声明 函数声明是指函数的定义在后面,而前面需要对它进行调用,这样就需要预先作声明,一般来说函数的声明只是函数首部加上分号即可。,3)数据类型Int signed int 范围是多少?unsigned int 范围是多少?char 可以表示小整

10、数或者单个字符。当char表示整数时,signed char的范围是多少?unsigned char的范围是多少?,C51的数据类型,基本数据类型,类型,符号,关键字,数的表示范围,所占位数,整型,字符型,实型,有,无,(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,

11、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()ui

12、nt 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 11111110D1亮 0 xfd 11111101D2亮 0 xfb 11111011D3亮 0 xf7 11110111D4亮 0 xef

13、11101111D5亮 0 xdf 11011111D6亮 0 xbf 10111111D7亮 0 x7f 01111111,软件分析:1)依次把这8个值赋给P1口,延时一段程序,void main()uint a;while(1)P1=0 xfe;a=50000;while(a-);P1=0 xfd;a=50000;while(a-);P1=0 xfb;a=50000;while(a-);P1=0 xf7;a=50000;while(a-);P1=0 xef;a=50000;while(a-);P1=0 xdf;a=50000;while(a-);P1=0 xbf;a=50000;while

14、(a-);P1=0 x7f;a=50000;while(a-);,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()uint a;temp=0 xfe;while(1)for(num=0;num8;num+)P1=temp;a=50000;while(a-);temp=_crol_(temp,1);P1=0 xff;a=50000;while(a-);,课后练习,请在keil环境下编写一下程序:1.点亮最后一个LED2.点亮1、2、5、6这四个LED3.让第三个LED闪烁4.设计出流水灯程序,从D7D0,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号