51单片机

阅读 / 问答 / 标签

51单片机上电复位的那个短暂的时间内I/O管脚是什么状态?是高电平还是悬空?哪位大虾能告诉我?谢过了

你认为是高电平没错

C51单片机电子时钟设计思路

我有电路图和程序,要的话给我邮件anmko@163.com

学会51单片机能做什么工作?

首先51单片机是一个基础应用性的东西,对于找工作这个不是个什么好大的筹码(可以说不是筹码);因为行业内的人基本都会这个东西,而且只有在低端产品中才有应用。其次,在工作项目中,代替51的芯片太多,而且资源丰富能完成较复杂的工作;比如msp、STM32等等。这些32位、16位、或者有低功耗特色的芯片工作才会经常用到。大型的系统直接是上ARM-cortexA系列的芯片,跑的linux或者wince系统。所以学完51才刚刚开始而不是结束。

基于51单片机的电子秒表设计

汇编不会,C语言还行

一周内基于51单片机电子万年历设计

第一首先你得学会编程(C语言或者汇编语言)第二你还得会熟练使用51单片机的内部资源,主要是定时器,IO,中断。当然51内部定时器的时钟做钟表精度差,基本每天需要调时,另外就是断电后时间不能保存,建议你使用RTC芯片或者具有RTC的单片机,第三:你要懂的按键的消抖原理,第四:你要看懂DS18B20和1602液晶的数据手册或者看懂别人写的驱动测序也可以(建议你自己写驱动程序,这样你会学习到很多东西的,特别是对液晶的扫描方式和单总线的理解更加深刻,你也会尝到其中的乐趣,);第五:如果你需要自己绘制硬件电路,你还得清楚单片机的最小系统,普通的电源供电系统,IO的合理分配。

51单片机电子钟程序数码管显示

#include<reg51.h>#define uchar unsigned charsbit dula=P2^6;sbit wela=P2^7;sbit beep=P2^3;unsigned char j,k,a1,a0,b1,b0,c1,c0,s,f,m,key=10,temp,qq;uchar shi20,shi10,fen20,fen10,miao20,miao10,new,ok=1,wei;unsigned int pp;unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(unsigned char i){ for(j=i;j>0;j--) for(k=125;k>0;k--);}void display(uchar shi2,uchar shi1,uchar fen2,uchar fen1,uchar miao2,uchar miao1){ dula=0; P0=table[shi2]; dula=1; dula=0; wela=0; P0=0xfe; wela=1; wela=0; delay(5); P0=table[shi1]|0x80; dula=1; dula=0; P0=0xfd; wela=1; wela=0; delay(5); P0=table[fen2]; dula=1; dula=0; P0=0xfb; wela=1; wela=0; delay(5); P0=table[fen1]|0x80; dula=1; dula=0; P0=0xf7; wela=1; wela=0; delay(5); P0=table[miao2]; dula=1; dula=0; P0=0xef; wela=1; wela=0; delay(5); P0=table[miao1]; dula=1; dula=0; P0=0xdf; wela=1; wela=0; delay(5);}void keyscan0(){ P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { temp=P3; switch(temp) { case 0xbb: ok=0; break; case 0x7b: ok=1; break; } } } }void keyscan(){ { P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { temp=P3; switch(temp) { case 0xee: key=0; wei++; break; case 0xde: key=1; wei++; break; case 0xbe: key=2; wei++; break; case 0x7e: key=3; wei++; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; beep=0; } beep=1; } } P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { temp=P3; switch(temp) { case 0xed: key=4; wei++; break; case 0xdd: key=5; wei++; break; case 0xbd: key=6; wei++; break; case 0x7d: key=7; wei++; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; beep=0; } beep=1; } } P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { temp=P3; switch(temp) { case 0xeb: key=8; wei++; break; case 0xdb: key=9; wei++; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; beep=0; } beep=1; } }}}void main(){ TMOD=0x01; TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。 TL0=(65536-46080)%256;//46080的来历,为50000*11.0592/12 ET0=1; EA=1; while(1) { keyscan0(); if(ok==1) { TR0=1; wei=0; if(pp==20) { pp=0; m++; if(m==60) { m=0; f++; if(f==60) { f=0; s++; if(s==24) //为24h一个循环,若要12h,只需在此改为12即可。 { s=0; } } } } a0=s%10; a1=s/10; b0=f%10; b1=f/10; c0=m%10; c1=m/10; display(a1,a0,b1,b0,c1,c0); } else { TR0=0; keyscan(); if(key!=10) { switch(wei) { case 1: if(key<3) //小时最高位为2 a1=key; else wei--; break; case 2: if(a1==1|a1==0) a0=key; else if(key<5) a0=key; //当小时最高位为2时,低位最高为4 break; case 3: if(key<7) //分钟最高位为6 b1=key; else wei--; break; case 4: b0=key; break; case 5: if(key<7) //秒最高位为6 c1=key; else wei--; break; case 6: c0=key; break; } key=10; } m=c1*10+c0; f=b1*10+b0; s=a1*10+a0; display(a1,a0,b1,b0,c1,c0); } }}void time0() interrupt 1{ TH0=(65536-46080)/256; TL0=(65536-46080)%256; pp++;}

基于51单片机的电子密码锁系统设计制作材料要买些什么东西,详细点,我在网上只能找到图片。急用啊!!!

单片机最小系统,LCD1602,矩阵按键,蜂鸣器,OK

51单片机 的实际应用有哪些?范围广吗?

单片机的应用领域 : 1.单片机在智能仪器仪表中的应用; 2.单片机在工业测控中的应用; 3.单片机在计算机网络和通讯技术中的应用; 4.单片机在日常生活及家电中的应用; 5.单片机在办公自动化方面。 6.最新的物联网行业物联网物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。其英文名称是:“Internet of things(IoT)”。顾名思义,物联网就是物物相连的互联网。这有两层意思:其一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;其二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信,也就是物物相息。物联网通过智能感知、识别技术与普适计算等通信感知技术,广泛应用于网络的融合中,也因此被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。物联网是互联网的应用拓展,与其说物联网是网络,不如说物联网是业务和应用。因此,应用创新是物联网发展的核心,以用户体验为核心的创新2.0是物联网发展的灵魂。活点定义:利用局部网络或互联网等通信技术把传感器、控制器、机器、人员和物等通过新的方式联在一起,形成人与物、物与物相联,实现信息化、远程管理控制和智能化的网络。物联网是互联网的延伸,它包括互联网及互联网上所有的资源,兼容互联网所有的应用,但物联网中所有的元素(所有的设备、资源及通信等)都是个性化和私有化。

51单片机数码管显示电路图

用数码管做静态显示的话,用74HC595比较好这是一个串入并出的移位芯片,具有三态缓冲功能,且占用IO口少

谁能提供一下51单片机好的网址和技术论坛

在 TopSemic 有半导体行业常用的网址,包括论坛。

stc89c52单片机和51单片机的区别

重要的几点是:能用串口写程序,简单 便宜有XDATA和EEPROM详细的,你去STC-MCU.COM下载它的文档,就知道了。

51单片机设计电子琴课程设计

