简单的51单片机设计,用8个按键独立控制8个灯的程序!(高分!)要求如下:

作者&投稿:鲁桂 (若有异议请与网页底部的电邮联系)
在51单片机中用c语言keil写程序实现用一个按键控制8个灯的亮和灭(按下按键全部灯亮,按下按键全~

//程序很简单也有很多方法都可以实现 。

#include
#include "INTRINS.H"
sbit k = P1^0; //P1.0作为按键输入
int led=0xff;

void main()
{
P2 = led; //led初始赋给P2口
while(1)
{
if(k==0) //如果按键按下
{
while(k==0); //判断按键松开
led=~led;
P2 = led; //按键按下取反再赋给P2口
}
}
}

比如你的8个灯连在 P0口,如果是阴极的
你只要先定义
sbit P0^0=LED0;
.....一定定义下去
然后再定义一个按钮
比如P1.1
sbit P1^1=key;
代码里写
while(true){if(key==1){LED0=0;LED1=0;..//把你要亮的灯置0就行了。阳极的话置1}}

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint z);
void main()
{
uchar a;
a=0x00;
P0=0x00;//P0输出; led共阴接法 P1输入按键另一端接地 P0加上拉电阻
P1=0xff;
while(1)
{
P0=0x00;
if(P1!=0xff)
{
a=P1;
switch(a)
{
case 0xfe: P0=0x01;delay(3000);break;
case 0xfd: P0=0x02;delay(3000);break;
case 0xfb: P0=0x04;delay(3000);break;
case 0xf7: P0=0x08;delay(3000);break;
case 0xef: P0=0x10;delay(3000);break;
case 0xdf: P0=0x20;delay(3000);break;
case 0xbf: P0=0x40;delay(3000);break;
case 0x7f: P0=0x80;delay(3000);break;
}
}
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

不需要中断,因为你按键速度不可能打到微秒,所以用普通扫描就应该可以了,三秒的话当然就用定时器了。你需要的话我可以晚上写一个看看,需要的话留下邮箱。

编好了,看看:

http://hi.baidu.com/do_sermon/item/21321b80887395d25e0ec1f8

参考一下 这个仿真实例




51单片机设计一个秒表,用两个数码管(任意相邻的两个)显示。
ORG 0000H JMP BEGIN ORG000BH LJMPT0INT ORG001BH LJMPT1INT LEDDEQU30H LEDCEQU 36H SECCEQU 37H TCNTEQU 3AH ORG 0030H ;--- TABLE: ; 共阴极数码管显示代码表 DB 0FCH;"0"00H DB 60H;"1"01H DB 0DAH;"2"02H DB 0F2H;"3"03H DB 66H;"4"04H DB 0B6H;"5"...

基于51单片机的简易计算器设计,急
\/\/功能 0 1 2 3 4 5 6 7 8 9 + - × ÷ = 清零 表3-1 3.2 计算器的软件设计 include<reg51.h> \/\/头文件 define uint unsigned int \/\/ define uchar unsigned char sbit lcden=P2^3; \/\/定义引脚 sbit rs=P2^4;sbit rw=P2^0;sbit busy=P0^7;char i,j,temp,num,...

基于51单片机的转速测量设计,程序编写!电路仿真图
测量转速,使用光电传感器,被测电机带动纸片旋转,我们在纸片上开了10小孔,电机每旋转一周就会产生10个脉冲,产生12个脉冲,要求将转速值(转\/分)显示在数码管上。实验程序如下:include <REG52.H> define uchar unsigned char define uint unsigned int define ulong unsigned long define LED_DAT P1...

51单片机 ,设计一个跑马灯程序,用软件延时,p0输出,怎么设计c语言,用p...
51单片机是单片机接触最早的,下边这个程序希望能帮到你。(只有主函数,就不进行硬件什么定义以及头文件包含什么的了)void delay(int times){\/\/延时函数,times控制延时时间 int i, j;for(i = 0; i < times; i++)for(j = 0; j < 210; j++);} int main(void){ unsigned char data, ...

如何编写51单片机音乐程序
设计的相关音乐说明 要产生音频脉冲,只要算出某一音频的周期(1\/频率),然后将此周期除以2,即为半周期时间。利用半周期时间定时这个半周期时间,每当计时到后就将输出的I\/O反向,然后重复计时此半周期再对I\/O反向,就可以在I\/O脚上得到此频率的脉冲。记数脉冲值与频率的关系公式如:N=Fi\/2\/Fr...

51单片机用汇编语言设计1S延时子程序,晶振为12MHz。 (麻烦附上详细计算...
如果单纯延时,可以用实验的办法,在keilc51里面仿真 void Delay1S(char n){ char i,j;n=n*4;for(;n;n--){ for(i=6;i;i++){ for(j=7;j;j++) \/\/ 一个循环约为1mS ;} } } 看编译后的汇编:C:0x0805 7D01 MOV R5,#0x06;j=1,1时钟 C:0x0807 0D INC ...

基于51单片机中等难度的毕业设计题目
TOP1.基于51单片机人脸简易识别系统 TOP2.基于51单片机智能非特定人声语音识别系统 TOP3.基于51单片机指纹考勤系统 TOP4.基于51单片机智能小型穿戴手表 TOP5.基于51单片机智能家居12防卫报警 TOP6.基于51单片机8位16位门禁系统

用51单片机编程:电子时钟(设计电子时钟,用51单片机编程)
如果有问题欢迎到我空间相关文章下留言 乐于回答~~程序如下:; 定义管脚 S_SET BIT P1.0 ;数字钟秒控制位 M_SET BIT P1.1 ;分钟控制位 H_SET BIT P1.2 ;小时控制位 SECOND EQU 30H MINUTE EQU 31H HOUR EQU 32H ORG 00H SJMP MAIN ORG 0BH LJMP INT_T0 MAIN...

求个51单片机 汇编语言设计的LED跑马灯的程序
给个你参考 \/* 实验目的:初步了解单片机I\/O口的工作原理,进一步掌握51单片机的汇编指令。实验内容:用汇编指令对单片机I\/O口进行编程,控制8个发光二极管的流水亮灭。\/ \/* 程序详细功能介绍:做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P0.0-P0.7接口上,输出“0”时,发光...

51单片机流水灯用C语言编写的设计程序是什么?
include<reg51.h> include<intrins.h> define uchar unsigned char void delay(void){ uchar i,j;for(i=0;i<150;i++)for(j=0;j<240;j++);} main(){ uchar led,i,j;while(1){ for(i=0;i<8;i++){ led=0xfe<<i;for(j=0;j<8-i;j++){ P0=led;led=_crol_(led,1);d...

嘉荫县17758279740: 简单的51单片机设计,用8个按键独立控制8个灯的程序!(高分!)要求如下: -
歹山头痛: 没有要求,就随便编一个吧.#include sfr key=P1; sfr LED=P0; main() { while(1) { LED=key; } }

嘉荫县17758279740: 89C51单片机简单键盘实验利用keil uVision4仿真程序.利用简单键盘模块中提供的8个独 -
歹山头痛: #include<reg52.h> sbit key = P1^0;//按键 void delay(unsigned int time) { unsigned int i,j;for(i=0; i<time; i++)for(j=0; j<1000; j++){;} } void mian() { unsigned int temp =0x00; while(1) { if(key == 0) { delay(20);//适当延时,消除按键抖动,自己看实际情况修改时间 if(key == 0)temp = ~temp;} P2 = temp; }}

嘉荫县17758279740: 在51单片机中用c语言写程序实现用一个按键控制8个灯的亮和灭(按下按键全部灯亮,按下按键全部灯灭) -
歹山头痛: 你首先要确定你的电路.选择什么单片机和数码管,8个按键最简单8个IO口控制.一般简单的是用三极管驱动数码管.如果你会C语言的话,很容易上手.自己先从控制1个数码管学,在控制2个数码管(2个数码管基本上可以完成上面试验,8个...

嘉荫县17758279740: 跪求单片机8个按键的独立式键盘实验C程序源码!!!AT89C51的芯片、共阴极的数码管 -
歹山头痛: #include#define nop() _nop_()#define keyport P1#define ledport P2unsigned char code seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴数码管段码 void delayms(unsigned int ms) //12M { ...

嘉荫县17758279740: 51单片机中,用八个开关控制一个7段数码管,按一个开关显示一个数,用C语言怎么编程 -
歹山头痛: sfr key=P1;//定义八个开关接单片机的p1口的八个引脚,int suma[9]={0x3B,0x4D,,,};//根据数码管的驱动芯片接入单片机接口,查表输出要显示的数字,其中第九个为不显示即清空显示.unsigned char Scankey() {int i,j; i=key; if(key!=0xFF...

嘉荫县17758279740: 简述独立式按键使用场合 -
歹山头痛: 综述 独立式按键:直接由I / O线组成的单个按钮电路,其特征在于每个按钮分别占用一条I / O线,适用于八个按键. 我们在使用家用电器时经常需要通过按键给电器输入指令,让电器执行动作.比如电磁炉的开关、电饭煲定时时间设定等等....

嘉荫县17758279740: 51单片机,c语言编程 一个按键控制6盏灯 第一下所有灯灭(不管灯亮灭) 第 -
歹山头痛: #include#define u16 unsigned int#define u8 unsigned char sbit key=P2^0; u8 count=0; u8 sk(){ static u8 ms; if(key==0){ if(ms if(ms==5){ return 0; } } return 1; } void main()//主函数 { while(1){ if(sk()==0){ count++; switch(count){ case 1:P1=0xff;...

嘉荫县17758279740: 51单片机制作一个由一个按钮控制的8盏流水灯程序,要求按下按钮后流水灯先从左到右闪两次 -
歹山头痛: #include<reg51.h> #define uchar unsigned char sbit key=P1^0; uchar led; void delay(uchar x) {uchar i,j;for(i=0;i<x;i++)for(j=0;j<125;j++); } void disled() {uchar i,j;led=0xfe;for(j=0;j<2;j++){for(i=0;i<8;i++){P0=led;delay(200);P0=0xff;delay(...

嘉荫县17758279740: 在写51单片机程序的时候,对于用独立按键控制led.比如我按下按键1号,8个灯以1方式流动亮,问题 -
歹山头痛: 解决这个问题,首先你得会检测按键,其次至少会做2种流水灯效果.基于以上基础,那么程序的架构可以这样来实现:1、定义一个全局变量,存放运行状态2、检测按键,如果key1被按下,那么运行状态为1;如果key2被按下,那么运行状态为23、死循环中,判断这个全局运行状态变量,如果为1,那么就执行流水灯程序1;如果为2,那么就执行流水灯程序2.加油!

嘉荫县17758279740: 设计最小51单片机系统其中p1口接8个开关p3口接8个发光led要求开关闭合时灯熄 -
歹山头痛: ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV A,P1MOV P3,ASJMP MAINEND

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网