简单的51单片机设计,用8个按键独立控制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}}
#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单片机设计,用8个按键独立控制8个灯的程序!(高分!)要求如下...
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=0x0...
51单片机系列】应用设计——8路抢答器的设计
设计流程如下:将“开始”按键连接至P3.0端口,用于启动抢答;P3.6端口连接一个LED,用于指示抢答允许状态;P0口接7段数码管,用于显示抢答者编号;P2口连接8个独立式按键,分别编号为1至8;P1口连接抢答者指示灯,对应P2口的某个独立按键被按下时,该抢答者指示灯亮起。采用proteus软件设计原理电路...
51单片机中,用八个开关控制一个7段数码管,按一个开关显示一个数,用C语...
b=a; \/\/ 保存当前的按键值。} delay(1000); \/\/ 延时 自己调试要大于200 ms } } \/\/ 只能给你个大概的思路了。,一般扫描按键,除非硬件使用中断的引脚可以中断设计,返回键值,或查值,判断是否显示,显示输出,中间要加些延时效果更好。\/\/ 设计到单片机就牵扯到硬件的定义,还有些外界干扰...
单片机实例分享,如何设计八路抢答器
本设计共有10个按键,其中8个按键用于抢答,编号为1-8。另外两个按键分别为开始键和结束键,由主持人或后台控制。8个按键通过与非门连接,实现互锁功能。与非门型号为74LS30,具有8路输入和1路输出。2-74LS30与非门框图 通过NPN三极管连接单片机的外部中断0接口,实现按键功能检测。单片机的中断资源为...
单片机中用矩阵键盘的8个按键分别控制8个LED,当按下时亮,松手时灭...
return 0; \/\/无键按下,返回0 } main(){ unsigned char key;while(1){ key=kbscan();switch(key){ case 0x11:P0=0xfe;break;case 0x12:P0=0xfd;break;case 0x14:P0=0xfb;break;case 0x18:P0=0xf7;break;\/\/+ case 0x21:P0=0xef;break;case 0x22:P0=0xdf;break;case 0x24:...
在用LY-51S单片机开发板德飞莱单片机盒子,独立按键只有8个,不够用怎 ...
可以外接按键,最好用矩阵键盘,这样可以节约IO口。
在51单片机中用c语言写程序实现用一个按键控制8个灯的亮和灭(按下按 ...
你首先要确定你的电路。选择什么单片机和数码管,8个按键最简单8个IO口控制。一般简单的是用三极管驱动数码管。如果你会C语言的话,很容易上手。自己先从控制1个数码管学,在控制2个数码管(2个数码管基本上可以完成上面试验,8个就可以类推)\\r\\n\\r\\n1、初始值为0:上电复位后,单片机驱动数码管...
51单片机,4*4矩阵键盘,八位数码管
51单片机,4*4矩阵键盘,八位数码管,仿真实例可以参考一下。include<reg51.h> define uchar unsigned char uchar temp;int key1,key,disbuf;\/\/ 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x...
单片机某一个8位并行口连接8个按键,问:判断某一位按键是否按下,用...
判断某一位按键是否按下,用“位操作指令”即可,不需要任何运算。
怎么设计基于51单片机的八位抢答器课程设计用c语言?
1:主持人端有一个单片机设备 且设备有一个或多个按键,单个按键,那么就做成按键复用,如果是多个按键,那就可以按要求设置按键功能和数量。参赛队每队一个设备,如果不方便能过连线来通讯,就采用无线通讯,抢答端只需一个按键按键,同时在按键里或边上用指示灯来指示状诚。2:逻辑,当主持人按下...