额,大一的学生进实验室需要学单片机c语言编程,但.....只学过c语言,希望能给出比较详细的学习方法,最好有网站能学

(转)想学单片机的同学必看
在哈尔滨工程大学六年,我在学校电子创新实验室呆了四年,这四年里创新实验室给我提供了良好的学习环境和完善的实验设备;在与众多电子爱好者的交流中,使我学到了更多的专业知识;在学校老师们的教导下,让我学会了如何做一名合格的大学生。因此,在这里我要感谢哈尔滨工程大学的历任领导,我今天成绩的取得得益于他们不断完善的教育体制;衷心地感谢曾经教导过我的刁鸣教授、付永庆教授、王松武教授,没有他们对我的培养,也就没有我的今天。同时我也希望能有更多的电子爱好者加入创新实验室,在完善自我的同时,在电子行业做出更突出的业绩。
2007年,我以全新的教学方式推出了一套讲述51单片机的教学视频课程——“十天学会单片机”,该视频自从网上发布后,得到了电子爱好者的一致好评,诸多的单片机初学者通过这套视频走上了单片机开发之路。有很多学员来信或打电话希望我能够将视频中的内容著书出版,让更多的人受益。为此,从2007年9月至2008年7月,我用了近十个月的时间将本书写完。本书的写作风格与我在教学视频中的讲课风格相似,它与传统讲授单片机的书籍完全不同,我以学单片机“过来人”的思路,抱着如何才能更容易掌握单片机的态度,理论与实践完全结合的方式清晰地讲解了单片机部分。其余大部分内容为我多年做项目的经验积累,也有部分内容来自于网络电子高手们的精华总结,应当说,在本书中有太多的知识是大家平时在书本上学不到的。在这里,先将我在大学期间的学习和生活经历与大家分享,借此鼓舞大家珍惜大学时光,多学习文化知识,开创更加美好的明天。
写这篇文章的时候,我正处于硕士研究生毕业论文的准备阶段,眼睁睁看着我的大学生活即将画上句号,再看看身边有很多低年级的学生们一天天把时间白白荒费掉,我在心里替他们惋惜,在即将结束我的大学生活之际,我将我的大学几年的有意义的生活与大家分享,看过这篇文章后也许能让那些有梦想的同学为了实现自己的人生目标少走些弯路,大家要相信,大学校园——将为你提供一生最好的学习环境。
我高中毕业于新疆伊宁市三中,2002年考入哈尔滨工程大学信息与通信工程学院电子信息工程专业,2006年以创新人才免试保送哈尔滨工程大学硕士研究生,现在已经是我在学校的最后一个学期了。记得我刚入校的时候对电子知识一点也不懂,之前我比较喜欢经商,想着好好努力,将来开个公司,做做生意,所以第一志愿报了经济管理学院,结果没被经管学院录取,而被调剂到信通学院,现在想来也算是走对了。在上大学之前,我的梦想是上大学后,一定要当班长,一定要当学生会的干部。所以我从上大一就开始加入学校的学生会,非常积极地竞选班干部,后来也如了我的愿,班长也当了,学生会干部也做了不少。因为刚上大一的时候根本不知道大学里具体要学什么知识,每天就是上课,那时一节课也不敢逃,每天的生活就是去上课、吃饭、打球和踢球,然后回宿舍瞎侃,上床睡觉。周末时,找几个同学逛逛街什么的,每周都重复着同样的生活,日子过得平平谈谈,但那时也不觉得在虚度,可能还带着刚离开高中校园的那种兴奋,认为理想中的大学生活就是如此吧。
大一的一年就这样糊里湖涂过去了,接着就大二了,大二上学期除了在学生会的职位高了点外,其余和大一时也没什么区别,没有特别的事情发生过,偶尔逃逃不点名的公共课,天天照旧打篮球、踢足球。在大二下学期开学不久的某一天,我静静地的思考了很久,我想起了我曾经有过的梦想、我追求的人生、我向往的生活,想想如果再这样过完两年,我的将来会是什么样子?那天我觉悟了。我的专业是电子信息工程,那我必须在这方面学有所成,两年都快过去了,天天抱着课本啃,现在想想我的水平和高中时一样,我学的是电子专业,从初中就开始学电阻了,到现在都六七年了,至今我连电阻长什么样都没见过,这样下去学的算是什么电子专业?我想我不能再这样下去了,于是找了同宿舍的另一位同学赖世雄,我对他说:“我们一起参加学校的“五四杯”电子设计竞赛吧!”他欣然同意了,当时我俩真是对电子知识一无所知,根本不知道从哪里开始,于是我们就从电子杂志上随便找了个类似电话控制器的小作品,把杂志上原理图中所有的元件型号抄下来,然后我俩就去电子市场上买元件。第一次买电子元件,一点专业知识也没有,我们讲的好多东西卖元件的人都听不懂,闹了不少笑话,一个电阻被人家要了一毛钱,还说这东西真便宜啊!(实际上一个电阻还不到一分钱),最后买了一堆电阻、电容和三极管,加起来一共六七十元,回来就准备照着别人的原理图焊接,很显然,这种做法从一开始就已经注定结果必然是失败的。无奈之下,我们跑去找当时教我们电路基础课的付永庆教授,我对付老师说我们想学点真正的东西,但根本无从下手,能不能请付老师帮我们想想看做个什么东西?付老师是个很好的人,他当时正在构想从学校低年级学生中选出一部分爱动手、有上进心的学生作为创新型人才来培养,他看我俩有想法,就直接对我俩说:“你们俩可以到我的实验室里来,现在我正好带几个大四的学生做毕业设计,你俩先跟着他们学习学习吧!”。当时因为是付老师个人的实验室,所以电脑不够用,于是我俩就把自己的电脑搬进了实验室,从那天起,我真正踏上了电子设计这条路。付老师又给我俩介绍了一位正在做毕业设计的大四女同学,她叫黄光亚,她正在做一个两台计算机之间用激光通信的题目,我和赖世雄每天都去实验室看着黄光亚焊电路、写程序,那时看着真是一头雾水,感觉那些东西好神奇,在计算机上写上几句程序,按完回车,看见一道激光穿过眼前,然后在另一台电脑上就能看到整屏滚动的数据。大概跟着黄光亚前后忙了一个月,对黄光亚正在做的作品的硬件部分算是有了基本的了解,但计算机部分具体怎么实现的还是不明白。那时正好赶上2004年学校的“五四杯”电子设计竞赛,我们借黄光亚的作品申报了参赛资格。在比赛那天,我们就用仅懂些基本原理的一堆元件加两台电脑等待比赛评委的到来,当时评委们问了我们这是什么原理、信号怎么样调制、传输波特率多少等很多很多简单的专业问题。说实话,我们哪里知道啊!我那时连RS232电平是什么概念都不明白,评委们提的专业名词我根本就没听说过,当时也就把我们懂的东西全说了,也不知道对应评委的哪个问题。那时学校“五四杯”电子竞赛的参赛作品比较少,评委看我们才大二,而且我们的作品又是一个较完整的系统,基本没什么工作上的漏洞,为了鼓励我们,最后还给我们发了个小奖。
“五四杯”结束后,赖世雄就从实验室把他的电脑搬回宿舍了,很可惜,他放弃了继续走这条路。我的电脑一直放在付老师的实验室。说到这里还要讲一点儿关于我买电脑的小插曲。大二上学期时,我的很多同学们都买了电脑,于是我也跟着买了,当时不知道买来电脑后具体要学什么东西,我的同学们买来电脑后,大部分时间在玩游戏、QQ聊天,有的同学可以从早上一直聊到晚上,玩游戏的同学可以从早玩到晚,我同学建议我玩“传奇”游戏,说很有意思,他帮我注册了账号,游戏里一个动画人物拿着一把大刀不停地砍野猪、野鹿什么乱七八糟的所谓怪物,他砍了几刀就把一头野猪砍死了,然后他说:“你看长经验了吧,多有意思,你来玩!”,我接过鼠标砍了三刀,我想破脑子也想不出他说的有意思是指什么,然后我说:“实在是无聊!”,那天起开始了我的游戏生涯,三刀后也结束了我的游戏生涯,我觉得网络游戏实在是没有意思。我更不喜欢聊QQ,可是这电脑都买了,不能一点用处都没有吧,当时那个时候,真的不知道电脑能“玩”什么和我们专业有关的东西,那些天我每天用电脑做的最多的工作就是把文件从一个分区拷到另一个分区,把一些不用的文件删除,甚至把C盘下能删的文件都删了,最后导致系统无法启动还问为什么?过了几个月我发现除了复制和粘贴功能我用得非常熟练外,其他我好像还是什么也没学会。再后来就去书店买了些制作Flash动画和制作照片的Photoshop之类的书,回来后天天学那些没用的东西。现在想来真的是太可惜了,那时真是浪费了大把大把的时间。电脑真的是可以学很多很多东西的,对于我们专业来讲,学单片机需要学C语言,学Keil、WAVE、IAR、ICC、MPLAB软件的使用,学汇编语言;在用到上位机界面编程时,需要学C++、VC++、VB语言等;用CPLD/FPGA/SOPC时,需要学VHDL和Verlog语言,学这些语言时,可以学Maxplus、Quartus软件的使用;当用到仿真时,可以学Protues、Multisim软件的使用;设计电路板时,可以学Protell、Altium
Designer、Power
PCB软件的使用等;还可以学DSP用的CCS软件、ARM用的ADS、STD软件等,所有上面我提到的这些,全都依赖于计算机系统。在今天看来,我是全部掌握了,然而这是后来我付出巨大的代价才换来的,如果我能利用好大一大二那些大好时光的话,我相信今天的我又会是另一番模样。
接上面话题,赖世雄搬走后,付老师给了我实验室的钥匙,从那天起,实验室便成了我的另一个家。当时那个实验室只有我一个人学硬件,也只有我一个本科生,其他的硕士、博士研究生主要研究理论,所以很少有做硬件的,那时我分不清电解电容的正负极性,我拿着一个电解电容问了实验室的好几个人,结果他们也不知道,更有人说这是什么东西,我从来没见过。这件事很令我震惊,难道这就是电子专业读了四年本科,又读了几年硕士研究生的高水平大学生吗?现在大学毕业生的工作确实不好找,那不能怪别人,只是因为你确实没有别人需要你的理由。偶尔听前届的学长们说到,作为信通学院的学生,如果学会了单片机、C语言、DSP那你的前途必定是一片光明。于是我开始学习单片机,当时苦于没有硬件实验环境,身边又没有会的人请教,于是我就上网找资料,看见网上有卖单片机学习板的,那时价格都挺贵的,但我还是狠下心买了一块三百多块钱的单片机学习板,寄回来后我就开始做练习,之前也看过几遍书,可发现光看书没有任何效果,看上十遍、二十遍,感觉是学会单片机了,可当要应用到硬件系统中时,发现其实我什么也不会。后来我就边做实验边查书,这样就理解得很透彻了,就是从那时起我每天早上八点之前就到实验室了,除了选上部分课外,其他时间都泡在实验室里,一直到晚上十点多看楼的大爷用脚踹着实验室的门叫我走我才离开实验室。那时每天就摆弄单片机,没有人教我,全是我自己一个人摸索,而且当时学的是非常难懂的汇编语言。记得大一时也学过C语言,可我发现等要用的时候我什么也不会,根本和单片机联系不起来,就和没学一样,我只好选择汇编语言,大概一个月后,也就是快放暑假时,我做出来了自己的第一个单片机作品,一个电子钟。有人说你要是用单片机做出一个电子钟,那你基本上已经掌握单片机的80%了。这句话有道理,电子钟对编程的综合性要求还是相当高的。
那时,我对单片机已经有了初步的掌握,假期的时候我报名参加了2004年黑龙江省大学生电子设计大赛,那天起我搬进了学校的电子创新实验室,我们选的题目是无线数据通信,当时指导老师让我们用FPGA做,其中还要用到VC编程及C++语言,我那时还不懂什么是FPGA,于是我开始拼命地学这些知识,每天吃饭都在实验室。省赛不同国赛,省赛是把题目先发下来,两个月后交作品就行,其实学FPGA/CPLD也和学单片机一样,关键是自己动手写程序实践,不停地写程序,然后看程序运行的效果,这两个月里我把VHDL语言搞得很熟练,但是VC还差了一点。我们队一共三个人,除我之外还有路智超(做模拟电路部分)和魏旭东(上位机VC程序),魏旭东是我校理学院的,VC学得相当好,他的VC编程也全是自已业余学的。魏旭东编程时,我就在旁边看,他耐心地给我解释每一行每一句,等空闲时我自己再练,那段时间我对VC有了初步的了解。比赛结果很好,我们获得了黑龙江省一等奖,这也是我的第二次获奖,这次获奖给了我很大的鼓舞,接下来我发现必须要学单片机C语言编程了,汇编编程非常烦琐,一个全面的人才不能只将知识局限于某一方面。
从大三开始学校里有各种电子设计竞赛,我总是积极报名参加,为自己寻找锻炼的机会,我为此放弃了我最喜欢的篮球、足球运动,再没有逛过一次街,每天早上起床、洗脸、刷牙,然后就拿着书去实验室,白天在实验室写程序、调电路,做各种硬件练习,晚上回来补充理论知识,模电、数电、高频一遍一遍地重复看,每晚差不多两点睡觉,充分地把实践与理论结合在了一起,那时我才发现大学里的理论知识同样是那么重要,而原来根本没有意识到。孤立地学习理论,不把它们与要应用的领域结合在一起,就失去了学习它的意义;如果只为了参加期末考试,等考完试的第二周也许就已经忘得干干净净了,如果这样学习,那只能说我们学错了方向。如果一个人的模拟电路、数字电路和高频电子线路的基础不好,那么他可能设计不出什么好的电路,
我们在做硬件实践的同时再来看书中的理论知识,这样的结合是最好的。这种单调的生活我天天重复着大概过了一年,无数次实验失败时内心涌起的烦燥被我执着追求知识的欲望一次次抑制住;无数次胜利的经验告诉我,唯有坚持不懈、永不放弃才会取得最终的胜利。在这一年期间,我陆续参加了一些国家级及校里的竞赛,同时也获得了不少奖项。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。&&&手把手教你学51单片机(C语言版)
&55.00当当价
(7.84折)电子书价
电子书加价购
加价换购以下任意一件商品
请选择配送地址
钻石会员自营订单满49元(含)免运费
其他会员自营订单满59元(含)免运费
不足金额订单收取运费5元起
商品问答(%s条)
当当价:&27.80
版 次:1页 数:416字 数:613000印刷时间:开 本:16开纸 张:纯质纸印 次:1包 装:平装丛书名:国际标准书号ISBN:9所属分类:&&
&  《手把手教你学51单片机(C语言版)》的创作,目的就是改变当前&51单片机&教学与自学的模式;所以这本书的创作过程已经创造了诸多业界**:国内首创&手把手教你学&&&集理论知识、视频教程、教学课件与技术支持于一体的教学解决方案!未出版图书就接收到数百份订单!本科院校、职业院校的多名主讲教师阅读样章后一致认同并采用为教材(对于购买教师读者,将遴选赠送开发板)。可以预见,《手把手教你学51单片机(C语言版)》将引领一场单片机教学的革命!
相关优秀图书推荐(&请点击链接):
《手把手教你学51单片机(C语言版)》旨在培养和锻炼单片机系统实用开发技能,全书以实践为主线,让读者在一个个实践案例中逐步掌握单片机电路设计与程序代码编写能力。书中的内容从最初点亮一个小灯的简单实验,逐步扩展知识面,到最后多功能电子钟的实际项目开发指导,不仅讲解了大量原理性知识,更重要的是给读者提供了实际项目开发的思路和经验,可以让读者从实践过程中提高自己发现问题、分析问题、解决问题的能力。本书的参编人员都是拥有多年实际项目研发经验的资深工程师,因此书中的内容涵盖了大量的实际项目中所采用的技术和技巧,具有极强的实时性和先进性,为读者铺就一条从单片机初学者晋级为工程师的康庄大道。本书适合刚刚接触单片机的初学者自学阅读,又可以作为各类院校电子技术相关专业的单片机教材,同时对电子行业的从业技术人员也有很高的参考价值。
  宋雪松:国内知名单片机培训专家,嵌入式产品技术顾问。拥有近十年产品研发经验,曾主持研发通信类、虚拟仪器等多款产品,在硬件电路设计和嵌入式软件设计方向有丰富的项目实战经验。2010年创立金沙滩工作室(www.kingst.org),致力于实用化的单片机技术教育,出品《手把手教你学51单片机》视频教程,该教程以通俗的语言、专业的思路和精湛的技术获得了广大读者一致好评,广为传播。
