51单片机c语言编程入门入门一个问题求帮助,可以的请留言

51单片机问题,报警设计问题,现在遇到一个小问题,可以的请留言,详细讨论_百度知道
51单片机问题,报警设计问题,现在遇到一个小问题,可以的请留言,详细讨论
我有更好的答案
问题都不说,就在这钓鱼?
没有,问题就是设一个温度控制报警器,现在温度控制和显示我都弄好了,报警这还有问题实现不了,能帮我看一下吗,微信或者Q,我把我程序发给你
说说你的程序逻辑,有什么问题实现不了。
我再怎么说也不如发给你看一下清楚吧?
为您推荐:
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。查看: 3102|回复: 2
什么是51单片机-51单片机入门篇
&我觉得是时候有必要出一些“扫盲”文章了,在2年多与网友们的交流中,发现了很多问题,这些问题大多数发生在初学者上,不管是大学生还是DIY爱好者,只要是初学者,难免会产生一些基础的异或,加入技术群有觉得不好意思发问。所以只要有时间,我就会出些“扫盲”文章,转为小白解惑。如果大家还想有其他的方面的更多了解或者疑问,欢迎在文章结尾留言!一、什么是51单片机,现在很多人有用51的,用52的,还有用stc12,stc15的,这些都有什么区别?通常我们说的51单片机,是Intel 8031指令系统的单片机的统称,并不是某一种型号 ,尽管单片机型号繁多,但根据它们的构架及指令系统,都可以归为MCS51。对于用户来说,最直观的感受就是程序的兼容性,比如AT89C51的程序拿到AT89C52上可以通用,反之AT89C52的程序也可以用在AT89C51芯片上,当然,第二种情况有个前提,下文我会提到。也许上面的话理解起来比较复杂,那么我概括为一句:两个51芯片功能不冲突的前提下,程序可以互相移植,这就是相同指令系统的单片机。不管是学生还是diy爱好者,最开始接触的多为AT89C51、AT89C52,或STC系列的51、52,乃至后面的AT89S系列、STC12系列、STC15系列,都属于51芯片,他们的构架是一样的。只是随着需求的增加,单片机的功能越来越多,处理速度越来越快,才有了不同的型号,但它们的母亲,都是伟大的intel,虽然功能有变化,但指令系统是不变的,这样就方便了用户移植程序。现在流行的单片机很多种类,只要说是51构架的,那么程序都是兼容的,可以不管型号。拿来就用。二、既然程序是兼容的,那么为什么很多时候程序直接下载后,却不能正常工作?程序的兼容是有前提的,我通过举例来说明:例1: AT89C51和AT89C52程序是否完全兼容(1)51的程序向52移植时,完全兼容,无需任何改动即可正常 工作(2)52向51移植时,不完全兼容,因为52有些功能是51没有的,涉及52增强功能的,不能直接向51移植。最常见的例子就是定时器2,52芯片有定时器2,但51没有,那么涉及到定时2的程序就不能直接给51用,如果非要用,就只能把定时器2的功能给定时器0或定时器1,这就需要改程序了总结:只要不涉及特殊功能,程序完全兼容例2:AT89C52与STC89C52RC不同公司的芯片程序是否兼容不同公司的51芯片程序到底兼容吗?这个是最困惑大家的,下面以AT52和stc52做说明(1)如果是经典程序,那么也是完全兼容的,这里说的经典程序指的是我们实验里老生常谈的流水灯、点阵、定时器秒表、蜂鸣器唱歌等等,程序无需做任何改动即可下载直接使用。它们连封装都一样,所以说,在无特殊要求时,可以直接替换。(2)不能直接替换的程序与例1中提到的是一样的,即功能差异,比如说stc52有eeprom,而AT52没有,所以含有eeprom程序的,就不能直接移植&总结,只要不涉及到功能差异的程序,也是可以互换的,但两者在处理速度上略有差异,不过不大,但涉及到不同的芯片时,头文件是需要注意的,一般来说,没用的附加功能,reg52.h都适用,但如果在移植程序的时候,用到了附加功能,那就只能将头文件改为这个芯片的头文件。例3:相同公司,增强型与非增强型单片机程序是否兼容?现在不比以前了,最开始学单片机的朋友们,接触最多的都是12T单片机,我读大学的时,STC12系列的1T芯片都还没兴起。但我们总归是要与时俱进的,现在在网上买单片机DIY套件,绝大多数都不是你正在学习的单片机型号,那么程序也会有所不同,现在常说的就是增强型51和非增强型51,那么到底有多大差异?下面将以STC两种经典的单片机型号做解说STC89C52RC(下简称89C52)和STC12C5A60S2(下简称STC12)的程序兼容性(1)与例1例2中涉及到的一样,在没有功能性差异的前提下,程序也是兼容的,这里说一下STC12C5A60S2中的经典功能——AD转换。STC12内置了8个10位AD采集通道,无需外部AD采集芯片,89C52如果想做数模转换,就必须外接AD转换芯片,显然,涉及到AD部分的程序,是不能兼容的,这就是功能差异。当然,如果你放着STC12内置AD功能不用,非要用外接AD转换芯片,那程序自然就兼容了(2)软件延时不兼容两款芯片在处理速度上有着本质不同,89C52为12T单片机,STC12为1T单片机,这里可以简单理解为后者比前者处理速度更快,因为处理速度变快了,程序不能直接移植,需要转换方可正常使用。至于到底快了多少,STC的官方手册给出了说明,下图即为STC官方给出的指令周期对照表(部分),列举了一些12T单片机和1T单片机的指令处理速度差异
&可以看出,1T单片机对指令提速了不少,但有人会说,我学的是C,汇编不懂,给我看这个表也没意义。这样说是不对的,不管你懂不懂,你至少要知道指令都是提速的,因为在keil下,C语言是先转换为汇编语言的。汇编指令提速了,对应的C语言自然也提速了。至于说,在实际应用中,到底提速了多少呢?特别是针对C语言用户,我只知道我写的程序是C,不可能让我转译到汇编再计算我提高了多少时间吧?接下来我将作出详细说明。我们先来看一段程序:& 这是一个流水灯程序,单片机工作在12MHz晶振下,闪烁时间为100毫秒,这是在89C52下的程序,延时子程序是通过STC官方软件生成的,如下图。& 我们要研究的问题在于,这个程序能不能直接用在STC12单片机上?有多大差异?答案是可以直接下载到STC12单片机执行的,只是闪烁时间会比100毫秒要短,因为指令速度提提升了,P2=0xaa这种端口赋值语句我们可以忽略不计,因为不管怎么提升速度,这一句对整个程序的周期影响不大。我们主要来研究下100毫秒的延时程序发生了怎样的变化。这个100毫秒的延时程序,下载到STC12单片机时,延时时间大约是16毫秒左右。那么为什么是16毫秒?是怎么算出来的?下面我就一一作出解释。我通过两种方法来验证,第一种就是把这些C语言转译为汇编,根据汇编指令计算出提高的速度,当然这种方法很蛋疼,就算懂汇编,计算起来也麻烦;第二种就是通过逻辑分析仪来检测IO端口的输出变化,P2=0xaa与P2=0x55存在高低电平的变化周期,观察周期变化即可。通过上述两种方法,都可以得出的结论是,速度提高了6.5倍左右,可以近似的认为提高了7倍。也就是说,89C52下100毫秒的延时程序,在给STC12执行时,速度提高了6—7倍(在汇编指令下,不同指令的提速不同,平均下来,就有了这样一个倍数关系)。那么有人就要问了,我现在有个89C52的流水灯程序,非要写在STC12芯片上,我又不会改延时程序,只会复制粘贴,怎么办?我估计STC也考虑到了程序移植上带来的计算不变,所以特别设计了带有辅助功能的下载软件,我们只需用“软件延时计算器”这一功能就可以完美解决。假设我们现在是在STC12环境下开发程序,那么先将之前的89C52流水灯程序复制过来(单片机型号对应的头文件自行替换),如图:& 我们只要替换掉这个延时程序就可以了,当前的延时程序是89C52在12Mhz下100毫秒,只需要改为STC12在12Mhz下100毫秒就可以了。在这里强烈推荐用stc官方下载器的“软件延时计算器”功能,只需四步,如图:& 第一步选择晶振大小,第二步设置延时时间,第三步选择单片机指令集种类,第四步生成C代码或汇编代码,最后复制这些代码就可以了。将89C52的延时程序删除,替换为刚刚生成的STC12延时程序,那么STC12芯片的流水灯程序就完成了!如图:& (上图中的延时程序就是基于STC12芯片的延时程序,与89C52下的延时程序不一样,注意区别)以上只是一个简单程序的移植介绍,这种方法也适用于其他程序,比如说18B20、液晶显示等,凡是程序中涉及到的软件延迟,都可以通过这种方法替换。我通过这种替换延时程序的方法,移植了很多程序,诸如液晶显示、温度程序、DS1302程序等等。(3)定时器延时单片机除了软件延时,还有定时器延时,这两种延时都是我们最常用的,那么89C52和STC12的定时器有变化吗?接下来我们看一下STC官方手册中给出的说明:& 可以看出,在我们常用的定时器功能、串口功能上,程序都是完全兼容的,避免了移植过程中繁琐。同样的,STC官方也说明,靠软件延实现的延时是需要做调整的,与前文的叙述一致。当然,STC12系列毕竟和传统的8051系列有着太大的不同,关于芯片替换中需要注意的问题,就需要用户自己阅读STC官方技术手册了。&以上对51单片机及程序兼容性做出了解释,上述文字仅代表工作室意见,难免出现错误、不足。望高手们更正指出!
Powered by投稿:3粉丝:42分享--dynmicweibozoneqqbaidu将视频贴到博客或论坛视频地址复制Flash代码复制Html代码复制微信扫一扫分享收藏0硬币--稍后看马克一下~用手机看转移阵地~用或其他应用扫描二维码手机下视频请使用扫码若未安装客户端,可直接扫此码下载应用看过该视频的还喜欢miniOFF,,51单片机电子钟的一个问题跪求解答_百度知道
,,51单片机电子钟的一个问题跪求解答
,,51单片机电子钟的一个问题跪求解答会的请留言,详细讨论一下
我有更好的答案
P2=0x10;10;disdat[2]=10;/p3;/秒计时{TH0=0x3c;//mode=0;dischg();TL1=0x78;switch(scanled){case 0;}dischg();disdat[3]=min%10;disdat[4]=min/10;TR0=1;/闪烁if((P3&0x0f)#include&reg51.h&P0=~ledtab[disdat[1]];10; }void flash(){switch(flashbit){case 0;0)sec--;}void dischg(){disdat[0]=sec%10:P2=0x40;3){flashbit=0;min=59;hour--;59){sec=0:P2=0x01;}}void t0isr() interrupt 1 //p3,0x66,0x6d;}}}case 1;key|=0xf0;while(1){flash();&#47.1选择调时、分,0x5b,0x4f;0){sec=59;disdat[4]=0x10;delay(50);dischg():case 5:P2=0x20;P0=~ledtab[disdat[2]];case 6;min++;if(min&switch(~key){case 0x01:
/}void t1isr() interrupt 3 //i++)for(j=0;switch(mode){case 0;case 3:disdat[0]=0x10;delay(10):if(time==20){time=0;led=0;disdat[5]=10;disdat[6]=hour%10;disdat[7]=hour/else if(min&0){sec=59;min--;}else if(hour&min=0;P0=~ledtab[disdat[7]]!=0x0f){key=P3&0x0f;while((P3&0x0f)!=0x0f);case 3:P2=0x08;P0=~ledtab[disdat[4]];case 4;sec=55;min=59;59){min=0;}}delay(80);flashbit=0;scanled=0;time=0;scanled%=8;}main(){TMOD=0x11;TH0=0x3c;break,0x7f,0x6f;}case 0x02:
/case 1:P2=0x02;P0=~ledtab[disdat[6]];case 2;TL1=0x78;TR1=1;TR0=1;ET0=1;ET1=1;EA=1;0-9unsigned char sec=0,min=0,hour=12,unsigned char key,sec++;TL0=0xb0;TH1=0disdat[1]=sec/disdat[7]=0x10;delay(50);dischg();if(sec&case 7:P2=0x80;P0=~ledtab[disdat[0]];default:}scanled++;P0=~ledtab[disdat[3]],0x40};sec=0;P0=~ledtab[disdat[5]];}else {hour=0;case 1:disdat[6]=0x10:P2=0x04;disdat[1]=0x10;delay(50);dischg()、秒TR0=0;flashbit+=1;if(flashbit&if(sec&hour++;if(hour&23)hour=0;delay(80):if(time==20){time=0,mode,TL0=0xb0;time++;delay(80);hour=23;case 2:disdat[3]=0x10;j&120;j++);x; unsigned char disdat[8];sbit led=P1^0;void delay(unsigned int x){unsigned int i,j;for(i=0;i&显示{TH1=0#define uchar unsigned charuchar code ledtab[]={0x3f,0x06,0x7d,0x07.2调数if(flashbit==0)if(flashbit==1){hour++;if(hour&99)hour=0;}if(flashbit==2){min++;if(min&59)min=0;}if(flashbit==3){sec++;if(sec&59)sec=0;}case 0x04:
//选择正/倒TR0=0;mode++;mode&=0x01;if(mode==0){sec=0;min=0;hour=0;}dischg();case 0x08: //启动/暂停TR0=~TR0;default:}}}}:break
高级工程师
你这个都没有说什么问题?
为您推荐:
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。51单片机入门教程pdf下载_爱问共享资料
51单片机入门教程.pdf
51单片机入门教程.pdf
51单片机入门教程.pdf
简介:本文档为《51单片机入门教程pdf》,可适用于IT/计算机领域,主题内容包含芯源电子大屏幕LED显示屏设计制造单片机和嵌入式系统开发上海芯源电子电器设计中心:Email:jiguocitiznetQQE话通致广大新老朋友应广符等。
侵权或盗版
*若权利人发现爱问平台上用户上传内容侵犯了其作品的信息网络传播权等合法权益时,请按照平台要求书面通知爱问!
赌博犯罪类
在此可输入您对该资料的评论~
添加成功至
资料评价:

我要回帖

更多关于 pic单片机入门与实战 的文章

 

随机推荐