第一课:流水灯实验11.20
1、C51常用数据类型:
无符号整型:unsigned int 占16位数 取值0-65535
无符号字符型: unsigned char 占8位数 取值0-255
2、C51常用头文件:
reg51.h reg52.h math.h ctype.h stdio.h stdlib.h absac.h intrins.h
reg51.h和reg52.h用来定义51和52单片机的特殊功能寄存器和位寄存器,头部内容大部分一样,52就比51多了几行定义T2寄存器的内容
math.h定义常用数学运算
3、C51的运算符:
算术运算符:
% 用来求余数 10%3=1
关系运算符:
!= 测量不等
&& 与
|| 或
! 非
位运算符:
& 按位与
| 按位或
^ 异或
~ 取反
>> 右移
<< 左移
4、所需器件
①排阻:103=10*10^3欧姆 150=15*10^0欧姆 最后一位表示数量级
②发光二极管::单向导通性,通过5毫安左右电流可发光,电流越大亮度越强,但要控制在3-20毫安之间,需在阳极串联一个电阻保证其通过的电流不要过大,又称“限流电阻”,发光时测得二极管两端电压为1.7V,称之为“导通压降”
③74h573锁存器:
OE反:输出使能端,低电平有效
1D-8D:数据输入端
1Q-8Q:数据输出端
LE:锁存允许端
H L:高低电平
X:任意电平
Z:高阻态
5、单片机C语言语句:
前置:声明书写
#include<> //包含头文件
#define A=B //宏定义
void XX() //声明子函数
int/char C,D; //定义常量
void main() //主函数
{}
①while循环语句
格式:
while(表达式)
{
内部语句(可为空)
}
原则:若表达式不是0,即为真,那么执行语句,否则跳出执行后面的语句。
使用:
While(1) //死循环,永远跳不出的执行
{
需要循环使用的语句
}
Eg:
#include<reg52.h>
void main()
{
P1=0xfe;
While(1);
}
②for循环,演示语句
格式:
for(表达式1;表达式2;表达式3)
{
语句(可为空)
}
使用for延时:、
③带参数函数的写法和调用
首先要在void main()前声明
然后输入循环语句
void Delayms(unsigned int xms) 此写法方便修改延时时间
{
unsigned int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;i--); //子循环
}
然后再需要延时的语句下一行键入
Delayms(1000) //延时1000ms=1s
从中间到两边流水灯
④不带参数函数的写法及调用
for(i=1000;i>0;i--) //延时1s
for(j=110;j>0;j--);
如果一些语句不止一次用到,而且内容相同,就可以把它写成一个不带参数的语句,档主函数需要时直接调用这个子函数,以下写法与上边的语句效果相同,使用前需在主函数前声明,
不带参数括号内为空 void delay1s()
void delay1s() //括号里面无任何数据或符号,即此函数为无参数符号
{
for(i=1000;i>0;i--) //延时1s
for(j=110;j>0;j--);
}
6、利用C51库函数实现流水灯
使用C51中自带头文件intrins.h中的_crol_和_cror_函数实现循环左移和循环右移,利用位运算符<<和>>实现左移和右移。
综合练习: