《单片机基础与应用》(C语言版) 同步教学

资源下载
  1. 二一教育资源

《单片机基础与应用》(C语言版) 同步教学

资源简介

(共16张PPT)
实例2 控制1个LED闪烁
《单片机基础与应用(C语言版)》
高等教育出版社
一、任务要求

任务要求
通过单片机控制一个LED发光二极管闪烁系统的制作
二、任务分析

LED闪动的过程是亮灭交替的过程。所以,程序不仅能点亮LED,还要能熄灭LED。同时,注意LED闪动的时间控制。
三、控制程序

//程序:ex2.c
//功能:LED闪烁控制
#include //包含头文件REGX51.H,定义了51单片机的所有SFR
sbit LED=P1^0; //定义P1.0引脚位名称为LED
//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整型变量i,控制空循环的循环次数
//返回值:无
void delay(unsigned int i)
{
while(i--); //i次空操作
}
void main() //主函数
{
while(1) //无限循环
{
LED=0; //点亮LED
delay(20000); //软件延时
LED=1; //点亮LED
delay(20000); //软件延时
}
}
实例3 控制1个LED闪烁
《单片机基础与应用(C语言版)》
高等教育出版社
一、任务要求

任务要求
用单片机控制8个LED同时闪烁。
二、任务分析

单片机有4个并行I/O口P0~P3,每个I/O口包括8条I/O口线。例1中,采用P1口的P1.0引脚实现了1个LED的控制。本例要求控制8个LED,使用P1口的8个I/O口线P1.0~P1.7分别控制1个LED,正好实现了对8个LED的控制。
三、硬件电路

8位LED控制电路(采用P1口的8个I/O引脚控制8个LED)
四、控制程序

//程序:ex3.c
//功能:控制8个LED同时闪烁
#include //包含头文件REGX51.H,定义了51单片机的所有SFR
//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整型变量i,控制空循环的循环次数
//返回值:无
void delay(unsigned int i)
{
while(i--); //i次空操作
}
void main() //主函数
{
while(1) //无限循环
{
P1=0x00; //采用字节操作,点亮8个LED
delay(20000); //软件延时
P1=0xff; //采用字节操作,熄灭8个LED
delay(20000); //软件延时
}
}(共23张PPT)
实例4 单片机控制蜂鸣器发声
《单片机基础与应用(C语言版)》
高等教育出版社
一、任务导入
01
任务要求
用单片机控制蜂鸣器发出声音。
在计算机中,简单的提示音,是什么器件发出来的呢?
——它就是我们经常用到的一个能发出声音的器件,叫做蜂鸣器。
蜂鸣器
蜂鸣电路符号
无源蜂鸣器
电源×
振荡源
蜂鸣器
有源蜂鸣器
按照驱动方式来划分
有源蜂鸣器:一通电就会响,直流信号驱动
无源蜂鸣器:方波驱动,频率一般在2kHz到5kHz之间
有源蜂鸣器
无源蜂鸣器
9mm
8mm
有源蜂鸣器
无源蜂鸣器
+
-
有源蜂鸣器
V
不能超过标注的额定值
+
-
无源蜂鸣器
频率一般在2kHz~5kHz,频率越高,音调也就越高
无源蜂鸣器,内部不带振荡源,用高低电平交错的方波来驱动它发声。
二、任务分析
单片机的并行I/O口不仅可以控制LED,还可以用来控制许多简单器件,本例中的蜂鸣器就是其中之一。
硬件设计
驱动电路
三、硬件电路
P1.0
硬件电路图
单片机控制蜂鸣器电路(采用 P1口的P1.0引脚控制蜂鸣器,PNP型三极管9012起驱动作用。)
资源分配 单片机 接口电路
P1.0 蜂鸣器
驱动
器 件 清 单 序号 名称 型号/参数 数量
1 51单片机 STC90516RD+ 1
2 晶振 12MHz 1
3 电容 30pF 2
4 电解电容 10uF 1
5 按键 弹性按键 1
6 蜂鸣器 无源 1
7 三极管 9012/PNP 1
8 电阻 10KΩ 1
9 电阻 100Ω 1
10 电阻 3.3KΩ 1
四、单片机控制蜂鸣器程序设计
//程序:ex4.c
//功能:蜂鸣器发声控制程序
#include //包含头文件REGX51.H,定义了51单片机的所有SFR
sbit BEEP=P1^0; //定义P1.0引脚位名称为BEEP
//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整型变量i,控制空循环的循环次数
//返回值:无
void delay(unsigned int i)
{
while(i--); //i次空操作
}
void main() //主函数
{
while(1) //无限循环
{
BEEP=0; //蜂鸣器控制引脚产生低电平
delay(100); //软件延时
BEEP=1; //蜂鸣器控制引脚产生高电平
delay(100); //软件延时
}
}
程序中,给蜂鸣器控制引脚BEEP循环交替清0和置1,就会产生一定频率的方波信号。调整调用delay函数时的实际参数,可以产生不同频率的方波或矩形波,从而可以改变蜂鸣器声音的音调。
感谢您的观看(共19张PPT)
实例5 开关控制LED亮灭
《单片机基础与应用(C语言版)》
高等教育出版社
01
一、任务导入
任务要求
用2个开关分别控制2个LED的亮灭。
02
什么是按键开关呢?
按钮开关
常用按键符号
机械式按键开关有一个最大的特点,那就是它是有弹性的。
消除抖动方法
增加硬件电路
软件延时
03
二、任务分析
前面例子中,采用单片机并行I/O口控制LED和蜂鸣器,都是输出功能。此例采用单片机并行I/O口来连接开关等输入器件,这时单片机I/O口用作输入功能。
04
三、硬件电路
单片机控制LED和开关电路(单片机P1口的P1.0和P1.1作为输出口控制LED显示,P0口的P0.0和P0.1作为输入口连接开关)
05
四、控制程序
利用P0.0和P0.1引脚上的高低电平来分别控制LED的亮灭,控制程序如下。
//程序:ex5.c
//功能:开关控制LED亮灭
#include //包含头文件REGX51.H,定义了51单片机的所有SFR
sbit LED1=P1^0; //定义P1.0引脚位名称为LED1
sbit LED2=P1^1; //定义P1.1引脚位名称为LED2
sbit S1=P0^0; //定义P0.0引脚位名称为S1
sbit S2=P0^1; //定义P0.1引脚位名称为S2
void main() //主函数
{
while(1) //无限循环
{
LED1=S1; //开关S1连接的引脚电平状态赋给LED1,控制其亮灭
LED2=S2; //开关S1连接的引脚电平状态赋给LED1,控制其亮灭
}
}
思考题:怎么修改上面程序,实现模拟汽车左右转向灯的功能?参考程序如下。
//程序:ex6.c
//功能:模拟汽车左右转向灯程序
#include //包含头文件REGX51.H,定义了51单片机的所有SFR
sbit LED1=P1^0; //定义P1.0引脚位名称为LED1,左转向灯
sbit LED2=P1^1; //定义P1.1引脚位名称为LED2,右转向灯
sbit S1=P0^0; //定义P0.0引脚位名称为S1,S1闭合,左转向灯闪烁
sbit S2=P0^1; //定义P0.1引脚位名称为S2,S2闭合,右转向灯闪烁
//如果S1和S2同时闭合则双闪,表示汽车故障
//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整型变量i,控制空循环的循环次数
//返回值:无
void delay(unsigned int i)
{
while(i--); //i次空操作
}
void main() //主函数
{
while(1) //无限循环
{
LED1=S1; //读取S1引脚的命令状态并赋值给左转向灯LED1
LED2=S2; //读取S2引脚的命令状态并赋值给右转向灯LED2
delay(20000); //软件延时
LED1=1; //将LED1引脚置1,熄灭LED1
LED2=1; //将LED2引脚置1,熄灭LED2
delay(20000); //软件延时
}
}
感谢您的观看(共11张PPT)
实例6 开关控制LED交替亮灭
《单片机基础与应用(C语言版)》
高等教育出版社
一、任务导入
第一部分
任务要求
用1个开关控制2个LED交替亮灭。
二、任务分析
第二部分
控制下,2个LED1、LED2交替亮灭,无论开关SW是闭合还是断开,同一时刻只能有1个LED点亮,另1个LED不亮。
三、硬件电路
第三部分
开关SW控制2个LED交替亮灭的电路(单片机的P1口引脚P1.0和P1.1作为输出口分别连接LED1、LED2,P0口的P0.0引脚作为输入口连接开关SW)
四、控制程序
第四部分
当开关SW断开时,LED1亮、LED2灭;当开关SW闭合时,LED1灭而LED2亮,程序如下。
//程序:ex7.c
//功能:用一个开关SW控制2个LED交替亮灭
#include //包含头文件REGX51.H,定义了51单片机的所有SFR
sbit LED1=P1^0; //定义P1.0引脚位名称为LED1
sbit LED2=P1^1; //定义P1.1引脚位名称为LED2
sbit SW=P0^0; //定义P0.0引脚位名称为SW
void main() //主函数
{
while(1) //无限循环
{
LED1=SW; //采用位操作,开关断开时P0.0引脚接高电平,点亮LED1
LED2=~SW; //采用位操作,开关闭合时将接低电平的P0.0引脚状态取反,点亮LED2
}
}
感谢您的观看(共13张PPT)
实例7 顺序程序结构实现流水灯
《单片机基础与应用(C语言版)》
高等教育出版社
一、任务导入
01
任务要求
用顺序程序结构设计控制程序
使单片机控制8个LED以流水灯的方式点亮。
二、任务分析
02
求用单片机控制8个LED以流水灯的方式依照排列顺序依次逐个点亮,即先点亮LED1,延时一段时间后熄灭;再点亮LED2,延时一段时间后熄灭……;如此依次点亮每一个LED,直到点亮LED8,再从头开始
8个LED按流水灯点亮示意图
三、硬件电路
03
8位LED控制电路(采用P1口的8个I/O引脚控制8个LED)
四、控制程序
04
顺序程序结构控制流水灯流程图
程序演示
思考题:怎么修改上面程序,采用位操作方式实现流水灯。
感谢您的观看
Thanks for your attention.
■■■■■
合■
日日日日


