用C语言怎么在单片机AT89C51上编写一个用一个开关控制一个灯亮和灭的程序

供稿:hz-xin.com     日期:2025-01-15
用C语言怎么在单片机AT89C51上编写一个用一个开关控制16个灯亮和灭的程序

你买一块单片机开发板对照单片机编程书就能搞定了,花点时间。需求有点模糊,要具体。

读取连接按键的IO口,判断是否为低电平,如果是,延时(十毫秒左右可以),再次读取IO口,判断是否为低电平,如果是则表示有有效的按键按下,接着用while判断等待按键释放,然后让连接led的IO口电平取反以控制其亮灭(是强电的灯可以通过此处控制继电器的合、闭来控制灯的亮灭)。参考程序:if(key==0){delayms(10);if(key==10){while(key==0);//等待按键释放,IO口恢复高电平led=!led;//按键控制程序}}

电路有问题啊,电源怎么能直接接到GPIO,这样大电流会损坏IC。P1口好像没有外部中断,那只有轮询了。这个就是按键检测嘛,网上一堆代码,so easy!

#include<reg51.h>
sbit LED=P1^0;
sbit KEY=P1^1;
main()
{
while(1)
{
LED=KEY;

}

}

单片机at89c51用C语言编写报警器
include<reg51.h>#define uchar unsigned charuchar time;sbit spk=P1^0;void t0isr() interrupt 1{TH0=t_h;TL0=t_l;spk=~spk;}void t1isr() interrupt 3{TH1=(65536-50000)\/256;TL1=(65536-50000)%256;time++;time%=6;if(time==0){t_h=(65536-500)\/256;t_l=(65536-500)%256;...

单片机AT89C51用C语言编,两个按钮分别控制一个数码管加减数,最好用中...
include<reg51.h> define uchar unsigned char uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; \/\/0到f uchar dat;void ext0() interrupt 0 { dat++;dat%=10;P1=distab[dat];} ext1() interrupt 2 { if(d...

用C语言怎么在单片机AT89C51上编写一个延时10秒的程序?
\/\/使能定时器1中断 EA =1; \/\/开总中断 while(1) { }}void TIMER1(void) interrupt 3 \/\/定时器1中断函数使用默认寄存器组{ TH1 = 0XFF; \/\/定时器1定时时间=500us TL1 = 0X06; YSJS++; if(YSJS==20000) \/\/...

求用单片机设计一个秒表AT89C51
;汇编程序如下。;使用T0定时方式1,每隔50ms中断一次,用于修改时间及显示 ;使用外部中断0、1,用于控制启动和清零 ;=== ORG 0000H AJMP MAIN ORG 0003H AJMP X0_INT ORG 000BH AJMP T0_INT ORG 0013H AJMP X1_INT MAIN:MOV TMOD,#01H ;T0定时方式1 MOV TH0, #(65536-5000...

用C语言在·at89c51单片机点亮一个led灯
用c啊,我想想:1、和硬件有点儿关系,这个你清楚么?2、假设led连接到p1口吧。第一个灯接到p1.0。阴极接io,阳极接5v。include bit secflag;unsigned char ms;void display(unsigned char num,unsigned char sec){ num%=8;p1=~(1< >8;tl0=-50000;ms++;if(ms>20){ms=0;secflag=1;}...

at89c51单片机怎么用汇编语言写“多个延时程序”
单片机汇编语言中要使一个延时程序可以被不同情况下调用而延时不同的时间,可以通过类似于C语言中传递参数的方式来实现,举例如下:ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV P0,#5AH ;P0上的LED灯间隔点亮 MOV R7,#50 ;R7是延时传递参数 LCALL DELAY ;调用延时函数 MOV P0,#0A5H ...

用c语言做单片机at89c51控制一盏led灯亮程序图片
include<reg52.h> sbit d0=P1^1;void main (void){ d0=0;while (1){ } }

用C语言编写AT89C51单片机程序,设计一个智能数字钟。
int i;\/\/***时钟的 uchar one[10]={0xbf,0xb0,0xdb,0xcf,0xe6,0xed,0xfd,0x07,0xff,0xef}; \/\/NPN,阿拉伯数码(共阳数码管专用)\/\/uchar one[10]={0x40,0x4f,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; \/\/PNP三极管,低电平使能 uchar three[6]={0xfe,0xfd,0xfb...

用AT89C51单片机实现四位数码管显示数据!!用c语言程序实现!!例如显...
uchar led[]={0,4,1,2};void t0isr() interrupt 1 { TH0=(65536-5000)\/256;TL0=(65536-5000)%256;switch(num){ case 0:P2=0x01;break;case 1:P2=0x02;break;case 2:P2=0x04;break;case 3:P2=0x08;break;default:break;} P0=~tab[led[num]];num++;num&=0x03;} main(){ ...

求89C51单片机与PC链接并运行的步骤。(从keil编写程序(C语言)到单片...
第1步:打开Keil uVision2\/3 第2步:新建工程 project->new project 将弹出 creat new project框,写入工程名称,例如 test。为了便于集中管理建议新建一个文件夹(上面第二个图标)。点击确定后 弹出一个芯片选择项,你可以选一个。例如选atmel AT89C51。很多单片机,上面可能没有列举,我们任意选一个...