AT89C52单片机控制发光二极管的亮灭的C程序编程如何写?

作者&投稿:白皇 (若有异议请与网页底部的电邮联系)
单片机控制一个led灯亮灭C编程~

#include //52系列单片机头文件
#define uint unsigned int //宏定义
sbit led1=P1^0; //声明单片机P1口的第一位
void delay1s();//声明子函数
void main() //主函数
{
while(1) //大循环
{
led1=0;/*点亮第一个发光二极管*/
delay1s();//调用延时子函数
led1=1;/*关闭第一个发光二极管*/
delay1s();//调用延时子函数
}
}
void delay1s()//子函数体
{
uint i,j;
for(i=500;i>0;i--)
for(j=110;j>0;j--);
}

/***32灯流水——火柴天堂作品-20130520***/
/***52单片机,12MHz晶振,P0-P3 接32颗LED,低电平驱动***/
#include"REG52.h"//包含52头文件
#define TRUE 1//定义布尔量'1':真
#define FALSE 0//定义布尔量'0':假
#define uchar unsigned char//定义 无符号字符型数据 简称
#define uint unsigned int//定义 无符号整型数据 简称

#define th0 0xb1
#define tl0 0xe0//20ms at 12MHz Fosc in Model 1

#define LED_Port1 P0
#define LED_Port2 P1
#define LED_Port3 P2
#define LED_Port4 P3
#define LED_AllOff LED_Port1=LED_Port2=LED_Port3=LED_Port4=0xff
#define LED_AllOn LED_Port1=LED_Port2=LED_Port3=LED_Port4=0
#define LED_Status 43//1步全亮+32步单亮+10步闪烁
#define LED_Marquee 32

bit T20msFlag=0;
void Timer0() interrupt 1
{
TL0=tl0;
TH0=th0;
T20msFlag=TRUE;
}
void TimerInit()
{
TMOD=0x01;
TH0=th0;
TL0=tl0;
TR0=1;
ET0=1;
EA=1;
}
void LED_Out()
{
static uchar led_status=0;
if(T20msFlag)
{
T20msFlag=FALSE;
led_status=++led_status%LED_Status;
}
if(led_status && led_status<=LED_Marquee)
{
LED_AllOn;
switch((led_status-1)>>3)
{
case 0:LED_Port1=1<<((led_status-1)%8);break;
case 1:LED_Port2=1<<((led_status-1)%8);break;
case 2:LED_Port3=1<<((led_status-1)%8);break;
case 3:LED_Port4=1<<((led_status-1)%8);break;
default:led_status=0;break;
}
}
else
{
if(!led_status && led_status%2) LED_AllOn;
else LED_AllOff;
}
}
void main()
{
TimerInit();
while(1)
{
LED_Out();
}
}

这种最基本的程序随便拿本书或网上一搜都是啊

#include <AT89X51.H> 

sbit K1=P3^0; 

sbit L1=P1^0; 

void main(void) 

  while(1) 

    { 

      if(K1==0)       //开关闭合

        { 

          L1=0; //灯亮 ---p1.0输出低电平 ,L1有电势差。

        } 

        else 

          { 

            L1=1; //灯灭 

          } 

    } 

}




89c52单片机怎么进入掉电模式
不是所有的89C52单片机都可以进入掉电模式的,STC89C52可以进入掉电模式。1、当PCON寄存器的D1也就是PCON.1或者叫PD位置1时,单片机进入掉电模式,该模式也叫停机模式。2、进入掉电模式后,内部晶振停震,CPU、定时器、看门狗、串口都停止工作,外部中断继续工作。如果低电压检测被允许,也可以继续工作...