我有个基于单片机的简易电子琴设计的资料~~~如果你要的话就HI我把邮箱地址留下~~到时候给你发过去~!

51单片机这个德飞莱什么垃圾论坛啊?新人注册什么权限都没有,连看帖权限都没有,怎么升级?

德飞莱那个论坛比较水放弃吧。开源电子网有51单片机版块。但是开源电子网是专注于STM32和ARM技术的,我没试过51版块怎么样,你可以去看看。

谁知道在这个网站http://www.51c51.com/DIY/diy51/diy51.htm上的51单片机编程器的电路图是否是正确的?

网站是深圳学林电子的,电路是正确的,但是制作完了你还要给监控芯片烧写监控程序,没有烧写器的话还是制作不了的。因为除了待烧写的51单片机外还有一个用作控制下载烧写程序的51单片机。如果你使用AT89S5X系列单片机来学习的话,建议采用并口ISP下载,你的电脑不会就有串口吧。

51单片机学习网站6个以上 要求:网站页面广告要少

电子发烧友 http://bbs.elecfans.com/单片机教程网http://www.51hei.com/再针对性要求,请XXXXX百度一下

求好的51单片机学习网站

我的博客上有很多实用的链接,你可以去看看.

请教有AI89C51单片机的数字时钟的设计电路和程序,高分悬赏,邮箱13980836483@qq.com

高分为多少分,这个题目我帮别人做过,程序、PROTEUS仿真都有!

51单片机时钟程序设计

这样不太好吧!

51单片机声控灯,怎么改下列代码使在分贝超过一定值的时候LED灯亮?

你好!你的程序不全,缺少 #include"XPT2046.h" 头文件

怎样用51单片机和led8*8矩阵进行字符汉字显示?

MCS-51单片机汇编语言中func是什么

不硌这个func用在哪里?贴上有关func的代码

朋友们帮忙写个51单片机的按键小程序?汇编的

高手

c51单片机中断程序中的interrupt1,2,3是由什么决定的?

interrupt的序号是自然中断优先级序号0是外部中断01定时器0中断2是外部中断13定时器1中断4是串口中断

c51单片机中断程序中的interrupt1,2,3是由什么决定的?

硬件决定

c51单片机中断程序中的interrupt1,2,3是由什么决定的?

分别对应着5个中断源,编译时自动生成相应的中断服务入口地址:interrupt0:外部中断0interrupt1:定时器0interrupt2:外部中断1interrupt3:定时器1interrupt4:串口

51单片机中写函数时 interrutp 后面的数字 如1,2,3,4 都有特定的意义吗?还是这是数字可以随便用

void INT0()interrupt 0 using 1{.........}interrupt 0 指明是外部中断0;interrupt 1 指明是定时器中断0; interrupt 2 指明是外部中断1;interrupt 3 指明是定时器中断1;interrupt 4 指明是串行口中断;using 0 是第0组寄存器;using 1 是第1组寄存器;using 2 是第2组寄存器;using 3 是第3组寄存器;51单片机内的寄存器是R0--R7(不是R0-R3)R0-R7在数据存储器里的实际地址是由特殊功能寄存器PSW里的RS1、RS0位决定的。using 0时设置 RS1=0,RS0 =0,用第0组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(00H)....R7(07H)using 1时设置 RS1=0,RS0 =1,用第1组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(08H)....R7(0FH)using 2时设置 RS1=1,RS0 =0,用第2组寄存器,R0--R7的在数据存储区里的实际地址是08H-0FH。R0(10H)....R7(17H)using 3时设置 RS1=1,RS0 =1,用第3组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(18H)....R7(1FH)

c51单片机中断程序中的interrupt1,2,3是由什么决定的?

0,1,2,3,4对应外部0,定时器0,外部1,定时器1,串口

51单片机程序编写

怎么给你写程序,没有实物

关于51单片机,ds1302芯片的一个子程序问题,谢谢解答

dat1实际上是单个位。这行语句的作用是将dat右移,然后将dat1中刚接收到的那个位放到dat的最高位上。循环执行后,即可将顺序接收的8个位按照从低到高的顺序排列并存储在dat中。

求大神帮忙编写单片机控制步进电机C语言编程,图片如下,AT89C51单片机四相八拍,ULN2004驱动芯片

#include "reg52.h" //Motorsbit A = P2^0; //定义管脚sbit b = P2^1;sbit C = P2^2;sbit D = P2^3; /////////////////////////////////////////步进电机驱动unsigned char MotorStep=0;unsigned int MotorTimer = 0;unsigned int MotorDelay,Speed=1,TIM,CT;#define speed 8 // 调整速度 数值不要设的太低 低了会引起震动。/****************************************************** 初始化马达 *******************************************************/void InitMotor(){ A = 1; b = 1; C = 1; D = 1;}void SetMotor(){ // if(Speed == 0) return; MotorDelay=Speed; //调整速度 switch(MotorStep) { case 0: if(TIM) // A { A = 0; //0xf1 b = 1; C = 1; D = 1; MotorStep = 1; TIM=0; } break; case 1: // AB if(TIM) { A = 0; //0xf3 b = 0; C = 1; D = 1; MotorStep = 2; TIM=0; } break; case 2: //B if(TIM) { A = 1; b = 0; //0xf2 C = 1; D = 1; MotorStep = 3; TIM=0; } break;case 3: //BC if(TIM) { A = 1; b = 0; //0xf6 C = 0; D = 1; MotorStep = 4; TIM=0; } break; case 4: //C if(TIM) { A = 1; b = 1; //0xf4 C = 0; D = 1; MotorStep = 5; TIM=0; } break; case 5: //CD if(TIM) { A = 1; b = 1; //0xfc C = 0; D = 0; MotorStep = 6; TIM=0; } break; case 6: //D if(TIM) { A = 1; b = 1; //0xf8 C = 1; D = 0; MotorStep = 7; TIM=0; } break; case 7: //DA if(TIM) { A = 0; b = 1; //0xf9 C = 1; D = 0; MotorStep = 0; TIM=0; } break; }}void system_Ini(){ TMOD|= 0x11; TH0=0xDC; //11.0592M TL0=0x00; IE = 0x8A; TR0 = 1;}main() { system_Ini(); InitMotor(); while(1) { SetMotor(); }}/************************************************* ** 定时中断延时 *************************************************/ void Tzd(void) interrupt 1{ TH0 = 0xfe; //11.0592 TL0 = 0x33; if( CT++==speed) {TIM=1; CT=0; } }

51单片机init什么意思

一般初始化函数的函数名都喜欢这样起名。初始化作用如楼上说的。

51单片机声音报警SPEAKER

这是三极管基极电阻太大,流入三极管基极的电流小了声音也会变小 把阻值改小试试。

51单片机汇编语言。求两个数的平方和。

PFH: MOV A, 30H MOV B, A MUL AB MOV 40H, A MOV 41H, B MOV A, 31H MOV B, A MUL AB ADD A, 40H MOV 40H, A MOV A, B ADDC A, 41H MOV 41H, A CLR A ADDC A, #0 MOV 42H, ARET

用51单片机设计数字钟,六位数码管显示时分秒,四个发光二极管做为秒点一秒钟闪烁一次。用protues软件仿真

