实验二.51单片机点亮流水灯资料讲解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(i=0;i<30000;i++);
•
P1=LED[3];
•
for(i=0;i<30000;i++);
•
P1=LED[4];
•
for(i=0;i<30000;i++);
•
P1=LED[5];
•
for(i=0;i<30000;i++);
•
P1=LED[6];
•
for(i=0;i<30000;i++);
}
• 表达式1首先执行一次且只执行一次;然后 执行表达式2,通常都是一个判断条件的表 达式,如果表达式2成立,就执行(要执行 的语句);然后再执行表达式3。。。。一 直到表达式2不成立时,跳出循环继续执行 循环语句。
While循环语句
• 通常主函数里都会加一个while(1),起到 一个死循环的效果;它的形式: while(表达式) { (被迫)循环体语句; }
电磁干扰
• 冬天干燥的城市有时候手接触金属外壳会 产生静电;你在家里看电视,外面有大车 经过,电视会有颤纹出现;电脑在热插拔 优盘后有时会出现蓝屏现象;等等。
• 这些都是电磁干扰,有时会对电子元件造 成损坏;
三极管的应用
• 三极管有三个功能,截止,放大,饱和; 我们主要学习三极管的截止和饱和二种状 态。
表达式为真(1)时候,语句为死循环;就是 一遍又一遍的执行。
函数
• 一般形式:函数值类型 函数名(形式参数) {函数体 }
•
void main()
•
{ ENLED=0;
•
A3=1;
•
unsigned int i=0;//无符号整形I,并赋初值0
•
while(1)
•
{
•
P1=LED[0];
•
for(i=0;i<30000;i++);
•
P1=LED[1];
•
for(i=0;i<30000;i++);
•
P1=LED[2];
•
三极管封装
三级管应用
• 在这个实验中,主要是用三极管基极侧的 低电压来控制集电极和发射级之间的高电 流;
• 由于IO口内部有电阻,所以电流很低,用了 三极管之后,LED直接使用的+5v电压供电, 所以电流更高,所以要借助电阻来控制电 流小于20mA。
74HC138三八译码器
• 三八译码器是把三种输入状态翻译成八种 输出状态;
74L138引脚介绍
• A0,A1,A2可以组成8种状态: 000,001,010,011,100,101,110,111;
• 它的真值表:
注意观察E1,E2,E3上面的横线!!!
• E1,E2,E3是三个使能输入端,两个低有效 (E1和E2)和一个高有效(E3)。除非E1 和E2置低且E3置高,否则74HC138将保持所 有输出为高。
硬件讲解
• 我们看下我们讲的这个STC89C52单片机,它有很多的引脚,我们经常 拿来用的主要有P0、P1、P3、P2四组,每组有八个,一共32个端口。 以P3组为例:有P3.0~P3.7这八个,这一组里面每一个都有一个用法相 同的基本功能,就是能够读取外部传过来的电平信号和向外部输出电 平信号,这样进进出出的是不是很有意思?所以叫它们为IO口。 细心的同学会发现P3这组IO口都有一个另外的名字,比如P3.0又写了 RXD这个名字,等等。是的,有两个名字的端口说明它们还有第二个 功能,具体怎么用我们现在先不要去管它。 想像一下,你的小车上有一个传感器和一个电机,你希望在某个时间 点上读取到传感器的信号,然后你根据这个信号来给电机下达一个命 令让其是正转、反转、停止Biblioteka Baidu加速、减速等等。这时你只需将传感器 的信号线接到其中一个IO口上(比如P3.0),然后将电机的两根线 (这里先不考虑驱动的问题,驱动可理解为只是把电流电压放大了) 接到另两个IO口上(比如P3.1和P3.2)。
硬件连接
• #include<reg52.h>
程序说明
•
sbit A0=P1^0;//位地址声明
•
sbit A1=P1^1;
•
sbit A2=P1^2;
•
sbit A3=P1^3;
•
sbit ENLED=P1^4;
•
unsigned char LED[8]={0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7};//定义无符号字符型一维数组LED的8个初值
实验二:流水灯
做人如钱,外圆内方
准备材料
• 1.单片机最小系统(晶振,复位,电源<带 PL2303>)
• 2.面包板(杜邦线,插线若干) • 电阻1KΩ(8个),330Ω(8个) • PNP9012(就是S9012)三极管(8个) • 74HC138(一套:0.1uf电容) • 发光二极管(8个)。
•
P1=LED[7];
•
for(i=0;i<30000;i++);
•
•
}
•
}
C语言基础
• C语言的数据类型分为:字符型char,整形 int,长整型long以及浮点型float。
• Unsigned表示无符号,就是没有负数的意思。 • 二进制:计算机程序汇编中常用的形式;
用他来表示十进制;而十六进制是二进制 的一种缩写形式。
数字的基本类型表示范围
• 字符型:unsigned char:0-255;signed char: -128~127。
• 整型:unsigned int:0~65535;singed int: -32768~32767; 长整型:unsigned long:0~4294967295;
signed long:-2147483648~2147483647 浮点型:float:-3.4×10^38~3.4×10^38;
三极管原理
• 三极管的型号记忆方式:箭头朝内PNP,导 通电压顺箭头过,电压导通,电流控制。
• 横向左侧的引脚叫B(基极),右边有箭头 的那侧叫E(发射级),剩下那个引脚叫C (集电极);
• 只要箭头初始端的电压大于箭头末端的电 压0.7v,那么e,c之间就有可以导通。
• 以pnp为例,若Ue>Ub+0.7;那么e和c之间就 导通了。
C语言的基本运算符
• 在C语言中加减乘除和取余数分别为:+,-, *,/,%;还有++,是自动加1;而—是自 动减1;但是=表示赋值运算符;==表示是 否等于判断的关系运算符;‘!=’表示是 否不等于的判断关系运算符;
• For循环语句
for(表达式1;表达式2;表达式3)
{ (需要执行的语句);