单片机(十天征服你)
电平特性
定义单片机为TTL电平:高+5V 低:0V
定义计算机串口RS232电平:高:-12V 低+12V
所以计算机与单片机之间通讯需要加电平转换芯片max232(试验班上左下角)。
STC89c52中的2*4=8k的意思就是指内部存储空间是8k
两种点亮灯的方法(同时点亮同理)
点亮D1
#include<reg52.h>
sbit D1=P2^1;//单片机的第一个管脚p1对应D1灯
void main()
{
D1=0;//把第一个灯点亮,低电平就点亮了
}
点亮D2
#include<reg52.h>
void main()
{
P2=0xfd;//fd转换为二进制为10111111,第二个为0,则D2亮
}
流水灯(已经亮过的灯不熄灭)
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint);//声明延时函数
void main()
{
uint i;
uchar temp;
while(1)
{
temp=0xFE;
for(i=0;i<8;i++)
{
P2=temp;
delay(500);
temp<<=1;
}
}
}
void delay(uint t)
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
流水灯(已经亮过的灯熄灭)
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint);//声明延时函数
void main()
{
uint i;
uchar temp,temp1;
while(1)
{
temp=0xFE;
temp1=0xFF;
for(i=0;i<8;i++)
{
P2=temp;
delay(500);
//P2=temp1;
temp=(temp<<=1)|(temp>>(8-1));//与上面流水灯的区别在于这里实现了循环位操作运算,“|”操作符的意思是按位“或”运算
delay(500);
}
}
}
void delay(uint t)
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
蜂鸣器(无源蜂鸣器)
#include<reg52.h>
#include<intrins.h>
char temp=0xfe;
sbit beep=P1^5;
unsigned int a;
int main()
{
beep=0;
while(1)
{
P2=temp;
temp=_crol_(temp,1);
a = 100;
while(a--);
beep = ~beep;//无源蜂鸣器需要制反
while(1)
{
P1=temp;
a = 1000;
while(a--);
beep = ~beep;
}
}
}
有源蜂鸣器和无源蜂鸣器的区别
单片机数码管原理图
共阴数码管表
外部中断和内部中断:外部中断也称为外部硬件实时中断,他由来自CPU某一引脚上的信号引起;内部中断也称软件指令中断,他是为了处理程序运行过程中发生的一些意外情况或调试程序而提供的中断
中断PPT
对51来说, 中断0 外部中断0 中断1 定时器0中断 中断2 外部中断1 中断3 定时器1中断 中断4 串口中断 中断5 定时器2中断