任务2-3模拟I灯控制(国面有各种方式实现的I灯程南兼容模式]·Microso什PowerPoint..
绘图工具
X
文件
开始
插入
设计
切换
动画幻灯片放映
审阅视图
加裁项
福听阅读器
格式
品剪切
张了
国版式
,16+,AA
,拒,镇存
金文字方向
国咽回O日五
2形状填充·
鹊查找
电复制
自重设
淘对齐文本
回△→↓
巴形狱轮廓,
e替换
粘贴
新建
毫量笪
排列快速样式
格式刷
幻灯片,旨节
漏转换为SmartArt
Q形状效果
个选择
剪贴板
幻灯片
字体
殷落
绘图
编辑
幻灯片
大纲
y
5
LED8 LED7
LED6
LED5
LED4
LED3
LED2
LED1
pL.P1.0环点-口
00000000
任务目标
第1次

第2次
6
第3次
第4次
88
循环重
第5次
分折
第6次
00000000
第7次
第8次
点我加速
保烟式虹灯控制实现产法
单片机应用技术情境二
任务3:模拟冤虹灯控制设计
。■多女
■用发8六衣
单击此处添加备注
幻灯片第6张,共26张
默认设计模板”
回 削早66%⊙⑤五°,興8
20:14
2015/3/12
9+5V
1k9I8
+5V
40
P1.0
Vcc
31选择片内
2
EA
P1.1
程序存储器
9复位电路
3
P1.2
RST
RESET
R9
+5V
P1.3
1K
P1
200S2
P1.4
22uF
18
时钟电路
6
P1.5
XTAL2
12MHz
P1.6
19
30pF
XTALI
8
c2
P1.7
20
LED控制电路
Vss
51单片机(共14张PPT)
实例8 选择程序结构实现开关控制LED显示
《单片机基础与应用(C语言版)》
高等教育出版社
01
一、任务导入
任务要求
用一个开关控制8个LED,在全亮和闪烁方式之间切换。
02
二、任务分析
按照设计要求,单片机的I/O口上连接8个LED和一个开关SW,单片机通过判断SW的闭合(ON)或断开(OFF)状态,来选择控制8个LED闪烁或全亮。
03
三、硬件电路
一个开关控制选择8个LED点亮方式的控制电路(采用P1口的8个I/O引脚控制8个LED,P0.0引脚接收开关电平控制)
04
四、控制程序
一个开关控制选择8个LED点亮方式的程序流程图
//程序:ex9.c
//功能:用开关SW选择8个LED的点亮方式
#include //包含头文件REGX51.H,定义了51单片机的所有SFR
#define ON 0 //定义符号常量ON
sbit SW=P0^0; //定义P0.0引脚位名称为SW
//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整型变量i,控制空循环的循环次数
//返回值:无
void delay(unsigned int i)
{
while(i--); //i次空操作
}
void main() //主函数
{
while(1) //无限循环
{
if(SW==ON) // 判断开关SW闭合/断开
{
P1=0x00; //采用字节操作,点亮8个LED
delay(20000); //软件延时
P1=0xff; //采用字节操作,熄灭8个LED
delay(20000); //软件延时
}
else
P1=0x00; //采用字节操作,8个LED常亮
}
}
思考题:怎么修改上面程序,用4个开关选择不同的点亮方式控制8个LED的亮灭。如果4个开关分别连接在单片机的P0.0~P0.3引脚上,参考程序如下。
//程序:ex10.c
//功能:用4个开关选择控制8个LED的点亮方式
#include //包含头文件REGX51.H,定义了51单片机的所有SFR
void main() //主函数
{
unsigned char sw; //定义字符变量sw
while(1) //无限循环
{
sw=P0&0x0f; //sw保存接在P0口上低4位的开关状态
switch(sw) //根据开关状态选择不同的点亮方式
{
case 0x0e:P1=0xfc;break; //P0.0引脚上的开关闭合时,点亮第1、2个LED
case 0x0d: P1=0xf3;break; // P0.1引脚上的开关闭合时,点亮第3、4个LED
case 0x0b:P1=0xcf;break; //P0.2引脚上的开关闭合时,点亮第5、6个LED
case 0x07: P1=0x3f;break; // P0.3引脚上的开关闭合时,点亮第7、8个LED
default: P1=0xff;break; // 4个开关断开或同时闭合时,8个LED熄灭
}
}
}
进行C51编程时,常用按位与运算对某些位进行清0或保留某些位,例如,在程序ex10.c中,语句“sw=P0&0x0f;”将P0的低4位保留、高4位清0后赋值到变量sw中。还可以用按位或运算进行指定位置1、其余位不变的操作,按位异或运算进行指定位取反、其余位不变的操作。
Thanks for your attention.
感谢您的观看(共21张PPT)
实例9 移位操作实现流水灯
《单片机基础与应用(C语言版)》
高等教育出版社
一、任务导入

