ImageVerifierCode 换一换
格式:DOC , 页数:12 ,大小:188.50KB ,
资源ID:2717994      下载积分:8 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2717994.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(江苏大学单片机复习资料.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

江苏大学单片机复习资料.doc

1、第一章 概述 1、 什么是SOC型的单片机? 在传统的单片机的基础上再集成了很多外部设备到芯片里,形成的片上系统(System On Chip)就是SOC型的单片机。 2、单片机分为: • ROM型:内容不可改 • EPROM型:擦写不方便 • 无ROM型:需外接ROM • OTP ROM型:低成本,一次可编程 • E2PROM型:擦写较方便,不能ISP • Flash ROM(MTP ROM型)型:使用最方便,可以ISP 2、 单片机的发展概况: 初级阶段、低性能阶段、高性能阶段、新一代阶段 3、 单片机在哪些领域有应用?举例说出10种含有单片机的产品或设备。

2、智能仪表、机电一体化、实时控制、分布式多机系统、家用电器等消费类领域 空调、冰箱、洗衣机、微波炉、彩电、音响、家庭报警器、电子宠物、手机、MP3 第2章 C8051F单片机的结构与原理 1、CIP-51有哪些存储空间?各个存储空间的功能及寻址范围是什么? v 物理结构上可分为: • 片内程序存储器 • 片外程序存储器 • 片内数据存储器 • 片外数据存储器 v 按功能和寻址可分为: • 程序存储器(64KB的flash,以512字节为一个扇区,通常是只读,但可用MOVX写入) • 内部数据存储器(256字节的RAM,0x00-0x1F通用寄存器4*8 0x20-0x2F

3、可位寻址空间) • 外部数据存储器(64KB的外部数据空间,MOVX、DPTR、R0或R1用间接寻址方式访问;默认情况下MOVX指令访问XRAM,还可用于写Flash) • 特殊功能寄存器(0x80-0xFF直接寻址存储器空间,一般在内部RAM的0x30-0xFF单元中开辟堆栈) • 位地址空间(内部RAM中0x20-0x2F单元以及特殊功能寄存器中地址为8的倍数的特殊功能寄存器可以位寻址) 2、中断 22个,分外部中断、串口(UART0、UART1、SPI、SMBus等)、定时/计数器、电压比较器、A/D转换中断 中断使能控制(受中断允许寄存器IE、EIE1、EIE2控制)

4、 中断优先级别的设定(每个中断源都可以设置为高优先级1和低优先级0,由中断优先级寄存器IP、EIP1、EIP2统一管理) 中断响应时间 v 最快为5个时钟周期: • 1个周期用于检测中断; • 4个周期完成对ISR的长调用(LCALL)。 v 如果申请中断时CPU正在执行RETI指令,则需要再执行一条指令才能进入中断服务程序。 v 最长为18个时钟周期 : • 1个时钟周期检测中断; • 5个时钟周期执行RETI; • 8个时钟周期完成DIV指令; 4个时钟周期执行对ISR的长调用(LCALL) 中断响应过程硬件动作 置位优先级状态触发器、断点入栈

5、执行LCALL转中断入口、清除中断请求标志、对RI、TI而言 相同优先级的硬件查询顺序 中断源 同级时的优先顺序 外部中断0 定时器0中断 高 外部中断1 定时器1中断 串行口0中断 定时器2中断 …… 串行口1中断 外部晶振准备好 低 3、端口输入/输出(并行口) C8051F020有8个8位I/O端口、64

6、个数字I/O引脚; 低端端口(P0~P3)既可以按位寻址也可以按字节寻址 高端端口(P4~P7)只能按字节寻址 所有引脚都耐5V 电压,都可以被配置为漏极开路或推挽输出方式和弱上拉 4、 优先权交叉开关译码器 C8051F020 内有大量的数字资源需要通过P0~P3才能使用(本身没有对外的引脚)。 引脚的分配通过优先权交叉开关译码实现的。UART0优先权最高,而CNVSTR优先权最低 通过3个特殊功能寄存器XBR0、XBR1、XBR2实现 另外,牢记如果P0撤销勾选,P0后面的跟着缩进(看图,意会) 5、 电源管理方式 CIP-51 有两种可编程的电源管理方式(节电方式):

7、 a) 空闲方式(等待方式) i. CPU停止运行,而外设和时钟处于活动状态(10μA~5mA) 。内部寄存器和存储器内容保持不变。 ii. 通过置位IDLE(PCON.0)进入 iii. 中断和复位可结束空闲方式 b) 停机方式(掉电方式) i. CPU停止运行,所有的中断和定时器(除时钟丢失检测器)等外设都处于非活动状态,系统时钟停止。(0.2μW) ii. 通过置位STOP(PCON.1)进入 iii. 只有系统复位可退出停机方式 6、 复位源(看图能说得出来) 总共7个(上电/掉电复位、外部/RST引脚复位、外部CNVSTR信号复位、软件命令复位比较器0复位、

8、时钟丢失检测器、看门狗定时器超市复位) 第3章 51单片机编程语言 1、C51存储器类型 如果在变量声明时未声明变量的存储器类型,则该变量的存储器类型,由程序的存储模式来决定。 • 小模式(small model):默认data区,缺省模式。 • 紧凑模式(compact model):默认pdata区 • 大模式(large model):默认xdata区 2、C51特殊数据类型 • bit:位类型(直接声明),如:bit flag; • sbit:可位寻址的对象(在bdata中声明的变量)如: int bdata ibase; sbit mybit15=ibase^1

