流水灯
-------------------------------------------------------------------------------------------------------------------------------------
[实验要求]
单片机P1口相连的8个发光二极管中的一个循环移位点亮,同时蜂鸣器发出滴滴的响声。
蜂鸣器用一PNP三极管驱动,集电极(C极)通过蜂鸣器线圈接5V电源,基极(B极)是控制端,发射极(E极)接地,当三极管C,B极PN结正偏时,PN结导通,即B极为低电平时,三极管导通,蜂鸣器响。再不明白去看模电书。
[实验目的]
掌握循环移位的工作原理,学会使用封装好的函数库,
延时函数的时间估算。
[硬件电路]
[源代码]
//flow light and beep
#include <reg51.h>
#include <intrins.h> //后面要用到它里面的_crol_(k,l)函数
//这个函数的意思是把一个字符变量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口点亮发光二极管
}
}
|