89c52单片机开发板4位LED显示计数汇编语言程序
CLR TR1 MOV TH1,#0ECH MOV TL1,#78H SETB TR1 MOV DPTR,#LEDTAB T100:MOV R0,#DAT MOV A,SCANLED ADD A,R0 MOV R0,A MOV A,SCANLED JNZ T101 MOV P2,#08H SJMP T1DIS T101:DEC A JNZ T102 MOV P2,#04H SJMP T1DIS T102:DEC A JNZ T103 MOV P2,#02H SJMP T1DIS ...

stc单片机89C52与我们平常说的51单片机编程时应主意什么 啊?
STC的89C52兼容普通的AT89C51单片机,并且还有一些扩展功能,比如串口编程、P4端口等等。C语言里面没有什么需要注意的,C语言在不同的单片机之间都能比较容易的移至,何况是同一类的单片机,几乎不用做任何修改。汇编语言我也是刚刚接触,感觉STC单片机的扩展功能在汇编编程的时候,地址容易弄错 ...

AT89C52RC单片机频率12MHz,用定时器1及中断的方法,产生周期为1s的等宽...
include<reg52.h> define uint unsigned int define uchar unsigned char sbit d1=P1^0;uchar num1;void main(){ TMOD=0x01;\/\/设置定时器0为工作方式1 EA=1;\/\/开总中断 ET0=1;\/\/开定时器0中断 ET1=1;TR0=1;\/\/启动定时器0 TR1=1;while(1){ if(num1==2){ num1=0;d1=~d1;...

89c52单片机计算
你的这段代码是为了计算吗?单片机的代码是交给单片机来执行的,他的计算结果是不会显示的。若想看结果可以用VC++或turbo C 代码为:include"stdio.h"include"math.h"main(){ int t0,T;t0=(int)(-412.6)+140.41*(sqr(1.0+0.00764*500);T=(int)(5.14\/(0.98*0.000010514)+t0...

求一个89c52单片机的光控呼吸灯程序 ,就是边呼吸边移动的,相当于呼吸...
void delay(uint t)\/\/延时程序 { uint i,j;for(i=t;i>0;i--)for(j=110;j>0;j--);} void flicker(uint led)\/\/呼吸灯 flag==1逐渐变亮flag==0逐渐变暗 { uint flag=1;while(1){ P1=led;delay(light);P1=0xFF;delay(t1-light);if(flag==1)light++;else light--;if(...

基于89C52单片机的时钟程序设计~~硬件下面有图,要软件编程
ET0 = 1;TR0 = 1;} 定时器采用模式2,8位自动重装初值方式。初值计算方法:时钟频率设计为500kHz,则定时时间t=1\/f=1\/500k=50us 采用12M晶振,机器周期为1us 根据公式:定时时间t=(2^8-x)*1us 计算初值x=2^8-50\/1=256-50=206=0xce 改程序是已经实现过的,希望可以帮助你。

STC89C52RC与普通89C52有什么区别
反对@JongHsueh关于内置RC振荡电路的回答。为了搞清楚STC89C52和STC89C52RC的区别,我特地去问了宏晶的技术人员。技术人员的回复是,两者在烧录和应用上是可以相互替代的,除了支持的最大工作频率不一样之外,没有任何其他区别,尽管相互替代。某宝上,STC89C52RC单片机后面带40I,表示最大工作频率40MHz,工...

80C52与89C52有何区别?
STC80C52是宏晶公司的增强型MCS-51单片机,与Atmel公司的AT89C52相比,有以下优点:支持STC的2线制下载方式,下载程序更方便 支持6T模式(在6T模式下,6个时钟周期就是一个机器周期)片内集成了4kB容量的E²PROM 带有P4口,具有更多的I\/O 程序存储器拥有更多的擦写寿命(STC标称可以擦写10万次...

利用单片机设计59秒计时器
利用单片机设计59秒计时器 利用89c52单片机设计一个59秒计时器,使用两位共阳极LED数码管将其显示出来 ...void tmint(){ T0CS=0; \/\/TMR0工作于定时器方式 PSA=1; \/\/TMR0不用分频 T0IF=0; \/\/清除

南川市15522781518: 我想做一个基于单片机AT89C52通过一个按键来控制LED的亮与灭,就是按一下亮了,再按一下就灭了! -
徒秀降糖: 按你的程序写sbit key = P1^1; 电路图也要连到P1^1才行啊,程序看起来没什么问题,电路图按键应该连到P1^1,而不是P0^0;

南川市15522781518: 我刚接触单片机C语言这个学科,我想用仿真程序中AT89c52这个芯片接一个心形,LED发光二极管和电阻要怎么接
徒秀降糖: 你使用单片机的一个IO口连接LED灯(注意阴阳极)后串接一个10K的电阻后接到5V电源上即可,然后通过单片机输出低电平即可点亮LED,高电平熄灭.

南川市15522781518: 单片机如何点亮第一个发光二极管? -
徒秀降糖: 不是你的编程格式不对.int main(void) { while(1) { d1 = 0; } } 注意程序内部一定要加个大循环,否则RAM内存执行溢出就会产生错误,程序跑飞.

南川市15522781518: 用52单片机怎么编一个能控制一个LED灯发出sos信号的程序 -
徒秀降糖: 单片机上的8位数码管,每个数码管由8只发光二极管组成(7个用来显示数字一个用来显示小数点),可以显示数字1到9,当然也可以显示F、E、S这样的字母.首先楼主应该清楚你用的52芯片的电路构成,就是说控制这些发光二极管的信号是...

南川市15522781518: 利用单片机控制8个发光二极管,设计8个灯同时闪烁的控制程序 - 上学...
徒秀降糖: 这个我刚做了,如果不是高电压,大电流,AT89s52也能控制,继电器控制,只要一个三极管(9013,9014,9015,8050,8550这些三级管都可以)放大就行了,在网上有图可以搜到,我也是在网上搜到的,至于发光二级管的亮和灭,你可以把控制继电器和发光二极管用同一个I/O引脚就可以,不过要是单片机不接驱动芯片的话,就像74LS244或74ls245之类的话,就要上拉一个电阻,不过也可以让发光二极管低电平放光,同时继电器吸合,继电器你就跟那个卖电子元器件的老板说要输入时5V直流的,小信号的话,输出的大小无所谓,当然,体积小一些应该便宜一些,当然接上光耦更好,不接光耦也可以控制

南川市15522781518: 单片机是怎样控制发光二极管的亮与不亮 -
徒秀降糖: 1.LED的阳极接地,阴极接单片机IO口,那么IO口高电平,LED灭,低电平,LED亮2.LED的阴极接地,阳极接单片机IO口,那么IO口高电平,LED亮,低电平,LED灭

南川市15522781518: 通过AT89C51单片机控制4个发光二极管发光,实现亮点每一秒由低位到高位循环移动 -
徒秀降糖: 这个很简单了,按照我说的步骤,一步一步地,把问题分解开来做: 1.实现点亮一个LED 2.实现点亮任意位置上的一个LED 3.实现点亮一个LED,并让他1秒亮,1秒灭接下来,剩下的工作,相信你一定能完成了.当然,这中间如果遇上了什么困难,你还可以百度hi我我不太赞成直接把答案给你,这样并不是在帮助你,相反是在害你,祝你成功!

南川市15522781518: AT89C52芯片能做什么 -
徒秀降糖: 呵呵,当然可以,如果你不嫌麻烦,可以自己买块板子焊接,只有一块AT89C52还不行;也可以用单片机开发板做,不过得用keil软件编写一个程序,相关资料可以百度一下.

南川市15522781518: 怎么使单片机直接控制发光二极管 ? 没有锁存器~ 谢谢 -
徒秀降糖: 单片机输出脚接一个200欧的电阻,电阻另外一头接发光二极管的负极,发光二极管的正极接单片机正电源(5伏或3.3伏) 软件让所述输出脚输出1灯灭,输出0灯亮.

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