9、5; • sfr:8位特殊功能寄存器,如:sfr ACC=0xE0; sbit signbit=ACC^7; • sfr16:16位特殊功能寄存器,如:sfr16 T2=0xCC; 第4章 C8051F单片机的片内功能部件 v 定时/计数器 定时器工作方式 定时器0和定时器1 定时器2 定时器3 定时器4 方式0 13位定时器/计数器 自动重装载的16位定时器/计数器 自动重装载的16位计数器/定时器 自动重装载的16位定时器/计数器 方式1 16位定时器/计数器 带捕捉的16位定时器/计数器 带捕捉的16位定时器/计数器

10、 方式2 8位自动重装载的定时器/计数器 UART0的波特率发生器 UART1的波特率发生器 方式3 两个8位定时器/计数器(只限于定时器0) 能用公式求出定时器初值 例4.1 若fOSC=12MHz,用系统时钟的十二分频作为计数源,请计算定时2ms所需的初值,并给出初始化程序。 解:∵ fOSC= 12MHz,用系统时钟的十二分频作为计数源时,方式2、3的最大定时时间只有0.256ms,因此要想获得2ms的定时时间,必须用方式0或方式1。 方式0 • TC=213-2ms/1us=6192=1830H • 即:TH0=0C1H;TL0=10H(

11、高三位为0) 方式1 • TC=216-2ms/1us=63536=F830H • 即:TH0=0F8H;TL0=30H void T0_mode1_2ms_init() { CKCON &= 0xf7; //T0计数源选择系统脉冲的12分频 TMOD=0x01; //T0方式1定时 TH0=0xf8; //初值 TL0=0x30; TCON |= 0x10; //启动T0,可用TR0=1代替 } v 给定时器赋初值的语句也可以采用如下方法: TH0=(65536-2000)

12、/256; TL0=(65536-2000)%256; 或 TH0=-2000/256; TL0=-2000%256; 例4.2 若fOSC=12MHz,T1工作于方式1,产生50ms的定时中断,TF1为高级中断源。试编写主程序和中断服务程序,使P1.0产生周期为1s的方波。 解:让P1.0每500ms取反一次即可实现。定时器的单次定时时间不可能达到500ms,但可通过多次定时产生500ms的定时时间,如让T1工作在方式1,单次定时时间为50ms,那么T1中断10次就是500ms的时间。 (1)确定定时常数 • 假设使用fO

13、SC的12分频作为计数源,则T计数=12/fOSC =12/(12×106)=1μs • 由公式TC=M-T/T计数,可知TC=216-50×103=15536=3CB0H • ∴TH1=0x3c,TL0=0xb0。 程序清单如下(中断方式) #include sbit P1_0 = P1^0; int count=10; //10次T1中断为500ms void main( void ) { CKCON&=0xef; //T1的计数源选择系统脉冲的12分频 TMOD=0x10; //T1方式1 XBR2=0x40

14、 //并行端口输出使能 P1_0=0; TH1=0x3c; //初值 TL1=0xb0; IE|=0x88; //允许T1中断 IP|=0x08; //TF1中断为高级中断 TCON|=0x40; //启动T1 While(1); //死循环,等待中断,产生方波 } void Timer1_ISR (void) interrupt 3 { TH1=0x3c; //重装初值 TL1|=0xb0; //提高计数精度 count--;

15、 //中断计数 if (count==0) //500ms到,重赋计数初值,P1.0取反 { count=10; P1_0=!P1_0; } } 程序清单如下(查询式程序) v #include sbit P1_0= P1^0; void main( ) { int count=10; //10次T1中断为500ms CKCON&=0xef; //T1的计数源选择系统脉冲的12分频 XBR2=0x40; TMOD=0x10; //T1方式1 P1

16、0=0; TR1=1; //启动T1 For(; ;) //死循环,产生方波 { TH1=-50000/256; //T1初值 TL1=-50000%256; Do {} while(!TF1); //查询等待TF1置位, TF1=0; count--; If (count==0) {count=10;P1_0=!P1_0;} } } 2、并行通信和串行通信 并行通信是指数据的各位同时进行传送(发送或接收)的通信方式。

17、 串行通信指数据是一位一位按顺序传送的通信方式 3、串行通信的传送方向 单工(或单向)配置,只允许数据向一个方向进行传送; 半双工(或半双向)配置,允许数据向两个方向中的任何一个方向传送,但一次只能有一个发送,一个接收; 全双工(或全双向)配置,允许同时双向传送数据 4、异步通信和同步通信 异步通信以字符为单位,每个字符用起始位0开始,然后从低位到高位逐位传送数据,最后用停止位1表示字符结束 同步通信以数据块为单位,每一数据块开头时发送一个或两个同步字符,使发送与接收双方取得同步。数据块的各个字符间取消了起始位和停止位。 5、UART 发送电路+接收电路+波特率发生器、

18、错误校验电路、多机通信控制电路和交叉开关 TI0:发送中断标志位,该位必须由软件清0 RI0:接收中断标志位,该位必须由软件清0 6、波特率设计和初值X 例4.6 已知C8051F单片机时钟振荡频率为11.0592MHz,选用定时器T1工作方式2作波特率发生器,波特率为2400bit/S,求初值X。 解:设波特率控制位SMOD0=0,定时器T1计数脉冲控制位T1M=0,则有: 查询方式接收程序 #include void main(void) { char data *p; //接收缓冲区地址指针

19、 unsigned char i; TMOD=0x20; //初始化并启动T1 TH1=0xfd; TL1=0xfd; TR1=1; SCON0=0x50; //UART0初始化,方式1 、允许接收 p=0x20; //地址指针初始化 for(i=0;i<32;i++) { while(!RI0); //等待UART0接收一个字符 RI0=0; *p=SBUF0; //放入接收缓冲区 p++; } } 中断方式发送主程序 #in

20、clude char data *p; //发送数据块地址指针 void main(void) { TMOD=0x20; //初始化并启动T1 TH1=0xfd; TL1=0xfd; TR1=1; SCON0=0x40; //UART0初始化,方式1 p=0x20; //地址指针初始化 EA=1; //开中断 ES0=1; SBUF0=*p; //发送第一个字符 while(1); //等

21、待发送中断 } void interrupt_UART0(void) interrupt 4 { TI0=0; //清发送中断标志 p++; if(p<0x40) SBUF0=*P; //发送下一字节 else ES0=0; //关串口中断,和查询不一样的另一个地方 } 例4.8 试编写一个UART0带奇偶校验的发送程序。 设SYSCLK=11.0592MHz,波特率=9600,UART0工作于方式1,发送字符的ASCII码最高位作校验位,用T2作波特率发生器,T2的时间常数计算如下: #inc

22、lude #include char s[]=“C8051F020 Serial Communication”; char bdata c; sbit c7=c^7; void main(void) { char a,b=0; T2CON=0x14; //T2作发送波特率发生器,TCLK0=1,TR2=1 SCON0=0x40; //SM20=SM00=0,SM10=1,REN0=0; RCAP2H=0xff; RCAP2L=0xdc; a=strlen(s); // 包含在string

23、h中 for(;b

24、} 方式2、3中也可以使用TB8、RB8作校验位 发送端:TB8=P;    //以上2句将dat的奇偶信息放入TB8,随数据发送 接收端:if(RB8==P)//RB8是发送端数据的奇偶消息,P是实际收到8位数据的奇偶消息 第5章 模数和数模转换器 1、模数转换原理及性能指标 A/D转换器的种类很多,根据转换原理可以分计数式、并行式、双积分式、逐次逼近式等 衡量A/D性能的主要参数: 分辨率(resolution)指输出的数字量变化一个相邻的值所对应的输入模拟量的变化值 转换精度(conversion accuracy)由模拟误差和数字误差组成 C8051F0

25、20的ADC0功能结构:包括一个9通道的可编程模拟多路选择器(AMUX0),一个可编程增益放大器(PGA0)和一个100ksps、12 位分辨率的逐次逼近型ADC,ADC中集成了跟踪保持电路和可编程窗口检测器(看图说话) C8051F020的ADC0有4种转换启动方式,由ADC0CN 中的ADC0 启动转换方式位(AD0CM1,AD0CM0)的状态决定。 • 00:向AD0BUSY 写1时启动 • 01:定时器3 溢出时启动 • 10:CNVSTR上升沿启动 • 11:定时器2 溢出时启动 2、查询方式编程步骤 (1) 写0到AD0INT; (2) 向AD0BUSY 写

26、1,启动转换; (3) 查询并等待AD0INT 变1; (4) 处理ADC0 数据 AD0INT=0; AD0BUSY=1; while(!AD0INT); result=ADC0; 3、 跟踪方式(每次ADC转换之前必须有一段最小的跟踪时间,以保证得到精确的转换结果) 连续跟踪(默认) 当AD0TM=1,ADC0工作在低功耗跟踪保持方式。每次转换之前都有3个SAR时钟的跟踪周期(在启动转换信号有效之后)。 当CNVSTR信号用于在低功耗跟踪保持方式启动转换时,ADC0 只在CNVSTR为低电平时跟踪;在CNVSTR的上升沿开始转换。 当整

27、个芯片处于低功耗待机或休眠方式时,跟踪可以被禁止(关断) 4、转换结果格式 12位转换结果存放在ADC0H、ADC0L中 AD0LJST=0:数据右对齐,ADC0H的位7-4为位3的符号扩展位、位3-0是12位ADC0数据字的高4位。ADC0L的位7-0为12位ADC0数据字的低8位。 AD0LJST=1:数据左对齐,ADC0H位7-0为12位ADC0 数据字的高8位。ADC0L的位7-4为12位ADC0数据字的低4位,ADC0L的位3-0恒为0。 4、 可编程窗口检测器(提供一个中断) 下限值<上限值时,检测值位于极限值内时有效,可引起中断。 下限值 >上限值时,检测值位于

28、极限值以外时有效,可引起中断。 5、 程序应用举例(片内温度传感器数据采集) (1)查询法程序 void main (void) { long temperature; // 温度 int temp_int, temp_frac; // 温度的整数和小数部分 WDTCN = 0xde; // 禁止看门狗定时器 WDTCN = 0xad; SYSCLK_Init ( ); // 初始化振荡器 PORT_Init ( ); // 初始化数据交叉开关和通用IO口 UART0_Init ( ); // 初始化UART0 ADC0_Ini

29、t ( ); // 初始化和使能ADC while (1) { AD0INT = 0;  //清除转换结束标记,见P208步骤 AD0BUSY = 1;  // 启动转换 while (AD0INT ==0); // 等待转换结束 temperature = ADC0; // 读ADC0数据 temperature = temperature - 41857;   // 减去偏移量,对应0℃的值。 temperature = (temperature * 100L) / 154; // 计算出对应的温度值 temp_int =

30、 temperature / 100; // 得到温度值的整数部分 temp_frac = temperature - (temp_int * 100); // 得到温度值的小数部分 printf (“Temperature is %+02d.%02d\n”, temp_int, temp_frac);// 串口输出 } } 问题: temperature为什么要定义成long类型? 因为要乘以100,2个字节不够存放,先放大100倍,再除以100,商为整数 (2)中断方式 主程序 Timer3_Init (SYSCLK/SAMPLERATE0

31、); // 初始化定时器3溢出为采样速率 ADC0_Init (); // 初始化ADC AD0EN = 1; // 使能ADC EA = 1; // 使能所有中断 while (1) { EA = 0; // 禁止中断 temperature = result; EA = 1; // 重新使能中断 temperature = temperature - 41857; // 计算温度(百分之一精度) temperature = (temperature * 100L) / 154; temp_int = temperatu

32、re / 100; temp_frac = temperature - (temp_int * 100); printf (“Temperature is %+02d.%02d\n”, temp_int, temp_frac); } 中断服务程序 //得到ADC0采样值, 将它加到运行总数accumulator中, //当int_dec为0时, 在全局变量result放置数字滤波后的结果 void ADC0_ISR (void) interrupt 15 { static unsigned int_dec=INT_DEC; //数字滤波计数器,