汇编是我心中永远的痛啊!可以给一个C的,不过这只是大概的框架,细节问题在没有在实际中用是很难发现的!#include<reg52.h> #define uchar unsigned char#define uint unsigned intsbit p10=P1^0; //定义端口,p10控制四个LED闪烁uchar secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0;uint num=0,sec=0,min=0,hour=0;uint time=5000;unsigned char code LEDBUF[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //定义数码管显示的0-9的代码void delay(unsigned int z){ //延时程序 unsigned int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);//如果是12MHz晶振,就是110us对应z=1 } void display();void main(){TMOD=0x02;//T0定时器,模式2定时,8位定时 TH0=55; //定时1S的数据设置,定时200个机器周期后中断一次,0.2ms TL0=55; EA=1;ET0=1;TR0=1;//开启总中断,允许T0中断,开启T0中断 while(1) {display();//显示时间 } }void time0() interrupt 1 {num++;//T0中断服务程序,定时中断一次后num加一 time --; If(time <=2500) { P10=0;} else { p10=1;} If(!time) {time=5000; sec++; if(sec==60) {sec=0; min++;//到60s,min加一,sec清零 if(min==60) {min=0; hour++;//到60分,hour加一,分清零 if(hour==24) {hour=0; min=0;//到24小时则所有时间清零,新的一天从零时开始计时 sec=0; } } } }}void display()secge=sec%10;//秒的个位,秒除以10的余数 secshi=sec/10;//十位,秒整除10的商 minge=min%10; minshi=min/10; hourge=hour%10; hourshi=hour/10; P2=0xfe;//1111 1110,0选通一位数码管, P0= LEDBUF [secge];//送秒的各位显示 delay(5);//延时一会儿 P2=0xfd;//选通下一位数码管,1111 1101 P0= LEDBUF [secshi];//送秒的十位显示 delay(5); P2=0xfb;//1111 1011,选通再下一位 P0=0x40;//显示分与秒之间的那个点 delay(5); P2=0xf7;//1111 0111,再下一位 P0= LEDBUF [minge];//分的个位 delay(5); P2=0xef;//1110 1111 P0= LEDBUF [minshi];//分的十位 delay(5); P2=0xdf;//1101 1111 P0=0x40;//分与时间的点 delay(5); P2=0xbf;//1011 1111 P0= LEDBUF [hourge];//小时的个位 delay(5); P2=0x7f;//0111 1111 P0= LEDBUF [hourshi];//小时的十位 delay(5);}

51单片机如何用锁存器连接kyx3461as数显管

可以用573,也可以不用,用573的原理图如下:

MCS51单片机的中断优先级别由什么决定

由中断优先级寄存器IP决定

80C51单片机的寻址方式

1.立即寻址方式采用立即寻址的指令一般是双字节的。第一个字节是指令的操作码,第二个字节是立即数。因此,操作数就是放在程序存储器中的常数。立即数前面应加前缀“#”号。例如:MOVA,#2BH;A←#2BH,即将立即数2BH传送至A中。2.直接寻址方式采用直接寻址的指令一般是双字节或三字节指令,第一字节为操作码,第二,三字节为操作数的地址码。单片机中,直接地址只能用来表示片内低128字节单元、专用寄存器和片内RAM的位地址空间。其中专用寄存器和位地址空间只能用直接寻址方式来访问。例如:MOVA,30H;(30H)→AMOVC,00H;(00H)→CyLJMP1000H;将1000H送入PC3.寄存器寻址方式寄存器寻址方式用于访问选定的工作寄存器R0~R7、A、B、DPTR和进位CY中的数。其中R0~R7由操作码低三位的8种组合表示,A、B、DPTR、C则隐含在操作码之中。这种寻址方式中被寻址的寄存器中的内容就是操作数。例如:MOVA,R0;(R0)→AMOVB,A;(A)→B4.寄存器间接寻址方式这种寻址方式中,指令指定寄存器中的内容为操作数的地址。寄存器间接寻址是用于访问片内数据存储器或片外数据存储器。当访问片内RAM或片外的低256字节空间时,可用R0或R1做为间址寄存器;当访问片外整个64KB的地址RAM空间时,用16位寄存器DPTR做间址寄存器。这类指令都为单字节的指令,操作码的最低位表示是采用R0还是R1做间址器。在执行PUSH和POP指令时,也采用寄存器间接寻址,此时用堆栈指针SP做间址寄存器。例如:MOVXA,@R0;((R0))→AMOVXA,@DPTR;((DPTR))→APOPACC;((SP))→A,(SP)-1→SP5.基址加变址寻址方式这种寻址方式用于访问程序存储器中的某个字节。以DPTR或PC作为基址寄存器,累加器A做为变址寄存器,两者的内容之和为操作数的地址。这种寻址方式常用于查表操作。例如:MOVCA,@A+DPTR;指令代码为93H,单字节指令。设该指令放在1040H单元,A的原内容为A0H,DPTR中的值为3000H,则操作数的地址等于:A0H+3000H=30A0H,即将30A0H单元中的内容传送至A中。6.位寻址方式位寻址是指对片内RAM的位寻址区(字节地址20H~2FH)和可以位寻址的专用寄存器进行位操作时的寻址方式。在进行位操作时,借助于进位C作为位操作累加器。操作数直接给出该位的地址,然后根据操作码的功能对其进行位操作。位寻址的位地址与直接寻址的字节地址形式完全一样,主要由对应的操作数的位数来区分,使用时应加以注意。例如:MOV10H,C;10H是位寻址的位地址(C是位累加器)MOVA,10H;10H是直接寻址的字节地址(A是字节累加器)

求一个51单片机汇编语言 串口输出一行中文的程序

ff

基于at89c51单片机 99秒倒计时 在仿真时为什么会出现乱码、请高手指点一下

……CJNE A,#2,I2 ;是否计够0.1秒MOV TCOUNT,#00H INC SECOND  ----加一?MOV A,SECONDCJNE A,#100,I1 ;是否计够10秒MOV SECOND,#6FHl1MOV A,SECOND……加一?不像倒计时。

怎么用51单片机4*4键盘实现简单计算器 就要加减就可以 汇编语言 麻烦可

KEYBUF EQU 40H ;键号存放单元 ORG 0000H LJMP MAIN ORG 0030HMAIN: MOV KEYBUF,#0 ;初始键号设位0,也可以为任意值 MOV R0,#30H ;显示首地址 MOV R2,#0CH ;计算数据存放单元个数 CLR AQING: MOV @R0,A ;将数据存放单元清零 INC R0 DJNZ R2,QING MOV P0,#8FH ;关闭显示 MOV R1,#30H ;将显示首地址存放R1里

mcs—51单片机的串行口有哪几种工作方式

全双工的,可以同时收发!

求分51单片机控制七段数码管显示的时钟电路 和程序

定时器做的和用1302都可以,有扣扣吗?加你为你解答,

用51单片机编一个电子时钟的程序 八个数码管 要汇编编的 最简单的 只要能工作就行 走时就行 不要别的功能

不知道

6位数码管的MCS51单片机秒表设计实验

