tag 标签: 单片机学习

相关博文
  • 热度 15
    2014-11-9 15:43
    1083 次阅读|
    0 个评论
    点对点控制应用方案设计(2) 设想另一个应用场景,老人或小孩房间给一个模块,按一下,大人房间的模块就会响(蜂鸣器)。这样,老人或小孩有什么事情时,可以不用喊就让别人知道。 可以先参考“ 蜂鸣器控制实现 ”。 Step 1:请实现以下方案 应用:简单蜂鸣器无线控制 功能描述: 系统由一个蜂鸣器模块和一个控制模块组成; 蜂鸣器模块上有1个LED灯,一个按钮和一个蜂鸣器;控制模块上有1个按钮和1个LED灯; 初始状态下,按一下控制模块上的按钮,表示“呼唤”动作。控制模块发出消息,LED闪烁,表示对方模块在告警状态;蜂鸣器模块收到消息后,其上的蜂鸣器发声,LED闪动; 告警状态下,按一下蜂鸣器模块上的按钮,表示“确认”动作。蜂鸣器模块LED亮,蜂鸣器停止发声;表示当前状态为“告警确认”状态; 告警状态或告警确认状态下,按一下控制模块上的按钮,表示“取消呼唤”动作。控制模块发出消息,LED灭;蜂鸣器模块收到消息后,蜂鸣器停止发声,LED灭;   Step 2:考虑到消息发送过程会发生丢失,请实现以下方案 应用:蜂鸣器无线控制 功能描述: 系统由一个蜂鸣器模块和一个控制模块组成; 蜂鸣器模块上有1个LED灯,一个按钮和一个蜂鸣器;控制模块上有1个按钮和1个LED灯; 初始状态下,按一下控制模块上的按钮,表示“呼唤”动作。控制模块发出消息;蜂鸣器模块收到消息后,其上的蜂鸣器发声,LED闪动;蜂鸣器模块须回复确认消息,控制模块收到确认消息后,LED闪烁,表示对方模块在告警状态; 告警状态下,按一下蜂鸣器模块上的按钮,表示“确认”动作。蜂鸣器模块发出响应消息,控制模块收到后,回复确认消息。控制模块LED亮;蜂鸣器模块收到确认消息后,LED亮,蜂鸣器停止发声;表示当前状态为“告警确认”状态; 告警状态或告警确认状态下,按一下控制模块上的按钮,表示“取消呼唤”动作。控制模块发出消息;蜂鸣器模块收到消息后,其上的蜂鸣器停止发声,LED灭;蜂鸣器模块须回复确认消息,控制模块收到确认消息后,LED灭,表示对方模块回复初始状态; 要求: 设计消息类型和消息结构; 画出系统的FSM状态图(有限状态机); 画控制模块和蜂鸣器模块的流程图; 完成了?很好! 可以考虑一下以下扩展,或者开始其它类型的设计。   扩展1:请实现以下多点对点方案 应用:多控制器无线蜂鸣器 功能简述: 有多个控制模块,蜂鸣器模块上有多个LED灯和按键对应各个控制模块; 其它功能同上; 要求:细化功能描述;其它同上   扩展2:增加通信状态 应用:带连接状态无线控制蜂鸣器 功能简述: 在Step2的基础上; 蜂鸣器模块与控制模块之间周期性的发送hello消息; 收到hello消息后,保持LED灯亮,表示连接正常; 一定时间段(比如3.5个hello周期)内没有收到消息,则LED灯灭表示连接不正常; 其它功能同上; 要求:细化功能描述;其它同上 提示:可能要用到定时任务机制。 完成了?很好!   看看下一个感兴趣的主题吧。   主索引 方案设计 使用控件 2、通过电脑web方式远程控制     附件     参考链接    
  • 热度 21
    2014-11-9 15:41
    1959 次阅读|
    6 个评论
    蜂鸣器控制实现 蜂鸣器有两种:有源蜂鸣器和无源蜂鸣器。(上淘宝分别搜一搜吧) 这里的“源”指振荡源,有源蜂鸣器内部包含振荡器,只要给个高电平就发声(常见的是2kHz)(另一端接地)。 无源蜂鸣器不包含振荡器,需要提供周期性的信号。发出的声音的频率与输入的周期性信号有关。 可见,如果只是用于提醒/告警,则使用有源蜂鸣器更方便。 但是如果想控制发出的声音的频率,则应使用无源蜂鸣器。 注:用周期信号驱动有源蜂鸣器也可以改变声音的效果,当驱动的周期信号的频率小于1kHz时,等同于ASM调制信号,感兴趣的可以从数学上分析一下,并动手试一下。 另:无源蜂鸣器比有源蜂鸣器便宜,但如果需要用三极管电路来驱动的话,则价格差不太多。 另2:压电式蜂鸣器和电磁式蜂鸣器有什么区别,我不清楚,有兴趣的读者可以尝试测试一下他们的频率响应、音效音质等是否有不同。 Step 1: 任务:设计一个控件函数来控制有源蜂鸣器的状态。 要求: 1、函数定义为:int8 modSetBuzzerState(uint8 vBuzzerState); 2、设计单独的头文件和.c实现文件(modBuzzer.h、modBuzzer.c); 3、编写使用该函数的主函数,用按键控制蜂鸣器的响/停; 4、假设I/O引脚使用P1_3; 提示:只是对基本I/O电平的控制,可参考modSetLedState()的实现。C语言初学者可参考“怎样编写一个新的头文件”。 Step 2: 使用上面编写的函数,周期性的使蜂鸣器响t毫秒、停t毫秒。 百度搜索不同音阶对应的频率,尝试更改t的值,看是否能听出不同的音调效果? 拓展:用Matlab运行附件中的m程序,观察发出的声音的频谱示意图; 拓展2:分析m程序代码,分析横坐标一个单位对应多少Hz; 拓展3:在蜂鸣器前加滤波器,或者在m程序中加数字滤波器,是否能够得到干净的单频信号频谱显示? 拓展4:测试获得蜂鸣器的低频、高频截止频率;   Step 3: 学习cc2530的定时器功能,通过定时器输出比较通道的输出引脚驱动蜂鸣器发声。     主索引 使用控件 控件设计       附件   audio_fft.zip   参考链接    
  • 热度 15
    2014-11-5 12:21
    848 次阅读|
    0 个评论
    简单按键判断 按键是单片机应用中基本的输入方式。 一般的连接方式下,按键一个脚接单片机的I/O脚,另一个脚接地;单片机的I/O脚配置为输入方式,内部接上拉电阻(或者外面加一个上拉电阻(电阻的一端接I/O,另一端接电源))。这样的话,按键松开时,I/O脚的电平为高;按键按下时,I/O脚的电平为低。软件通过读取I/O脚的电平值就可以判断按键的状态。 打开附件中的02_Button项目。 观察main()函数实现。 打开modHwExt.h,观察modGetButtonPushed()函数的声明; 对于初学c语言的读者,对照例程理解: switch结构的使用(switch - case - break - default); 练习: 好像没什么可练习的。代码明白了没?明白了就去看简单点对点通信函数的使用,然后就可以完成第1个点对点通信应用了。   主索引 使用控件 控件设计 1.1 点对点通信函数的使用     附件   McuBasic.zip   参考链接    
  • 热度 13
    2014-1-25 14:26
    997 次阅读|
    0 个评论
    本文转载自: http://www.51hei.com/mcu/2675.html  大家好,我是陈滨,本人是去年9月份开始学单片机,到现在一年多了,现在本人基本掌握了单片机编程,开始深入学习汇编语言了。很多初学者有很多的 疑惑,我究竟是先学C语言,还是汇编语言?其实我告诉你,本人认为,先学C语言!为什么呢?C语言是目前使用最广泛的中级语言,就连现在的 windows7也是C语言编写的,C语言易读性好,无需对单片机内部结构十分熟悉即会编程,可移植性高,便于维护。C语言只有32个关键字,9种控制语 句,而且编译器提供了很多函数库,使用十分方便。而汇编语言达100多条指令,每条指令对应一个机器码,跟单片机内部结构息息相关,而且不提供库函数,每 种东西都要自己写。汇编语言最致命的地方是它不同硬件几乎不可移植,维护麻烦。但是读者又有疑问了,既然C语言这么多优点,干嘛还要学汇编语言?虽然C语 言易诸多优点,但是它也是有缺点的,就是代码执行效率不高,占用CPU资源高,这个就是中高级语言的缺点,目前最流行的安卓系统就是用高级语言编写的,据 说是Java,具体本人没去研究,大家都知道安卓CPU主频没有800M以上想流畅运行是不太可能的就好,哈哈...汇编语言是在机器语言的基础上发展起 来的,每一条代码对应一个机器码,所以执行效率很高,就连windows底层的东西都是汇编写的,C语言难以达到要求。当然随着编译器的改进,C语言执行 效率已经接近汇编,但是想真正成为单片机高手的话,那么我告诉你,精通汇编是必须的!因为汇编语言是直接操作单片机内部硬件的,如果你精通汇编,那么意味 着你对单片机十分熟悉,就能编出十分高效的程序。所以先学C语言能快速入门,再学汇编就能精通单片机。 OK!说了这么多,你会问:学习单片机能有什么钱途?嗯!学东西无非就是想赚钱,现在说学东西是业余爱好的话只有有钱人在说,谁敢说学手艺不是为了 吃饭?你?你?还是你?呵呵...目前这个世界上单片机无所不在,洗衣机,电视机,电冰箱等等...都有单片机的身影,单片机就是单片微型计算机的简称, 最早由英特尔公司发明,没错!就是大名鼎鼎的英特尔!哎!又一中国人的遗憾!电子技术什么东西才是我们中国的专利啊!说到计算机,咦?名字很熟悉?这个计 算机可不是我们用的计算器啊,而是指电脑!什么?你说单片机是一个电脑?对!没错,单片机就是一个微型电脑。一个电脑的基本组成是这样的:输入系统(键 盘)、输出系统(显示器)、计算系统(主机),你看你家的电脑是不是这样?其实主机还包含了运算系统(CPU)、程序存储器(硬盘)、数据存储器(内 存),拆开你的电脑主机,是不是也是这样?我们用的单片机其实除了输入输出系统,已经包含了其它东西,所以就微型计算机,英文叫MCU,又叫微处理器。早 期的单片机是英特尔的4004单片机,是4位的,由于功能太弱了,早已经淘汰,本人就不罗嗦了。现在我们用的单片机就51系列单片机,是英特尔最经典最成 功的发明,由于51单片机价格便宜,功能齐全,到现在10几年历史,依然火爆,估计未来10年,51单片机不会淘汰,所以51单片机对初学者很合适。目前 一个单片机工程师工资都在5000左右,视你的能力吧,上万的都有。单片机应用小到手机,大到火箭,都需要用到。只不过功能强弱不同,价格也不同,从几块 钱到100多块钱。你说火箭的单片机要多少钱?我想最多100多块!什么?是不是真的?我想是!既然单片机这么厉害,为什么这么便宜?主要是现在技术成 熟,产量大,目前世界上很多公司都在生产51核心的单片机,国内的话就有STC公司。 好了,那么学单片机该如何入手呢?俗话说,小钱不出,大钱不入,当然是要先花点钱买设备了,放心,不贵,200多块左右,不要告诉我你连200多块 的钱都没有?现在淘宝上有很多开发板,而且还送教程,价格都在200块左右。开发板就是用来学习单片机的,虽然现在有很多仿真软件,但是跟实际应用还是有 区别的。本人就有这样的经历,自己写了个程序,在仿真软件始终无法正常运行,但是到了实际电路运行很正常,所以开发板不能省。学习单片机最主要是多学习多 实践,多在论坛上逛,遇到问题要自己研究,实在不行可以网上发帖问问。买了开发板,首先你得先学习C语言,C语言最重要就是关键字,语法。目前最常用的 51编译器就是KEIL了,这个大家可以去网下载,现在都是**版的了。单片机大家可以买ATMEL的单片机,这个是最常用的了,就买AT89S52这个 吧,注意S的支持ISP编程,而C的不支持。什么是ISP呢?ISP就是在线编程的意思,就是无需拔下芯片就能写程序,这个对我们学习是很方便的。 现在网上很多教程有一些都是误人子弟,有不少错误,本人总结了很多经验,因为在此之前本人对单片机也是小白一个,所以很会理解初学者的心里。下载了KEIL,买了单片机开发板和单片机,下面我们就来开始单片机学习之旅吧,先来看出自单片机教程网 www.51hei.com 第4课的一个闪烁灯的小程序(他文章中主要从汇编的角度详解了闪烁灯的工作原理,我对此进行了C语言方面的详解算是对第4课的补全.): #include    //头文件 #define uchar unsigned char  //宏定义 sbit LED=P1^0;   //定义引脚 void delay()    //延时函数 {  uchar a,b; for(a=200;a0;a--) for(b=200;b0;b--); } void main()  //主函数 {  while(1)  {   LED=0;  //点亮LED  delay();  //延时  LED=1; //熄灭LED  delay(); //延时  } }    在这里我先说明一个问题,关于KEIL的使用网上有很多教程,由于时间关系这里我就不说了。上面是一个LED闪烁的小程序,初学者往往连这个也看不懂,好 像在看天书,别急!本人刚开始也是!我一个个说明。第一个,就是头文件,什么是头文件呢?就是编译器里面的一个库,里面定义了单片机的一些寄存器,写了这 个头文件,编译器就知道你使用的是52单片机,以下的操作它就认识了,否则编译会报错!第二个,宏定义,就是自己定义的新名字,上面的操作就是告诉编译 器,以后遇到uchar就是unsigned char了,便于书写,节省时间。第三个,就是定义单片机的引脚,如果我的LED接在P1.0这个引脚上,就这样定义了,以此类推。好了,开始说函数,有 人说编程要大学生才可以,NO!NO!NO!就拿我来说,我才初中毕业呢!不过话说回来,你的英语必须有30分以上,代数在60分以上才可以,否则吃力! 呵呵....因为C语言运用到了计算,单词等初中知识。这个是一个延时函数,因为单片机运行速度很快,如果不延时,LED闪烁就十分快,我们是分辨不出来 的。那么这个是怎么延时的呢?首先我们定义了两个变量a、b,然后a先赋值200,for这个是32个关键字其中一个,是一个循环语句,首先执行 a=200,接着判断a是否大于0,如果不是,则执行a--,就是a-1,直到a=0,这个语句执行了200次,同样下面的语句也是,这两个语句这样写起 到了嵌套作用,就是上面执行完了执行下面,这样就执行了200*200=40000次。为什么要这样呢?就是为了延时!其实这个程序就是让CPU在那里执 行空操作浪费时间来达到延时目的。下面的函数叫主函数,C语言每一个程序都有且只有一个主函数main,程序都是从主函数开始执行,上面的延时函数叫子函 数,也叫子程序,主函数可以调用子函数,反过来子函数是不可以调用主函数的。前面大家都注意到有一个void ,void在英文的意思是空,意思这个函数不带返回值,至于什么是返回值,以后再说。在函数的后面还有一个小括号,这个里面也是有一个void的,只是省 略了,那这个是什么作用呢?这个就是函数的参数,什么参数?也是以后再说!程序从主函数开始,进入了while(1)这个函数体,每个函数体都要有一个大 括号来包括,while的意思是如果括号里面的条件为真即为1,就执行里面的程序,否则退出,所以也是一个循环函数,把里面写1就是这个while永远为 真,永远执行这个函数,这样做的目的就 是让程序不断执行下去,这样LED就不断闪烁了。到了LED=0时,意思是把单片机P1.0这个引脚置为低电平,LED正极是接电源的,负极接P1.0, 这样LED就亮了。接着,延时,到这里单片机执行延时函数,紧接着LED=1,意思P1.0置为高电平,这个时候LED就灭了,然后又是延时,再点亮,周 而复始,LED就闪烁了。闪烁的频率由延时函数决定,当然你可以再写个for,这个LED闪烁就更慢了。   看了这个小程序,你有什么感觉?实际上设备上的程序比这个可是复杂多了,要学的东西太多了。好了,先到这里,我会慢慢教大家继续深入单片机编程,大家有什么要交流可以加本人QQ.只要我有时间,绝对做出回答。
  • 热度 18
    2010-9-9 14:11
    1938 次阅读|
    1 个评论
    单片机越来越多的受到电子产品研发员和我国高等技术类学校的应用与重视。本文在多年经验 的基础上,从 单片机结构、逻辑思维、和微观理念 方面着手,详细介绍了如何学好单片机这门 应用技术的几点经验之谈。 引言       单片机诞生于20世纪70年代。所谓单片机是利用大规模集成电路技术把中央处理单元(Center Processing Unit,也即常称的CPU)和数据存储器(RAM)、程序存储器(ROM)及其他I/O通信口集成在一块芯片上,构成一个最小的计算机系统,再加上了中断单元,定时单元及A/D转换等更复杂、更完善的电路,使得单片机的功能越来越强大,应用更广泛 。   现在更多单片机的发展已经进入了嵌入式系统时代, 由于制造工艺的进步,有如 VHDL、RTOS、CPLD、FPGA、DSP、arm等这一系列可编程器件的体积越来越小、成本越来越低,而功能是越来越能满足人们的需要。自上世纪80年代以来,单片机技术在我国各个控制领域得到了广泛应用,各个世界半导体公司都非常看好中国这个庞大的市场而纷纷到中国来投资建厂,如在苏州就有日本的瑞萨、松下、美国的快捷等半导体公司在中的生产厂地。同时面对这一技术的不断发展,我国大部分高校都已经把单片机方面的课程作为学生的必修课,这为我国近些年来的科技、工业控制等方面的发展培养了大量人才,而且社会对此方面的人才需求还在不断的增加。面对如此情况,作为在校学生,又该从何学起?如何学好这门课程呢?又怎样才能不让自己学了等于没学呢?本文在多年实践的基础上,介绍自已的一些感受和经验。 理解单片机的结构   对于一个初学者,最迷糊的就是对单片机芯片里面的结构的理解,小小的一个芯片为何能完成如此神奇的功能。   第一次从事电子方面的工作,也总对那黑黑的芯片里面感到不可思意的神奇。直到有一天,在检修一台日本二手电子市场里买来的程控交换机时,发现里面有一块黑东西上的黑胶已经裂开,把它撬开一看,里面就是一块电路板,上面焊满了密密麻麻的电子零件。终于有点明白,原来芯片也可以这样做成。当然当时所见的那块电路板是不能被称之为芯片的,那只是日本的电子制造公司为了防止别人抄袭而把整个电路板密封起来或其它原因,只引出几个的引脚与其它电路连接。不过它可以让人联想到芯片的基本结构与此相类似,如果把那些内眼看得见的电子零件再缩小一千倍或更小以至于能把所有电子零件做在一个硅片上,那也就成了名副其实的芯片了。我们不防以图1所示的电路及电路板来做一个生动形象的介绍。该图是一个直流马达可以正反两个方向转动的电路,做成电路板并焊好电子元件后,经测试没有问题就可以用黑胶(通常采用酚醛树脂等材料)把所有电子元件封起来,只留六个引脚来与外部电路连接,这样看起来就好像是一个芯片   知道了一般芯片的原理,同样可以更进一步想象单片机为什么会执行逻辑运算等功能,这就牵涉到数字电路和模拟电路的知识。 其实不管一个单片机的功能是如何的强大,其只不过是把许多以微米,甚至是纳米为单位级的数字的和模拟电子器件组成。为了形象的来说明单片机内部的结构原理,这里不访举如图2所示的跑马灯电路来阐述。图中电路表明的最终目的是让LED依次轮流被点亮。首先是通过计数器对输入脉冲计数,从0到15共16个脉冲为一个轮回,也即计数器的输出依次为二进制的0000B到1111B,再由四-十六译码器把计数器的结果解码输出,即依次置Y0到Y15由高电平变为高电平。当某一输出为高电平时,经过反向器后,与此线路相连接的LED的阴极被拉为低电平从而点亮该发光二极管。这样一来,计数器和译码器就相当于单片机里的处理器与PC地址寄存器了,与译码器输出脚相连的线就相当于地址线,与LED负极相连的输出线就相当于数据线,每一条 “ 地址线 ” 都与8根 “ 数据线 ” 有一个交叉,每一个交叉就相当于存储单元的每一个位。在这些交叉处是否要连通就相当于把程式烧录到存储器(ROM)里。最后总体来看就相当于一个只有16个地址的8位单片机。如果把LED换成图中数码管,改变图中的二极管连接,在 “ 单片机 ” 通电和输入时钟脉冲后,就可以不停的来显示数字了。   另外,要做到对单片机内部结果真正的了解,还必须得先要有很扎实的 电路基础、模拟电路、数字电路等方面的知识, 否则可能就是空中楼阁。 改变人生轨迹,规划职业蓝图 信盈达助你轻松驾驭嵌入式,3个月成就高薪梦想 就业职位:单片机开发工程师,嵌入式开发工程师 李工:13510783517    QQ:313807838 开设以下特色课程: 特色课程一: C51单片机应用培训班 特色课程二: 嵌入式Linux应用培训班 特色课程三: 嵌入式ARM7+u μ C/OS-II 操作系统培训班 特色课程四: 嵌入式ARM9+Linux培训班 由经验丰富的嵌入式工程师实战教学,手把手操作教学,以实践为主。 所有学员在学习期间均会获得我公司研发部十几位资深高级工程师、国际项目经理等的技术支持,除正常学习时间外,其他任何时间学员均可前来进行额外实践。更多信息详见公司网站: 周末免费试听预约热线: 0755-88846901     联系人:李工      