前言第1章 如何学习单片机 1.1 学什么类型的单片机 1.2 学习单片机的最佳方法 1.3 单片机学习的准备工作 1.4 单片机开发软件环境搭建 1.5 Keil基本概况介绍 1.6 答读者问第2章 点亮你的LED 2.1 单片机的内部资源 2.2 单片机最小系统  2.2.1 电源  2.2.2 晶振  2.2.3 复位电路
赞誉前言第1章 如何学习单片机 1.1 学什么类型的单片机 1.2 学习单片机的最佳方法 1.3 单片机学习的准备工作 1.4 单片机开发软件环境搭建 1.5 Keil基本概况介绍 1.6 答读者问第2章 点亮你的LED 2.1 单片机的内部资源 2.2 单片机最小系统  2.2.1 电源  2.2.2 晶振  2.2.3 复位电路 2.3 LED小灯 2.4 程序代码编写  2.4.1 特殊功能寄存器和位定义  2.4.2 新建一个工程  2.4.3 编写点亮小灯的程序 2.5 程序下载 2.6 练习题第3章 硬件基础知识学习 3.1 电磁干扰 3.2 去耦电容的应用 3.3 三极管在数字电路中的应用  3.3.1 三极管的初步认识  3.3.2 三极管的原理  3.3.3 三极管的应用 3.4 74HC138三八译码器的应用 3.5 LED闪烁程序 3.6 练习题第4章 C语言基础以及流水灯的实现 4.1 二进制、十进制和十六进制 4.2 C语言变量类型和范围 4.3 C语言基本运算符 4.4 for循环语句 4.5 while循环语句 4.6 函数的简单介绍 4.7 Keil软件延时 4.8 流水灯程序 4.9 练习题第5章 定时器与数码管基础 5.1 逻辑电路与逻辑运算 5.2 定时器的学习  5.2.1 定时器的初步认识  5.2.2 定时器的寄存器  5.2.3 定时器的应用 5.3 数码管的学习  5.3.1 数码管的基本介绍  5.3.2 数码管的真值表  5.3.3 数码管的静态显示 5.4 练习题第6章 中断与数码管动态显示 6.1 C语言的数组  6.1.1 数组的基本概念  6.1.2 数组的声明  6.1.3 数组的初始化  6.1.4 数组的使用和赋值 6.2 if语句 6.3 switch语句 6.4 数码管的动态显示  6.4.1 动态显示的基本原理  6.4.2 数码管显示消隐 6.5 单片机中断系统  6.5.1 中断的产生背景  6.5.2 定时器中断的应用  6.5.3 中断的优先级 6.6 练习题第7章 变量进阶与点阵LED 7.1 变量的作用域  7.1.1 局部变量  7.1.2 全局变量 7.2 变量的存储类别 7.3 点阵的初步认识 7.4 点阵的图形显示 7.5 点阵的动画显示  7.5.1 点阵的纵向移动  7.5.2 点阵的横向移动 7.6 练习题第8章 函数进阶与按键 8.1 单片机最小系统  8.1.1 电源  8.1.2 晶振  8.1.3 复位电路 8.2 函数的调用 8.3 函数的形式参数和实际参数 8.4 按键  8.4.1 独立按键  8.4.2 矩阵按键  8.4.3 独立按键的扫描  8.4.4 按键消抖  8.4.5 矩阵按键的扫描 8.5 简易加法计算器 8.6 练习题第9章 步进电机与蜂鸣器 9.1 单片机IO口的结构 9.2 上下拉电阻  9.32 8BYJ48型步进电机详解与实例  9.3.1 电机的分类 9.3.2 28BYJ48型步进电机原理详解  9.3.3 让电机转起来  9.3.4 转动精度与深入分析  9.3.5 编写实用程序的基础  9.3.6 包含综合应用的实用程序 9.4 蜂鸣器 9.5 练习题第10章 实例练习与经验积累 10.1 数字秒表实例  10.1.1 不同数据类型间的相互转换  10.1.2 定时时间精准性调整  10.1.3 字节操作修改位的技巧  10.1.4 数码管扫描函数算法改进  10.1.5 秒表程序 10.2 PWM知识与实例 10.3 交通灯实例 10.4 51单片机RAM区域的划分 10.5 长短按键的应用 10.6 练习题第11章 UART串口通信 11.1 串行通信的初步认识 11.2 RS232通信接口 11.3 USB转串口通信 &&
第12章 指针基础与I602液晶的初步认识
第13章 I602液晶与串口的应用实例
第14章 I2C总线与E2PROM
第15章 实时时钟DSI302
第16章 红外通信与DS18B20温度传感器
第17章 模数转换A/D与数模转换D/A
第18章 RS-485通信与Modbus协议
第19章 实践项目开发&&多功能电子钟
第20章 单片机开发常用工具的使用
附录A ASCII码字符表
附录B C语言运算符及优先级
附:KST-51开发板原理图
为什么要写这样一本书  单片机技术是现代工业自动化、电子电气、通信及物联网等领域的一门主流技术。随着人们生活及生产方式的自动化、智能化程度越来越高,单片机技术早已融入我们生活的每一个角落,几乎所有的家电内部都有单片机的身影,无数的自动化及智能公共设施也都有单片机在其背后兢兢业业地工作着。同时,单片机技术也是学习ARM嵌入式系统、FPGA设计等更高阶技术的一个基础。  很多同学都想学好单片机技术,可能看了不少书,也付出了很多的努力,但却总感觉似懂非懂,遇上具体项目也很茫然而无从入手。目前市面上关于单片机开发的书有很多,但绝大多数,要么是过于理论化,全是架构讲述和汇编指令等,学了半天仍不知单片机为何物。要么只是一些很简单的小实验,学完后也只能做到点亮个小灯、显示个数字等,C语言指针都没有用到过,综合实践的例子更是一个没有。在学完这类教材后无法深入下去,很难跟实际项目开发衔接起来,于是可能会怀疑自己的能力,适不适合搞单片机。  从作者多年从事单片机领域的工作经验来说,单片机这东西,要说难的话真不怎么难,外行人看起来可能挺神秘,其实主要是没人帮忙去点破各种缘由,学不会的主要原因是
为什么要写这样一本书  单片机技术是现代工业自动化、电子电气、通信及物联网等领域的一门主流技术。随着人们生活及生产方式的自动化、智能化程度越来越高,单片机技术早已融入我们生活的每一个角落,几乎所有的家电内部都有单片机的身影,无数的自动化及智能公共设施也都有单片机在其背后兢兢业业地工作着。同时,单片机技术也是学习ARM嵌入式系统、FPGA设计等更高阶技术的一个基础。  很多同学都想学好单片机技术,可能看了不少书,也付出了很多的努力,但却总感觉似懂非懂,遇上具体项目也很茫然而无从入手。目前市面上关于单片机开发的书有很多,但绝大多数,要么是过于理论化,全是架构讲述和汇编指令等,学了半天仍不知单片机为何物。要么只是一些很简单的小实验,学完后也只能做到点亮个小灯、显示个数字等,C语言指针都没有用到过,综合实践的例子更是一个没有。在学完这类教材后无法深入下去,很难跟实际项目开发衔接起来,于是可能会怀疑自己的能力,适不适合搞单片机。  从作者多年从事单片机领域的工作经验来说,单片机这东西,要说难的话真不怎么难,外行人看起来可能挺神秘,其实主要是没人帮忙去点破各种缘由,学不会的主要原因是方法不对头,没有专业的人员带领大家入门。  基于这些原因,我们编写了这本《手把手教你学51单片机(C语言版)》,并且配套了相关的视频教程、电子教案、源代码和实验开发板(详情点击www.kingst.org),手把手地带领大家来学习单片机技术,给单片机初学者带来福音,让大家一步一个脚印地掌握单片机技术。  《手把手教你学51单片机(C语言版)》这本书除了讲解简单的实验和编程语法、由浅入深地讲解单片机技术和C语言编程技巧外,更重要的是结合了多个模块,以实际工程项目的编程规则来逐步带领大家学习实际开发中的电路设计和编程思路。尤其是C语言的指针和结构体的灵活运用、单片机的多模块编程、实际项目开发流程指导等,更是当前单片机类教材中少见的瑰宝。通过对本教材的透彻掌握,可以使读者在进入公司后能够快速适应并能承担实际的项目开发,可以说这本教材为同学们搭建了从初学者步入工程师殿堂的桥梁。  本书特色  1) 实践为主,理论与实践相结合  现阶段,学习单片机不是为了应付考试,也不是为了去撰写论文,而是真正学会单片机开发技术。因此本书主要起到一个辅导实践的作用,通过每一章节的学习,目的不是让大家记住背过哪些理论,而是让大家知道如何去实际操作编程,了解方法后,大家就可以真正地去实践操作一下,从而达到学习和掌握单片机技术的目的。  2) 科学的学习方案,由浅入深循序渐进  众多初学者不知道单片机该如何学习,不要紧,本书为你制定了一套科学的学习方法和思路,只要紧跟着书中的方法和思路,按照书中要求的去实践,相信很快就可以学会单片机了。本书的学习套路和传统的方法大不相同,传统的是先讲基本原理,然后再举例,本书则是尽可能先举例子,建立起鲜活的形象,然后带领大家去探求其中的奥秘,逐一解释例程中的每个知识点的原理,这样会非常有利于大家对例程的理解。  3) 细致讲解,形象比喻  自然万物都是相通的,单片机也不例外。其实单片机技术的很多原理和道理都跟人们的实际生活类似。在课程讲解的过程中,会尽量把难以理解的技术问题和实际生活经验相联系,用形象的比喻来帮助大家透彻理解原理。  4) 例程丰富,设计规范,与实际项目紧密结合  以前的教材大多是学校老师或者专业写书人的著作,相对来说和实际项目开发有所偏离。我们认为: 学习技术,无限接近实际项目才是正道。因此参与编写此书的人员都是有着多年的丰富的实际项目开发经验的工程师,所有的电路设计、编程的思路和规范,都是与实际项目开发相结合的,这样大家在入门后,能够很快地投入到实际开发中去。  5) 重点关注实用技术  本书的内容偏重于单片机的应用而非详尽的理论阐述。传统的书籍作者一般会把和单片机、C语言相关的内容一一列举介绍出来,而本书的原则是常用的重点讲解分析,不常用的只做简单介绍,早已经过时的或者极少用到的内容直接不予理会,提高本书的精华度。用一位网友的描述就是: 都是干货,对实际开发相当有用。  6) 配套视频教程  除了纸质书本之外,还附赠了DVD光盘,内容是视频教程、电子课件(PPT)、各章节的实例源代码和习题答案等。  7) 完善的技术讨论平台  本书提供论坛技术讨论平台: www.kingst.org。读者可以在上边找到我们的联系方式,下载所有的学习视频和文档资料,可以加入到我们的技术讨论群中和大家一起讨论学习,共同进步。  本书主要内容  全书一共20章,从第1章到第18章以实验为载体,从单片机最小系统和C语言基本语法开始讲解,逐步深入,讲解单片机内部资源和C语言的各种用法,并穿插介绍实际项目开发常用的电路设计思路和编程技巧等。本书在知识讲解的过程中,有些地方没有按照传统思路先介绍后应用,而是先应用后讲解,这样的方式更有利于大家深入理解知识点,清楚地了解知识点的用法和原理。第19章是项目开发指导,带领大家逐一走过实际项目开发的全部流程,并最终完成它,让大家进行一次实际项目开发前的一个实战演习。第20章讲解了单片机开发中一些常用工具的用法,熟练运用它们,可以帮助大家高效率地定位并解决问题。  关于我们  相信很多学电子的同学和我接触单片机的经历一样,大学里开了C语言和单片机相关的课程,但是上完课了却从未见过单片机长什么样子,也不知道C语言有何用处,考试的时候通过背一下书上的概念和程序就那么通过了,头脑中除了留下&单片机&和&C语言&这样两个概念外,其他的全都就着馒头下肚了,没在大脑中留下一片云彩。  一个偶然的机会,我进入了我的单片机启蒙恩师李冬明老师的实验室,从此真正的单片机进入了我的世界。李老师给了我一套学习板,让我从师兄编写的程序开始学习,不懂的可以问师兄师姐。刚开始的学习很难,什么都不懂,甚至想问问题都不知道该问什么,但是我还是坚持从早上8点半到晚上9点半全天候在实验室里学习。大概两三个月的时间,随着老师布置给我的第一个任务的完成,我发现自己一下理解单片机了,当然这顿悟离不开两三个月的积累。半年后正式开始参与老师项目开发的一些简单工作,算是入门单片机了。我找工作的那年,由于经济危机带来就业问题很严峻,但是带着在实验室学习的技术和积累的经验,我在就业大潮中很容易地找到了工作,而且进入工作岗位后,我迅速进入状态,一个月后在公司就开始参与实际产品研发工作了,几乎没有什么过渡期。  回顾我的单片机之路,我发现我是个幸运儿。一个班级里几十个人,一个学校又有那么多电子专业的学生,最终能够真正跟着老师参与项目开发锻炼的就那么几个,而全国有很多很多高校,最终有机会得到特训参加电子比赛以及项目开发实践机会的人太少太少了,大多数同学只能在外围羡慕嫉妒恨。更有很多同学发现自己没这种机会后就自甘堕落,整天逃课玩游戏,最终大学毕业两手空空,如果不靠拼爹,靠自己很难找到称心的工作。大多数同学能考上大学,脑子一点也不比别人笨,只是没有一个领路人,没有一个正确的学习方法,缺少了参与学习的平台和参加实践的机会。  随着我自己工作中技术水平的不断提高,我也发现传统的单片机教材完全跟不上技术发展的节奏,导致这个行业的初学者非常迷茫和无奈。找了几个志同道合的朋友出来创业的时候,决定把单片机教学相关工作作为工作室一项业务,先后做过两个版本的《手把手教你学单片机》视频教程。2013年初,和清华大学出版社商定撰写《手把手教你学51单片机(C语言版)》这本教材,旨在帮助那些想学单片机但又无从下手的初学者们,帮助同学们真正跨过这道门槛,步入工程师的行列。  本书在编写过程中得到李冬明老师的大力指点和指导,由衷地表示感谢。李冬明老师是一位非常严谨和认真的老师,他的严谨不仅体现在教学上,在科研上对我们的要求也是无比严格。我跟着他学习的时候,他经常说的一句话就是: &做技术必须要认真,很多人做事的时候喜欢糊弄,但做技术绝对不可以。技术是逻辑性很强的东西,不应该有任何侥幸心理,你糊弄它的话它就糊弄你。&这一点我在做实验的时候已经体会到了,曾经由于自己的不认真,电容极性接反,导致电容爆掉,板子烧毁。  本书的诸多与实际开发相关的设计思路、编程技巧和算法等得到崔长胜工程师的大力指导,由衷地表示感谢。此外,本书在编写过程中,也得到了广大单片机爱好者热情的支持和宝贵的反馈,在此表示真诚的感谢。  限于作者水平,书中难免存在不当之处,恳请广大读者批评指正。任何批评和建议请发至: service@kingst.org。  宋雪松2014年2月
何宾(博士,畅销书《Xilinx FPGA设计权威指南》作者)  于寅虎(电子产品世界总编)  20世纪80年代诞生以来,8051就从未离开过嵌入式应用开发工程师的视线。在30多年的历程中,以8051为内核的单片机在结构、功能和开发语言等方面一直不断演进,至今仍被大量应用于各种电子设备,仍有大批的电子工程师采用8051单片机从事嵌入式系统的开发。作为微控制器的鼻祖,8051奠定了嵌入式芯片系统的经典体系结构; 掌握8051的开发应用,有利于从事更高层次的嵌入式开发系统的学习。该书的突出特点就是紧跟时代步伐,从实战角度论述,其设计思路、编程技巧和程序算法源于实践。作者能够灵活运用C语言的指针和结构体,可以将已呈现SoC特征的8051的性能发挥到极致。希望读者能够从8051开始,开启美妙的嵌入式开发之旅。  杨晖(电子技术应用副总编)  宋雪松是一个电子技术的追梦人!他在追逐单片机的道路上,摸过烧红的铁块,有过无数的坎坷;&幸运的是,他坚持学习,勇于突破,终于成长为一名有理想、有本领的嵌
何宾(博士,畅销书《Xilinx FPGA设计权威指南》作者)
  在该书出版前夕,很荣幸有机会阅读了样章。整体感觉是这本书具有突出的原创性和优秀的实践性!作者是真正在用&心&写书,为什么这么说呢?这本书其实就是作者在和读者分享自己学习单片机的历程。作为一个工程师,作者从系统的角度,告诉读者学习单片机的方法,而不是就事论事地单纯讲应用。本书始终围绕着一个主题,即告诉读者如何根据不同应用要求,构建相关硬件接口和设计软件程序。书中给出的实例,基本上涵盖了单片机最为典型的应用场合。该书为读者提供了完备的学习生态系统,包括视频、课件、开发板和论坛。这样,读者和作者之间就建立了一个很好的交流平台,有利于高效学习。  于寅虎(电子产品世界总编)  20世纪80年代诞生以来,8051就从未离开过嵌入式应用开发工程师的视线。在30多年的历程中,以8051为内核的单片机在结构、功能和开发语言等方面一直不断演进,至今仍被大量应用于各种电子设备,仍有大批的电子工程师采用8051单片机从事嵌入式系统的开发。作为微控制器的鼻祖,8051奠定了嵌入式芯片系统的经典体系结构; 掌握8051的开发应用,有利于从事更高层次的嵌入式开发系统的学习。该书的突出特点就是紧跟时代步伐,从实战角度论述,其设计思路、编程技巧和程序算法源于实践。作者能够灵活运用C语言的指针和结构体,可以将已呈现SoC特征的8051的性能发挥到极致。希望读者能够从8051开始,开启美妙的嵌入式开发之旅。  杨晖(电子技术应用副总编)  宋雪松是一个电子技术的追梦人!他在追逐单片机的道路上,摸过烧红的铁块,有过无数的坎坷; 幸运的是,他坚持学习,勇于突破,终于成长为一名有理想、有本领的嵌入式工程师。该书是作者总结多年的学习经验和培训经历,凝练出的单片机学习的最佳实践途径。该书摒弃了传统的&先讲基本原理再举例&的学习套路,以一个个项目实例为载体,理论联系实践,手把手教会读者掌握单片机系统设计的方法和技巧; 是一本极具变革思想的前沿教材,推荐阅读!  刘继曾(教师,罗定职业技术学院)  站在单片机初学者的角度,尤其是高职高专的广大师生的立足点,学习单片机的目标就是成长为单片机开发工程师。该书通过一个个独立的模块讲解,然后综合这些模块开发实际项目&&这正是我们学习单片机的最有效的途径!甚至可以说,这本书是单片机学习的里程碑著作,值得学习,值得珍藏。  吴常玉(青岛东软载波科技股份有限公司,高级嵌入式系统工程师)  毫无疑问,宋雪松这本《手把手教你学51单片机(C语言版)》既有较高的专业技术含量又通俗易懂,还附赠大量超值服务。想当初,本人在单片机与嵌入式系统学习的过程中,是摸着石头过河,走过不少弯路。现在想想,如果一开始就遇到了这样一本书,&手把手&地学习下来,至少可以节省两三年的摸索时间。真心希望更多的电子初学者们读到此书,提高学习效率。  夏皓(上海读者)  我以前从未期待过某本书出版,但是自从得知《手把手教你学51单片机(C语言版)》要出版的消息后,我就越来越期待宋雪松老师撰写的这本书了,很荣幸现在有幸先睹为快。读过很多书,很多技术类图书即使贴有&初学&、&入门&的标签,也仅仅是标榜。而宋雪松老师是真正注重入门读者的问题,该书以通俗、生动的语言解释了复杂的知识,避免了晦涩难懂的专业术语,同时又不失培养读者学习行业规范,是一本极好的入门教材!  白一哲(广州读者)  我很久没有看到过这么好的教材了,好像正好你想知道什么它就告诉你什么,你缺什么它就给你讲解什么。宋雪松老师一定是倾其全力,把宝贵的学习和教学经验奉献给了读者; 尤其是书中的实战项目,更是让人耳目一新。我目前只阅读到了文字教程,还没有看视频教程,非常期待!也更期待宋老师后续出版更高级的教程,可以领单片机初学者走出迷茫,成长为成熟的单片机工程师。  刘蛟宇(深圳读者)  《手把手教你学51单片机(C语言版)》有个鲜明的特点:&实践总结理论,理论指导实践&。该教程善于&手把手&地带领读者去做各种奇妙的实验,接着&手把手&地剖析与之紧密联系的数电、C语言等理论根基,而后又利用这些理论去把前面的实验做改善或演变。其中的乐趣会强烈地吸引着你去&动手实践&,去&举一反三&!