楼主还是自己写个吧。写这个挺费时的,而且你用的什么数码管,还有单片机的外围电路怎样分布的,都不清楚,写了估计也不适合。你把问题补充下,再等下一位大侠来替你解围吧

跪求哪个高手给个stc89c51单片机的温度能在数码管上显示,然后数码管显示20度就会报警的程序。

stc89c51片内有测温模块?

mcs—51单片机的串行口有哪几种工作方式

1、立即寻址:操作数就写在指令中,和操作码一起放在程序存贮器中。把“#”号放在立即数前面,以表示该寻址方式为立即寻址,如movA,#20H。2、寄存器寻址:操作数放在寄存器中,在指令中直接以寄存器的名来表示操作数地址。如MOVA,R0就属于寄存器寻址,即R0寄存器的内容送到累加器A中。3、直接寻址:操作数放在单片机的内部RAM某单元中,在指令中直接写出该单元的地址。如前例的ADDA,70H中的70H。4、寄存器间接寻址:操作数放在RAM某个单元中,该单元的地址又放在寄存器R0或R1中。如果RAM的地址大于256,则该地址存放在16位寄存器DPTR(数据指针)中,此时在寄存器名前加@符号来表示这种间接寻址。如MOVA,@R0。5、变址寻址:指定的变址寄存器的内容与指令中给出的偏移量相加,所得的结果作为操作数的地址。如MOVCA,@A+DPTR。6、相对寻址:由程序计数器中的基地址与指令中提供的偏移量相加,得到的为操作数的地址。如SJMPrel。7、位寻址:操作数是二进制中的某一位,其位地址出现在指令中。如SETBbit。扩展资料:单片机的硬件特性:1、主流单片机包括CPU、4KB容量的RAM、128 KB容量的ROM、 2个16位定时/计数器、4个8位并行口、全双工串口行口、ADC/DAC、SPI、I2C、ISP、IAP。2、系统结构简单,使用方便,实现模块化。3、单片机可靠性高,可工作到10^6 ~10^7小时无故障。4、处理功能强,速度快。5、低电压,低功耗,便于生产便携式产品。6、控制功能强。7、环境适应能力强。参考资料来源:百度百科-MCS51

用51单片机实现时钟功能程序???

这个功能建议你用DS1302时钟芯片实现!编程就容易多了,至于程序就自己编写吧,这样才有意义!

51单片机里的汇编程序看不懂,谁能帮忙翻译成C语言啊,谢谢!1622液晶驱动程序。

还没学,,,

求汇编51单片机接两个数码管从00显示到99,外部中断0接一开关用于复位。麻烦注解下每句话的意思!!

COUNT EQU 31H ;寄存器定义CNT EQU 32HORG 0000H ;程序开始AJMP MAINORG 000BH ;定时器0中断地址AJMP TIMEORG 0013H ;外总中断0中断地址AJMP INT00ORG 0030H ;程序开始执行MAIN: MOV SP,#5FH ;移动堆栈MOV COUNT,#00H ;清寄存器MOV CNT,#00H ;MOV TMOD,#01H ;定时器0工作方式1MOV TH0,#3CH ;50MS初值MOV TL0,#0B0H ;SETB ET0 ;开定时器0中断SETB EA ;开总中断SETB EX0 ;开外总中断0中断 SETB TR0 ;开启定时器0LOOP: CALL DISP ;调用显示子程序JMP LOOP ;采用查询方式;P0口数据输出。P2.0、P2.1位码控制端DISP: MOV A,CNT ;CNT数据送入A中MOV B,#10 ;10送入B中=分离出个位、十位数DIV AB ;A除B MOV R0,B ;B送入R0中MOV DPTR,#TAB ;查表地址MOVC A,@A+DPTR ;根据A的值查表MOV P2,#0FEH ;开启位码=个位MOV P0,A ;送个位数据CALL DELAY ;延时一会,保持亮度MOV A,R0 ;R0送入A中、MOV DPTR,#TAB ;MOVC A,@A+DPTR ;MOV P2,#0FDH ;开启位码=十位MOV P0,A ;送个位数据 CALL DELAY ;RET ;采用定时器每秒数码管加1 TIME:PUSH PSW ;状态寄存器压入堆栈PUSH ACC ;累加器A压入堆栈MOV TH0,#3CH ;重装50MS定时器初值MOV TL0,#0B0H ;INC COUNT ;50MS时间到寄存器加1MOV A,COUNT ;送入A中CJNE A,#20,UENRET ;比较不等于20,即1秒时间没到MOV COUNT,#00H ;到了1秒时间,寄存器清规INC CNT ;CNT寄存器加1MOV A,CNT ;送入A中 CJNE A,#100,UENRET ;比较=这里因为只有两位数码管MOV CNT,#00H ;意思跟上面20 的一样,UENRET:POP ACC ;弹出A保护的值POP PSW ;弹出状态寄寄原值RETI ;中断返回;外总中断复位INT00:PUSH PSW PUSH ACCMOV COUNT,#00H;清COUNT寄存器MOV CNT,#00H;清CNT寄存器CALL DELAYPOP ACC ;弹出保护数据POP PSWRETIDELAY: MOV R5,#100 ;延时程序DJNZ R5,$RET;共阴数据TAB: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FHEND

用51单片机实现时钟功能程序???

