单片机-流水灯的程序 ppt课件
(完整版)51单片机流水灯程序
![(完整版)51单片机流水灯程序](https://img.taocdn.com/s3/m/26c40afea8956bec0975e3fc.png)
1.第一个发光管以间隔200ms 闪烁。
2.8 个发光管由上至下间隔1s 流动,其中每个管亮500ms, 灭500ms 。
3.8 个发光管来回流动,第个管亮100ms 。
4.用8 个发光管演示出8 位二进制数累加过程。
5.8 个发光管间隔200ms 由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms 间隔全部闪烁 5 次。
重复此过程。
6.间隔300ms 第一次一个管亮流动一次,第二次两个管亮流动,依次到8 个管亮,然后重复整个过程。
7.间隔300ms 先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8 个全部闪烁 3 次;关闭发光管,程序停止。
1#include<reg52.h>#define uint unsigned intsbit led 仁P"0;void delay();void main(){while(1){led1=0;delay();led1=1;delay();}}void delay(){uint x,y;for(x=200;x>0;x--) for(y=100;y>0;y--);}#include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char sbit p P1A0; uchar a;void delay(); void main() {a=0xfe;P1=a;while(1){ a=_crol_(a,1); delay();P1=a; delay();}}void delay(){uint b; for(b=55000;b>0;b--);}3#include<reg52.h>#include <intrins.h>#define uint unsigned int #define uchar unsigned char void delay() {uint x,y; for(x=100;x>0;x--) for(y=110;y>0;y--);}void main() {uchar a,i;while(1)a=0xfe; for(i=0;i<8;i++){P1=a; delay(100); a=_crol_(a,1);}a=0x7f; for(i=0;i<8;i++){P1=a; delay(100); a=_cror_(a,1);4#include<reg52.h>#include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(uint a) { uint x,y; for(x=a;x>0;x--) for(y=110;y>0;y--);}void main() {uchar b;while(1){b++;P1=~b; delay(200);5#include<reg52.h>#include <intrins.h> #define uint unsigned int #define uchar unsigned char void main() { uchar a,i,j;while(1){ for(j=0;j<2;j++){a=0xfe; for(i=0;i<8;i++){P1=a;delay(200); a=_crol_(a,1);}a=0x7f; for(i=0;i<8;i++){P1=a; delay(200); a=_cror_(a,1);}}P1=0xff; for(j=0;j<10;j++) {delay(300);P1=~P1;}}}void delay(){uint x,y; for(x=200;x>0;x--) for(y=110;y>0;y--); 6 #include<reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(){uint x,y; for(x=300;x>0;x--) for(y=110;y>0;y--);} void main(){uchar a,i,j; while(1) {a=0xfe; for(j=0;j<8;j++) { for(i=0;i<8-j;i++) {P1=a; delay(200); a=_crol_(a,1);} a=_crol_(a,j); P1=0xff; a=a<<1;}} }7#include<reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(uint z){uint x,y; for(x=z;x>0;x--)for(y=110;y>0;y--);}void main(){uchar a,i,j;for(j=0;j<3;j++){P1=0x55;delay(300);P1=0xaa; delay(300);}for(j=0;j<3;j++){a=0xfe;for(i=0;i<8;i++){P1=a;delay(300); a=_crol_(a,1);}}P1=0xff; for(j=0;j<3;j++){P1=0x7e;delay(300);P1=0xbd; delay(300);P1=0xdb; delay(300);P1=0xe7; delay(300);}P1=0xff;for(j=0;j<3;j++){P1=0xe7;delay(300);P1=0xdb;delay(300);P1=0xbd;delay(300);P1=0x7e;delay(300);}P1=0xff; for(j=0;j<6;j++) {P1=~P1; delay(300);}P1=0xff;while(1);}。
单片机控制流水灯 ppt课件
![单片机控制流水灯 ppt课件](https://img.taocdn.com/s3/m/484be8e9cfc789eb162dc80a.png)
思考:前面的实验我们都是直接用一个P1 口的,那么能不能对P1口的某一个引脚来 操作呢?
任务3:
单片机应用技术
流水灯----单片机内部结构
精品资料
单片机应用技术
• 你怎么称呼老师? • 如果老师最后没有总结一节课的重点的难点,你
是否会认为老师的教学方法需要改进? • 你所经历的课堂,是讲座式还是讨论式? • 教师的教鞭 • “不怕太阳晒,也不怕那风雨狂,只怕先生骂我
单片机应用技术
这样看来程序是不是变得非常的简单了呢?但程序的可读性是不是 很差啊?能不能把P1变一下样我们来定义一个容易理解的变量呢?当然 可以了。
我们可以用C语言中define 的定义。 具体格式如下: #define 变量 预定义名 功能:用预定义名来代替前面的变量 如:#define P1 led 这样以后在程序中出现的led都代表P1口。将上面的程序修改如下: #include “reg51.h” #define P1 LED void delay() {
unsigned int i; for(i=0;i<10000;i++) ; }
void main()
{
for(;;)
{ L0 = 0;
delay(); L0 = 1; L1 = 0;
delay(); L1 = 1; L2 = 0;
delay(); L2 = 1; L3 = 0;
delay(); L3 = 1; L4 = 0;
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
4K
1
40
2
39
3
38
单片机控制技术项目训练教程任务三 键控流水灯控器制作-PPT课件
![单片机控制技术项目训练教程任务三 键控流水灯控器制作-PPT课件](https://img.taocdn.com/s3/m/fb9832c3aef8941ea76e05dd.png)
2
任务分析:
前面一个任务我们已经完成了LED流 水灯的制作,本任务与前一任务相比仅是 增加了按键的控制,即点按一次按键K后 立即执行“流水灯程序”。“点按按键一 次”通常的理解是先按下按键,然后又放 开,所以编程时,首先要判断按键是否真 正的按下,若按下,就等待按键释放。释 放后,这次按键的动作就完成了。
}
程序知识点:
(1)if语句的使用
if(表达式) {语句}
if(表达式) {语句1}
else {语句2}
if(表达式1) {语句1} else if(表达式2 ) {语句2}
...... else {语句n}
(2)带参数的延时程序使用
//无参数延时程序 void delay() {
unsigned int x; for(x=30000;x>0;x--); }
P1口赋值数据 计算表格
次序 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P1值 1 0 0 0 1 1 1 1 1 0x1F 2 1 0 0 0 1 1 1 1 0x8F 3 1 1 0 0 0 1 1 1 0xC7 4 1 1 1 0 0 0 1 1 0xE3 5 1 1 1 1 0 0 0 1 0xF1 6 1 1 1 1 1 0 0 0 0xF8 7 0 1 1 1 1 1 0 0 0x7C 8 0 0 1 1 1 1 1 0 0x3E
键控LED流水灯硬件模块接线图(YL-236单片机实训装置)
4
软件编程
主程序流程图:
参考程序:
{ u n sig n ed ch ar i; //定 义 无 符 号 字 符 型 变 量 i P1= 0xff; //开 机 时 8个 LED 全 灭 w h ile(1 )//主 程 序 循 环 { K = 1 ;//把 按 键 管 脚 拉 高 if(K = = 0 )//首 次 判 断 按 键 是 否 按 下 { d elay _m s(1 0 0 0 ); //调 用 带 参 数 的 延 时 子 函 数 消 除 按 键 抖 动 if(K = = 0 )//再 次 判 断 按 键 是 否 按 下 { w h ile(K = = 0 );//等 待 按 键 释 放 w h ile(1 )//流 水 灯 的 循 环 { fo r(i= 0 ;i< 8 ;i+ + )//循 环 8 次 { P 1 = D M [i]; //查 询 在 D M 数 组 中 取 出 对 应 值 d elay _m s(3 0 0 0 0 ); //调 用 带 参 数 的 延 时 子 函 数 } } } } }
简单的单片机的流水灯程序
![简单的单片机的流水灯程序](https://img.taocdn.com/s3/m/44dfc6c28bd63186bcebbc27.png)
;----- 主程序开始-----START:CLR P1.0 ;P1.0输出低电平,使LED1点亮ACALL DELAY;调用延时子程序SETB P1.0;P1.0输出高电平,使LED1熄灭CLR P1.1;P1.1输出低电平,使LED2点亮ACALL DELAY;调用延时子程序SETB P1.1;P1.1输出高电平,使LED2熄灭CLR P1.2;P1.2输出低电平,使LED3点亮ACALL DELAY;调用延时子程序SETB P1.2;P1.2输出高电平,使LED3熄灭CLR P1.3;P1.3输出低电平,使LED4点亮ACALL DELAY;调用延时子程序SETB P1.3;P1.3输出高电平,使LED4熄灭CLR P1.4;P1.4输出低电平,使LED5点亮ACALL DELAY;调用延时子程序SETB P1.4;P1.4输出高电平,使LED5熄灭CLR P1.5;P1.5输出低电平,使LED6点亮ACALL DELAY;调用延时子程序SETB P1.5;P1.5输出高电平,使LED6熄灭CLR P1.6;P1.6输出低电平,使LED7点亮ACALL DELAY;调用延时子程序SETB P1.6;P1.6输出高电平,使LED7熄灭CLR P1.7;P1.7输出低电平,使LED8点亮ACALL DELAY;调用延时子程序SETB P1.7;P1.7输出高电平,使LED8熄灭ACALL DELAY;调用延时子程序AJMP START;8个LED流了一遍后返回到标号START处再循环;----- 延时子程序-----DELAY:MOV R0,#255;延时一段时间D1:MOV R1,#255DJNZ R1,$DJNZ R0,D1RET;子程序返回END;程序结束。
(完整版)51单片机流水灯程序
![(完整版)51单片机流水灯程序](https://img.taocdn.com/s3/m/5db8d8cfa45177232e60a23f.png)
1.第一个发光管以间隔200ms 闪烁。
2.8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms。
3.8 个发光管来回流动,第个管亮100ms。
4.用8 个发光管演示出8 位二进制数累加过程。
5.8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms间隔全部闪烁 5 次。
重复此过程。
6.间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。
7.间隔300ms 先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。
1#include<reg52.h>#define uint unsigned intsbit led 仁P"0;void delay();void main(){while(1){led1=0;delay();led1=1;delay();}}void delay(){uint x,y;for(x=200;x>0;x--) for(y=100;y>0;y--);}2#include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char sbit p 仁P1A0;uchar a;void delay(); void main() {a=0xfe;P1=a;while(1){ a=_crol_(a,1); delay();P1=a;delay();}}void delay(){uint b; for(b=55000;b>0;b--);}3#include<reg52.h>#include <intrins.h>#define uint unsigned int #define uchar unsigned char void delay(){uint x,y; for(x=100;x>0;x--) for(y=110;y>0;y--);}void main(){uchar a,i;while(1)a=0xfe;for(i=0;i<8;i++){P1=a; delay(100); a=_crol_(a,1);}a=0x7f;for(i=0;i<8;i++){P1=a; delay(100); a=_cror_(a,1);}}}4#include<reg52.h>#include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(uint a){uint x,y;for(x=a;x>0;x--) for(y=110;y>0;y--);}void main(){uchar b;while(1){b++;P1=~b; delay(200);5#include<reg52.h>#include <intrins.h> #define uint unsigned int #define uchar unsigned char void main(){uchar a,i,j;while(1){ for(j=0;j<2;j++){a=0xfe;for(i=0;i<8;i++){P1=a;delay(200); a=_crol_(a,1);}a=0x7f;for(i=0;i<8;i++){P1=a;delay(200); a=_cror_(a,1);}}P1=0xff; for(j=0;j<10;j++) {delay(300);P1=~P1;}}}void delay(){uint x,y; for(x=200;x>0;x--) for(y=110;y>0;y--); 6 #include<reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(){uint x,y; for(x=300;x>0;x--) for(y=110;y>0;y--);} void main(){uchar a,i,j; while(1) {a=0xfe; for(j=0;j<8;j++) { for(i=0;i<8-j;i++) {P1=a; delay(200); a=_crol_(a,1);} a=_crol_(a,j); P1=0xff; a=a<<1;}} }7#include<reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char void delay(uint z){uint x,y; for(x=z;x>0;x--)for(y=110;y>0;y--);}void main(){uchar a,i,j;for(j=0;j<3;j++){P1=0x55;delay(300);P1=0xaa;delay(300);}for(j=0;j<3;j++){a=0xfe;for(i=0;i<8;i++){P1=a;delay(300);a=_crol_(a,1);}}P1=0xff;for(j=0;j<3;j++){P1=0x7e;delay(300);P1=0xbd;delay(300);P1=0xdb;delay(300);P1=0xe7;delay(300);}P1=0xff;for(j=0;j<3;j++){P1=0xe7;delay(300);P1=0xdb;delay(300);P1=0xbd;delay(300);P1=0x7e;delay(300);}P1=0xff; for(j=0;j<6;j++) {P1=~P1; delay(300);}P1=0xff;while(1);}。
单片机控制LED灯点亮(C语言)PPT课件
![单片机控制LED灯点亮(C语言)PPT课件](https://img.taocdn.com/s3/m/0b82f5c1bdeb19e8b8f67c1cfad6195f312be8cd.png)
▪ 以下各数不是合法的十六进制整常数: 5A ( 无前缀0X) 0X3H (含有非十六进制数码)
.
26
各种进位制的对应关系
十进制 二进制
0
0
1
1
2
10
3
11
4
100
单片机控制 led灯点亮
.
1
主要内容
▪ 一、点亮板子上的第一个灯D0 ▪ 二、点亮板子上的D0、D2、D4、
D6灯,与D1、D3、D5、D7灯交替 闪烁 ▪ 三、流水灯:从D0---D7依次点亮
.
2
▪ 一、点亮板子上的第一个灯D0
1)目标 了解单片机的基本设计思路和编
程方法,和单片机的最小系统。 2)分析
片,文件的扩展名为.HEX,默认情况下该项
未被选中,如果要写芯片做硬件实验,就必
须选中该项。其余选项均取默认值,不做任
何修改。
.
17
6.编译项目并创建HEX文件
▪ 可以通过工具栏中的图标直接进行。从左到 右的图标分别是:编译、编译连接、全部重 建、停止编译和对工程进行设置。
.
18
▪ 对源程序编写之后编译,最终要得到结果, 提示0个错误,0个警告。同时还可看到,该 程序的内部RAM的使用量(data=8.0),外 部RAM的使用量(xdata=0),代码量( code=18)等一些信息。
unsigned int unsigned short int unsigned long int
float double char unsigned char
流水灯程序设计与调试.ppt
![流水灯程序设计与调试.ppt](https://img.taocdn.com/s3/m/f9ca9c3d5022aaea988f0f5e.png)
10
重点: 1、学习P1口既作为输入,又作为输出的使用方法。 2、学习数据输入、输出程序的设计方法。
11
二、任务分析
1、硬件分析
❖ P1口为准双向I/O接口,输出单条指令完成,输入时应当先 向对应的端口锁存器写入1,然后读入数据。
12
2、软件说明
➢ 有两个操作数,如MOV A,30H指令,操作数之间以逗号 相隔;
➢ 有3个操作数,如 CJNE A,#00H,10H指令。
❖ 注释:对指令的解释说明,用以提高程序的可读性,注释前 必须加分号,注释换行时行前也要加分号。
步骤4:现象无误,请求教师检查、评价。 步骤5:编制项目报告并提交。
18
➢分支程序的基本形式 分支程序有三种基本形式,如图2-1所示。 分支程序的设计要点如下:
❖先建立可供条件转移指令测试的条件。 ❖选用合适的条件转移指令。 ❖在转移的目的地址处设定标号。
19
条件满足? Y
A
(a)单分支
N
条件满足?
Single Chip Microcomputer
情
境
主要内容
1
➢流水灯程序设计与调试
彩
➢转弯灯程序设计与调试
灯
控
➢交通灯程序设计与调试
制
器
1
1.3.1 流水灯程序设计与调试
一、任务说明 1、要求 ❖ P1口作为输出口。P1.0至P1.7接8个发光二极管。要求编写
程序实现如下功能:8个发光二极管依次亮灭并循环,延时 0.1秒(已知fosc=12MHz)。 2、重点 1、学习P1口作为输出口的使用方法。 2、学习延时程序的设计方法。
ANL A,Rn ; A (A)∧Rn ANL A,@Ri ; A (A)∧(Ri) ANL A,#data ; A (A)∧#data ANL direct,A ;(direct) (direct)∧(A) ANL direct,#data ; (direct)(direct)∧#data 注意: 以上指令结果通常影响程序状态字寄存器PSW的P标志。 存储单元指定位清0的做法:按照需清0的位置填0,需保留的位置填1的原则构建 清0常数,然后利用ANL指令实现运算。 相近的指令:逻辑或指令ORL,逻辑异或指令XRL,清0指令CLR,取反指令CPL。 逻辑或可实现存储单元指定位置1,逻辑异或可实现存储单元指定位取反。
单片机-流水灯的程序ppt精选课件
![单片机-流水灯的程序ppt精选课件](https://img.taocdn.com/s3/m/59331412ba0d4a7303763ac4.png)
1110
E
1011
B
1111
F
例如:二进制数
1111 1110 转换为十六进制
十六进制数为 0x f e
ppt精选版
9
方法二:利用总线控制实现流水灯(8位二极管循环点亮)
编程思路:
a) 先点亮第一盏灯,延时点亮第二盏 , 依次延时8盏灯全部点亮。 b) 当8盏灯全部点亮时,熄灭8盏灯。 c) 进入循环。
利用单片机实现流水灯
杨美丽
ppt精选版
1
方法一:利用位定义实现流水灯(8位二极管循环点亮)
相关知识
一、sbit 当我们在C语言中直接给P2口时,编译器并不识
别,而且这也是种不合法的写法,所以我们要让P2 与编译器建立一定的联系,于是就采用了KEIL C 中的关键字sbit。
sbit是一个特殊功能寄存器的位变量。bit和sbit
b)循环右移
最低位移入最高位,其它位依次向右移一位,C语言 中没有专门的指令,通过移位指令与简单的逻辑运算可 以实现循环右移,或专门利用C51库中自带函数-cror-实 现
ppt精选版
14
方法三:利用按位左移实现流水灯
#include <reg51.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char uint i,j; uchar Led;
程序分析:
ppt精选版
10
#include<reg51.h> void delayms(unsigned char xms);
void main() {while(1) { P2=0xfe; delayms(120); P2=0xfc; delayms(120); P2=0xf8; delayms(120); P2=0xf0; delayms(120); P2=0xe0;
5 AT89S52单片机开发入门:流水灯实验ppt课件
![5 AT89S52单片机开发入门:流水灯实验ppt课件](https://img.taocdn.com/s3/m/ff2fe850bceb19e8b9f6bad5.png)
• 用户RAM – 30H~7FH – 堆栈, 60H(向上增长) – 复位后设置SP<=07H
• 间接寻址RAM (idata) – 0x80~0xff
22
编译连接结果
存储器使用情况: 1、data=9:内部数据RAM使用了9个字节; 2、xdata=0:外部数据RAM没有使用; 3、code=71:内部程序存储区(FLASH)使用了71(0x47)个字节
1个机器周期 1个机器周期
1个机器周期 ;R6不等于0xFF则跳转到0032
1个机器周期 ;R7未到0xFF则跳转到0030执行
2个机器周期
2个机
全部机器周期数为:2+255*(2+255*(1+2)+1+2)+2=4+255*(5+255*3)=196354个机 器周期。 对应时间为:196354*12/11059200=0.213s
工程中包含
Startup.a51 程序时
Startup.a51代码功能: •对内部RAM清0(范围:0~0x7F) •设置堆栈指针(SP=#07H) •跳到main执行
与不加入startup.a51模块时没有区别
32
深入了解程序执行过程(3) -main函数部分
寄存器R5代替变量dat 寄存器R4代替变量i
– D9点亮:+5V电源指示 – D10闪动:在线编程器AT89C2051工作正常
5
图5-1-1 实验1中观察LED的位置
6
void main() {
unsigned char i,dat; while(1) { dat=0x01; for(i=0;i<8;i++)
《流水灯设计例程》PPT课件
![《流水灯设计例程》PPT课件](https://img.taocdn.com/s3/m/f643082ef7ec4afe04a1dfef.png)
仿真
一、流水灯产品介绍及设计说明
流水灯常用于电子玩具和场所装饰中,可以美化环境,渲染气氛。本项 目中的流水灯电路采用双面圆形PCB,通过16个环形排列的发光二极管进行 流水显示,发光二极管的显示由微处理器89C51编程控制。
块 DS8P17DS16P27 模 示 显 DS7P16DS15P26 00 22 VCCVCC 2RP12RP2 DS6P15DS14P25 8989 DS5P14DS13P24 00 7171 11 6161 22 5151 DS4P13DS12P23 33 4141 44 3131 55 2121 DS3P12DS11P22 66 1111 DS2P11DS10P21 DS1P10DS9P20 块 块 模 模 制 源 P10P11P12P13P14P15P16P17P20P21P22P23P24P25P26P27控 电 F u 5 0 C 12345678234567890 VCC 1 1234567822222222333333334 VCC 3 VCC T P1.0/T2 P2.0/A8P2.1/A9 U P1.2/ECI P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15 P0.7/AD7P0.6/AD6P0.5/AD5P0.4/AD4P0.3/AD3P0.2/AD2P0.1/AD1P0.0/AD0 O P1.1/T2EX D P1.3/CEX0P1.4/CEX1P1.5/CEX2P1.6/CEX3P1.7/CEX4 21 N GUU 2 N I MC7805ACT 4 1 C P89C51RC2BN/01 0.33uF RSTP3.0/RxDP3.1/TxDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDXTAL2XTAL1VSSPSENALE/PROGEA/VPP 9 01234567890901 11111111112233 k 1 1 0 VCC RD1N4001 1 F p 3 0 C 3 F 1 u C 0 1 12 F 1 2 p Y 0 C JP1DCIN 3 1 12MHz S 12 RESET VCC
流水灯ppt
![流水灯ppt](https://img.taocdn.com/s3/m/b4f04a41f7ec4afe04a1df47.png)
作品介绍完毕
谢谢观看
电子信息学院、通信工程 e Chip Microcomputer)简称单片机,是指集
成在一块芯片上的计算机,它具有结构简单、控制功能强、可靠性高、 体积小、价格低等优点。单片机技术作为计算机技术的一个重要分支, 广泛的应用于工业控制、智能化仪器仪表、家用电器、电子玩具等各 个领域。 近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同 时带动传统控制检测日新月异更新,在实时检测和自动控制的单片机 应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面的 知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点 的软件结合,加以完善。 本设计通过用汇编语言对8952单片机写程序实现了对8个发光二极管的 自如控制,并具有复位和中断功能,另外加上了一组静态数码管以显 示流水灯的花样计数。根据设计要求基本达到了预期的目的。 正文首先介绍本课题的背景、研究意义及完成的任务功能;简单描述 元器件和方案的论证;系统硬件的工作原理和软件的设计;最后对本 设计进行了总结。 关键词:单片机 89c52 发光二极管 中断 复位 汇编语言
硬件简单,但程序复杂,代码多,且单片机软件开销大, 时间信息也不易长期保存,准确性很低,极易受影响。
2、控制选择方案
直接法:我们为了简便操作直接使用开关键切换流水
灯的不同变化。
整体设计
关键词:模块模拟
实物图
总结与心得
在本次设计的过程中,我们发现很多的问题,遇到了很多麻烦,有的问题其 实很简单,主要是对知识的掌握程度不够,扩展知识欠缺,这就要求我们在 以后的学习中,应该注意到这一点,并且应该多读一些课外的文献,只靠书 本上的知识远远不够。更重要的是我们要学会把从书本中学到的知识和实际 的电路联系起来,用实践巩固理论,用理论优化实践,这不论是对我们以后 的就业还是学习,都会起到很大的促进和帮助。 在焊接过程中,我们意识到细心和严谨的精神是必不可少,在焊接电路和调 试硬件中不自觉地得到了锻炼。 通过本次课程设计,巩固了我们学习过的专业知识,也使我们把理论与实践 从真正意义上相结合了起来;考验了我们借助互联网络搜集、查阅相关文献 资料,和组织材料的综合能力;从中可以自我测验,认识到自己哪方面有欠 缺、不足,以便于在日后的学习中得以改进、提高!也提醒我们,只有通过 团队合作才能制作出优秀的设计,闭门造车不会取得实质性的成功。此次课 程设计,我们也学到了很多课内学不到的东西,比如独立思考解决问题,出 现差错的随机应变,和与人合作共同提高,都受益非浅。 经过这些天的设计制作,在老师的悉心指导和同学们的热情帮助下,我们终 于完成了这次的设计,同时也增加了我们以后学习的信心和热情。再次感谢 在这次设计中帮助我们的指导老师和同学!
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
不返回任何数据。
for(j=0;j<xms;j++);
我们可以把他的调用语句写成:
void delayms()
()内无任何东西,
{ char i;char j;
所以这是个无参
for(i=0;i<100;i++)
数的函数。
for(j=0;j<100;j++);
Delayms是函数名。
}
ppt课件
3
2)带参数函数的写法及调用
利用单片机实现流水灯
杨美丽
ppt课件
1
方法一:利用位定义实现流水灯(8位二极管循环点亮) 相关知识
一、sbit 当我们在C语言中直接给P2口时,编译器并不
识别,而且这也是种不合法的写法,所以我们要 让P2与编译器建立一定的联系,于是就采用了 KEIL C中的关键字sbit。
sbit是一个特殊功能寄存器的位变量。bit和sbit
ppt课件
10
#include<reg51.h> void delayms(unsigned char xms);
void main() {while(1) { P2=0xfe; delayms(120); P2=0xfc; delayms(120); P2=0xf8; delayms(120); P2=0xf0; delayms(120); P2=0xe0;
void main()
delay(120);
{
led1=1;
while(1)
led2=1;
{
led3=1;
led1=0;
led4=1;
delay(120);
led5=1;
led2=0;
led6=1;
delay(120);
led7=1;
led3=0;
led8=1;
delay(120);
}
led4=0;
E
1011
B
1111
F
例如:二进制数
1111 1110 转换为十六进制
十六进制数为 0x f e
ppt课件
9
方法二:利用总线控制实现流水灯(8位二极管循环点亮)
编程思路:
a) 先点亮第一盏灯,延时点亮第二盏 , 依次延时8盏灯全部点亮。 b) 当8盏灯全部点亮时,熄灭8盏灯。 c) 进入循环。
程序分析:
方法二:利用总线控制实现流水灯(8位二极管循环点亮)
相关知识
二进制和十六进制之间的相互转换
二进制
十六进制 二进制
十六进制
0000
0
0100
4
0001
1
0101
5
0010
2
0110
6
0011
3
0111
7
ppt课件
8
二进制
十六进制 二进制
十六进制
1000
8
1100
C
1001
9
1101
D
1010
A
1110
char,也就限制了它的使用带参数函数的写法及调用
在C语言中当一些语句不止一次使用到,而且语句内容相
同,我们就可以把这样的语句写成一个不带参数的子函
数,当在主函数中需要这些语句时,直接调用这个语句
就可以:
其中void表示这
例如:延时语句
个函数执行完后
for(i=0;i<xms;i++)
void delayms(unsigned char xms) { char i;char j;
for(i=0;i<xms;i++) for(j=0;j<xms;j++); } 在这个函数中我们发现其括号中多了一个 “unsigned char xms”.这就是这个函数所带的参数,其中xms是一个unsigned char 的变量,又叫这个函数的形参,在调用此函数时我们用 一个具体真是的数据来代替此形参,这个真实数据被称为实 参,形参被实参代替之后,在子函数中和形参名相同的数据 都将被实参代替。
delayms(120); P2=0xc0; delayms(120); P2=0x80; delayms(120); P2=0; delayms(120);
}}
void delayms(unsigned char xms)
{ char i;
char j;
for(i=0;i<xms;i++)
for(j=0;j<xms;j++);
}
ppt课件
11
方法三:利用移位操作实现流水灯(8位二极管循环点亮)
一、按位左移
相关知识
按位左移是将一个运算量的各位依次左移若干位, 低位补0,高位舍弃不要。
a) 先点亮第一盏灯,延时点亮第二盏 , 依次延时8盏灯全部点亮。 b) 当8盏灯全部点亮时,熄灭8盏灯。 c) 进入循环。
程序分析:
ppt课件
6
#include<reg51.h> sbit led1=P2^0; sbit led2=P2^1; sbit led3=P2^2; sbit led4=P2^3; sbit led5=P2^4; sbit led6=P2^5; sbit led7=P2^6; sbit led8=P2^7; void delay (unsigned char x);
都是C51扩展的变量类型,典型的应用就是我们前
面用的sbit led=P2^0;他的意思就是定义led为P2口
的第一位,和char之类的差不多,不同点就是char
是8位,而sbit只有一位,而且它只有两种值(1或
者0)。 在编程中 我们一旦用sbit定义了一个变量
,那么这个变量就有了确定的地址。如你使用了
ppt课件
4
调用注意事项:
子函数可以写下主函数的前面或是后面,但是不可以 写在主函数的里面。
当写在后面时,必须在主函数之前申明子函数,声明方 法为:将返回特性,函数名及后面的小括号完全复制,若 是无参数,则小括号内位空,若有参数,则需要在小括号 内,依次写上参数类型,只写参数,无需写参数,参数类 型之间用逗号隔开,最后在小括号的后面加上冯号。
当子函数写在主函数的前面时无需声明,因为在写函数 体的时候已近相当于声明了函数本身。通俗的讲,声明子 函数的目的是为了编译器在编译主程序的时候,当它遇到 子函数知道有这样的一个函数存在,并且知道他的内部情 况,以便为其分配空间。
ppt课件
5
方法一:利用位定义实现流水灯(8位二极管循环点亮)
编程思路:
}
delay(120);
led5=0 ; void delay(unsigned char
delay(120);
x)
led6=0;
{ char i;char j;
delay(120);
for(i=0;i<x;i++)
led7=0;
for(j=0;j<x;j++);
delay(120);
}
ppt课件
7