33、 // int_dec = 0时重设新值 static long accumulator=0L; AD0INT = 0; // 清除ADC转换结束标志 accumulator += ADC0; // 读ADC值并加到运行总数中 int_dec--; // 更新数字滤波计数器 if (int_dec == 0) { // 如果为0,计算结果 int_dec = INT_DEC;        // 重

34、设计数器 result = accumulator >> 8;     // 除以256,求平均值(数字滤波) accumulator = 0L;        // 复位accumulator } } 6、多通道数据采集 while (1) { for (i = 0; i < 9; i++) { EA = 0; // 禁止中断 voltage = result[i]; // 从全局变量取得ADC值 EA = 1; // 重新使能中断 // 计算电压(mV) voltage = voltage * VREF0

35、 voltage = voltage >>4; //右移4位,得到实际大小 printf (“Channel ‘%d’ voltage is %ldmV\n”, i, voltage); } } 中断服务程序 // ADC0转换结束中断服务程序 // 得当ADC0采样值并存储在全局数组 . // 同时选择下一个通道转换 void ADC0_ISR (void) interrupt 15 { static unsigned char channel = 0; // ADC多路模拟通道(0-8) AD0INT = 0;

36、 // 清除ADC转换结束标志 result[channel] = ADC0; // 读ADC值 channel++; // 改变通道 if (channel == 9) { channel = 0; } AMX0SL = channel; // 设置多路模拟转换器到下一个通道 } 6、 D/A转换原理 a) D/A转换器的原理很简单,可以总结为“按权展开,然后相加”几个字。 b) D/A转换器内部必须有一个解码网络,以实现按权值分别进行D/A转换。 c) 解码网络通常有两种: i. 二进制加权电阻网络 ii.

37、T型电阻网络 7、 D/A转换性能指标 (1)分辨率(resolution) 指D/A转换器能分辨的最小输出模拟增量,为满量程值的2-n倍。例如,满量程为10V的8位D/A芯片的分辨率为10V×2-8=39mV;而16位的D/A是10V×2-16=153µV。 (2) 转换精度(conversion accuracy) 转换精度是指满量程时D/A的实际模拟输出值和理论值的接近程度。例如,满量程时理论输出值为10V,实际输出值是在9.99~10.01之间,则其转换精度为±10mV 8、DAC输出更新 位4-3(DAC0MD1~DAC0MD10):DAC0 更新方式位。 • 00:写DAC0H 时更新。 • 01:定时器3 溢出时更新。 • 10:定时器4 溢出时更新。 • 11:定时器2 溢出时更新 9、电压基准电路 电压基准电路为控制ADC 和DAC 模块工作提供了灵活性。 有三个电压基准输入引脚,允许每个ADC 和两个DAC 使用外部电压基准或片内电压基准输出。 通过配置VREF 模拟开关,ADC0 还可以使用DAC0 的输出作为内部基准,ADC1 可以使用模拟电源电压作为基准。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服