duanEQUP0;weiEQUP2;keyBITP3.7;ORG0000HAJMPMAIN;绝对转移指令,2kb范围(11位)内跳转LJMP16位64kb范围内跳转;短转移指令的功能是先使程序计数器PC加1两次(即:取出指令码),然后把加2后的地址和rel相加作为目标转移地址。因此,短转移指令是一条相对转移指令,是一条双字节双周期指令ORG0030H;指明后面的程序从程序存储器的0030H单元开始存放DELAY200US:;@11.0592MHzNOPNOPNOPPUSH30HPUSH31HMOV30H,#2MOV31H,#179NEXT:DJNZ31H,NEXTDJNZ30H,NEXTPOP31HPOP30HRETORG0060H;DISPLAY子程序DISPLAY:PUSHACC;不能写A,此处ACC代表地址,push后跟地址,代表把地址内的内容压入栈中PUSH00H;R0PUSH06H;R6PUSH07H;R7PUSH83H;DPHPUSH82H;DPLMOVR6,#01H;位选数据,01指的是缓冲区最低位数据MOVR7,#08H;循环次数FLAG:MOVduan,#0x00;消影MOVA,R6CPLA;取反MOVwei,A;位选MOVA,#disBufDatADDA,R7SUBBA,#0X08MOVR0,AMOVA,@R0;读出要显示的数据到AMOVDPTR,#disTabMOVCA,@A+DPTR;从rom取数据,取出要显示的数据对应的段码MOVduan,A;段选MOVA,R6RLAMOVR6,A;更新下一次位选LCALLDELAY200USDJNZR7,FLAGPOP82H;DPLPOP83H;DPHPOP07HPOP06HPOP00HPOPACCRETORG0100H;定时器中断0初始化T0_INIT:MOVTMOD,#0X01MOVTH0,#0X3CMOVTL0,#0XB0SETBEASETBTR0SETBET0RETORG0130H;T0中断处理程序INT_TIMERE0:PUSHACCSETBRS0MOVTH0,#0X3CMOVTL0,#0XB0INCR0MOVA,R0SUBBA,#0X14JBCY,SECFLAGMOVR0,#0x00INCsecSECFLAG:CLRRS0POPACCRETIORG000BH;定时器/计数器T0入口地址LJMPINT_TIMERE0;跳转到定时器/计数器中断服务程序中去disTab:DB0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40;0-f,空白,横杠的段选数据disBufDatEQU47H;定义显示缓冲数据变量区,8个disBufDatHeadEQU40H//单片机上显示在最左边secEQU48H;主程序ORG0180HMAIN:MOVSP,#0X60;将0x60到0x7f设为堆栈区LCALLT0_INITMOVdisBufDatHead,#0X00MOVdisBufDatHead+1,#0X00MOVdisBufDatHead+2,#0X11MOVdisBufDatHead+3,#0X11MOVdisBufDatHead+4,#0X11MOVdisBufDatHead+5,#0X11MOVdisBufDatHead+6,#0X11MOVdisBufDatHead+7,#0X11MOVsec,#0X3AWHILE:JBkey,KEYSCANMOVsec,0x00KEYSCAN:MOVA,secSUBBA,#3CH;超过60s归零JBCY,CLEARMOVsec,#0X00;clr加ram地址无效CLEAR:MOVA,secMOVB,#0AHDIVAB;A/B,商存到A中,余数存B中MOVdisBufDatHead,AMOVdisBufDatHead+1,BLCALLDISPLAYLJMPWHILE;循环END;扩展资料51机器周期和指令周期1、机器周期是指单片机完成一个基本操作所花费的时间,一般使用微秒来计量单片机的运行速度,51单片机的一个机器周期包括12个时钟振荡周期,也就是说如果51单片机采用12MHz晶振,那么执行一个机器周期就只需要1μs;如果采用的是6MHz的晶振,那么执行一个机器周期就需要2μs。2、指令周期是指单片机执行一条指令所需要的时间,一般利用单片机的机器周期来计量指令周期。在51单片机里有单周期指令(执行这条指令只需一个机器周期),双周期指令(执行这条指令只需要两个机器周期),四周期指令(执行这条指令需要四个机器周期)。除了乘、除两条指令是四周期指令,其余均为单周期或双周期指令。也就是说,如果51单片机采用的是12MHz晶振,那么它执行一条指令一般只需1~2微秒的时间;如果采用的是6MH晶振,执行一条指令一般就需2~4微秒的时间。

51单片机指令MOVA,R0是指针传递吗

R0可以作为外部寄存器寻址的指针,如执行以下程序:MOV R0,#50H //此时R0等于立即数50HMOV A,R0 //此时A等于R0等于立即数50HMOVX A,@R0 //此时A等于50H指向的外部数据寄存器的内容,50H是地址MOV 50H,A //将A送到50H存储单元内,记住数字前面加#表示立即数不加表示地址你写的最后一条指令有问题,建议看看单片机的寻址方式。

关于51单片机若干的问题,急。。。。。

QQ 2606454510

MCS-51单片机显示当前时间时分秒 可用按键设置修改各值 用C语言写程序 我的邮箱是1564934590@qq.com

我用的是LED#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table[]="2010-09-01 02";uchar code table1[]="00:00:00";sbit lcden=P2^6 ;sbit lcdrw=P2^5;sbit lcdrs=P2^4;sbit s1=P3^0;sbit s2=P3^1;sbit s3=P3^2;uchar num,count,s1num;char nian,yue,ri,xq,shi,fen,miao;void delay(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}void write_com(uchar com){ lcdrs=0; lcdrw=0; delay(5); lcden=1; P0=com; delay(5); lcden=0;}void write_data(uchar date){ lcdrs=1; lcden=1; delay(5); P0=date; delay(5); lcden=0;}void init(){ lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80+0x01); TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; xq=2; yue=9; ri=1; nian=10; for(num=0;num<14;num++) { write_data(table[num]); delay(20); } write_com(0x80+0x44); for(num=0;num<8;num++) { write_data(table1[num]); delay(20); }}void write_nyr(uchar ad,uchar da){ uchar shi,ge; shi=da/10; ge=da%10; write_com(0x80+ad); write_data(0x30+shi); write_data(0x30+ge);}void write_sfm(uchar add,uchar date){ uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_data(0x30+shi); write_data(0x30+ge);}void keyscan(){ if(s1==0) { delay(5); if(s1==0) { s1num++; while(!s1); if(s1num==1) { TR0=0; write_com(0x80+0x40+11); write_com(0x0f); } if(s1num==2) { write_com(0x80+0x40+8); } if(s1num==3) { write_com(0x80+0x40+5); } if(s1num==4) { write_com(0x80+14); } if(s1num==5) { write_com(0x80+10); } if(s1num==6) { write_com(0x80+7); } if(s1num==7) { write_com(0x80+4); } if(s1num==8) { s1num=0; write_com(0x80+0x40+11); write_com(0x0c); TR0=1; }} } if(s1num!=0) { if(s2==0) { delay(5); if(s2==0) { while (!s2); if(s1num==1) { miao++; if(miao==60) { miao=0; } write_sfm(10,miao); write_com(0x80+0x40+11); } if(s1num==2) { fen++; if(fen==60) { fen=0; } write_sfm(7,fen); write_com(0x80+0x40+8); } if(s1num==3) { shi++; if(shi==24) { shi=0; } write_sfm(4,shi); write_com(0x80+0x40+5); } if(s1num==4) { xq++; if(xq==8) { xq=1; } write_nyr(13,xq); write_com(0x80+14); } if(s1num==5) { ri++; if(ri==32) { ri=1; } write_nyr(9,ri); write_com(0x80+10); } if(s1num==6) { yue++; if(yue==13) { yue=1; } write_nyr(6,yue); write_com(0x80+7); } if(s1num==7) { nian++; write_nyr(3,nian); write_com(0x80+4); }} } if(s3==0) { delay(5); if(s3==0) { while (!s3); if(s1num==1) { miao--; if(miao==-1) { miao=59; } write_sfm(10,miao); write_com(0x80+0x40+11); } if(s1num==2) { fen--; if(fen==-1) { fen=59; } write_sfm(7,fen); write_com(0x80+0x40+8);} if(s1num==3) { shi--; if(shi==-1) { shi=23; } write_sfm(4,shi); write_com(0x80+0x40+5); } if(s1num==4) { xq--; if(xq==0) { xq=7; } write_nyr(13,xq); write_com(0x80+14); } if(s1num==5) { ri--; if(ri==0) { ri=31; } write_nyr(9,ri); write_com(0x80+10); } if(s1num==6) { yue--; if(yue==0) { yue=12; } write_nyr(6,yue); write_com(0x80+7); } if(s1num==7) { nian--; write_nyr(3,nian); write_com(0x80+4); }} } }}void main(){ init(); while(1) { keyscan(); if(count==20) { count=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; ri++; if(ri==31) { ri=0; yue++; if(yue==12) { yue=0; nian++; write_nyr(3,nian); } write_nyr(6,yue); } write_nyr(9,ri); } write_sfm(4,shi); } write_sfm(7,fen); } write_sfm(10,miao); } } while(1);}void timer0() interrupt 1{ TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++;}我已经试过可以。

