单片机基础教程第一节、机基础知识一、单片机概念1、单片机:在一片集成电路芯片上集成微处理器(CPU)、存储器(ROM和RAM)、I/O接口电路,从而构成了单芯片微型计算机,即单片机(singlechipMicrocomputer)也叫微控制器(MCU)。CPU(CentralProcessingUnit):由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;RAM(Random-AccessMemory):用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM(Read-OnlyMemory):用以存放程序、一些原始数据和表格;I/O(input/output)口:四个8位并行I/O口,既可用作输入,也可用作输出;T/C(timer/counter):两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;Intel公司1980年推出了MCS-51系列单片机:集成8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理器。80C51是MCS-51系列中的一个典型品种;其它厂商以8051为基核开发出的CMOS工艺单片机产品统称为80C51系列。主要的80C51单片机Intel:80C31、80C51、80C32、80C52、87C52ATMEL:AT89C51、AT89C52、AT89C2051等;STC:89C51、89C52、90C51、STC15wPhilips:P80C54、P80C58、P87C54华邦:W78C54、W78C58、W78E54Siemens:C501-1R、C513A-H等公司的许多产品。芯片封装简介单片机用途凡是与控制或简单计算有关的电子设备都可以用单片机来实现,再根据具体实际情况选择不同性能的单片机,如:atmel,stc,pic,avr,凌阳,80C51,arm等工业自动化:数据采集、测控技术。智能仪器仪表:数字示波器、数字信号源、数字万用表、感应电流表等。消费类电子产品:洗衣机、电冰箱、空调机、电视机、微波炉、手机、IC卡、汽车电子设备等。通讯方面:调制解调器、程控交换技术、手机、小灵通等。武器装备:飞机、军舰、坦克、导弹、航天飞机、鱼雷制导、智能武器等。一、学习51单片机C语言编程基本知识电平特性数字电路中只有两种电平:高和低单片机为TTL电平:高+5V低0VRS232电平:计算机的串口高-12V低+12V所以计算机与单片机之间通讯时需要加电平转换芯片max232等其他芯片二进制数字电路中的两种电平特性决定了它使用二进制运算十进制十六进制二进制十进制十六进制二进制00x0000010x1000120x2001030x3001140x4010050x5010160x6011070x7011180x8100090x91001100xA1010110xB1011120xC1100130xD1101140xE1110150xF1111二进制逻辑运算逻辑变量:只有两个:“0”(假)和“1”(真)。逻辑“与”(逻辑乘)运算L=A·B或者L=A∧B“与”的运算法则为:0·0=0,0·1=0,1·0=0,1·1=1A·0=0,A·1=A,A·A=A逻辑“或”(逻辑加)运算L=A+B或者L=A∨B“或”的运算法则为:0+0=0,0+1=11+0=1,1+1=1A+0=A,A+1=1,A+A=A逻辑“非”(逻辑取反)运算L=A“非”的运算法则为:0=1,1=0A+A=1,A·A=0,A=A“异或”其运算规则是:011,101,110,000C语言基本数据类型基本语法变量定义数据类型变量名intnum1;doublenum2=2;unsignedshortnum3;if()语句if(条件){分支}if(条件){分支1}else{分支2}if(x=0){y=y/2;}else{y=y*x;}while()语句while(条件){循环体}while(i10){s+=k;}for()语句for(表达式1;条件2;表达式3){循环体}for(i=0;x!=y;j++){z/=3;}函数定义数据类型函数名(形参列表){函数体}intadd(intnum1,intnum2){returnnum1+num2;}三、80C51引脚简介1.电源引脚:Vcc(40脚):电源端,接+5V电源。Vss(Gnd)(20脚):接地端,接+5V电源地端2.外接晶体引脚:XTAL1和XTAL289C51内部有一个振荡器和时钟产生电路。XTAL1(19脚):片内振荡电路反相放大器输入XTAL2(18脚):片内振荡电路反相放大器输出当采用内部时钟时,片外连接石英晶体和微调电容,产生原始的振荡脉冲信号。采用外部时钟时,XTAL1输入外部时钟脉冲信号,XTAL2悬空.3.控制信号引脚:RST、ALE、PSEN、EARST(9脚):复位信号输入端,高电平有效。保持两个机器周期高电平时,完成复位操作。ALE/PROG(30脚):地址锁存允许输出端/编程脉冲输入端正常时,连续输出振荡器频率的1/6正脉冲信号。访问片外存储器时:作为锁存P0口低8位地址的控制信号。对8751片内ROM编程写入时:作为编程脉冲输入端。PSEN(29脚):外部程序存储器读选通输出信号访问片外ROM时,输出负脉冲作为读ROM选通.常连接到片外ROM芯片的输出允许端(OE)作外部ROM的读选通信号。EA/Vpp(31脚):外部程序存储器地址使能输入/编程电压输入端.平常,接“1”时,CPU访问片内4KB的ROM,当地址超4KB时,自动转向片外ROM中的程序。当接“0”时,CPU只访问片外ROM。第2功能Vpp对8051编程时,编程电压输入端。4.输入/输出端口引脚P0、P1、P2、P34个8位的并行输入/输出端口,共32个引脚。作为通用输入/输出端口⑴通用输入/输出端口准双向口:作输入时要先对锁存器写“1”。默认启动初始化为高电平P0端口(P0.0—P0.7,第39—32脚):漏极开路的准双向口,内部没有上拉电阻,为搞阻状态,不能正常输出高低电平,做I/O时需要接上拉电阻(10K)P1端口(P1.0—P1.7,第1—8脚):内部带上拉电阻的准双向口,在做输入时要先1P2端口(P2.0—P2.7,第21—28脚):内部带上拉电阻的准双向口,与P1相似P3端口(P3.0—P3.7,第10—17脚):内部带上拉电阻的准双向口,做I/O时与P1相似,另外有第二功能P3口的第二功能四、仿真软件ProteusProteus软件是由英国LabcenterElectronics公司开发的EDA(ElectronicDesignAutomation)工具软件,已有近20年的历史,在全球得到了广泛应用。Proteus软件的功能强大,它集电路设计、制版及仿真等多种功能于一身,不仅能够对电工、电子技术学科涉及的电路进行设计与分析,还能够对微处理器进行设计和仿真,并且功能齐全,界面多彩,是近年来备受电子设计爱好者青睐的一款新型电子线路设计与仿真软件。在Proteus中,从原理图设计、单片机编程、系统仿真到PCB设计一气呵成,真正实现了从概念到产品的完整设计。主要功能ISIS——智能原理图输入系统,系统设计与仿真的基本平台。ARES——高级PCB(PrintedCircuitBoard)布线编辑软件VSM(虚拟仿真模式)交互式仿真——实时直观地反映电路设计的仿真结果;基于图表的仿真(ASF)——用来精确分析电路的各种性能,如频率特性、噪声特性等。工具箱中各图标按钮对应的操作如下库元件的分类1.大类(Category)在左侧的“Category”中,共列出了以下几个大类要从库中拾取一个元件时,首先要清楚它的分类是位于哪一类,然后在打开的元件拾取对话框中,选中“Category”中相应的大类2子类(Sub-category)选取元件所在的大类(Category)后,再选子类(Sub-category),也可以直接选生产厂家(Manufacturer),这样会在元件拾取对话框中间部分的查找结果(Results)中显示符合条件的元件列表。从中找到所需的元件,双击该元件名称,元件即被拾取到对象选择器中去了。如果要继续拾取其他元件,最好使用双击元件名称的办法,对话框不会关闭。如果只选取一个元件,可以单击元件名称后单击“OK”按钮,关闭对话框。如果选取大类后,没有选取子类或生产厂家,则在元件拾取对话框中的查询结果中,会把此大类下的所有元件按元件名称首字母的升序排列出来各子类介绍1.AnalogICs模拟集成器件共有8个子类2.Capacitors电容共有23个分类3.CMOS4000seriesCMOS4000系列数字电路共有16个分类4.Connectors接头共有8个分类5.DataConverters数据转换器共有4个分类6.DebuggingTools调试工具数据共有3个分类7.Diodes二极管共有8个分类8.Inductors电感共有3个分类9.LaplacePrimitives拉普拉斯模型共有7个分类10.MemoryICs存储器芯片共有7个分类11.MicroprocessorICs微处理器芯片共有13个分类12.ModellingPrimitives建模源共有9个分类13.OperationalAmplifiers运算放大器共有7个分类14.Optoelectronics光电器件共有11个分类15.Resistors电阻共有11个分类16.SimulatorPrimitives仿真源共有3个分类17.SwitchesandRelays开关和继电器共有4个分类18.SwitchingDevices开关器件共有4个分类19.ThermionicValves热离子真空管共有4个分类20.Transducers传感器共有2个分类21.Transistors晶体管共有8个分类五.编译软件KeilKeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要Windows操作系统。使用C语言编程,那么Keil几乎就是不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。C51有以下扩展关键字(共21个):_at_alienbdatabitcodecompactdatafaridatainterruptlargepdata_priority_reentrantsbitsfrsfr16small_task_usingxdata常用关键字说明sfr:sfr用来定义特殊功能寄存器sfr16:定义一个16位的特殊功能寄存器sbit:定义一个特殊功能寄存器的某一位bit:定义位变量code:指定存储位置位于程序存储器interrupt:声明中断服务程序using:指定的寄存器组扩展函数需要包含intrins.h头文件常用函数_irol_、_iror_对unsignedint数循环左移、右移_lrol_、_lror_对unsignedlong数循环左移、右移_crol_、_cror_对unsignedchar数循环左移、右移六、点亮第一个LED灯LED发光二极管一般压降为1.7V电流3mA即可点亮,因此串联1K电阻限流限压,长脚的为正极。D1点亮p1.0设置为