c51单片机
51单片机是控制电路系统的开关,当然芯片就是51芯片,现在随着科技的发展,也是出了很多,功能更多,更全的芯片。
51是用c语言做为程序编程的语言
——我对基本基础硬件的了解
电阻: 降电流电压; 电容:就像蓄电池一样(但是只能蓄微弱的电量);
——最基本的一个公式
U= I R;
——电平(这是我了解的新的一个知道点)
电平分为高电平和低电平
高电平——3v和5v(单片机工作的电压)
低电平——0v
——只要有高低电平的差,才会有“工作”
——程序的编程(让一个小灯亮)
#include "reg52.h" //导入头文件 reg52.h
sbit led = P0^1; //定义一个 广角(端口),p0的1端口
void main() //主函数
{
led = 1;(或者是0;这是取决与单片机的设置) //给 端口 输出一个 高电平或者低电平;
} //小灯简单的点亮
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
让小灯闪烁的程序(非精确延时)
#include "reg52.h"
sbit P0^0;
void main()
{
unsigned int i = 0 ;//定义int 型的 i;它的值是 0~65535
while(1) //程序的死循环 单片机用得是非常多的
{
led = 1;
for(i=0;i<30000;i++); //一个非精确的延时
led = 0;
for(i=0;i<30000;i++)
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
精确的延时
如果想要使用精确延时,就必须先打延时的功能,它是c51内部的一个功
#include "reg52.h"
void main()
{
TH0 = 0XFC; //1秒的延迟高八位的初值
TL0 = 0x67; //低八位的初值
TR0 = 1; //定时器的开关
while(1)
{
if(TF0 = 1)
{
TF0 = 0;//溢出标志,溢出了就清0,
TH0 = 0xfc; //重新赋值
TL0 = 0x67;
cnt++; //cnt 记录溢出的次数
if(cnt >= 1000) // 溢出是 1毫秒;溢出一千次就是1秒
{
cnt = 0;
sec++; // sec ,记录了 溢出的多少秒
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
中断系统
这是非常重要的的一个知识点,利用一个函数
#include "reg52.h"
void Interrupt_Time0() interrupt 1 //中断的函数和别的函数有所不同,()后还要加 interrupt 和函数值 1 ←这个值不是随便取的,要看数据芯片;
{
static unsigned char i = 0;
static unsigneed int cnt = 0;
TH0 = 0xfc;
TL0 = 0x67;
cnt++;
if(cnt >= 1000)
{
cnt = 0;
flag_1s = 1;//等于一就会跳转到 flag_1s里;
}
switch(i)
{
caes 0:.....................................;break;
}
}
void main()
{
TMOD = 0x01; //表示打开定时器的 1 模式 ;
TH0 = 0xfc;
TL0 = 0x67;
TR0 = 1; //打开定时器 定时器的开关
EA = 1; //中断系统的总开关
ET0 = 1; //定时器0 的开关
while()
{
if(flag_1s ==1)
{
flag_1s = 0
sec++;
led_buff[0] = led_char[sec%]; //赋值
}
}
}