mcs51中mcs是什么意思还有就是51单片机用

Micro Computer System微型控制器系统

MCS-51单片机指令系统共有7种寻址方式;MOV A, Rn 为 寻址;MOV C, bit 为 寻址。

不明白你说的什么意思。。。

MCS-51单片机有哪些类型,其主要区别是什么?

MCS-51单片机类型1、根据单片机内部程序存储器的配置不同分为:(1)无ROM(ROMless)型:8031、80C31、8032、80C32(2)带MaskROM(掩模ROM)型:8051、80C51、8052、80C52 [1](3)带EPROM型:8751、87C51、8752(4)带E2PROM型:8951、89C51、8952、89C522、根据单片机内部存储器的容量配置不同(1)51子系列:芯片型号的最末位数字以1作为标志,是基本型产品 。(2)52子系列:芯片型号的最末位数字以2作为标志,是增强型产品。3、根据芯片的半导体制造工艺不同(1)HMOS工艺型:芯片型号中无C的产品(2)CHMOS工艺型:芯片型号中有C的产品。

求MCS-51单片机所有缩写的英文全称【高分】

MCS-51指令虽多,但按功能可分为五类,其中数据传送类28条,算术运算类24条,逻辑操作类25条,控制转移类17条,布尔位操作类17条。pc是programcounter的缩写,即程序计数器,pc是16位的计数器,它始终指向单片机将要执行的下一条指令。sp是stackpoint的缩写,即堆栈指针,指向栈顶。单片机缩写的英文全称是Microcontrollers,中文名称就是单片机。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。“单片机”是我们国人的称呼,即singlechipmicrocomputer(SCM),但国际上的说法应该是MicroControlUnit(MCU),即微控制单元。单片机是一种集成电路芯片。

利用80C51单片机和DAC0832 输出一个从0V开始逐渐升至5V再降至0V的可变电压

不能用c语言的么,我这里都是C语言的,需要找我。

求救关于C51单片机ds18b20温度显示的问题

#include <ht48f30e.h>#define uint8 unsigned int //8 bit#define uint unsigned int //8 bit#define uint16 unsigned long //16 bit#define date _pb0//io 0 int 1#define dateio _15_0//pbc0#define Dispdata _pb7//io 0 int 1#define Dispclk _pb6//io 0 int 1uint8 const showtable[29]={0x7e,0x06,0x6d,0x79,0x33,0x5b,0xdf,0x70,0x7f,0x7b,0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x00,0x31,0x07,0x01,0x37,0x0e,0x67,0x63,0x1d,0x15,0x3e,0x4f,0x76};uint8 const dotcodeh[]={0,0,1,1,2,3,3,4,5,5,6,6,7,8,8,9};uint tplsb,tpmsb; // 温度值低位、高位字节uint16 tplmsb;uint16 temp @0x50;void delay1ms(uint16 j){ uint8 i; while(j) { _clrwdt(); j--; for(i=0;i<168;i++) {;} }}void disp(uint8 t,uint8 showdata){ unsigned char i,j,temp; for(j=0;j<t;j++) { temp=showdata; for(i=0; i<7; i++) { if(temp & 0x01) { Dispdata =1; //数据为1 } else { Dispdata= 0; //数据为0 } temp>>= 1; Dispclk=0; _delay(5); Dispclk=1; _delay(5); } }} void init(){ uint i; date=1; delay1ms(1); date = 0; i = 100; //拉低约900us while (i>0) i--; date= 1; // 产生上升沿 i = 4; while (i>0) i--;}void wait(){ uint i; dateio=1; //改PB5为输入脚 while(date); while(~date); // 检测到应答脉冲 dateio=0;//改PB5为输出脚 i = 4; while (i>0) i--;}bit readbit(){ uint i; bit b; date = 0; _nop(); _nop(); date = 1; dateio=1; //改PB5为输入脚 _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); // 延时15us以上,读时隙下降沿后15us,DS18B20输出数据才有效 b = date; dateio=0;//改PB5为输出脚 i = 8; while(i>0) i--; return (b);}uint readbyte(){ uint i,j,b; b = 0; for (i=1;i<=8;i++) { j = readbit(); b = (j<<7)|(b>>1);//读出的数据最低位在最前面,这样刚好一个字节在DATE里 } return(b);}void writebyte(uint b){ uint i; uint j; bit btmp; for(j=1;j<=8;j++) { btmp = b&0x01; b = b>>1; // 取下一位(由低位向高位) if (btmp) // 写1 { date = 0;_nop();// 延时,使得15us以内拉高 _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); date = 1; i = 8; while(i>0) i--; // 整个写1时隙不低于60us } else // 写0 { date = 0; i = 8; while(i>0) i--; // 保持低在60us到120us之间 date = 1; _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); _nop(); } }}void main(){ uint8 a1,a2,a3,a4=16; uint8 m=60,n; _intc=0; _tmrc=0; _wdts=0b00000101 ; //MOV A,00000101B ;512ms _clrwdt(); //MOV WDTS,A _pbc=0x00; delay1ms(1); // 延时1ms init(); // 产生复位脉冲,初始化DS18B20 wait(); // 等待DS18B20给出应答脉冲 delay1ms(1); // 延时 writebyte(0xcc); // 跳过rom 命令 writebyte(0x4e);//写暂存器 writebyte(0x32);//上限50°C writebyte(0x00);//下限50°C writebyte(0x7f);//设置分辨率为12位 //writebyte(0x44); // convert T 命令 delay1ms(1000); // 延时1s while(1) { init(); // 产生复位脉冲,初始化DS18B20 wait(); // 等待DS18B20给出应答脉冲 delay1ms(1); // 延时 writebyte(0xcc); // 跳过rom 命令 writebyte(0x44); // convert T 命令 delay1ms(1000);init(); // 产生复位脉冲,初始化DS18B20 wait(); // 等待DS18B20给出应答脉冲 delay1ms(1); // 延时 writebyte(0xcc); // 跳过rom命令 writebyte(0xbe); // read scratchpad 读暂存器命令 tplsb=readbyte(); // 温度值低位字节(其中低4位为二进制的"小数"部分) tpmsb=readbyte(); // 温度值高位字节(其中高5位为符号位) if(tpmsb>=0xf8) { a4=19; tplsb=~tplsb; if(tplsb==0xff) {tplsb=0;tpmsb=~tpmsb;++tpmsb;} else {tplsb=tplsb+1;tpmsb=~tpmsb;} } temp=tpmsb; temp=temp<<8; //合成一个字 temp=temp|tplsb; a3=temp&0x000f; temp=temp>>4; temp=temp&0x00ff; a1=temp/10; a2=temp%10; if(a4==19) disp(1,showtable[a4]); disp(1,showtable[a1]); disp(1,showtable[a2]); disp(1,showtable[dotcodeh[a3]]); if(a4==16) disp(1,0); m=60; n=4; }}、、、、、、、、、、、、、、、、、、、、、、、、、、、给你参考而已,自己工作使用过的,子程序一定没有问题

