在51单片机中用c语言写程序实现用一个按键控制8个灯的亮和灭(按下按键全部灯亮,按下按键全部灯灭)

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

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

早上起来没有什么事,跟你写个简单的供您学习与参考吧,这个程序是对应某个按键按下,对应序列号的灯就亮起来,释放按键,则灯灭,都是低电平有效。至于其他功能,你可以自己扩展吧。我只写2个,8个太多了,懒的动了。
#include
#include
sbit KEY1 = P1^0;
sbit KEY2 = P1^1;

sbit LED1 = P2^0;
sbit LED2 = P2^1;

void main(void)
{
//有必要的话,这里先对单片机各类寄存器进行初始化,这里因为简单,未做相关初始化工作
for(;;)
{
if(KEY1==0)//如果按键1被按下
{LED1=0;}//开启LED1灯
else{LED1=1;}//否则关闭LED1等,以下雷同....


if(KEY2==0)
{LED2=0;}
else{LED2=1;}


}//end main-for(;;)




}//end main;

你首先要确定你的电路。选择什么单片机和数码管,8个按键最简单8个IO口控制。一般简单的是用三极管驱动数码管。如果你会C语言的话,很容易上手。自己先从控制1个数码管学,在控制2个数码管(2个数码管基本上可以完成上面试验,8个就可以类推)\r\n\r\n1、初始值为0:上电复位后,单片机驱动数码管显示0.(如果不会,百度里搜51控制数码管等关键字,特别多试验电路和程序。)\r\n2、按第一个键:原理就是按键中断,直接跳到中断程序里,中断程序就是显示12345678(程序里是二进制码,单片机只认识0和1)。\r\n3、数码管移动显示,其实就是data脚的数据给的不一样,这个地方注意延时,你可以尝试改变延时时间看看效果。\r\n4、同3;\r\n5、12345678和ABCDEFGH的二进制码不同而已;\r\n6、同5.\r\n7、数码管全亮就相当于给data脚全为高(或者为低),和电路有关。\r\n8、同7.\r\n9、点阵显示按键键号。(数码管有小数点,只是也是一个data脚而已)\r\n\r\n----------------------------------------------------------------------自己多去百度找找学学,对个技能还是有点用的。


在51单片机中用c语言写程序实现用一个按键控制8个灯的亮和灭(按下按 ...
一般简单的是用三极管驱动数码管。如果你会C语言的话,很容易上手。自己先从控制1个数码管学,在控制2个数码管(2个数码管基本上可以完成上面试验,8个就可以类推)\\r\\n\\r\\n1、初始值为0:上电复位后,单片机驱动数码管显示0.(如果不会,百度里搜51控制数码管等关键字,特别多试验电路和程序。)\\r...

用c语言循环语句怎么写一个51单片机的时钟啊,用8个数码管显示时间...
include<reg51.h> define uchar unsigned charuchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};\/\/0-9unsigned char sec=0,min=0,hour=12,scanled;unsigned char key,flashbit,mode,time; unsigned char disdat[8];sbit led=P1^0;void delay(...

所谓的51单片机C语言与C语言程序设计有什么区别?
51单片机C语言是对标准C语言的扩展.例如: 51单片机C 中会有特有的 sfr 关键字用来定义51单片机的寄存器, 会有对位元操作的 sbit 关键字, 这些都是你在初始化单片机时, 需要用到的, 这些都是针对 51 单片机硬件平台的扩展.编程时的算法都是相同的, 另外还有因为单片机的资源有限, 不要在单片机中...

在51单片机中用c语言keil写程序实现用一个按键控制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);\/\/适当延时,消除按键抖动,自己看实际情况...

51单片机中如何用c语言控制直流电机正反转
include"reg52.h"include"intrins.h"define unint unsigned int define unchar unsigned char define PLAY_OUT P1 unchar sec=0;unchar min=0;unchar count=0;bit gj=0; \/\/光和遥控的切换 unchar r6,r7;bit time0=1;bit time1=1;sbit PLAY_Q_Q=P3^0;sbit PLAY_Z=P3^1;sbit PLA...

学51单片机用汇编还是用C语言比较好?先学汇编可以吗?
绝对可以,我就是先学习的汇编语言,只有学习了汇编才能真正的了解单片机。。 如果不了解单片机的构造及原理,学c很快就会厌倦。不过c就是简单点,容易上手, 我先学的是汇编,也感觉不是很难。

51单片机C语言编程
\/\/ 51单片机C语言编程,这个时钟+秒表可以参考一下。include<reg51.h> define uchar unsigned char define uint unsigned int sbit qingling=P1^0; \/\/清零 sbit tiaofen=P1^1; \/\/调分 sbit tiaoshi=P1^2; \/\/调时 sbit sounder=P1^7; \/\/naozhong uint a,b;uchar hour,minu,sec, ...