相关资源
  • 所需E币: 1
    时间: 2023-7-20 14:40
    大小: 12.51KB
    上传者: 张红川
    51单片机学习笔记.docx
  • 所需E币: 2
    时间: 2022-8-26 11:06
    大小: 1.03MB
    上传者: lookahead
    基于51单片机基础知识的入门到深入讲解。
  • 所需E币: 1
    时间: 2021-3-20 12:46
    大小: 4.61MB
    上传者: zendy_731593397
    第1章 绪论第2章MCS-51单片机的硬件结构第3章MCS-51指令系统第4章程序设计第5章  MCS-51的中断系统第6章 MCS-定时器计数器第7章 单片机并行接口技术第8章 单片机系统扩展第9章 MCS-51串行接口
  • 所需E币: 1
    时间: 2021-3-20 12:48
    大小: 12.03MB
    上传者: zendy_731593397
    第一章单片机概述第二章单片机芯片的硬件结构第三章单片机的指令系统第四章MCS-51汇编语言程序设计第五章 单片机存储器扩展第六章单片机的中断与定时系统第七章单片机IO扩展及应用附录复习及实验程序第八章单片机串行数据通信第九章 模数及数模
  • 所需E币: 3
    时间: 2020-9-11 15:32
    大小: 5.15MB
    上传者: sense1999
    单片机学习100例。。。
  • 所需E币: 1
    时间: 2020-9-9 22:09
    大小: 124.39MB
    上传者: 和彦
    本书通过大量的典型实例,详细介绍了51单片机各种C语言应用专题程序设计的流程、方法、技巧及设计思想。全书共分31章,第1章~第3章为基础知识,介绍了51单片机开发的硬件结构、指令系统、C语言设计以及Keil8051C编译器知识;第4章~第31章为本书的重点,通过28个典型的C语言应用实例,详细介绍了51单片机的各种应用开发和使用技术,包括输入/输出、数据采集、控制系统、存储系统与外设扩展、信号与算法实现、网络通信与传输、电源监控与抗干扰设计。全书实例丰富、代表性强,涉及领域广,每个例子都调试通过,都有具体的设计思路、硬件电路、软件设计以及程序代码分析,同时附录里专门提供了本书实例配套实验箱内容,对于读者学习51单片机的应用开发提供了良好的参考和指导价值。
  • 所需E币: 2
    时间: 2020-8-21 12:00
    大小: 1.17MB
    上传者: Argent
    本人从事电子行业多年,由电子硬件开发到软件设计,从工业控制到智能物联,收集了不少单片机产品的开发资料,希望通过这个平台,能够帮助到更多志同道合的网友,资料不在于多而在于精,有需要的老铁们可以下载下来参考参考。
  • 所需E币: 1
    时间: 2020-6-15 17:05
    大小: 269.88KB
    上传者: zendy_731593397
    51单片机的学习笔记
  • 所需E币: 4
    时间: 2019-12-25 03:12
    大小: 2.98MB
    上传者: 978461154_qq
    单片机基础学习……