Altium Designer 10 教程:从原理图到PCB设计

需积分: 10 7 下载量 54 浏览量 更新于2024-07-18 收藏 8.17MB PDF 举报
"从零开始学单片机C语言" 这篇资源主要涵盖了使用Altium Designer 10进行电路设计的基础知识,适合初学者学习。Altium Designer是一款强大的电路设计软件,它整合了原理图设计、PCB布局、仿真等功能,广泛应用于电子设计领域。 在"第六部分 Altium Designer 10电路设计"中,作者首先介绍了印制电路板(PCB)设计的重要性,特别是在电子技术快速发展和集成电路规模不断扩大的背景下,PCB设计的复杂性和精度要求越来越高。Protel作为早期的电子线路辅助设计软件,在国内应用广泛,而本书使用的Altium Designer 10是其更新版本。 第一章详细阐述了印制电路板设计的流程,包括从新建原理图文件开始,设置工作环境,放置元件,进行布线,电气检查,到生成网络表等一系列步骤。流程图清晰地展示了设计的整个过程,对于初学者来说,这是一个很好的指南。 第二章深入到原理图设计,讲解了原理图设计的基本步骤,包括创建新的原理图文件、放置元件、进行布线和电气检查等。这些步骤是设计电路的基础,通过它们可以构建出电子设备的逻辑结构。 第三章和第四章分别讨论了原理图库的建立和PCB元器件封装的创建。理解并掌握元件库的建立和封装设计,对于自定义元件和确保设计的准确性至关重要。 第五章则聚焦于PCB设计,介绍了设计的重要概念和规则,设计流程,以及详细的设计步骤。设计者需要遵循一定的规则进行元件布局和布线,以确保电路的电气性能和制造可行性。 第六章是实训项目,提供了任务分析、实施和利用热转印技术制作印制电路板的具体实践指导,帮助读者将理论知识转化为实际操作技能。 这个资源为想要从零开始学习单片机C语言的读者提供了一个扩展的视角,虽然不是直接关于C语言编程,但它涵盖了单片机应用中不可或缺的硬件设计部分。通过学习Altium Designer 10,读者能够更好地理解和设计与单片机相关的电路,从而增强整体的嵌入式系统开发能力。
2013-04-19 上传
从零开始 单片机 语言 刘建清 出版社: 国防工业出版社 发行时间: 2007 年01月 内容简介: 本书定位于让初学者从零起步,轻松学会单片机高级编程C语言以及实战技术。书中首先简要介绍了8051单片机的主要构成,然后重点介绍了单片机Cx51高级编程语言开发与仿真环境的使用方法,透彻地分析了Cx51的语法结构,并给出了大量实例。书中大多数实例和全部实验都经过了实验板的验证。 本书可供具有一定单片机基础的初学者,以及广大从事单片机应用系统开发研制的工技术人员阅读,也可以作为有关院校相关专业的教学参考用书。 目录: 第一章 单片基础知识  第一节 51系列单片机概述  第二节 80C51单片机的内部结构和外部引脚  第三节 80C51单片机的内部结构和外部引脚  第四节 51系列单片机的并行输入/输出接口  第五节 80C51单片机的时钟电路和复位电路 第二章 单片机C语言入门  第一节 认识C语言  第二节 简单C语言  第三节 单片机C语言开发步骤 第三章 单片机实验硬件环境的建立  第一节 单片机实验板  第二节 单片机仿真器  第三节 单片机编程器 第四章 Keli Cx51软件的使用  第一节 Keil Cx51简介  第二节  Keil Cx51软件的安装   第三节 uVision2集成开发环境  第四节 常用窗口介绍 第五章 Cx51数据与运算  第一节 标识符和关键字  第二节 数据类型  第三节 常量  第四节 变量   第五节 运算符和表达式 第六章  Cx51的基本语句  第一节 表达式语句和复合语句   第二节 条件选择语句   第三节 循环语句 第七章 Cx51函数  第一节 函数的分类和定义   第二节 函数的参数和返回值  第三节 函数的调用  第四节 函数变量的存储方式和种类 第八章 Cx51构造数据类型  第一节 数组  第二节 指针  第三节 结构  第四节 共用体  第五节 枚举 第九章 单片机中断、定时器串行口的C语言编程  第一节 单片机中断系统C语言编程   第二节 定时/计数器及实验  第三节 串行数据通信技术及实验  第十章 单片机实用接口C语言编程技术  第一节 LED显示器接口   第二节 链盘接口   第三节 LCD显示器接口   第四节 I2C总线接口  第五节 A/D和D/A转换接口   第六节 单片机应用技术综合实例 附录一 运算符的优先级和结合性 附录二 Keil Cx51编译器常见警告与错误信息的解决方法
2011-02-22 上传
单片机的C 语言轻松入门 随着单片机开发技术的不断发展,目前已有越来越多的人从普遍使用汇编语言到逐渐使 用高级语言开发,其中主要是以C 语言为主,市场上几种常见的单片机均有其C 语言开发 环境。这里以最为流行的80C51 单片机为例来学习单片机的C 语言编程技术。 本书共分六章,每章一个专题,以一些待完成的任务为中心,围绕该任务介绍C 语言 的一些知识,每一个任务都是可以独立完成的,每完成一个任务,都能掌握一定的知识,等 到所有的任务都完成后,即可以完成C 语言的入门工作。 第1 章 C 语言概述及其开发环境的建立 学习一种编程语言,最重要的是建立一个练习环境,边学边练才能学好。Keil 软件是目 前最流行开发80C51 系列单片机的软件,Keil 提供了包括C 编译器、宏汇编、连接器、库 管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境 (μVision)将这些部份组合在一起。 在学会使用汇编语言后,学习C 语言编程是一件比较容易的事,我们将通过一系列的 实例介绍C 语言编程的方法。图1-1 所示电路图使用89S52 单片机作为主芯片,这种单片 机性属于80C51 系列,其内部有8K 的FLASH ROM,可以反复擦写,并有ISP 功能,支 持在线下载,非常适于做实验。89S52 的P1 引脚上接8 个发光二极管,P3.2~P3.4 引脚上接 4 个按钮开关,我们的任务是让接在P1 引脚上的发光二极管按要求发光。 1.1 简单的C 程序介绍 例1-1: 让接在P1.0 引脚上的LED 发光。 /************************************************* 平凡单片机工作室 http://www.mcustudio.com Copyright 2003 pingfan's mcustudio All rights Reserved 作者:周坚 dddl.c 单灯点亮程序 *************************************************/ 图1-1 接有LED 的单片机基本电路 P1.0 EA/VPP VCC XTAL2 XTAL1 GND RST +5V +5V + R1 E1 10K 10U 27P CY 27P PZ1 1K D8 D1 89××× #include “reg51.h” sbit P1_0=P1^0; void main() { P1_1=0; } 这个程序的作用是让接在P1.0 引脚上的LED 点亮。下面来分析一下这个C 语言程序包 含了哪些信息。 1)“文件包含”处理。 程序的第一行是一个“文件包含”处理。 所谓“文件包含”是指一个文件将另外一个文件的内容全部包含进来,所以这里的程序 虽然只有4 行,但C 编译器在处理的时候却要处理几十或几百行。这里程序中包含REG51.h 文件的目的是为了要使用P1 这个符号,即通知C 编译器,程序中所写的P1 是指80C51 单 片机的P1 端口而不是其它变量。这是如何做到的呢? 打开reg51.h 可以看到这样的一些内容: /*------------------------------------------------------------------------- REG51.H Header file for generic 80C51 and 80C31 microcontroller. Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. --------------------------------------------------------------------------*/ /* BYTE Register */ sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; sfr PSW = 0xD0; sfr ACC = 0xE0; sfr B = 0xF0; sfr SP = 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr PCON = 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A; sfr TL1 = 0x8B; sfr TH0 = 0x8C; sfr TH1 = 0x8D; sfr IE = 0xA8; sfr IP = 0xB8; sfr SCON = 0x98; sfr SBUF = 0x99; /* BIT Register */ /* PSW */ sbit CY = 0xD7; sbit AC = 0xD6; sbit F0 = 0xD5; sbit RS1 = 0xD4; sbit RS0 = 0xD3; sbit OV = 0xD2; sbit P = 0xD0; /* TCON */ sbit TF1 = 0x8F; sbit TR1 = 0x8E; sbit TF0 = 0x8D; sbit TR0 = 0x8C; sbit IE1 = 0x8B; sbit IT1 = 0x8A; sbit IE0 = 0x89; sbit IT0 = 0x88; /* IE */ sbit EA = 0xAF; sbit ES = 0xAC; sbit ET1 = 0xAB; sbit EX1 = 0xAA; sbit ET0 = 0xA9; sbit EX0 = 0xA8; /* IP */ sbit PS = 0xBC; sbit PT1 = 0xBB; sbit PX1 = 0xBA; sbit PT0 = 0xB9; sbit PX0 = 0xB8; /* P3 */ sbit RD = 0xB7; sbit WR = 0xB6; sbit T1 = 0xB5; sbit T0 = 0xB4; sbit INT1 = 0xB3; sbit INT0 = 0xB2; sbit TXD = 0xB1; sbit RXD = 0xB0; /* SCON */ sbit SM0 = 0x9F; sbit SM1 = 0x9E; sbit SM2 = 0x9D; sbit REN = 0x9C; sbit TB8 = 0x9B; sbit RB8 = 0x9A; sbit TI = 0x99; sbit RI = 0x98; 熟悉80C51 内部结构的读者不难看出,这里都是一些符号的定义,即规定符号名与地 址的对应关系。注意其中有 sfr P1 = 0x90; 这样的一行(上文中用黑体表示),即定义P1 与地址0x90 对应,P1 口的地址就是0x90 (0x90 是C 语言中十六进制数的写法,相当于汇编语言中写90H)。 从这里还可以看到一个频繁出现的词:sfr sfr 并标准C 语言的关键字,而是Keil 为能直接访问80C51 中的SFR 而提供了一个新 的关键词,其用法是: sfrt 变量名=地址值。 2)符号P1_0 来表示P1.0 引脚。 在C 语言里,如果直接写P1.0,C 编译器并不能识别,而且P1.0 也不是一个合法的C 语言变量名,所以得给它另起一个名字,这里起的名为P1_0,可是P1_0 是不是就是P1.0 呢?你这么认为,C 编译器可不这么认为,所以必须给它们建立联系,这里使用了Keil C 的关键字sbit 来定义,sbit 的用法有三种: 第一种方法:sbit 位变量名=地址值 第二种方法:sbit 位变量名=SFR 名称^变量位地址值 第三种方法:sbit 位变量名=SFR 地址值^变量位地址值 如定义PSW 中的OV 可以用以下三种方法: sbit OV=0xd2 (1)说明:0xd2 是OV 的位地址值 sbit OV=PSW^2 (2)说明:其中PSW 必须先用sfr 定义好 sbit OV=0xD0^2 (3)说明:0xD0 就是PSW 的地址值 因此这里用sfr P1_0=P1^0;就是定义用符号P1_0 来表示P1.0 引脚,如果你愿意也可以 起P10 一类的名字,只要下面程序中也随之更改就行了。 3)main 称为“主函数”。 每一个C 语言程序有且只有一个主函数,函数后面一定有一对大括号“{}”,在大括号 里面书写其它程序。 从上面的分析我们了解了部分C 语言的特性,下面再看一个稍复杂一点的例子。 例1-2 让接在P1.0 引脚上的LED 闪烁发光 /************************************************* 平凡单片机工作室 http://www.mcustudio.com Copyright 2003 pingfan's mcustudio All rights Reserved 作者:周坚 ddss.c 单灯闪烁程序 *************************************************/ #include "reg51.h" #define uchar unsigned char #define uint unsigned int sbit P10=P1^0; /*延时程序 由Delay 参数确定延迟时间 */ void mDelay(unsigned int Delay) { unsigned int i; for(;Delay>0;Delay--) { for(i=0;i<124;i++) {;} } } void main() { for(;;) { P10=!P10; //取反P1.0 引脚 mDelay(1000); } } 程序分析:主程序main 中的第一行暂且不看,第二行是“P1_0=!P1_0;”,在P1_0 前有 一个符号“!”,符号“!”是C 语言的一个运算符,就像数学中的“+”、“-”一样,是一种 运算任号,意义是“取反”,即将该符号后面的那个变量的值取反。 注意:取反运算只是对变量的值而言的,并不会自动改变变量本身。可以认为C 编译 器在处理“!P1_0”时,将P1_0 的值给了一个临时变量,然后对这个临时变量取反,而不 是直接对P1_0 取反,因此取反完毕后还要使用赋值符号(“=”)将取反后的值再赋给P1_0, 这样,如果原来P1.0 是低电平(LED 亮),那么取反后,P1.0 就是高电平(LED 灭),反之, 如果P1.0 是高电平,取反后,P1.0 就是低电平,这条指令被反复地执行,接在P1.0 上灯就 会不断“亮”、“灭”。 该条指令会被反复执行的关键就在于main 中的第一行程序:for(;;),这里不对此作详细 的介绍,读者暂时只要知道,这行程序连同其后的一对大括号“{}”构成了一个无限循环语 句,该大括号内的语句会被反复执行。 第三行程序是:“mDelay(1000);”,这行程序的用途是延时1s 时间,由于单片机执行指 令的速度很快,如果不进行延时,灯亮之后马上就灭,灭了之后马上就亮,速度太快,人眼 根本无法分辨。 这里mDelay(1000)并不是由Keil C 提供的库函数,即你不能在任何情况下写这样一行 程序以实现延时。如果在编写其它程序时写上这么一行,会发现编译通不过。那么这里为什 么又是正确的呢?注意观察,可以发现这个程序中有void mDelay(…)这样一行,可见, mDelay 这个词是我们自己起的名字,并且为此编写了一些程序行,如果你的程序中没有这 么一段程序行,那就不能使用mDelay(1000)了。有人脑子快,可能马上想到,我可不可 以把这段程序也复制到我其它程序中,然后就可以用mDelay(1000)了呢?回答是,那当然 就可以了。还有一点需要说明,mDelay 这个名称是由编程者自己命名的,可自行更改,但 一旦更改了名称,main()函数中的名字也要作相应的更改。 mDelay 后面有一个小括号,小括号里有数据(1000),这个1000 被称之“参数”,用它 可以在一定范围内调整延时时间的长短,这里用1000 来要求延时时间为1000 毫秒,要做到 这一点,必须由我们自己编写的mDelay 那段程序决定的,详细情况在后面循环程序中再作 分析,这里就不介绍了。 1.2 Keil 工程的建立 要使用Keil 软件,首先要正确安装Keil 软件,该软件的Eval 版本可以直接去 http://www.keil.com 下载,安装时选择Eval Vision,其它步骤与一般Windows 程序安装类似, 这里就不再赘述了。安装完成后,将Ledkey.dll 文件复制到Keil 安装目录下的C51\BIN 文 件夹下,这是作者提供的键盘与LED 实验仿真板,可与Keil 软件配合,在计算机上模拟LED 和按键的功能。 启动μVison,点击“File