二、任务分析

控制8个LED按流水灯的方式点亮时,单片机P1口先输出11111110的逻辑电平组合,点亮连接P1.0引脚上的LED,延时一段时间后P1口将0左移1位,即输出11111101,这时点亮连接P1.1引脚上的LED,再延时。以此类推,P1口将0依次左移1位,顺序输出11111011、11110111、11101111、11011111、10111111、01111111,显然,可以采用移位操作实现流水灯效果。
三、硬件电路

8位LED控制电路(采用P1口的8个I/O引脚控制8个LED)
四、控制程序

移位运算和循环结构实现流水灯的程序流程图
//程序:ex11.c
//功能:采用移位操作和循环程序结构实现流水灯的控制
#include //包含头文件REGX51.H,定义了51单片机的所有SFR
//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整型变量i,控制空循环的循环次数
//返回值:无
void delay(unsigned int i)
{
while(i--); //i次空操作
}
void main() //主函数
{
unsigned char aa,i; //定义字符变量aa,i
while(1) //无限循环
{
aa=0x01; //给变量aa赋值0x01,即二进制数00000001
for(i=0;i<8;i++) //用for循环控制移位8次
{
P1=~aa; //将aa的值按位取反后送到P1口输出
delay(20000); //软件延时
aa<<=1; //将aa的二进制数值左移一位
} //结束for循环
}
}
实例10 库函数实现流水灯
《单片机基础与应用(C语言版)》
高等教育出版社
一、任务导入

二、任务分析

