- 43.00 KB
- 2022-04-22 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
单片机与CPLD综合应用技术内容简介本书详细介绍了PHILIPS公司最新、最常用的内置ISP下载功能的64KB大容量Flash存储器和特大RAM的P89C6xX26/12时钟低价单片机的原理;同时还用大量篇幅介绍初学者最容易掌握的VerilogHDL语言,详细介绍了使用Verilog语言设计CPLD应用程序的方法,以及单片机与CPLD的综合应用设计技术。本书以实战为主,提供了完整的程序源码和电路图,结合所配套的单片机与CPLD综合仿真实验仪,可以帮助初学者一边看书一边实践,从而达到快速掌握单片机与CPLD综合应用新技术的目的。本书的主要读者是专门从事单片机应用系统开发的工程技术人员、大专院校电类及信息类等专业的学生以及其他单片机爱好者,也可作为各类单片机中、高级培训教材,或大专院校的教学参考用书。前言寻找一份好工作并不难2002年11~12月间的一个多月时间里,我走访了全国各地的十几所大学,接触了300多名应届本科生与硕士生,面试的结果实在有点出人意外,至今仍然令人感慨万千,我的内心久久不能平静。作为过来人思前想后,我感到完全有责任将发自心底的感受传递给年轻一代——一名企业家心灵深处对优秀人才的渴望和由此而引发的深层次的叹息、痛苦和感受。千万不要等到毕业求职时才觉得自己能力太差,世界上从来就没有后悔药。当然,如果现在看了这篇文章可能还不算晚,因为还有机会在以后的岁月里奋起直追——亡羊补牢,尤未晚矣。对于现在刚进入大学的学生,应该更加珍惜美好的求学机会,因为眨眼之间几年就过去了,很快就会感到来自全社会生存竞争的压力,面临的对手再也不仅仅是身边的同学。即使今天在班上的成绩是前几名,但一走到社会上去,才感到是多么地脆弱而又多么地不堪一击。n在面试大多数本科生时,我仅仅询问了一些有关51系列单片机的基本原理,但却很少有人能够完全答对,答案简直是五花八门。很多即将毕业的自动化专业本科生,还不知道单片机是这个专业的核心基础。这难道不可悲吗?这些学生水平不高,我心中完全有底,其实我只要求他们能够掌握单片机应用开发的基本技能,用汇编和C51语言写过一些基本的程序,真正动手做过一些简单的项目,然后将自己做过的项目写成比较规范的文档。我想,这种形式的“自我介绍”肯定要比写得千篇一律的“八股文”简历不知要强多少倍。古人言:“一叶知秋”,其实讲的就是这个道理。平心而论,只有具备这样基础的学生,才配得上企业花钱进行二次“开发”。事实上,很多学生根本就不听老师的劝导。我认为只要平时善于做一个有心人,主动找老师请教,然后从大学三年级开始帮老师打打下手,就一定能提高自己的能力。还有一个途径就是自己花钱购买一些学习开发实验板,加强动手能力的训练;但也有很多学生说没有钱,可事实上并非如此。现在的学生购买手机成风,我不知道手机对学生来说到底有多大的用途?事实上,很多学生家庭条件其实不太好,可这些孩子们的攀比心理却十分严重和可怕。到即将毕业之际才感到找工作太难。父母辛辛苦苦攒下一些钱给孩子购买电脑容易吗?望子成龙——可怜天下父母心!父母希望孩子能够学到一些真本事,而孩子更多时间可能都在玩游戏,上网聊天。实际上,花几百元买一块实验板对于您来说仅仅是举手之劳,辛苦一个暑假的时间强化实践,可能就会与众不同。与此同时,可能您的信心大增,前途一片光明。俗话说得好:仓库有粮,心中不慌!如果平时没有准备,那么临时匆匆忙忙地上阵面试,肯定是要败下阵来的。2003年是全国第一次扩招之后毕业人数最多的一年,以后的毕业生还会更多,同时还会有更多的研究生与本科生抢饭碗。面对就业的困境,压力不能说不大,痛苦自在其中。还有就是,我每天都要面临那些看不完的自我介绍简历,很可惜几乎都是清一色的“八股文”。其实只要学习成绩不是太差,分数不是应聘成功的关键,重要的是做人要踏实,不要有水分。实际上,只要将平时做过的小制作写成一篇心得,再带上作品,“事实胜于雄辩”,这样更能打动人。n还有很多经历了四年本科又三年研究生阶段学习行将毕业的硕士生,不仅不知道嵌入式操作系统是什么东西,而且连C++都不能熟练掌握,驱动程序开发的能力就更不用提了,仅仅做了一个单片机的应用设计就拿到硕士文凭,术业缺乏而专攻泛泛而谈。说句实在话,怎么样也叫人无法接受啊!对于我来说,如果学生没有特别的才能,我宁愿用三年时间培养一个好的本科生,他肯定不比一般的硕士生差。所以,考上了研究生之后,要时刻明白加强动手能力的培养和前沿科学技术的学习是至关重要的,这是将来面试的“杀手锏”。因为研究生毕业之后要求的工资待遇起码是一般本科生的两倍,但是这个钱不是那么好拿的。顶多3~5年的时间,大家肯定能够看到一个现实,那就是如果您还不能熟练地掌握嵌入式操作系统应用开发技术,那只能拿2000元的月薪。即便您是硕士或是博士,那又有什么稀奇的呢?邓小平有句名言:不管白猫还是黑猫,抓住老鼠就是好猫!我们知道企业家是要赚钱的,否则这个企业就留不住人才,无情的市场竞争机制将会毫不犹豫地将这个老板淘汰出局。一个可持续发展的企业,如果离开了富有聪明才智的优秀人才,那是不可想象的。光有几个还不行,而是要有一个卓越的军团。n其实就业的问题,对于一个努力的人来说是何等地简单。我面试了300多名本科生,我只对其中几个成绩中等的本科生感兴趣。他们都是参加过2001年全国电子大赛,利用平时业余时间、暑假及寒假都在跟老师干活的学生。与他们聊天真是一种莫大的享受和欣慰,对于我来说真的是如获至宝。于是,我就立即劝他们,成绩中等确实难以考上好的学校和导师,还不如不考研究生以免浪费时间;同时也充满自信告诉他们:“我就是伯乐!我愿意给您机会和花钱培养您”。事实上,即便考上研究生,如果没有遇上具有超前眼光和经费充足的导师,读了也白读。更何况现在的研究生扩招得这么多?一个导师带那么多研究生,有那么多课题吗?即便有的话,他应付得过来吗?可能残酷的现实将会让您看到,毕业之后回头一看,还远远不如当年一道毕业的同班同学。确实也是,人家的机会比您好得多,关键是人家对待机会比您把握得好,可以说:恰到火候。难道非要读研究生,理论水平才能提高吗?不!我们知道电子与计算机技术的发展日新月异,大学的更新速度一定就快吗?回答是否定的。比如说推广PHILIPS的最新单片机和USB技术吧!他们的更新速度肯定比一个可持续发展的企业要慢得多。难道说我们的人才水平不够高吗?我们公司就有这样一批在各个领域里出类拔萃的年轻专家。从2003年开始,我们将会有一系列的专著在北京航空航天大学出版社出版,大多数的著作都源于我们长期的基础研究和应用开发。可以毫不夸张地说,这些都是我们这个年轻团队合作的结晶。他们是卓越的人才,他们没有就业的压力,他们不怕炒鱿鱼。相反我倒要想尽办法加强公司的管理,从工资、奖金、福利、生活和事业成就感等各个方面绞尽脑汁善待人才和留住人才,这么努力的人才根本就不需要过多地为工作和生活发愁。对于这个问题,当然是仁者见仁,智者见智,也就是下面我要讲到的问题:一个人如何根据自己的特点、条件和机遇对自己定位的问题,这也是至关重要的。比如说,如果您对单片机的理解仅仅是入门水平,那么首先就应该低调一些,因为这时候主要的任务是为了寻找一个可以学习的机会。说句实在话,此时此刻您一定要清醒地意识到:寻找伯乐比眼前的利益更加重要!因为您现在确实还没有可以骄傲的资本,您一定要想尽办法取得第一次正式踏入社会的入场券,这对您来说是何等重要啊!俗话说得好:“万丈高楼平地起”。您一定要寻找机会通过业绩表现出自己的能力,表现出与众不同之处。这样您就可能在一个公司里树立您的“信用”,有了信用之后随之而来的机会将会越来越多,到那时就根本不用发愁自己的待遇和地位问题;所以对于一个刚刚步入社会的年轻人来说,能够做到以“诚信”打天下,将来的前途肯定是无限光明的。千万不要以为自己在班上的成绩是前几名,或者相对来说自己的动手能力比同学强,或者自己在读书期间贷了多少款,或者家里是多么地缺钱,就要求高薪。因为当您加入整个社会的竞争之后,这些都不是要求高薪的理由,这个时候的心态将可能会决定命运,必须对自己要有充分的认识和正确的估价。经常是很多学生用这些理由向我开出高价,我无话可说,只好摇头和叹息。n如果您的水平还不够,我认为也不要自卑,要知道机会是时刻属于有准备的年轻人的,但也不可掉以轻心。此时此刻,应该振作起来,立即拿起书本努力学习和加强实战的训练。待到羽翼丰满之时,大胆地走出去闯荡,让社会来对您做一个恰当的评价,然后再根据现实的情况不断地调整自己,继续学习和实践。由于电子和计算机科学的发展呈现日新月异的变化局势,一定要明白:您距离失败永远只有6个月!基于此我们写作了这本《单片机与CPLD综合应用技术》一书和设计了2种配套的单片机与CPLD综合开发实验仪:DP-MCU/Xilinx和DP-MCU/Altera。一般来说,使用单片机的场合将无时无刻地伴随着CPLD的应用,单片机与CPLD就像一对亲姐妹一样,如何结合两者的应用开发对于初学者来说显得十分重要。本书详细地介绍了最新、最常用的内置ISP下载功能的64KB大容量Flash存储器和特大RAM的P89C6xX26/12Clock低价单片机的原理,同时还用大量篇幅介绍初学者最容易掌握的VerilogHDL语言。如果您具有C语言的基础,那么只要2~3个月的时间就能完全学好CPLD的应用设计。而且VerilogHDL语言的最大好处就是不受最终器件的限制,只要写的程序没有问题,就可以完全无障碍移植到任何其他半导体公司的CPLD上去使用。更重要的是本书完全以实战为主,通过实践的方法帮助您加深理解单片机与CPLD的基本知识,更重要的是通过实战可以帮助您时刻保持对学习的兴趣。通过对本书的深入学习,同时进一步加强实战的训练,确实能够帮助您掌握CPLD、I2C、串行通信、RTOS及其KeilC51等相关的知识和基本技能,您将会很快登堂入室。与此同时,我们在随机的开发实验仪光盘之中,为您免费提供了商业化和傻瓜化的I2C软件包、串行通信软件包、大量的实践范例及其规范化的文档,达300页之多。本书继承了已经在北京航空航天大学出版社出版的《PDIUSBD12nUSB固件编程与驱动开发》、《增强型80C51单片机速成与实战》的写作风格,每一本书都自成体系,但各有特色。本书主要是以综合性的实战为主,基础性的实践知识渗透得比较少。由于篇幅有限,我们已经将常用的基础训练实战的范例放在随机的光盘之中,而且还会不断在光盘中增加更多的实战例子,从而帮助读者达到从基础训练入门最终提升到综合设计能力的目的。本书的主要读者对象是面向有一些单片机基础的初学者,因此建议读者结合我们编写的系列实战丛书的其他相关内容学习,以达到融会贯通的目的。从我多年来学习、开发、创办公司及服务客户的经验来看,单片机与CPLD的综合应用技术是一门实战非常强的学科,除了不断地学习之外,惟一的办法就是:实践!实践!!再实践!!!如果读者在学习中遇到什么困难,请及时给我们的专业技术支持工程师来信或来电话,互相交流,通过这样的途径解决学习中遇到的实际问题,可能会比自己一个人琢磨要快得多。我们技术支持工程师的Email地址:dp51@zlgmcu.com。如果书中有什么错误或者您有更好的建议,也请一并告诉我们,我们希望能够得到您的参与和帮助。参与工作的主要人员有周立功、黄晓清、刘英斌、曾成奇、钟伊峰、戚军、朱旻、叶皓贲、邹思韵、李仕兵等,其中VerilogHDL语言一章由北京航空航天大学EDA实验室著名的专家夏宇闻教授撰写。如果没有他的帮助和努力,这本书不可能这么快完成,在此表示衷心的感谢。最后的方案和本书的定稿由周立功和黄晓清负责。如果读者在阅读本书中有什么问题,或需要技术支持,或需要购买与本书配套的DP-MCU/CPLD单片机综合仿真实验仪(在随该实验仪配套的光盘中,免费提供商业化和傻瓜化的I2C软件包、串行通信软件包及大量的程序范例源代码),可直接与我公司联系,现将我公司的联系方式列在下面:周立功2003年2月25日目录第1章系统概述1.1DP系列MCU与CPLD综合仿真实验仪(1)1.1.1DP-MCU/Xilinx综合仿真实验仪(1)n1.1.2DP-MCU/Altera综合仿真实验仪(1)1.1.3DP-MCU/Xilinx与DP-MCU/Altera的共同特点(1)1.2DP系列MCU仿真实验仪(3)1.2.1DP-TEST下载实验仪(3)1.2.2DP-51S单片机仿真实验仪(4)1.2.3DP-51单片机仿真实验仪(5)1.2.4DP-668单片机与TCP/IP综合仿真实验仪(6)1.3DP系列CPLD开发实验仪(7)1.3.1DP-Xilinx下载开发实验仪(7)1.3.2DP-Altera下载开发实验仪(8)第2章DP-MCU/CPLD综合仿真实验仪2.1DP-MCU/Xilinx综合仿真实验仪(9)2.1.1电路布局(9)2.1.2主要器件(9)2.1.3应用接口(10)2.1.4跳线接口(14)2.2DP-MCU/Altera综合仿真实验仪(15)2.2.1电路布局(15)2.2.2主要器件(16)2.2.3应用接口(17)2.2.4跳线接口(17)2.3硬件原理分析(19)2.3.1时钟电路(19)2.3.2复位电路(19)2.3.3工作模式切换电路(20)2.3.4键盘和LED发光管(21)2.3.5全局按键(21)2.3.6蜂鸣器(21)2.3.7数码管LED显示(22)2.3.8LCD液晶显示接口(22)2.3.9红外接近开关(23)n2.3.10实时时钟PCF8563(24)2.3.11E2PROM存储器(24)第3章DP-MCU/CPLD快速入门3.1KeilC51软件的安装和使用(26)3.1.1KeilC51软件的安装(27)3.1.2KeilC51软件的使用(29)3.2ZLGICD软件的安装和使用(39)3.2.1ZLGICD软件简介(39)3.2.2ZLGICD软件的安装方法(40)3.2.3ZLGICD软件的使用方法(42)3.3ISD51在线仿真调试(45)3.3.1ISD51简介(45)3.3.2使用ISD51的准备工作(45)3.3.3ISD51仿真调试功能的使用(47)3.4Xilinx开发软件WebPACK的安装和使用(49)3.4.1WebPACK软件的安装(49)3.4.2WebPACK软件的使用(53)3.5Altera开发软件MAX+plusⅡ的安装和使用(60)3.5.1MAX+plusⅡ软件的安装(61)3.5.2MAX+plusⅡ软件的使用(65)第4章CPLD系列器件4.1XC9500系列CPLD简介(75)4.2XC9500系列器件结构描述(76)4.2.1功能模块(77)4.2.2宏单元(77)4.2.3乘积项分配器(79)4.2.4FastCONNECT开关矩阵(81)4.2.5I/O模块(81)4.2.6引脚锁定功能(84)n4.2.7在系统编程(84)4.2.8耐久性(84)4.2.9IEEE1149.1边界扫描(JTAG)(85)4.2.10保密设计(85)4.2.11低功耗模式(85)4.2.12时序模型(85)4.2.13上电特性(87)4.2.14XilinxCPLD器件的命名(87)4.3XC95108在系统可编程CPLD(88)4.4MAX7000系列器件的特点及性能(94)4.5MAX7000系列器件功能概述(96)4.5.1MAX器件简介(96)4.5.2功能描述(99)第5章VerilogHDL硬件描述语言5.1VerilogHDL的基本知识(109)5.1.1硬件描述语言HDL(109)5.1.2VerilogHDL的历史(110)5.1.3总结(115)5.2VerilogHDL语法的基本概念(116)5.2.1简单的VerilogHDL模块(117)5.2.2总结(121)5.3模块的结构、数据类型及变量和基本运算符(121)5.3.1模块的结构(121)5.3.2数据类型及其常量和变量(124)5.3.3总结(133)5.4各种运算符、赋值语句和结构说明语句(133)5.4.1逻辑运算符(133)5.4.2关系运算符(134)5.4.3等式运算符(134)5.4.4移位运算符(135)n5.4.5位拼接运算符(136)5.4.6缩减运算符(136)5.4.7优先级别(137)5.4.8关键词(137)5.4.9赋值语句和块语句(137)5.4.10总结(142)5.5条件语句和循环语句(143)5.5.1if_else语句(143)5.5.2case语句(146)5.5.3设计中生成了并不希望有的锁存器(149)5.5.4循环语句(150)5.5.5总结(153)5.6结构语句、函数语句和系统任务(153)5.6.1结构说明语句(153)5.6.2task说明语句(156)5.6.3function说明语句(158)5.6.4系统函数和任务(159)5.7调试用系统任务和常用编译预处理语句(163)5.7.1系统任务$monitor(164)5.7.2时间度量系统函数$time(164)5.7.3系统任务$finish(166)5.7.4系统任务$stop(166)5.7.5系统任务$readmemb和$readmemh(166)5.7.6系统任务$random(168)5.7.7编译预处理(168)5.7.8总结(176)5.8语法概念回顾与练习(176)第6章CPLD应用设计6.1基本输出实验(189)n6.1.1点亮发光二极管(189)6.1.2闪烁灯(191)6.1.3流水灯(194)6.2基本输入/输出实验(196)6.2.1基本的逻辑门实验(196)6.2.2键盘、LED发光管实验1(198)6.2.3键盘、LED发光管实验2(201)6.3静态LED数码管显示(202)6.4动态LED数码管显示(205)6.5蜂鸣器声响实验(209)6.5.1输出报警声(210)6.5.2数字电子琴(212)6.6PWM输出控制(215)6.6.1由PWM实现的D/A转换(215)6.6.2由PWM实现的D/F转换(217)6.7数字时钟实验(219)6.8频率计实验(223)6.9交通灯实验(227)6.10RS-232实验(232)6.10.1发送(232)6.10.2接收(236)第7章内置WDT与ISP功能的80C51Flash单片机7.1P89C6xX2单片机概述(240)7.1.1P89C6xX2单片机的特性(240)7.1.2P89C6xX2单片机的内部结构及引脚排列(241)7.2Flash存储器(248)7.2.1Flash存储器结构与操作(248)7.2.2Flash的编程和擦除(248)7.3振荡和复位电路(254)7.3.1时钟电路及其配置(254)n7.3.2可编程时钟输出(255)7.3.3复位电路(255)7.4低功耗模式(255)7.4.1时钟停止模式(255)7.4.2空闲模式(255)7.4.3掉电模式(256)7.4.4ONCE模式(256)7.5定时器/计数器的使用(256)7.5.1定时器0和1(256)7.5.2定时器2的操作(259)7.6全双工增强型UART串口(265)7.6.1串口的模式(265)7.6.2多机通信(269)7.6.3增强型UART操作(273)7.7中断系统(276)7.7.1中断源(276)7.7.2中断优先级配置(277)7.7.3中断的处理(279)7.7.4外部中断(280)7.8其他功能的使用(281)7.8.1双DPTR的使用(281)7.8.2附加数据RAM的使用(282)7.8.3硬件看门狗定时器WDT(283)7.9P89C51RX2与P89C6xX2单片机的异同点(283)7.9.1P89C51RX2单片机概述(283)7.9.2P89C51RX2的特性、内部结构和引脚排列(284)7.9.3P89C51RX2与P89C6xX2功能特性比较(289)7.10P89C66x与P89C6xX2单片机的异同点(289)7.10.1P89C66x单片机概述(289)7.10.2P89C66x单片机的特性、内部结构和引脚排列(290)7.10.3P89C66x与P89C6xX2功能特性比较(294)n第8章I2C总线的应用8.1I2C总线介绍(296)8.1.1I2C总线的特性(296)8.1.2标准模式I2C总线规范(297)8.2模拟I2C软件包(301)8.2.1汇编程序软件包(301)8.2.2特殊应用情况(307)8.2.3C51程序软件包(307)8.324WC系列E2PROM的应用(314)8.3.1概述(314)8.3.2引脚描述(314)8.3.3串行E2PROM芯片的寻址(315)8.3.4写操作方式(317)8.3.5读操作方式(318)8.3.6硬件电路分析(320)8.4PCF8563时钟芯片的应用(323)8.4.1PCF8563的基本原理(324)8.4.2PCF8563的操作(330)8.4.3PCF8563实现的数字钟(336)第9章单片机与CPLD综合应用9.1键盘、LED显示实验(338)9.1.1键盘、LED发光管实验(338)9.1.2键盘、LED数码管实验(345)9.2单片机控制的PWM输出(353)9.2.1由PWM实现的D/A转换(353)9.2.2由PWM实现的D/F转换(359)9.3数字时钟(366)9.3.1由单片机+CPLD实现的数字钟(366)9.3.2由PCF8563+MCU+CPLD实现的数字钟(377)n9.4液晶显示屏LCD显示(384)9.4.1点阵字符型LCD简介(384)9.4.2TC1602A液晶显示器的应用(388)9.5RS-232全