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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7.将生成的hex文件,通过ISP下载到板子中 。
请观察现象!
源程序
#include<reg52.h> void main() { P1=0xfd; }
C语言复习
Main 函数 格式:void main() 特点:无返回值,无参。 任何一个C程序有且仅有一个main函数,它是整个 程序开始执行的入口。 例:void main() { 总程序从这里开始执行; 其他语句;
2)函数声明 函数声明是指函数的定义在后面,而前面要对
它进行调用,这样就需要预先作声明,一般来说函 数的声明只是函数首部加上分号即可。
3)数据类型
Int signed int 范围是多少? unsigned int 范围是多少?
char 可以表示小整数或者单个字符。
当char表示整数时, signed char的范围是多少 ? unsigned char的范围是多少?
二、点亮板子上的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
本任务中给单片机的P1.0口一个低电平信号 即可完成控制。所以,只需给P1.0低电平信 号,其他引脚均为高电平。
点亮D0灯: D7 D6 D5 D4 D3 D2 D1 D0 1 1 1 1 1 1 1 0 从二进制转化为十六进制:0xfe
源程序
#include<reg52.h> void main() { P1=0xfd; }
软件分析:
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; delay(100); P1=0x7f; delay(100); }
单片机控制 led灯点亮
主要内容
一、点亮板子上的第一个灯D0 二、点亮板子上的D0、D2、D4、
D6灯,与D1、D3、D5、D7灯交替 闪烁 三、流水灯:从D0---D7依次点亮
一、点亮板子上的第一个灯D0
1)目标 了解单片机的基本设计思路和编
程方法,和单片机的最小系统。 2)分析
基于8051全静态CMOS控制器、 三级加密程 序存储器 、 32个I/O口 、三个定时器/计数器 、八个中断源 、看门狗定时器、2 个数据指 针 寄存器、8k字节Flash,256字节片内RAM
3.创建一个新的源程序文件,并把这个源文 件添加到项目中

单击工具栏中的新建文件图标(或选择
“File”(文件)→“New”(新建)命令),
利用单片机的一个输入/输出口来 控制一盏发光二极管点亮。
引脚:
1)4个I/O口占了32个引脚
2)电源和接地又占了2个引 脚
3)剩下的6个引脚是时钟引 脚和控制引脚
硬件说明
使用单片机的P1口来驱动8个LED,发光二 极管的阳极接高电平,故P1口为低电平时, 就可以驱动其点亮
D0与P1.0口是相连的,P1.0用来表示P1口的 最低位;
须选中该项。其余选项均取默认值,不做任
何修改。
6.编译项目并创建HEX文件
可以通过工具栏中的图标直接进行。从左到 右的图标分别是:编译、编译连接、全部重 建、停止编译和对工程进行设置。
对源程序编写之后编译,最终要得到结果, 提示0个错误,0个警告。同时还可看到,该 程序的内部RAM的使用量(data=8.0),外 部RAM的使用量(xdata=0),代码量( code=18)等一些信息。
十六进制整常数
十六进制整常数的前缀为0X或0x。其数码取 值为0~9,A~F或a~f。
以下各数是合法的十六进制整常数: 0X2A( 十进制为42) 0XA0 (十进制为160) 0XFFFF ( 十进制为65535)
以下各数不是合法的十六进制整常数: 5A ( 无前缀0X) 0X3H (含有非十六进制数码)
程序编写完成后,还要对项目进行进一 步的设置,以满足要求。
“Output”选项卡

如图所示,其中有多个选项,此处选择
“Create HEX File”复选框用于生成可执行代
码文件,该文件可以用编程器写入单片机芯
片,文件的扩展名为.HEX,默认情况下该项
未被选中,如果要写芯片做硬件实验,就必
#include<reg52.h> #define uint unsigned int #define uchar unsigned char void delay(); void main() {
while(1)