C51的编译器提供的内部函数库头文件intrins.h中包含有移位操作函数。_crol_函数是循环左移,_cror_()函数是循环右移,我们可以使用这些移位库函数来实现8个LED按流水灯的方式点亮
三、硬件电路

8位LED控制电路(采用P1口的8个I/O引脚控制8个LED)
四、控制程序

使用库函数实现流水灯的程序流程图
//程序:ex12.c
//功能:采用库函数实现流水灯的控制
#include //包含头文件REGX51.H,定义了51单片机的所有SFR
#include //包含内部函数库INTRINS.H
//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整型变量i,控制空循环的循环次数
//返回值:无
void delay(unsigned int i)
{
while(i--); //i次空操作
}
void main() //主函数
{
P1=0xfe; //P1口输出0xfe,即11111110
while(1) //无限循环
{
P1=_crol_(P1,1); //调用内部函数_crol_,将P1的二进制数值左移一位
delay(20000); //软件延时
}
}
思考题:怎么修改控制程序,使用循环右移库函数实现流水灯。
感谢您的观看
Thanks for your attention. (共23张PPT)
实例11 延时函数的定义及调用
《单片机基础与应用(C语言版)》
高等教育出版社
01
一、任务导入
任务要求
设计有形参的可控时长延时函数delay()与不带形参的固定时长延时函数delay1()用一个开关来控制选择流水灯以2种不同的速度轮流点亮。
02
二、任务分析
设计时,使用一个开关SW来控制流水灯的速度,当开关SW断开(OFF)时,选择流水灯以速度1(延时delay)点亮;开关SW闭合(ON)时,选择流水灯以速度2(延时delay1)点亮。
03
三、硬件电路
8位LED控制电路(采用P1口的8个I/O引脚控制8个LED)
04
四、控制程序
开关控制流水灯速度的程序流程图
程序演示
实例12 数组实现流水灯
《单片机基础与应用(C语言版)》
高等教育出版社
01
一、任务导入
任务要求
将流水灯的显示状态存放在数组,编程实现流水灯效果。
02
二、任务分析
8个LED按流水灯的方式点亮时,单片机P1口顺序输出11111110(0xfe)、11111101(0xfd)、11111011(0xfb)、11110111(0xf7)、11101111(0xef)、11011111(0xdf)、10111111(0xbf)、01111111(0x7f)的逻辑电平组合。设计时,将这些状态数据存放在数组LED中,然后顺序将LED数组中的数组元素送到P1口输出,可以实现流水灯效果。
03
三、硬件电路
采用数组实现流水灯的硬件电路
04
四、控制程序
采用数组实现流水灯的程序流程图
程序演示
//程序:ex14.c
//功能:采用数组实现流水灯的控制程序
#include //包含头文件REGX51.H,定义了51单片机的所有SFR
//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整型变量i,控制空循环的循环次数
//返回值:无
void delay(unsigned int i)
{
while(i--); //i次空操作
}
void main() //主函数
{
unsigned char code LED[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//定义字符数组LED,存放流水灯8种显示状态,存放在程序存储区
unsigned char i; //定义字符变量i
while(1) //无限循环
{
for(i=0;i<8;i++) //用for循环控制8次循环次数
{
P1=LED[i]; //将循环变量i作为数组下标,送LED[i]送P1口输出
delay(20000); //软件延时
}
}
}
思考题:怎么修改控制程序,让8个LED能分别点亮2、3、4……个LED,或更多种不同组合方式点亮。
Thanks for your attention.
感谢您的观看(共14张PPT)
实例13 花样霓虹灯
《单片机基础与应用(C语言版)》
高等教育出版社
一、任务导入

任务要求
本设计要求单片机控制8个LED按照单灯左移流动、单灯右移流动、双灯从两端向中间流动、双灯从中间向两边流动等多种效果显示,并能不断轮流重复各个显示效果。
二、任务分析

定义左移流动函数为move_l()、右移流动函数为move_r()、从两端向中间流动函数为move_to_m()、从中间向两端流动函数为move_from_m(),在单片机控制程序的主函数main()中调用这些显示函数,就可以实现各种花样霓虹灯控制。
三、硬件电路

花样霓虹灯的硬件电路
四、控制程序

花样霓虹灯主函数流程图
程序演示
//程序:ex15.c
//功能:花样霓虹灯控制程序
#include
#include
//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整型变量i,控制空循环的循环次数
//返回值:无
void delay(unsigned int i)
{
while(i--); //i次空操作
}
//函数名:move_l
//函数功能:实现循环左移1位
//形式参数:无符号整型变量p,花样霓虹灯显示初值
//返回值:无
void move_l(unsigned char p)
{
unsigned char i; //定义字符变量i
P1=p; //显示初值送到P1口
for(i=0;i<8;i++) //用for循环控制8次循环次数
{
delay(20000); //软件延时
P1=_crol_(P1,1); //调用内部函数_crol_,将P1的二进制数值左移一位
}
}
程序演示
//函数名:move_r
//函数功能:实现循环右移1位
//形式参数:无符号整型变量p,花样霓虹灯显示初值
//返回值:无
void move_r(unsigned char p)
{
unsigned char i; //定义字符变量i
P1=p; //显示初值送到P1口
for(i=0;i<8;i++) //用for循环控制8次循环次数
{
delay(20000); //软件延时
P1=_cror_(P1,1); //调用内部函数_cror_,将P1的二进制数值右移一位
}
}
//函数名:move_to_m
//函数功能:实现从两端向中间移动1位
//形式参数:无符号整型变量p,花样霓虹灯显示初值
//返回值:无
void move_to_m(unsigned char p)
{
unsigned char i; //定义字符变量i
for(i=0;i<4;i++) //用for循环控制4次循环次数
{
P1=((p<>i)); //i为移动位数,完成左移、右移后再按位或 delay(20000); //软件延时
}
}
程序演示
//函数名:move_from_m
//函数功能:实现从中间向两端移动1位
//形式参数:无符号整型变量p,花样霓虹灯显示初值
//返回值:无
void move_from_m(unsigned char p)
{
unsigned char i; //定义字符变量i
for(i=0;i<4;i++) //用for循环控制4次循环次数
{
P1=((p&0xF0)<>i); //i为移动位数,完成左移、右移后再按位或 delay(20000); //软件延时
}
}
void main()
{
while(1)
{
move_l(0xfe); //单灯左移
move_r(0x7f); //单灯右移
move_l(0xfc); //双灯左移
move_r(0x3f); //双灯右移
move_to_m(0x7e); //双灯由两端向中间移动
move_from_m(0xe7); //双灯由中间向两端移动
}
}
感谢您的观看
Thanks for your attention. (共12张PPT)
实例14 贪吃蛇
《单片机基础与应用(C语言版)》
高等教育出版社
1
一、任务导入
Part One
任务要求
贪吃蛇显示效果图
2
二、任务分析
Part One
按照设计要求,显示贪吃蛇效果的8个LED中,最左边的LED总是点亮的,而右边的LED总是执行左移一位的操作,每执行完8次左移一位操作后,就增加一位LED灯的点亮。设计时,将每一遍要左移的8位LED初始位置状态保存在字符数组led中,每次左移一位的贪吃蛇位置状态都与0x7f(即最左边点亮的食物灯)进行按位与操作,组合为完整的贪吃蛇显示状态再送到P1口输出。
3
三、硬件电路
Part One
现贪吃蛇显示效果的硬件电路
4
四、控制程序
Part One
贪吃蛇主函数流程图
程序演示
//程序:ex16.c
//功能:贪吃蛇控制程序
#include //包含头文件REGX51.H,定义了51单片机的所有SFR
//函数名:delay
//函数功能:实现软件延时
void delay(unsigned int i)
{
while(i--); //i次空操作
}
void main() //主函数
{
unsigned char n,i; //定义字符变量n,i
unsigned char led[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f};
//定义贪吃蛇显示初值,对应7遍移位
while(1)
{
for(n=0;n<7;n++) //控制7次循环
{
P1=(~led[n])&0x7f; //P1初值,按位与操作点亮食物灯
for(i=1;i<9;i++) //左移次数
{
delay(30000); //延时
P1=(~(led[n]<}
}
}
}
思考题:修改程序,实现右移贪吃蛇游戏效果。
感谢您的观看

展开更多......

收起↑

资源列表