在线试读部分章节
第一章.如何学习单片机  在错误的道路上日夜兼程,最终也无法成功,方法和思路绝对是第一重要的。一些学技术的同学,往往看到这类章节会直接跳过去,因为大多数类似章节都是废话连篇。但是,今天在这里我可以很负责任的告诉你,本章节讲到的学习单片机的方法,都是我们学习单片机的无数经验和教训总结出来的瑰宝。因为我们披荆斩棘,开辟了道路,所以可以告诉你路在何方;也因为我们摸过烧红的铁块,烫了手,所以也可以告诉你教训和代价是什么。希望各位都能站在我们的肩膀上,看得更远!  1.1 学什么单片机  单片机的型号那么多,如何选取一款合适的进行学习?如果身边有比较现成的学习单片机的条件,有什么条件就学习什么型号。比如,你所在的公司刚好用到某个型号单片机,那么就方便多了。开发板不用购买,直接用公司现成的板子,指导老师到处是,公司的工程师,只要你耐心虚心的不耻上问,相信他们都愿意帮你解答问题。或者你跟着学习的导师,正在使用某个型号的单片机开发产品,那么同样的道理,你也会有得天独厚的优势,直接跟着学就行了。单片机型号虽然众多,看起来纷繁复杂,其实它们的基本原理、基本用法都是相通的,只要熟练掌握其中一种,其它的都可以触类旁通,快速上手了。  如果你这些条件都没有,那就跟着我学吧,我建议你学习51单片机。为什么呢?虽然现在单片机种类和型号非常多,每个型号都有一定的市场份额,但是哪个型号也没有早期51单片机那般风光和火爆,虽然现在地位不是那么高了,但是因为51单片机积累的资料非常多,大家学起来就会拥有众多的参考资料,所以上手肯定比其他型号的要快一些。如果你学习稍微偏门的单片机,可能一个简单的软件问题就要折腾你好长时间,不仅仅浪费了你的学习时间,更重要的是打击了学习单片机的信心。  那么是不是每种单片机我们都要学一遍呢?答案当然是否定的。大家跟着我来学习51单片机,必须得跟着学会举一反三和融会贯通的能力。单片机型号那么多,挨个学下来估计头发白了也学不完,所以大家跟着我学51单片机,不能仅仅当做51来学习,更重要的是要当做&单片机&来学,要通过我们的这个教程,把所有的单片机的内部资源都搞清楚弄明白,每个内部模块的用法理解透彻,这样当你遇到一个从没有用过的单片机,也就知道如何下手去使用它进行开发了。  1.2 如何学习单片机  前边提到过,单片机是一门实用技术,我们学习它已经不是为了应付考试了,我给大家总结了单片机的学习方法是:一个要领,四个步骤。  学习单片机的要领就是:在实践中成长,In Doing We Learn!  学射箭,你得去拉弓,整天只摆造型肯定不行;学游泳,你得下水扑腾,整天在岸上做模仿活动不行;学开车,你得坐车上去开,坐沙发上肯定学不会。同样的道理,学单片机,整天盯着单片机书看肯定不行,你也必须得亲自动手去练。  没有不下水就学会游泳成为游泳健将的,没有不到车上练就能成为赛车手的,这点大家都清楚,可为什么那么多人学单片机的时候,总是只抱着一本书看呢。第一,我们小学中学甚至大学的学习模式都是如此,学什么东西主要都是靠看书,应付书面考试;第二,很多人想实践却不太清楚该怎么去实践。  遇到问题查下书比直接看书的效果要好过百倍。不是不让大家看书,而是看了一点以后,要马上去实践验证,然后再回头结合实践的结果,理解书上的内容。从这个地方,大家要得出一个结论来,就是在学实际技术的过程中,和应付考试不同,书上的内容不需要你去硬性记忆,书是用来查的,不是用来背的。  下面,就是我总结的跟着我学习单片机的四个步骤。  第一步:鹦鹉学舌。  刚出生的孩子叫&爸爸&&妈妈&的时候,他甚至不知道&爸爸&&妈妈&是什么意思,更不会理解这些声音是什么意思,但是我们带着孩子见到他爸爸就让他喊&爸爸&,见到妈妈就让他喊&妈妈&,见到爷爷就喊&爷爷&&&慢慢的你会发现,次数多了,孩子就知道谁是爸爸,谁是妈妈,谁是爷爷,谁是奶奶了。  大家刚开始接触单片机的时候,也属于单片机行业的新生儿。单片机的样子,单片机外围的各种器件,单片机内部的各种结构,单片机使用C语言的编程方法,初学者可能都没有见过,脑子里全无概念。没关系,有些概念和方法你不理解也没有关系,甚至不需要你去理解,你只需要跟着我去鹦鹉学舌式的学习,第一遍学习某一节课的内容时,对于程序,大家就可以完全跟着抄下来,甚至抄两三遍,过一段你会发现,好多东西你也认识了,好多概念你也慢慢的理解清楚了,你也能大概看懂别人的小程序了,切忌觉得自己看会了,而简单复制粘贴。  第二步:照葫芦画瓢。  很多同学学习的时候喜欢看,看我做的视频,看我写的程序,甚至看别人的程序,都能看懂,觉得自己就会了,等到自己写程序的时候,感觉就是老鼠啃天,不知道从哪里下手了,这是初学者很容易犯的&眼高手低&的毛病,所以第二步的内容就非常重要了。  我的要求是,每一位同学,在学完了当前课的内容,把第一步顺利完成以后,然后关掉视频教程,关掉源代码,自己通过看电路图和查找非源代码的其他任何资料,把当节课我写的程序代码重新默写出来,边写边多少理解那么一点点,不是纯粹的背诵,应该说是背诵加理解的结合体。甚至学过几节课以后,可以回头把前边曾经这样实现过的课程,再按照这种方法做一遍。千万不要认为这一步没必要,这一步是你能否真正学会单片机的一个关键,在学完本教程之前,每一课内容都要这样做,如果每一个程序你都能够完美的完成,那么可以说,当节课的内容,百分之七八十你已经掌握了。  第三步:他山之石,可以攻玉。  单片机技术的最大特点就是可以通过修改程序来实现不同的功能,因此举一反三的能力就必不可少了。每一节课的例程后边,我一般都会布置几个作业,大家尽量去独立完成这个作业。在完成这个作业的过程中,都可以参考我的程序思路,在这个基础上通过动脑思考去构建你自己的程序框架,最终将程序完成。  在我们工程师实际产品研发的时候,很多种情况下也是如此。比如一个产品,我们如果从零起步的话,可能会走很多弯路,遭遇很多前人已曾遭遇过的挫折,所以我们通常的做法是寻找购买几款同类产品,然后先研究他们的各自优缺点,学习他们的长处,然后在同类产品基础上再来设计我们自己的产品,这就是&他山之石,可以攻玉&。  初学者在学习的时候,往往遇到的问题很多,你应该想到,你遇到的问题,可能前辈们早就遇到过了,所以遇到问题后,不要慌张,首先利用谷歌或者百度这些搜索引擎在网上搜一下,要做什么新东西,先去网上找相关资料了解一下,不管是编程还是硬件设计,多多参考别人的东西,只要把别人的东西分析明白了,自己用起来了,也就成为自己的知识了。  第四步:理论实践结合,温故知新。  当大家把所有的课程都按照前边三步完成后,这个时候不妨再把书打开,再看看书,经过了自己的实战经历,再看书的时候,对很多知识点会有一种恍然大悟的感觉。甚至视频教程、书籍都可以反复看几遍,可能有的知识点当时学习的时候不明白,过了一段时间,回过头来再学习的时候,一下就明白了。  1.3 单片机学习的准备工作  第一:足够的信心、恒心和耐心。  有同学问过我,单片机这门技术难不难。我觉得这个问题得从两个方面去分析。  首先,我们从战略上藐视它。那么多同学跟着老师学一段时间就可以做出来小车,超声波测距,甚至做出来机器人,似乎很拽的样子。那他们又不是三头六臂,我们也没有什么做不了的道理。实际上要说技术,其实就是一层窗户纸,表面看不透彻,感觉特别神秘,实际只要你稍微一努力就可以捅破它,夸张点说,单片机在逻辑上的关系,只有小学的水平,简单的很。正所谓会者不难,难者不会,大家不懂这个东西,看起来感觉很神秘。所以大家只要认真踏实坚持学下去,肯定能学好这么技术。  其次呢,我们从战术上要重视它。你说单片机这东西,如果十天八天就学会了,那么这个技术还能值钱吗?我可以这样去表达,如果一个技术很简单就被学会,那么很多人都会的这个技术,肯定也没什么前途和钱途。那究竟多久能学会呢?我给大家制定的学习方案,根据每个人的基础不同,平均每天要拿出2个小时以上的学习时间,大概一到三个月可以入门。入门的概念是给你一个单片机开发任务,你起码知道要努力的方向和解决问题的大概方法了。技术这东西,关键是坚持做下去,有恒心和耐心,如果长时间不用的话,肯定还会生疏。所以要想成为单片机高手,起码需要一年左右的单片机开发的历练才行。成为单片机高手的概念就是你自己可以从头根据自己的想法,去设计一个电路,根据需要的功能编写代码,做一个产品出来。  第二:教材和教程。  要学习单片机这门技术,良好的教材和教程必不可少。单片机方面,大家可以直接学习我们这本《手把手教你学单片机&&51单片机C语言开发》,我们还精心制作了配套的《手把手教你学单片机》的视频教程。本着开源、共享的理念,我们的视频教程都是免费开放的,大家可以到我们的网站www.kingst.org找到下载链接。另外,因为我们做单片机开发使用的是C语言,所以最好能再有一本纯C语言的教材,学到一些C语言的细节问题的时候,可以方便大家查阅,或者你也可以直接把相关问题通过谷歌和百度搜索一下,绝大部分情况下它们都会给你满意的答案的。  第三:电脑一台、单片机开发板一块。  电脑,是学习单片机必不可少的工具,因为编写程序,查阅资料都得用到,但是有句题外话说一下,不要把电脑当成游戏机或者影碟机,偶尔玩玩游戏看看电影是可以的,劳逸结合,但是不可沉溺其中,否则还不如没有电脑。  单片机开发板,这也是必须的。如果你还在上学,学校实验室一般会有开发板,可以考虑跟老师借一个,或者使用师兄师姐们用完的,这样可以省点钱。当然,如果身边有高手,比如辅导老师,会单片机的师兄,在他们的指导下做一个也可以,身边有人指导的话,不懂的问题还可以问他们。如果这些条件都不具备,那么可以购买一个,先学习别人的板子设计思路,给自己以后设计电路板打下基础。在这里就顺便推荐一下我们的KST-51开发板,我不敢说我们的设计是最好的,但是我可以很负责任的说,我们的板子是出自经验丰富的一线工程师之手,其中的设计都是根据实际项目开发的思路进行的,包括整体规划、电路设计、器件布局等等,可以为你今后的项目开发提供一个优质的参考。另外一方面,因为我们的教程是基于我们的开发板做的,所以大家配套来用的话可以节省时间,提高学习效率。  当然,即使不购买我们的开发板,你想学单片机,也还是要有一块开发板的,不能总是用软件仿真,软件仿真是学不会单片机的。经常有同学过来问我,老师我用软件模拟的好用,做了硬件不好用是什么原因。在这里我提一下,如果你上课用这个软件仿真,糊弄老师应付考试是可以的,但是实际开发和仿真软件却差别很大,如果真心想学好单片机这门技术,那我只能告诉你,拿起烙铁焊电路,动手写程序,远离仿真软件,靠软件仿真永远学不到真正的技术。  1.4单片机开发软件环境搭建  单片机开发,首要的两个软件一个是编程软件,一个是下载软件。编程软件我们用Keil uVision4的51版本,也叫做Keil C51,不做过多介绍,先直接讲如何安装。  1、首先准备Keil uVision4安装源文件,双击安装文件,弹出安装的欢迎界面,如图1-1所示。  2、点击&Next&按钮,弹出&License Agreement&对话框,如图1-2所示。这里显示的是安装许可协议,需要在&I agree to all the terms of the preceding License Agreement&打勾。  3、点击&Next&按钮,弹出&Folder Selection&对话框,如图1-3所示。这里可以设置安装路径,默认安装路径在&C:\Keil&文件夹下。点击&Browse...&按钮,可以修改安装路径,这里建议大家用默认的安装路径,如果你要修改,也必须使用英文路径,不要使用包含有中文字符的路径。  4、点击&Next&按钮,弹出&Customer Information&对话框,如图1-4所示。大家输入用户名、公司名称以及E-mail地址即可。  5、单击&Next&,就会自动安装软件,如图1-5所示  6、安装完成后,弹出来安装完成对话框,如图1-6所示,并且出现几个选项,大家刚开始把这几个选项的对号全部去掉就可以了,先不用关注他有什么作用。  7、最后,点击&Finish&,Keil编程软件开发环境就这么装好了。  1.5 Keil基本概况介绍  首先,我们用Keil先打开一个现成的工程,来认识一下Keil软件,如图1-7所示。  第2章 点亮你的LED  这节课的标题是点亮LED,虽然任务很简单,但是需要大家了解的单片机基础知识的内容却很多,特别是对于初学者,刚开始要在头脑中建立一个单片机的概念,课程最后通过点亮一个LED小灯来增加初学者对单片机的兴趣和自信。  2.1 单片机的内部资源  在这里我所讲到的单片机内部资源,和传统单片机书籍中讲单片机内部结构不同,我这里讲到的内部资源,是指作为单片机用户,单片机提供给我们可使用的东西。总结起来,主要是三大资源:  Flash&&程序存储空间,早期单片机是OTPROM。  RAM&&数据存储空间。  SFR&&特殊功能寄存器。  在早期的单片机中,主要是用OTPROM(One Time Programmable Read-Only Memory,即一次可编程只读存储器)来存储单片机的程序,程序只能写入一次,如果发现错了,没办法,只能换一片,重新写入了。随着技术的发展,Flash以其可重复擦写且容量大成本低的优点成为现在绝大多数单片机的程序存储器。对于单片机来说Flash最大的意义是断电后数据不丢失,这个概念类似于我们电脑的硬盘,我们保存了电影、文档、音乐等文件,把电源关掉后,下次重新开电脑,所有的文件都还照样存在。  RAM是单片机的数据存储空间,用来存储程序运行过程中产生的和需要的数据,跟电脑的内存是相似的概念,其实最典型的比喻是我们的计算器,我们用计算器计算个加减法,一些中间的数据都会保存在RAM里边,关电后数据丢失,所以我们每次打开计算器,都是从归零开始计算。但是它的优点,第一是读写速度非常快,第二是理论上是可无限次写入的,即寿命无限,不管程序怎么运行怎么读写它都不会坏。  第三个资源是SFR,特殊功能寄存器。这个概念大家可能刚开始理解不了,但是一定要记住。单片机有很多很多功能,每个功能都会对应一个或多个SFR,我们就是通过对SFR的读写来实现单片机的多种多样的功能的。  讲到这里,我们来了解一下51单片机。通常我们一说到51单片机,指的都是兼容Intel MCS-51体系架构的一系列单片机,而51是它的一个通俗的简称。全球有众多的半导体厂商推出了无数款这一系列的单片机,比如Atmel的AT89C52,NXP(Philips)的P89V51,宏晶科技的STC89C52&&具体型号千差万别,但他们的基本原理和操作都是一样的,程序开发环境也是一样的。这里我们要分清楚51这个统称和具体的单片机型号之间的关系。  单片机内部资源的三个主要部分我们清楚了,那么我们选择STC89C52这款单片机来进行学习。STC89C52是宏晶科技出品的一款51内核的单片机,具有标准的51体系结构,全部的51标准功能,程序下载方式简单,方便学习,我们就用它来学习单片机。它的资源情况:Flash程序空间是8K字节(1K=1024,1字节= 8位),RAM数据空间是512字节,SFR我们后边会逐一提到并且应用。  2.2 单片机最小系统  为什么称之为单片机最小系统呢?单片机最小系统,也叫做单片机最小应用系统,是指用最少的原件组成单片机可以工作的系统。单片机最小系统的三要素就是电源、晶振、复位电路,如图2-1所示。  图2-1 单片机最小系统电路  这张最小系统的电路图节选自我们的KST-51开发板原理图,下面我们就照这张电路图来具体分析最小系统的三要素。  2.2.1 电源  这个很好理解,电子设备都需要供电,就连我们的家用电器(手电筒^_^)也不例外。目前主流单片机的电源分为5V和3.3V这两个标准,当然现在还有对电压要求更低的单片机系统,一般多用在一些特定场合,在学习中我们不做过多的关注。  我们所选用的STC89C52,它需要5V的供电系统,我们的开发板是使用USB口输出的5V直流直接供电的。从图2-1可以看到,供电电路在40脚和20脚的位置上,40脚接的是 5V,通常也称为VCC或VDD,代表的是电源正极,20脚接的是GND,代表的是电源的负极。 5V和GND之间还有个电容,作用我们下节课介绍。  这个地方我们还要普及一个看原理图的知识。电路原理图是为了表达这个电路的工作原理而存在的,很多器件在绘制的时候更多考虑的是方便原理分析,而不是表达各个器件实际位置。比如上边的单片机引脚图,引脚的位置我们是可以随意放的,但是每个引脚上有一个数字标号,这个数字标号代表的才是单片机真正的引脚位置。一般情况下,这种双列直插封装的芯片,左上角是1脚,逆时针旋转引脚号依次增加,一直到右上角是最大脚位,我们现在选用的单片机一共是40个引脚,因此右上角就是40(在表示芯片的方框的内部),如图2-2所示,大家要分清原理图引脚标号和实际引脚位置的区别。  图2-2 单片机封装图  2.2.2 晶振  晶振,又叫晶体振荡器,从这个名字我们就可以看出来,它注定一生都要不停振荡的。他起到的作用是为单片机系统提供基准时钟信号,类似于我们部队训练时喊口令的人,单片机内部所有的工作都是以这个时钟信号为步调基准来进行工作的。STC89C52单片机的18脚和19脚是晶振引脚,我们接了一个11.0592M的晶振(它每秒钟振荡11,059,200次),外加两个20pF的电容,电容的作用是帮助晶振起振,并维持振荡信号的稳定。  2.2.3 复位电路  在图2-1左侧是一个复位电路,接到了单片机的9脚RST(Reset)复位引脚上,这个复位电路如何起作用我们后边再讲,现在着重讲一下复位对单片机的作用。单片机复位一般是3种情况:上电复位、手动复位、程序自动复位。  假如我们的单片机程序有100行,当某一次运行到第50行的时候,突然停电了,这个时候单片机内部有的区域数据会丢失掉,有的区域数据可能还没丢失。那么下次打开设备的时候,我们希望单片机能正常运行,所以上电后,单片机要进行一个内部的初始化过程,这个过程就可以理解为上电复位,上电复位保证单片机每次都从一个固定的相同的状态开始工作。这个过程跟我们打开电脑电源开电脑的过程是一致的。  当我们的
书摘与插画
店铺收藏成功

我要回帖

更多关于 单片机c语言编程 的文章

 

随机推荐