{

P1=0xaa;

delay();

P1=0x55;

delay();
}
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
选择“Project”(项目)→“New Project”(新建项目)命令,如图1-29所示, 将弹出“Greate New Project”(新建项目) 对话框
随后会弹出一个对话框,要求选择单片机的 型号。在该对话框中显示了Vision2的器件
数据库,从中可以根据使用的单片机来选择 。
所占位数
数的表示范围
16
-32768~32767
16
-32768~32767
32
-2147483648~2147483647
16
0~65535
16
0~65535
32
0~4294967295
32
3.4e-38~3.4e38
64
1.7e-308~1.7e308
8
-128~127
8
0~255
4)While (表达式) {语句(内部也可为空)} 特点:先判断表达式,后执行语句。 原则:若表达式不是0,即为真,那么执行语句。 否则跳出while 语句。
各种进位制的对应关系
十进制 二进制
0
0
1
1
2
10
3
11
4
100
5
101
6
110
7
111
8 1000
十六进制 0 1 2 3 4 5 6 7 8
十进制 二进制 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 16 10000
十六进制 9 A B C D E F 10
文件操作窗口即可出现新建文件。保存该空
白文件,单击工具栏中的保存图标(或选择
“File”(文件)→“Save”(保存)命令),
弹出如图1-32所示的“Save as”(保存为)
对话框,在“文件名”文本框中输入欲保存
的文件名,保存时注意加上正确的后缀名。
单击Target 1前面的+号,然后在Source Group 1上单击鼠标右键,弹出快捷菜单。
C-51的数据类型
基本数据类型
类型 符号
关键字

整 型

实有 型有
字有
符 型

(signed) int (signed) short (signed) long
unsigned int unsigned short int unsigned long int
float double char unsigned char
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
三、流水灯:从D0---D7依次点亮
分析: D0亮 0xfe D1亮 0xfd D2亮 0xfb D3亮 0xf7 D4亮 0xef D5亮 0xdf D6亮 0xbf D7亮 0x7f
11111110 11111101 11111011 11110111 11101111 11011111 10111111 01111111
选择“Add Files to Group ’Source Group 1’” (添加文件到项目)命令,弹出如图1-34所 示的对话框。选中文件(注意选择文件类型 ),然后单击“Add”(添加)按钮,即可添 加选中文件到项目中。
4.输入源程序:此时就可以输入源程序了。
5.设置目标硬件的工具选项
Keil的使用
掌握Keil工程的建立和软件的开 发;
1.启动Vision
Vision2是一个标准的Windows应用程 序,双击Keil Vision2图标即可启动,也可 以选择“开始”→“程序”Keil Vision2”命 令来启动运行。其主界面如图1-28所示。
2.创建一个项目并选择单片机
While(1) { } while(1)就是while(true),条件判断直接为true,循环
永远不会退出 。也称为死循环。
5)delay()函数
是一个延时函数。
两个for语句,构成了循环嵌套。用数数的方式消耗 时间产生延迟效果 。具体延迟多久取决于若干因素 ,以后再讨论。
void delay()
{
uint x,y;
for(x=100;x>0;x--)

for(y=600;y>0;y--)

;
}
注意:第二个for循环体是一条空语句。
5)for循环
for (表达式1;表达式2;表达式3) { 语句(内部可为空)} 执行过程: 1.求解一次表达式1. 2.求解表达式2,若其值为真(非0 即为真) ,则执行for中语句。然后执行第3步。否则结 束for 语句,直接跳出,不再执行第3步。 3.求解表达式3. 4.跳到第2步重复执行。

}
}
void delay()
{

uint x,y;

for(x=100;x>0;x--)

for(y=600;y>0;y--)

;
1)宏定义
#define uint unsigned int
#define uchar unsigned char
#define 标识符 字符串
C语言中的例子: #define PI 3.1415926
2)将0xfe赋给P1口,然后使用移位函数 来改变P1口的值,达到流水灯的效果
移位函数:
_crol_,_cror_:将char型变量循环向左(右) 移动指定位数后返回 。
_crol_,_cror_: c51中的intrins.h库函数
程序如下:
#include<reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char uchar temp; void delay(uint);
熟练掌握二进制与十六进制之间的转换。 规律:一般把四个二进制数放在一起转换成一个十 六进制数,转换时先把二进制数转换成十进制数, 再把十进制数转换成十六进制数。
二进制和十六进制的转换
如:0001B -> 1H B表示为二进制,H为十六进制
1001B -> 9H 1010B -> AH 0010 1100 -> 2CH 1111 1110 -> FEH 在C语言编程中是不能用H的.十六进制整常数 的前缀为0X或0x。
相关文档
最新文档