单片机控制LED灯点亮(C语言)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
引脚:
1)4个I/O口占了32个引脚 2)电源和接地又占了2个引 脚 3)剩下的6个引脚是时钟引 脚和控制引脚
硬件说明
使用单片机的P1口来驱动8个LED,发光二 极管的阳极接高电平,故P1口为低电平时, 就可以驱动其点亮 D0与P1.0口是相连的,P1.0用来表示P1口的 最低位; 本任务中给单片机的P1.0口一个低电平信号 即可完成控制。所以,只需给P1.0低电平信 号,其他引脚均为高电平。
3.创建一个新的源程序文件,并把这个源文 件添加到项目中 单击工具栏中的新建文件图标(或选择 “File”(文件)→“New”(新建)命令), 文件操作窗口即可出现新建文件。保存该空 白文件,单击工具栏中的保存图标(或选择 “File”(文件)→“Save”(保存)命令), 弹出如图1-32所示的“Save as”(保存为) 对话框,在“文件名”文本框中输入欲保存 的文件名,保存时注意加上正确的后缀名。
void main() { temp=0xfe; while(1) { for(num=0;num<8;num++) { P1=temp; delay(100); temp=_crol_(temp,1); P1=0xff; delay(100); } } }
二进制和十六进制的转换
如:0001B -> 1H B表示为二进制,H为十六进制 1001B -> 9H 1010B -> AH 0010 1100 -> 2CH 1111 1110 -> FEH 在C语言编程中是不能用H的.十六进制整常数 的前缀为0X或0x。
十六进制整常数
十六进制整常数的前缀为0X或0x。其数码取 值为0~9,A~F或a~f。 以下各数是合法的十六进制整常数: 0X2A( 十进制为42) 0XA0 (十进制为160) 0XFFFF ( 十进制为65535) 以下各数不是合法的十六进制整常数: 5A ( 无前缀0X) 0X3H (含有非十六进制数码)
5)delay()函数 是一个延时函数。 两个for语句,构成了循环嵌套。用数数的方式消耗 时间产生延迟效果 。具体延迟多久取决于若干因素 ,以后再讨论。 void delay() { uint x,y; for(x=100;x>0;x--) for(y=600;y>0;y--) ; } 注意:第二个for循环体是一条空语句。
单击Target 1前面的+号,然后在Source Group 1上单击鼠标右键,弹出快捷菜单。 选择“Add Files to Group ’Source Group 1’” (添加文件到项目)命令,弹出如图1-34所 示的对话框。选中文件(注意选择文件类型 ),然后单击“Add”(添加)按钮,即可添 加选中文件到项目中。
十六进制
是二进制的简短表示形式。 十进制中的0-15分别表示为十六进制的0、1、2、3 、4、5、6、7、8、9、A、B、C、D、E、F 熟练掌握二进制与十六进制之间的转换。 规律:一般把四个二进制数放在一起转换成一个十 六进制数,转换时先把二进制数转换成十进制数, 再把十进制数转换成十六进制数。
各种进位制的对应关系
十进制 二进制 0 1 2 3 4 5 6 7 8 0 1 10 11 100 101 110 111 1000 十六进制 0 1 2 3 4 5 6 7 8 十进制 二进制 9 10 11 12 13 14 15 16 1001 1010 1011 1100 1101 1110 1111 10000 十六进制 9 A B C D E F 10
软件分析: 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); } } }
6.编译项目并创建HEX文件 可以通过工具栏中的图标直接进行。从左到 右的图标分别是:编译、编译连接、全部重 建、停止编译和对工程进行设置。
对源程序编写之后编译,最终要得到结果, 提示0个错误,0个警告。同时还可看到,该 程序的内部RAM的使用量(data=8.0),外 部RAM的使用量(xdata=0),代码量( code=18)等一些信息。
整 型
4)While (表达式) {语句(内部也可为空)} 特点:先判断表达式,后执行语句。 原则:若表达式不是0,即为真,那么执行语句。 否则跳出while 语句。 While(1) { } while(1)就是while(true),条件判断直接为true,循环 永远不会退出 。也称为死循环。
7.将生成的hex文件,通过ISP下载到板子中 。
请观察现象!
源程序 #include<reg52.h> void main() { P1=0xfd; }
C语言复习
Main 函数 格式:void main() 特点:无返回值,无参。 任何一个C程序有且仅有一个main函数,它是整个 程序开始执行的入口。 例:void main() { 总程序从这里开始执行; 其他语句; }
二、点亮板子上的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
三、流水灯:从D0---D7依次点亮
分析: D0亮 D1亮 D2亮 D3亮 D4亮 D5亮 D6亮 D7亮
0xfe 0xfd 0xfb 0xf7 0xef 0xdf 0xbf 0x7f
11111110 11111101 11111011 11110111 11101111 11011111 10111111 01111111
1)宏定义
#define uint unsigned int #define uchar unsigned char #define 标识符 字符串
C语言中的例子: #define PI 3.1415926 2)函数声明 函数声明是指函数的定义在后面,而前面需要对 它进行调用,这样就需要预先作声明,一般来说函 数的声明只是函数首部加上分号即可。
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
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);
2.创建一个项目并选择单片机 选择“Project”(项目)→“New Project”(新建项目)命令,如图1-29所示, 将弹出“Greate New Project”(新建项目) 对话框
随后会弹出一个对话框,要求选择单片机的 型号。在该对话框中显示了µVision2的器件 数据库,从中可以根据使用的单片机来选择 。
4.输入源程序:此时就可以输入源程序了。 5.设置目标硬件的工具选项 程序编写完成后,还要对项目进行进一 步的设置,以满足要求。
“Output”选项卡 如图所示,其中有多个选项,此处选择 “Create HEX File”复选框用于生成可执行代 码文件,该文件可以用编程器写入单片机芯 片,文件的扩展名为.HEX,默认情况下该项 未被选中,如果要写芯片做硬件实验,就必 须选中该项。其余选项均取默认值,不做任 何修改。
点亮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; }
Keil的使用 掌握Keil工程的建立和软件的开 发;
1.启动µVision µVision2是一个标准的Windows应用程 序,双击Keil µVision2图标即可启动,也可 以选择“开始”→“程序”Keil µVision2”命 令来启动运行。其主界面如图1-28所示。
单片机控制 led灯点亮
主要内容
一、点亮板子上的第一个灯D0 二、点亮板子上的D0、D2、D4、 D6灯,与D1、D3、D5、D7灯交替 闪烁 三、流水灯:从D0---D7依次点亮
一、点亮板子上的第一个灯D0
1)目标 了解单片机的基本设计思路和编 程方法,和单片机的最小系统。 2)分析 利用单片机的一个输入/输出口来 控制一盏发光二极管点亮。
C语言-51单片机的头文件
通常有:reg51.h reg52.h math.h 通常有 ctype.h stdio.h stdlib.h absacc.h 常用有:reg51.h reg52.h 常用有 (定义特殊功能寄存器和位寄存器 ); math.h (定义常用数学运算); 定义常用数学运算);
5)for循环 for (表达式1;表达式2;表达式3) { 语句(内部可为空)} 执行过程: 1.求解一次表达式1. 2.求解表达式2,若其值为真(非0 即为真) ,则执行for中语句。然后执行第3步。否则结 束for 语句,直接跳出,不再执行第3步。 3.求解表达式3. 4.跳到第2步重复执行。
3)数据类型 Int signed int 范围是多少? unsigned int 范围是多少? char 可以表示小整数或者单个字符。 当char表示整数时, signed char的范围是多少 ? unsigned char的范围是多少?
Baidu Nhomakorabea
51的数据类型 C-51的数据类型
基本数据类型
类型 符号 关键字 (signed) int (signed) short (signed) long unsigned int unsigned short int unsigned long int 实 型 字 符 型 float double char unsigned char 数的表示范围 所占位数 16 -32768~32767 16 -32768~32767 32 16 16 32 32 64 8 8 -2147483648~2147483647 0~65535 0~65535 0~4294967295 3.4e-38~3.4e38 1.7e-308~1.7e308 -128~127 0~255
#include<reg52.h> #define uint unsigned int #define uchar unsigned char void delay(); void main() {
while(1)
{ P1=0xaa; delay(); P1=0x55; delay(); } } void delay() { uint x,y; for(x=100;x>0;x--) for(y=600;y>0;y--) ; }