那位大神f1做过gp2y1010au0f吗?求单片机程序啊 AT52 只要是单片机的程序就好 急啊

求单片机大神 AT89C52 LED流水灯的每句程序的解析???????_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:78,142贴子:
求单片机大神 AT89C52 LED流水灯的每句程序的解析???????收藏
我是单片机白痴,上课没怎么听过。但期末考试要答辩,给了我们一片流水灯的程序要我们解析里面每句的意思。#include &reg51.h&sbit LED0=P0^0;sbit LED1=P0^1;sbit LED2=P0^2;sbit LED3=P0^3;sbit LED4=P0^4;sbit LED5=P0^5;sbit LED6=P0^6;sbit LED7=P0^7;void delay (unsigned int i);void main (){P0=0x00;LED0=1;delay (50000);LED2=1;delay (50000);LED4=1;delay (50000);LED6=1;delay (50000);LED1=1;delay (50000);LED3=1;delay (50000);LED5=1;delay (50000);LED7=1;delay (50000);}void delay (unsigned int i){for(j=0;j&i;j++);}希望各位大神能帮帮忙,谢了!!!
我来帮你吧!这个程序非常简单!
#include &reg51.h&这个是包含51的头文件sbit LED0=P0^0;这个倒下面都是位申明,就是在程序中用LEDX来代替IO口sbit LED1=P0^1;sbit LED2=P0^2;sbit LED3=P0^3;sbit LED4=P0^4;sbit LED5=P0^5;sbit LED6=P0^6;sbit LED7=P0^7;void delay (unsigned int i);申明一个带参的延时函数void main ()主函数开始{P0=0x00;首先令P0口全部拉低!算是一个初始化的过程LED0=1;delay (50000);让P0^^0也就是LED0为1,如果你的硬件连接的是高电平点亮的话,那小灯就会亮了!LED2=1;delay (50000);后面的也都是这个意思,挨个点亮小灯,后面都加的有一个延时函数的哦!LED4=1;delay (50000);LED6=1;delay (50000);LED1=1;delay (50000);LED3=1;delay (50000);LED5=1;delay (50000);LED7=1;delay (50000);}void delay (unsigned int i)这个就是延时函数的主体了!{定义一个无符号整形数据Jfor(j=0;j&i;j++);让它自己做空循环!就构成一个延时!}程序就这么简单,懂了?还有下次问别人程序的时候把你的硬件原理图贴出来,不然没有人能给你解答!
lz是读的高中还是大学啊?
怎么我写成楼主那个样子怎么连编译都不能够通过呀
全亮然后灭。延时的时间用软件算。
这难度。。。。大学生??????汗。。。。
顺序写下来思路清晰,but可以用个循环语句就可以实现
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或求大神,编一个STC89C52单片机的程序_百度知道
求大神,编一个STC89C52单片机的程序
,计数到一个值的时候反向计数(减法计数),用矩阵键盘控制初始数关于计数器计数的。。,用数码管显示出来
提问者采纳
=&&i++)&&&&nbsp,0xa4.}& //发0扫描;}&/zhidao/wh%3D450%2C600/sign=89fb1cfae91ea1eb90f737ad448ab251f;&number++;&&{&case 0:&nbsp:keyval=7;0x0f);case 0x12!=0)&TL0=()%256;TH0=()/256;&& else&LED2=LED3,0xb0;TR1=1;&&&LED4=keyval,r_dat,0xc6;&&nbsp:&nbsp.baidu,0xff}.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="{&&nbsp,0x8e:keyval=15,flag=0;case 5;&&&nbsp:&&&&&&nbsp:break.hiphotos:keyval=11;&if((P3&}&flag=0;&&LED2=(r_dat/100)%10; recode=(P3&{&nbsp:&&&case 0x24;sccode=(sccode&&P0=distab[LED3];delay(20);&nbsp.return 0;&j++):keyval=13;TH1=0&&nbsp:&&case 6;&break://g;uchar distab[]={0xc0;LED3=(r_dat/10)%10;&case 0x42;&}uchar kbscan(void){&nbsp,0x88;&TH0=()/256;break:P2=0x01;&nbsp,0x83:keyval=10;&case 3;&for(j=0; P3=sccode,0xf9;&{&case 1;{&&}&}&&key=kbscan():&&&case 0x14:P2=0x04;&nbsp://g;&&&LED4=0;&nbsp,0xf8;& //逐行扫描初值&/zhidao/pic/item/4b90f737ad448ab251f;P0=distab[LED4];&&case 0x41;&P3=0x0f;&break:keyval=4;& //延时去抖动&&nbsp,0x80;break:keyval=0case 0x44;&reg51;&&nbsp:keyval=3;number = 0;&nbsp,0x92;&&TL1=0启动&LED3=LED4;&&&&&nbsp.jpg" esrc="case 11;break!= 0x0f)&ET0=1;&case 2;{&nbsp,0x82;&case 7;break:&&nbsp,0x90;}&nbsp:keyval=8;case 0x48.hiphotos,0x86;case 3,返回0}void getkey(void){&r_dat=LED1*1000+LED2*100+LED3*10+LED4:keyval=14;case 0x22;&{&P0=distab[LED1];&TL0=()%256;while((sccode&case 0x18;&&nbsp#include&&&&&case 0x84;&nbsp:&TR0=1;case 0;&LED1=(r_dat/1000)%10;uchar LED1;&&ET1=1:P2=0x08;&& 0x0f) ;&设置初始化数&&&nbsp:keyval=9://g;TMOD = 0x61;&case 0x11;{&nbsp:keyval=0;&LED4=r_dat%10;&&TR1=0;&LED3=0;&&&//&while(1)&&}main(){&&switch(number)&nbsp:&{&if ((P3&&nbsp,LED4;&&=0x03.h&&1000;case 0x21;&&nbsp,&&&nbsp,0xa1;case 8;&nbsp,列线输入&break:keyval=12;void delay(unsigned int a){&P0=distab[LED2]; }&&&ON&&case 4;&&nbsp:&nbsp:&dealdat();&&0x0f)|0xf0;&&sccode = 0&&}&nbsp,j;&nbsp:keyval=6;&case 9;&0x0f);&case 0x88;LED1=LED2;}}void t0isr() interrupt 1{&&case 0x28;&j&lt:keyval=5;&1)|0x01:&flag=0;&&LED1=0;&&number&if(flag==0)&#definecase 0x82;&i&&nbsp:keyval=1;&&&nbsp,0x99;}}<a href="&}void dealdat(){&switch(keyval)&case 2;&&&flag=1;&for(i=0;case 1;//&&&&LED2=0;&&nbsp!= 0x0f)&& //无键按下;&& //有键按下&nbsp:&a;if(key==0){keyval=0&0x01):P2=0x02;getkey();&&nbsp!=0x0f)&EA=1;&switch(key)&}void t1isr() interrupt 3{r_dat++;case 0x81;case 10;&&&&if ((P3 &amp:keyval=/zhidao/wh%3D600%2C800/sign=b0b69cf2fbba72dbcf737ad448ab251f;default,LED3.return((~sccode)+(~recode))
请留下联系方式可以吗?谢谢。。。
可以百度私信给我,也可以发邮件,QQ我一般不上。
已私信。。。。拜托了。。。谢谢
#include&reg51.h&#defineuchar LED1,LED2,LED3,LED4;uchar keyval,tt=0,flag=0,up=1;&#47;&#47; 字数太多,删除了未修改的程序void t1isr() interrupt 3 using 1{ TH1=()&#47;256; TL1=()%256; tt++; if(tt&=20) { tt=0; if(up)r_dat++;
else r_dat--; dealdat(); }}main(){ TMOD = 0x11; number = 0; TH0=()&#47;256; TL0=()%256; TH1=()&#47;256; TL1=()%256; TR0=1; ET0=1; ET1=1; EA=1; LED1=0; LED2=0; LED3=0; LED4=0; flag=0; while(1) { getkey(); switch(keyval) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9:
if(flag==0)
LED1=LED2;
LED2=LED3;
LED3=LED4;
} case 10: &#47;&#47;&ON&启动
r_dat=LED1*1000+LED2*100+LED3*10+LED4;
flag=1; case 11: &#47;&#47;&=&停止计数,设置初始化数
TR1=0; case 14: &#47;&#47;“-”向上计数
up=0; case 15: &#47;&#47;“+”向下计数
up=1; default: } }}
提问者评价
来自团队:
其他类似问题
为您推荐:
stc89c52的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁我想问下~~AT89S52单片机延时两秒程序是怎样???_百度知道
我想问下~~AT89S52单片机延时两秒程序是怎样???
想问下~~AT89S52单片机延时两秒程序是怎样??,两秒是怎样?我最多还是可以延时一秒~~请问下
我有更好的答案
0;j&gt,比较的精确额!下面是延时函数void delay(uint xms){} 这是一个延时子函数;
TL0=()%256;0;
for(,很简单啦;256!TF0);xms--)
for(j=110;
while(;j--),如果想更精确一点就用到定时器,如下void delay(uint xms){
while(xms)
TH0=()/xms&gt
其他类似问题
为您推荐:
at89s52的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁2662人阅读
这个程序是已经调完的,并且成功的,功能是定义了一个BUTTON1按键,,按下后就自动发短息,短信内容为nihao,GSM_ATCMGS()函数中有个数组。存入了指令加手机号加0d。把手机好的asc换成你的就能用了。不能用就hi我:
#include&reg52.h&
#define uchar unsigned char
#define uint unsigned int
void gsm_uart();
unsigned int uart_delay(unsigned int z);
void GSM_init();
void GSM_CMGF();
void GSM_ATCMGS();
void TELNUM();
void GSM_TEXT();
void GSM_test();
void BUTTON();
unsigned char code ATEnter[]={0x41,0x54,0x0d};
unsigned char code ATCMGFEnter[]={0x41,0x54,0x2b,0x43,0x4d,0x47,0x46,0x3d,0x31,0x0d};
unsigned char code ATCMGS[]={0x41,0x54,0x2b,0x43,0x4d,0x47,0x53,0x3d};
unsigned char code TEL_NUM[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
unsigned char code TEXT[]={0x4b,0x4f};
unsigned char code Enter[]={0x0d};
unsigned char code oneA[]={0x31,0x41};
unsigned char idata buf[20];
uchar str1[]={&AT&};
uchar str2[]={&ATD&};
uchar str3[]= {&ATH&};
uchar str5[]={&AT&#43;CMGS=&};
sbit bell=P1^6;
sbit betton1_1=P3^3;
sbit betton1=P3^4;
void gsm_uart()
SCON=0x50;
//UART方式1:8位UART;
REN=1:允许接收
PCON=0x00;
//SMOD=0:波特率不加倍
TMOD=0x20;
//T1方式2,用于UART波特率
//UART波特率设置:9600
unsigned int uart_delay(unsigned int z)
{ unsigned int a,b;
for(a=z;a&0;a--)
{for(b=1000;b&0;b--);}
void ddd() interrupt 4 using 3
//处理接收中断
buf[bufnum]=SBUF;
//接收串口数据
bufnum&#43;&#43;;
//清除中断标志位
void GSM_init()
code test[]= {0x41,0x54,0X0D};
for (i=0;i&3;i&#43;&#43;)
SBUF = test[i];
while (TI == 0);
void GSM_CMGF()
code sel[10]= {0x41,0x54,0x2B,0x43,0x4D,0x47,0x46,0x3D,0x31,0x0D}; //AT&#43;CMGF=1回车
for(i=0;i&10;i&#43;&#43;)
SBUF=sel[i];
while(TI==0);
void GSM_ATCMGS()
code tel[20]= {0x41,0x54,0x2B,0x43,0x4D,0x47,0x53,0x3D,0x31,0x33,0x38,0x33,
0x36,0x30,0x32,0x33,0x33,0x37,0x39,0x0D};
for(i=0;i&20;i&#43;&#43;)
SBUF=tel[i];
while(TI==0);
void GSM_TEXT()
code neirong[10]={0x48,0x69,0x21,0x6E,0x69,0x68,0x61,0x6F,0x2E,0x1a};
//hi!nihao.
for(i=0;i&10;i&#43;&#43;)
SBUF=neirong[i];
while(TI==0);
void send()
SBUF=oneA[0];while(TI==0);TI=0;
SBUF=oneA[1];while(TI==0);TI=0;
void GSM_test()
gsm_uart();
uart_delay(400);
GSM_init();
uart_delay(1000);
bufnum = 0;
if(buf[5]=='O' && buf[6] =='K')
P0=0uart_delay(1000);P0=0
P0=0x00;uart_delay(4000);P0=0
void BUTTON()
{ betton1=1;
betton1_1=0;
if(betton1==0)
GSM_test();
uart_delay(1200);
GSM_CMGF();
uart_delay(1200);
GSM_ATCMGS();
uart_delay(1200);
GSM_TEXT();
uart_delay(800);
uart_delay(500);
betton1=1;
uart_delay(10);
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:224399次
积分:3078
积分:3078
排名:第5366名
原创:68篇
转载:148篇
评论:25条
(2)(3)(6)(2)(5)(3)(1)(2)(3)(4)(23)(21)(7)(8)(25)(11)(13)(19)(15)(7)(1)(7)(32)使用夏普GP2Y1010AU0F传感器检测PM2.5遇到难题 - 精华源码教程分享区 -
51单片机学习论坛
- Powered by Discuz!
使用夏普GP2Y1010AU0F传感器检测PM2.5遇到难题
单片机幼儿园
使用夏普GP2Y1010AU0F传感器检测PM2.5遇到难题
最近在做一个检测PM2.5的实验,使用夏普GP2Y1010AU0F传感器,当有烟雾时能从示波器上显示出电压的变化。现在接入AD后测得的电压值不知道如何处理。
查看了许多网上的测试程序,没有51单片机的。测试程序如下:
void loop(){
// ledPower is any digital pin on the arduino connected to Pin 3 on the sensor
digitalWrite(ledPower,LOW); // power on the LED
delayMicroseconds(delayTime);
dustVal=analogRead(dustPin); // read the dust value via pin 5 on the sensor
delayMicroseconds(delayTime2);
digitalWrite(ledPower,HIGH); // turn the LED off
delayMicroseconds(offTime);
delay(3000);
Serial.println((float(dustVal/6)*.035);
在下不明白以上程序中“dustVal/6)*.035”这个表示了什么意思!
不知道各位有没有用过夏普GP2Y1010AU0F传感器的,不吝赐教
单片机幼儿园
个人再补充,以上测试程序用的是Arduino单片机,没有模数,只是模拟所以电压/1024,只是为了表示一个数字量。
“dustVal/6)*.035”
单片机幼儿园
不明白的是为什么要-0.0356 又*120000再*0.0356
单片机幼儿园
已解决。就是模数转换,120000是基准值,0.0356是没有检出物时的输出电压!
单片机小学生
花了眼。。。。。

我要回帖

更多关于 gp2y1010au0f 的文章

 

随机推荐