单片机控制LED灯点亮(C语言)

上传人:宝路 文档编号:50736842 上传时间:2018-08-10 格式:PPT 页数:45 大小:360.08KB
返回 下载 相关 举报
单片机控制LED灯点亮(C语言)_第1页
第1页 / 共45页
单片机控制LED灯点亮(C语言)_第2页
第2页 / 共45页
单片机控制LED灯点亮(C语言)_第3页
第3页 / 共45页
单片机控制LED灯点亮(C语言)_第4页
第4页 / 共45页
单片机控制LED灯点亮(C语言)_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《单片机控制LED灯点亮(C语言)》由会员分享,可在线阅读,更多相关《单片机控制LED灯点亮(C语言)(45页珍藏版)》请在金锄头文库上搜索。

1、单片机控制 led灯点亮主要内容 一、点亮板子上的第一个灯D0 二、点亮板子上的D0、D2、D4、 D6灯,与D1、D3、D5、D7灯交替 闪烁 三、流水灯:从D0-D7依次点亮 一、点亮板子上的第一个灯D01)目标了解单片机的基本设计思路和编 程方法,和单片机的最小系统。 2)分析利用单片机的一个输入/输出口来 控制一盏发光二极管点亮。 引脚:1)4个I/O口占了32个引脚2)电源和接地又占了2个引 脚3)剩下的6个引脚是时钟引 脚和控制引脚硬件说明 使用单片机的P1口来驱动8个LED,发光二 极管的阳极接高电平,故P1口为低电平时, 就可以驱动其点亮 D0与P1.0口是相连的,P1.0用来

2、表示P1口的 最低位; 本任务中给单片机的P1.0口一个低电平信号 即可完成控制。所以,只需给P1.0低电平信 号,其他引脚均为高电平。 点亮D0灯: D7 D6 D5 D4 D3 D2 D1 D0 1 1 1 1 1 1 1 0 从二进制转化为十六进制:0xfe源程序#include void main() P1=0xfd; Keil的使用掌握Keil工程的建立和软件的开 发; 1启动Vision Vision2是一个标准的Windows应用程 序,双击Keil Vision2图标即可启动,也可 以选择“开始”“程序”Keil Vision2”命令来启 动运行。其主界面如图1-28所示。 2

3、创建一个项目并选择单片机 选择“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, Wa

4、tchdog 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”(新建)命令),文 件操作窗口即可出现新建文件。保存该空白 文件,单击工具栏中的保存图标(或选择 “Fil

5、e”(文件)“Save”(保存)命令),弹 出如图1-32所示的“Save as”(保存为)对话 框,在“文件名”文本框中输入欲保存的文件名 ,保存时注意加上正确的后缀名。 单击Target 1前面的+号,然后在Source Group 1上单击鼠标右键,弹出快捷菜单。 选择“Add Files to Group Source Group 1” (添加文件到项目)命令,弹出如图1-34所 示的对话框。选中文件(注意选择文件类型 ),然后单击“Add”(添加)按钮,即可添加 选中文件到项目中。 4输入源程序:此时就可以输入源程序了。 5设置目标硬件的工具选项 程序编写完成后,还要对项目进行进一

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

7、量(xdata=0),代码量( code=18)等一些信息。 7.将生成的hex文件,通过ISP下载到板子中 。 请观察现象!源程序#include void main() P1=0xfd; 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 (定

8、义特殊功能寄存器和位寄存器 ); 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 - 9H1010B - AH0010 1100 - 2CH1111 1110 - FEH 在C语言编程中是不能用H的.十六进制整常数 的前缀为0X

9、或0x。 十六进制整常数 十六进制整常数的前缀为0X或0x。其数码取 值为09,AF或af。 以下各数是合法的十六进制整常数: 0X2A( 十进制为42) 0XA0 (十进制为160) 0XFFFF ( 十进制为65535) 以下各数不是合法的十六进制整常数: 5A ( 无前缀0X) 0X3H (含有非十六进制数码)各种进位制的对应关系 十进进制二进进制十六进进制十进进 制二进进制十六进进制000910019111101010A2102111011B3113121100C41004131101D51015141110E61106151111F71117161000010810008 二、点亮板

10、子上的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 从二进制转化为十六进制:0xaa 点亮1、3、5、7灯: D7 D6 D5 D4 D3 D2 D1 D0 0 1 0 1 0 1 0 1 从二进制转化为十六进制:0x55#include #define uint unsigned int #define uchar unsigned char void delay(); void main() while(1) P1=0xaa; delay(); P1=0x55; delay(); vo

11、id 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)数据类型 Intsigned int 范围是多少?unsigned int 范围是多少? char 可以表示小整数或者单个字符。 当ch

12、ar表示整数时, signed char的范围是多少 ? unsigned char的范围是多少?C51的数据类型 基本数据类型类型符号关键字数的表示范围所占位数整型字符型实型有无(signed) int16-3276832767 (signed) short16-3276832767 (signed) long32-21474836482147483647 16unsigned int0655353204294967295unsigned long intunsigned short int16065535有float323.4e-383.4e38有double641.7e-3081.7e3

13、08 有char8-128127无unsigned char80255 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=

14、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亮 0xfe 11111110 D1亮 0xfd 11111101 D2亮 0xfb 11111011 D3亮 0xf7 11110111 D4亮 0xef 11101111 D5亮 0xdf 11011111 D6亮 0xbf 10111111 D7亮 0x7f 01111111 软件分析: 1)依次把这8个值赋给P1口,延时一段 程序void main() while(1) P1=0xfe; delay(100); P1=0xfd; delay(100); P1=0xfb; delay(100); P1=0xf7; delay(100); P1=0xef; delay(100); P1=0xdf; delay(100); P1=0xbf; d

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号