本站首页 | 基础教程 | MCU设计实例 | 常用芯片 | 电子基础 | 本站论坛
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章 今天是:
 
单片机单按键控制LED发光的程序
作者:佚名   来源:本站原创   点击数:  更新时间:2009年07月02日   【字体:
 

   51单片机单按键控制LED发光的程序,就是用一个与P3_0引脚连接的按键控制P2_0相连LED的亮和灭两种状态。按一次按键灯亮,再按一次按键灯灭。再按一次又亮,再按一次灯又灭,本程序出自单片机网:http://www.51hei.com,经过测试已经可以成功运行。
#include "AT89X51.H"
void main(void) // 主程序
{
bit mark;        //定义位变量
unsigned int n;  //定义循环变量
while(1)         //无限循环
{
if (P3_0==0)    //如果按键按下
{
for(n=0;n<1000;n++); //延时一段时间,等待按键完全按下
mark=~mark;         //翻转标记
while(!P3_0)        //等待按键弹起
for(n=0;n<1000;n++); //等待按键完全弹起
}
P2_0=mark;  //点亮或是关灭LED灯
}}
while(1)  //无限循环
{  
if(ldelay==1 ) //若是时间溢出标记为1,处理如下语句
{
ldelay=0;     //清除时间溢出标记
P2=ledp[ledi]; //读出一个表格值送到P2口
ledi++;        //指向下一个表格值
if(ledi==4)    
{
ledi=0;    //到了最后一个灯就换到第一个
sp--;       //速度级别减1
if (sp==3) //如果速度级别减到3
sp=23;     // 恢复速度最慢的级别23
}}}}
timer0() interrupt 1   //定时器0中断服务程序
{
static unsigned int kk;   //定义静态局部变量
kk++;    //每次中断服务,kk加1
if(kk==(100*sp))     //最少次数为100*sp=300,时间为300次*0.25ms
//最多次数为2300次,时间为2300次*0.25ms
//如果kk=(100*sp),执行如下语句
{
kk=0; 
ldelay=1;         //当kk值与100*sp值相等,将ldelay标记置1,则处理灯亮与显示速度
} }
 

 
发表评论】【告诉好友】【收藏此文】【关闭窗口
下一篇:51单片机简介
网友评论(第一页显示最新10条评论)
评论载入中...
 >> 推荐文章
单片机USB-ISP下载线制作
自制单片机实验板
单片机一键多功能按键识别设
 >> 阅读排行
keil教程
单片机DS18B20水温控制系统
单片机电子时钟设计
单片机交通灯设计
单片机课程设计
单片机时钟设计
单片机串口通讯
八路抢答器论文含原理图电路
自制单片机实验板
单片机USB-ISP下载线制作
 >> 相关文章
单片机一键多功能按键识别技术
单片机按键程序设计及电路设计
单片机一键多功能按键识别设计

站长:刘兴国 站长信箱:aaf1@21cn.com
单片机教程网 @ 51Hei.com 2003-2009 联系QQ:125739409