51单片机C语言源代码例程附带电路图

时间:2025-04-18

51单片机C语言源代码例程附带电路图

闪烁灯

[实验要求]

点亮与单片机P1.0口相连的发光二极管,延时0.2S,然后熄灭,延时0.2S,再点亮,如此循环下去。

[实验目的]

初步了解单片机IO口输出高低电平的作用,延时函数的时间估算。

[硬件电路]

[源代码]

#include<reg51.h>

/**********************************************************

上面这行是一个"文件包含"处理。所谓"文件包含"是指一个文件将另外一个文件的内容全部包含进来这里的程序虽然只写了一行,但C编译器在处理的时候却要处理几十或几百行,这里包含reg51.h的目的在于本程序要使用P1这个符号,而P1是在reg51.h这个头文件中定义的。大家可以在编译器目录下面用记事本打开这个文件看看。

*********************************************************/

sbit P1_0=P1^0; //定义IO口这步的目的是让编//译器知道P1_0代表的就是单片机的P1.0口 void delay02s(void) //延时0.2秒子程序

{

unsigned char i,j,k; //定义3个无符号字符型变量。

for(i=20;i>0;i--) //三个FOR循环用来延时,这里为

51单片机C语言源代码例程附带电路图

for(j=20;j>0;j--) //什么是0.2S大家可以用WAVE

for(k=248;k>0;k--); //高断点仿真一下,就可知道大概

} //是0.2S了。

void main(void) //每一个C语言程序有且只有一个主函数,

{

while(1) //循环条件永远为真,以下程序一直执行下去。

{

P1_0=0; // I/O口P1.0输出低电平,小灯被点亮。

delay02s(); //延时经过0.2秒。

P1_0=1; // I/O口P1.0输出高电平,小灯熄灭。

delay02s(); //延时经过0.2秒。

}

}

51单片机C语言源代码例程附带电路图

流水灯

[实验要求]

单片机P1口相连的8个发光二极管中的一个循环移位点亮,同时蜂鸣器发出滴滴的响声。

蜂鸣器用一PNP三极管驱动,集电极(C极)通过蜂鸣器线圈接5V电源,基极(B极)是控制端,发射极(E极)接地,当三极管C,B极PN结正偏时,PN结导通,即B极为低电平时,三极管导通,蜂鸣器响。再不明白去看模电书。

[实验目的]

掌握循环移位的工作原理,学会使用封装好的函数库,

延时函数的时间估算。

[硬件电路]

51单片机C语言源代码例程附带电路图

51单片机C语言源代码例程附带电路图

[源代码]

//flow light and beep

#include <reg51.h>

#include <intrins.h> //后面要用到它里面的_crol_(k,l)函数

51单片机C语言源代码例程附带电路图

//这个函数的意思是把一个字符变量k循环左移l位,关于它的说明//请查看安装KEIL目录下的E:\Program

Files\Keil\C51\HLP文件夹//里面的c51lib,这个文件里面有各种用C语言封装好的函数库,我//们在以后使用其中某些函数时可以直接使用而自己不必再写。

unsigned char a,b,k,j; //定义四个字符变量

sbit beep=P2^3; // 定义蜂鸣器的接口

void delay10ms() //延时字程序,大约延时10ms

{

for(a=100;a>0;a--)

for(b=225;b>0;b--);

}

void main()

{

k=0xfe; //先给k一个初值11111110等待移位

while(1)

{

delay10ms();

beep=0; //打开蜂鸣器

delay10ms(); //让它响10ms

beep=1; //关闭蜂鸣器

j=_crol_(k,1); //把k循环左移一位

k=j; //把移完的值再送给k

P1=j; //同时把值送到P1口点亮发光二极管

}

}

单键识别

51单片机C语言源代码例程附带电路图

[实验要求]

每按一次独立键盘的S2键,与P1口相连的一个发光二极管往下移动一位。

注意:关于按键去抖动的解释,我们在手动按键的时候,由于机械抖动或是其它一些非人为的因素很有可能会造成误识别,一般手动按下一次键然后接着释放,按键两片金属膜接触的时间大约为50ms左右,如果我们再首次检测到键被按下后延时10ms左右再去检测,这时如果是干扰信号将不会被检测到,如果确实是有键被按下,则可确认。以上为按键识别去抖动的原理。

[实验目的]

独立按键的识别。

[硬件电路]

51单片机C语言源代码例程附带电路图

[源代码]

#include <reg52.h>

sbit BY1=P3^4; //定义按键的输入端S2键

unsigned char count; //按键计数,每按一下,count加1

unsigned char temp;

unsigned char a,b;

void delay10ms(void) //延时程序

{

unsigned char i,j;

51单片机C语言源代码例程附带电路图

for(i=20;i>0;i--)

for(j=248;j>0;j--);

}

key() //按键判断程序

{

if(BY1==0) //判断是否按下键盘,当单片机上电时所有IO口为//高电平,S2键一端接地另一端接P3.4,所以当键被按下时P3.4口//直接接地,此时检测P3.4肯定为低电平。

{

delay10ms(); //延时,软件去干扰

if(BY1==0) //确认按键按下

{

count++; //按键计数加1

if(count==8) //计8次重新计数

{

count=0; //将count清零

}

}

while(BY1==0);//等待按键释放,如果键未释放则一直在此等待。

}

}

move() //广告灯向下移动移动函数 …… 此处隐藏:4527字,全部文档内容请下载后查看。喜欢就下载吧 ……

51单片机C语言源代码例程附带电路图.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219