用C语言编写,使用51单片机生成0--9不重复数字。请问用什么做随机种子...
\/\/正好我在做一个抽奖程序,有一段随机数去重代码,你可以借鉴一下。\/\/这种算法比较节省空间(至少我是这么觉得)\/\/用一个unsigned int型变量,记录已生成的随机数,代码如下#include <reg51.h>#include<stdlib.h>unsigned int random = 0x00;unsigned char nums[10] = {0};void myrand(){ ...

51单片机语言和C语言有什么不同?
51单片机可以用c来编写 ,也可以用汇编语言来编写 。现在好多单片机都是用c来编写的,这样比汇编大大地提高了效率。并且编程员,也感觉比汇编编写简单的多。

51单片机只能用c语言编程吗
编程的目的是让51单片机运行,在记忆中我只记得51单片机可以运行C语言和汇编,其实C语言编译后也就是汇编,在单片机上运行的只是一个个指令,简单的用51,复杂的用arm处理器。百度试试

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

韶关市19760488224: 在51单片机中用c语言keil写程序实现用一个按键控制6个灯的亮和灭(按下按 -
豆卢冯银黄: #include<reg51.h> sbit key=P1^0; sfr LED=P0; main() { while(1) if(key==0)P0=0xc0; else P0=0xff; }

韶关市19760488224: 51单片机用C语言编写程序实现从30H单元开始的连续10个单元取数,一次存入到以40H单元开始的10个单元中. -
豆卢冯银黄: unsigned char i; unsigned char *Px1,*Px2;Px1=0x30; Px2=0x40; for(i=0;i<10;i++) {*Px2=*Px1; }

韶关市19760488224: 求:如何将C语言程序弄进51单片机? -
豆卢冯银黄: C语言是人能用的文字语言,单片机只能用由0和1组成的机器语言,要想单片机运行C语言,拢共要三步:1)写C语言程序.2)用编译软件编译C程序并生成hex代码.3)用下载线或烧录器将hex代码写入单片机.

韶关市19760488224: 求助,我想在51单片机上用C程序实现0 - 999的任意数字输入,能够帮忙写一个吗?或者是思路!谢谢 -
豆卢冯银黄: 给个思路吧,我以前写过,挺麻烦的 先设置一个数组 a[4]你到999四位够了 再设置一个按键计数变量b 每次按下一个按键将按键值放入对应的a[b-1]中 最后的输出值,c=a[3]*1000+a[2]*100+a[1]*10+a[0] 不明白可以追问

韶关市19760488224: 怎么用c语言写一个51单片机的密码锁程序 -
豆卢冯银黄: 这是一个你这样的键盘扫描程序,你直接在最下面的switch case里面改一下,改成你要的功能就行了,然后再自己稍微添一下自己要的功能就ok了.做这些自己一定要亲自上手,不然真的没有意思.我只能提供这么点帮助了,希望能帮到你....

韶关市19760488224: 51单片机问题 编写4个LED数码管循环显示2008的程序. 用C语言写.. -
豆卢冯银黄: #include<reg51.h> //----------------------------------------------- void delay(unsigned int i) //延时 {unsigned char j;while(i--) for(j = 0; j < 115; j++); } //----------------------------------------------- void main(void) {unsigned char n1;unsigned char code SEG[] = {0xc0, ...

韶关市19760488224: 用c语言对51单片机编写一个计算方波周期的程序,晶振为12Mhe! -
豆卢冯银黄: 测量T1输入方波周期的程序如下:TMOD = 0x50 //令T1方式1计数 while(T1); while(!T1); TR1 = 1; while(T1); while(!T1); TR1 = 0;完毕,方波周期在TH1、TL1中.

韶关市19760488224: 51单片机 用c语言 调用 - nop - 编一个 延时一秒 程序 -
豆卢冯银黄: 这么给你说吧,不同的编译器同样的C语言语句编译出来的时间不完全一致,举个简单例子;for(i=0,i<=100;i++) for(j=0;j<=10;j++); 和 for(i=0,i<=10;i++) for(j=0;j<=100;j++); 其实理论上来讲,这个时间都是一个指令周期*10*100,对吧,但是...

韶关市19760488224: 单片机 reset 的C语言实现 -
豆卢冯银黄: 这个是曾经一个天才级的年轻人写的语句 #define Reset() ((void (code *) (void)) 0x0000) ()你在要复位的的时候,添加Reset();就可以实现软件复位了

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