用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!!!!!!!
判断开关对应的端口电平,改变led对应端口即可。
交替闪烁就是在循环中让两个LED端口交替高低电平。
循环中加入延时。延时函数我用循环实现。题目没有要求精准延时,如精准需用中断。
#include
#define uInt unsigned int
sbit D1=P2^0;
sbit D2=P2^1;
sbit S1=P3^2;
voidmDelayuS( uInt us );
void main()
{
if(S1)
D1=D2=0;
while(S1==0) D1=!D2,mDelayuS(1000),D2=D1;
}
voidmDelayuS( uInt us )
{
while ( us -- ); /* 24MHz MCS51 */
}
bit flash;//闪烁标志位
sbit led=P0^0;
sbit P01=P0^1;
sbit P02=P0^2;
void main()
{
P01=P02=0;
flash=0;
led=0;
while(1)
{
scankey();
ledflash();
}
}
void scankey()//键盘扫描
{
P01=1;//行线给1
if(P02)//如果P02也是1则说明接通
{
delay(10);//去抖动10MS
if(P02)//再次确定按键按下
{
while(P02){flash=flash}//按住按键的动作
flash=~flash;//按键按下后执行动作
}
}
}
void ledflash()
{
if(flash)
{
led=1;//点亮
delay(100);//延时100MS
led=0;//熄灭
}
else led=0;
}
void delay(unsigned int i)
{自己根据单片机频率写个1MS带形参的演示程序}
这个程序是现写的。。应该能执行,有些细节没有写,自己修改下,只是个大框而已(比如函数声明,定义端口什么的)
C语言实现LED灯闪烁控制配套51单片机开发板。
#include //包含单片机寄存器的头文件
/****************************************
函数功能:延时一段时间
*****************************************/
void delay(void) //两个void意思分别为无需返回值,没有参数传递。
{
unsigned int i; //定义无符号整数,最大取值范围65535。
for(i=0;i<20000;i++) //做20000次空循环。
; //什么也不做,等待一个机器周期。
}
/*******************************************************
函数功能:主函数 (C语言规定必须有也只能有1个主函数)。
********************************************************/
void main(void)
{
while(1) //无限循环。
{
P0=0xfe; //P1=1111 1110B, P0.0输出低电平。
delay(); //延时一段时间。
P0=0xff; //P1=1111 1111B, P0.0输出高电平。
delay(); //延时一段时间。
}
}
单片机驱动LED灯的源程序:
#include<reg52.h> //头文件。
#define uint unsigned int
#define uchar unsigned char
sbit LED1=P1^7; //位定义。
void delay_ms(uint);//mS级带参数延时函数。
void main()
{
while(1)
{
LED1=0;
delay_ms(1000);
LED1=1;
delay_ms(1000);
}
}
void delay_ms(uint z) //延时子程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
扩展资料:
单片机应用分类:
通用型:
这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。
总线型:
这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接。
另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。
控制型:
这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型。
通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。
参考资料来源:百度百科-单片机
可以用外部中断计数,来实现流水灯的正转、暂停、以及反转和爆闪。。这是我前几天写的一个这样的程序,楼主可以结合protues 画图仿真,注意程序中所用到的IO端口就行了。
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
uchar a,b;
void delay(uchar z)
{
uchar i,j,k;
for(i=z;i>0;i--)
for(k=20;k>0;k--)
for(j=110;j>0;j--);
}
void begain()
{
EA=1;
EX0=1;
IT0=1;
}
void main()
{ a=b=0;
P0=0xfe;
begain();
while(1)
{
if(a==1)
{
P0=_crol_ (P0,1);
delay(50);
}
if(a==3)
{
P0=_cror_(P0,1);
delay(50);
}
if(a==4)
{
P0=0x00;
delay(50);
P0=0xff;
delay(50);
P0=0xfc;
}
if(a==5)
{
a=1;
}
}
}
void int0() interrupt 0
{
a++;
if(a==5)
{
a=1;
}
}
百度一下 郭天祥51单片机 有你需要的
...单片机,用4*4矩阵键盘输入数据,并在LCD1602上显示出来的c语言...
void lcd1602_WriteCmd(const uchar cmd){lcd1602_CheckBusy();lcd1602_rs=0;lcd1602_rw=0;lcd1602_e=1;LCD1602_PORT=cmd;lcd1602_e=0;} \/*** 函数名称:lcd1602_WriteData()* 函数功能:写数据* 入口参数:c--待写数据* 出口参数:无***\/ void lcd1602_WriteData(const uchar c){lcd1602_...
用C语言编写一段程序,使用查表的方式使单片机控制DAC0832产生一个电压...
用C语言编写一段程序,使用查表的方式使单片机控制DAC0832产生一个电压值在0~5V之间的方波。#include<reg52.h> //包含头文件#include<intrins.h>#define uchar unsigned char /
一个用C语言做51单片机做流水灯控制向左移动一位,右边补0的一段程序...
\/\/右边补0,直接移位就可以temp<,=1; 如果流水灯只有一个亮,下面的程序就是对的,移位之后补1.include "reg51.h"void delay(unsigned char m);main(){ unsigned char temp;temp=0xfe; \/\/temp=1111 1110,使得P1口的某个引脚为低电平(亮)while(1){ P1=temp; \/\/P1口的数据来自...
单片机,C语言编程的问题,编一个程序。
DispBuf[5-i]=m%10; \/\/为便于理解,楼主可随写几个6位以内数字,推敲该小段程序即可 m=m\/10;} } void mDelay(uint Delay) \/\/延时程序 { uint i;for(;Delay>0;Delay--)for(i=0;i<124;i++);} main() \/\/中断方式{ unsigned long m;P1=0xff; \/\/流水灯禁用 P0=0xf...
以51单片机为基体 用C语言设计一个计数器 要求显示数据8位 有复位功 ...
void dis_cnter(void) 显示计数器值子程序开始 {uchar i; 定义字符型局部变量i P3_7=1;P3_6=1; 消隐有效,允许显示 for(i=0;i8;i++) 循环8次 {SBUF=SEG7[cnt];while(!TI);TI=0;} 根据8个单元的计数值查表发送显示 P3_7=0; 关闭消隐,正常显示 } 显示计数器值子程序结束 void ...
单片机用c语言,按钮控制一个LED灯,要求按下松开,LED亮,按下松开,LED...
\/\/不懂得可以查一下资料 }。3、打开烧写软件,点击【打开文件】,寻找刚刚编写的程序。4、找到相应的文件夹以后,寻找HEX文件。这是所能烧写软件识别的程序。5、找到程序以后,将单片机连接到电脑,并点击程序下载,将程序烧写进单片机。6、程序下载进单片机以后就能够看到八个led点亮了前面三个。
高分 急 C语言编写 单片机 关于电子钟的程序
const scan[]={0xFE,0xFD,0xFB,0xF7,0xef};\/\/选定第几个数码管 typedef struct\/\/定义时间结构体 { char week;\/\/星期 char hour;\/\/小时 char minute;\/\/分 char second;\/\/秒 } time;unsigned char timer0_tick,i=0,keyA=0,keyB=0,mode=0;time now;static void timer0_isr(void...
需要一个C语言程序。51单片机控制:按键按一下,延迟1分钟后开灯,灯亮半...
如果对时间要求不精确,用软延时即可。include<reg52.h> define uchar unsigned char define uint unsigned int sbit s=P1^0;sbit led=P1^1;void delayms(uint i) \/\/1ms延时程序 { uchar j;for(;i>0;i--){ for(j=0;j<125;j++)\/\/如果延时时间误差较大,可按比例改变125这个数 \/\/取值...
用C语言编写,单片机89C51控制,四个按键控制灯亮,用一个P3口控制8个LED...
\/*图片上的P3.3口不接,LED 正端接个470欧电阻到5V电源,LED负端接P3口*\/ include"c51.h"include"stdio.h"define Key0 P1^0 define Key1 P1^2 define Key2 P1^3 define Key3 P1^4 define LED0 P3^0 define LED0 P3^1 define LED0 P3^2 define LED0 P3^...
...让前三个LED灯分别以1ms,1s,5s的频率闪烁,怎么用c语言写,谢谢...
LED1 1ms闪烁人眼分辨不出来 定时器设定为16位定时50ms 另设一变量作定时器中断计数,到10(0.5S)的倍数时LED2取反,到50(2.5S)的倍数时LED3取反 include<reg52.h> sbit led1=P0^0;sbit led2=P0^1;sbit led3=P0^2;unsigned int count;void main(){ TMOD=0x01; \/\/定时器0...
蔚萱噻吗: #include <reg52.h> //52系列单片机头文件 #define uint unsigned int //宏定义 sbit led1=P1^0; //声明单片机P1口的第一位 void delay1s(); //声明子函数 void main() //主函数 {while(1) //大循环{led1=0; /*点亮第一个发光二极管*/delay1s...
鄢陵县17865389881: 51单片机控制led亮5分钟灭五分钟循环5次 c程序怎么写? - ?
蔚萱噻吗: -(void) processDigit:(int)digit{ currentNumber = currentNumber *10 + digit;[displayString appendString: [NSString stringWithFormat : @"%i",digit]]; display.text = displayString;}-(IBAction) clickDigit: (UIButton*) sender{ int digit = sender.tag; [self processDigit:digit];}
鄢陵县17865389881: 单片机C语言按键控制LED灯 - ?
蔚萱噻吗: 其实是一样的,也没什么哪个规范这一说,这个看个人习惯了首先if(SW13==0)是判断此引脚是否为0 (按键按下)然后一个delay用于按键防抖动 没被注释的那部分是靠if在次判断是否为0按下按下后执行LED_ON函数使LED亮然后通过while...
鄢陵县17865389881: keil软件用单片机控制8个LED流水灯来回点亮(C语言程序) - ?
蔚萱噻吗: #include "reg51.h"main(){unsigned int i,j;while(1){P1=0xfe; //点亮第一个LEDfor(i=200;i>0;i--)for(j=500;j>0;j--);P1=0xfd; //点亮第二个LEDfor(i=200;i>0;i--)for(j=500;j>0;j--);P1=0xfb; //点亮第三个LEDfor(i=200;i>0;i--)for(j=500;j>...
鄢陵县17865389881: 单片机控制单个LED闪烁五下的c程序,希望能加讲解,谢谢啦 - ?
蔚萱噻吗: c语言程序很简单: #include<reg51.h>//包含头文件 sbit LED=P1^0;//位变量定义 void main()//主程序 { unsigned char i;//声明一个变量 for(i=0;i<5;i++)/循环5次 { LED=0;//亮 delayms(500);//延时 LED=1;//灭 delayms(500);//延时 } while(1);//停止不动 } 延时子程序随便搜一个,如果时间差别太大,可调某些参数
鄢陵县17865389881: 用C语言编写,单片机控制LED灯并用定时器延时,每隔一秒使LED依次点亮 - ?
蔚萱噻吗: 定义一个引脚,用一个while,分别赋值0.1,中间用delay()
鄢陵县17865389881: 单片机 用c语言编写 一个按键切换led样式 - ?
蔚萱噻吗: 将按键一边接单片机I/O口,一边接地.这样,按键按下时,该I/O口为低电平,未按下时是高电平(单片机上电后I/O口默认为高电平),假如按键接在了P1^0口,程序如下 #include<reg52.h> sbit key=P1^0; void main() {while(1){if(key==0){(led样式1程序)else{(led样式2程序)}}} } 这样,当按键按下时,led是样式一;松开时是样式二
鄢陵县17865389881: 跪求高手解决一个单片机的C语言编程(LED实验)?
蔚萱噻吗: /**************************************** **实验功能: ** 8个LED灯,先闪烁3次,再从左到右依次亮 ** 再从右到左依次亮,亮的时间延时1秒 ****************************************/ #include <AT89X52.H> void delay1s(void) { unsigned int uiTemp1 ; ...
鄢陵县17865389881: 信号变化控制led灯的亮灭,单片机c语言编程 - ?
蔚萱噻吗: 首先要看Led灯和单片机的连接情况,如果你只是控制亮灭,只需要看单片机端口控制即可,关键是配置端口的DDRx方向寄存器和PORTx数据寄存器,比如端口A的0引脚控制一个灯,要配置它的输出高电平或是低电平以达到控制灯的亮灭,那就 灯亮:DDRA |= BIT(0); //输出 PORTA |= BIT(0);//高电平 灯灭:DDRA |= BIT(0); //输出 PORTA &= ~BIT(0);//低电平 其余的就看你电路如何连接的,每个端口寄存器的每一位控制一个引脚,你可以查查芯片的数据手册,上边有个表格的.如果你要控制灯的亮暗程度,选择使用PWM输出来控制,你需要看定时计数器.
鄢陵县17865389881: 51单片机控制led灯,用c语言编程 - ?
蔚萱噻吗: 给你一个矩阵键盘的参考程序 行列扫描:通过高四位全部输出低电平,低四位输出高电平.当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低...