急求教大哥大姐们基于51单片机的数字温度计设计 小弟最近的实习设计就是这个~~~~~先谢谢了

这个做出来说容易容易 说难也难 关键是耗时间 不是不愿意帮忙 我建议楼主还是自己查查资料 做个试试 自己能做出来的 爱电子社区

51单片机和DS2438测电池剩余电量的程序中的一部分,看不懂

额 能不能提供相应的子程序 或者说明子程序功能

为什么我写的DS18B02程序,不能测出温度呢?C语言写的,用的是51单片机

DS1820是个娇气的东东,对时序操作很严格,如果一点不对,都可能测不出温度,你的晶振到底是多少?这个要确定,不能大概,还有那些延时程序,必须要精确延时,按DATASHEET上的标准来,不然都不行。

我想问一下如何将51单片机获得的GPS信息通过GPRS模块传输到电脑上

1,利用单片机的串口和单片机的串行接口相连,当然中然还有RS232转换电路。2,单片机编程,把想要发送的数据发送到PC上。3,PC端要显示数据,需要一个窗口,最简单是利用“串口助手”软件。4,如果不想用上述该软件,你可以用VB,VC等自己编一个上位机软件。即可显示你想要的数据。

51单片机中 C语言 P2^3与P2.3的区别

没区别,都是一样的

在51单片机中怎样使用C语言预留一片存储区,使得变量自动分配内存时避开这片区域?

看你用的什么编译器。我自学51单片机用的编译器是SDCC,里面有一个修饰叫做__at用sdcc的话可以写__at(0x20) char reversed[16];然后这一块内存就分配给此全局变量了

51单片机编程软件英文版怎样改成中文版?

找汉化文件,百度搜索

linux下怎么编译单片机c代码,怎么下载到51单片机上呢

51用sdcc编译,AT的用avrdude下载,STC的用gSTC-ISP下载,AVR 用gcc编译用avrdude下载,软件可以自己百度,很多的.

51单片机中ORG是什么意思有一段示例程序

ORG是个用于定位的伪指令。简单的说就是把从这句话开始直到下一个ORG指令或者END指令前的程序语句都顺序放在它指定的地址里。比如说你的程序里ORG只管了一个语句(AJMP MAIN),则从0000h这个地址开始放语句。放多少,看下面有几条语句(直到org或end 指令为止)。同样ORG 0030H是把它后面的所有到下一个ORG或END命令前的所有代码都顺序放到从0030H开始的程序单元。这应该是一个子程序。就像C语言里的子函数。

51单片机中ORG是什么意思

  Origin,表示一段程序的开始地址,即把这个程序放在Flash的哪个地址。  ORG 000H 在汇编中表示跳到单片机内存地址处000开始执行,一般在开头时使用。 “H”表示16进制。不加“H”系统默认为10进制。

51单片机中ORG是什么意思

ORG是个用于定位的伪指令。ORG(伪指令)(Pseudo Instruction)是用于对汇编过程进行控制的指令,该类指令并不是可执行指令,没有机器代码,只用于汇编过程中为汇编程序提供汇编信息。例如,提供如下信息:哪些是指令、哪些是数据及数据的字长、程序的起始地址和结束地址等。伪指令有2个特点:(1)由于是伪“指令”,因而它只存在于汇编语言中。高级语言中不叫指令,叫语句;(2)由于是“伪”指令,也即“假”指令,因而不是可执行指令,不会产生机器代码,不会占用ROM空间,只用于汇编过程中为汇编程序提供汇编信息。扩展资料模块汇编程序:模块汇编程序 为适应模块程序设计方法而研制的。它除了克服简单汇编程序的缺点之外,还提供并行设计、编码和调试不同程序模块的能力,而且更改程序时只更改有关的模块即可。每个汇编后的程序模块称为目标模块,多个目标模块经连接装配程序组合成一个完整的可执行的程序。条件汇编程序:条件汇编程序 主要特点是具有选择汇编某些程序段的能力。它适用于编写选择性较大的程序或程序包,以便根据用户的需要和设备的配置情况剪裁、编制适当的软件。这种汇编语言通常要引入“条件转移”、“转移”等汇编指示,以便根据用户指定的汇编条件有选择地汇编某些程序段或控制汇编程序的加工路径。宏汇编程序:宏汇编程序 主要特点是在汇编程序中增加宏加工功能。它允许用户方便地定义和使用宏指令,适用于程序中多处出现、具有一定格式、可以通过少数参数调节改变的程序段落的场合。采用这种方法不仅减少程序的长度,增加可读性,而且程序段落的格式需要改变时,只须改动定义处,而不必改动每一使用处。参考资料:百度百科-伪指令参考资料:百度百科-汇编程序

C51单片机程序调试中,为什么移位后,P0口直接为0

你查看的时候,程序暂停了没

Arduino和51单片机,两者有什么关系或区别?

arduino用的是AVR单片机,AVR单片机它跟51单片机内部结构不同(寄存器多少和名称都不一样),编程工具烧写软件均不一样。arduino编程工具和普通AVR又不一样,它将一些输入输出方法编成了子程序(库函数),应用更加方便。Arduino与传统的51单片机具体有哪些区别和联系,可以从以下几个方面进行对比:1.Arduino是单片机二次开发的产物。以做项目来说,普通单片机只是散件,硬件的设计和软件设计都得你自己来。而且Arduino是半成品,你只要把相应的模块组合在一起,再写一写甚至直接复制别人程序就能行了。拿做电脑来比喻的话,你拿单片机做项目就像用电子元件先做出来显示器、主板、内存条、显卡、硬盘等,再把它们组装成一台电脑。用Arduino做项目就像直接把别人做好的主板硬盘显卡组装成电脑。Arduino的好处就是开发简单。但是也意味着很多地方都受到限制。2.Arduino核心板大部分使用的是AVR单片机作为核心,这就是他们之间的联系。AVR单片机一般使用汇编语言、C语言开发,需要配置寄存器等等。Arduino在C的基础上简化了开发方式,自己实现了一套较为简单的语言,开发的时候不需要纠结于AVR的寄存器等底层的东西,直接写代码就能控制兼容Arduino的外设。3.使用Arduino做项目,几乎不用考虑硬件部分的设计,可以按需求选用Arduino的控制板、扩展板等组成自己的需要的硬件系统。而使用单片机开发必须设计硬件,制作PCB板。4.学习Arduino单片机可以完全不需要了解其内部硬件结构和寄存器设置,仅仅知道它的端口作用即可;可以不懂硬件知识,只要会简单的C语言,就可用Arduino单片机编写程序。使用单片机则需要了解单片机内部硬件结构和寄存器的设置,使用汇编语言或者C语言编写底层硬件函数。5.Arduino软件语言仅仅需掌握少数几个指令,而且指令的可读性也强,稍微懂一点C语言即可,轻松上手,快速应用。6.Arduino的理念就是开源,软硬件完全开放,技术上不做任何保留。针对周边I/O设备的Arduino编程,很多常用的I/O设备都已经带有库文件或者样例程序,在此基础上进行简单的修改,即可编写出比较复杂的程序,完成功能多样化的作品。而单片机的软件开发,需要软件工程师编写底层到应用层的程序。没有那么多现成的库函数可以使用。7.Arduino由于开源,也就意味着从Arduino相关网站、博客,论坛里得到大量的共享资源,在共享资讯的辅助下,通过资源整合,能够加快您创作作品的速度及效率。8.相对其他开发板,Arduino及周边产品相对质廉价优,学习或创作成本低,重要一点是:烧录代码不需要烧录器,直接用USB线就可以完成下载。扩展资料:arduino与51单片机比的优点比51更先进一些,编程变得简单更人性化和直观,没有单片机基础的人也能很快上手。Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。它适用于爱好者、艺术家、设计师和对于"互动"有兴趣的朋友们。Arduino的核心开发团队成员包括:MassimoBanzi,DavidCuartielles,TomIgoe,GianlucaMartino,DavidMellis和NicholasZambetti。Arduino是一个基于开放原始码的软硬件平台,构建于开放原始码simpleI/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。Arduino包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是ArduinoIDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是利用Arduino编程语言(基于Wiring)和Arduino开发环境(基于Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信(比如Flash,Processing,MaxMSP)来实现。

arduino与51单片机比的优点的哪些??

  比51更先进一些,编程变得简单更人性化和直观,没有单片机基础的人也能很快上手。  Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它适用于爱好者、艺术家、设计师和对于"互动"有兴趣的朋友们。  Arduino的核心开发团队成员包括:Massimo Banzi,David Cuartielles,Tom Igoe,Gianluca Martino,David Mellis和Nicholas Zambetti。  Arduino是一个基于开放原始码的软硬件平台,构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。  Arduino包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。  Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是利用 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。

Arduino和51单片机,两者有什么关系或区别?

Arduino和51单片机是两种不同的微控制器。以下是它们之间的一些区别和关系:1. 架构和指令集:Arduino使用的是基于Atmel AVR或ARM架构的微控制器,而51单片机使用的是基于8051架构的微控制器。因此它们的指令集和编程模型也有所不同。2. 开发环境:Arduino提供了一个简单易用的开发环境,包括IDE、库和示例代码等,适合初学者和快速原型开发。而51单片机的开发环境则需要自己搭建,需要掌握汇编语言和C语言等技能。3. 硬件资源:Arduino板子通常包括数字和模拟输入/输出引脚、USB接口、电源接口等,可以直接连接各种传感器和执行器。而51单片机则需要通过外部电路才能实现这些功能。4. 应用领域:Arduino广泛应用于创客、艺术、教育等领域,可以用于构建各种智能设备和交互系统。而51单片机则主要应用于工业控制、仪器仪表、通信等领域。综上所述,Arduino和51单片机虽然都是微控制器,但它们的架构、开发环境、硬件资源和应用领域等方面有所不同。

Arduino和51单片机,两者有什么关系或区别?

什么是单片机?51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。51更底层一些,但如果想玩机器人,智能车之类的就可以用arduino更方便些。不过现在的话51还算是主流点的,51和c语言学好了,还可以学习arduino和stm32这些更复杂的。51单片机是对所有兼容Intel 8051指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。单片机是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。什么是Arduino?Arduino是单片机二次开发的产物。以做项目来说,普通单片机只是散件,硬件的设计和软件设计都得你自己来。而且Arduino是半成品,你只要把相应的模块组合在一起,再写一写甚至直接复制别人程序就能行了。拿做电脑来比喻的话,你拿单片机做项目就像用电子元件先做出来显示器、主板、内存条、显卡、硬盘等,再把它们组装成一台电脑。用Arduino做项目就像直接把别人做好的主板硬盘显卡组装成电脑。Arduino的好处就是开发简单。但是也意味着很多地方都受到限制。Arduino,是一块基于开放bai源代码的duUSB接口Simple i/o接口板(包括12通道zhi数字GPIO,4通道PWM输出,6-8通道10bit ADC输入通道)dao,并且具有专使用类似Java,C语言的IDE集成开发环境。Arduino和51单片机,基础都是C言语,都需要懂得一些硬件知识,51单片机是单独针对单片机的,arduino其实可以说包含单片机在内及现在的物联网通讯控制都可以做,像ESP8266wifi模块,ESP32wifi蓝牙模块都直接可以用 arduino 来编写。51单片机和arduino两者之间的区别:1、Arduino用的是AVR单片机,AVR单片机跟51单片机内部结构不同(寄存器多少和名称都不一样),编程工具烧写bai软件均不一样。2、Arduino编程将一些输入输出方法变成了子程序(库函数),应用更加方便。3、Arduino在软件开发反面考虑得更多的是功能的实现,而单片机开发还需要考虑相应的外围电路,和底层软件。4、使用Arduino做项目,几乎不用考虑硬件部分的设计,可以按需求选用Arduino的控制板、扩展板等组成自己的需要的硬件系统。而使用单片机开发必须设计硬件,制作PCB板。5、学习Arduino 单片机可以完全不需要了解其内部硬件结构和寄存器设置,仅仅知道它的端口作用即可;可以不懂硬件知识,只要会简单的C语言,就可用Arduino 单片机编写程序。使用单片机则需要了解单片机内部硬件结构和寄存器的设置,使用汇编语言或者C语言编写底层硬件函数。6、Arduino 的理念就是开源,软硬件完全开放,技术上不做任何保留。针对周边I/O设备的Arduino 编程,很多常用的I/O 设备都已经带有库文件或者样例程序,在此基础上进行简单的修改,即可编写出比较复杂的程序,完成功能多样化的作品。而单片机的软件开发,需要软件工程师编写底层到应用层的程序。没有那么多线程的库函数可以使用。7、Arduino 由于开源,也就意味着从Arduino 相关网站、博客,论坛里得到大量的共享资源,在共享资讯的辅助下,通过资源整合,能够加快您创作作品的速度及效率。相对其他开发板,Arduino 及周边产品相对质廉价优,学习或创作成本低,重要一点是:烧录代码不需要烧录器,直接用USB线就可以完成下载。想要了解更多两者关系和区别内容请移步到DFRobot创客社区Arduino专栏了解更详细的介绍。

怎样利用51单片机发生PWM,通过调节PWM的占空比控制可控硅调节电机转速,使转速平稳?

你是接的什么电机?要是异步电机的话属于感性负载,这种调压器无效,而且容易把可控硅击穿。。这种电路可以控制励磁电机。

基于MCS-51单片机的精密温度控制系统的设计与实现

q694452012,有全套的软件和硬件,论文也可以给你整

求电子万年历的MCS51单片机程序!急!在线等!

单片机高手多的是,万年历只是一个很简单的程序没有免费午餐付出了就要有收获网上有很多万年历,电子钟程序可以参考自己去找一下关于“单片机”的网页,或在百度输入“单片机电子钟、M51电子钟”可能找到你想要的自己努力吧

51单片机AT24c02顺序读写问题

写进去后延时等待至少10ms才能读。24C02固化数据至少要8ms。

求一个AT89S51单片机电子时钟程序!急急急.......!

sodisni 自己写撒 我和楼上的一样懒
 首页 上一页  1 2 3 4 5  下一页  尾页