手把手教你学单片机-1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第一课:如何学习单片机学习单片机四部曲步骤:第一步:鹦鹉学舌第二步:照葫芦画瓢第三步:他山之石可以攻玉第四步:理论实践结合要领在实践中成长!条件:1、信心和恒心。2、C语言教材一本。(谭浩强)3、开发板一块。课程内容基础课程:主要以开发板为平台,将开发板上的电子器件全部讲解清楚,并且讲授单片机知识和C语言基础知识。扩展课程:讲授除了开发板资源外的常用的一些电路和编程使用方法技巧。提高课程:主要讲授项目开发的流程和方式方法。金沙滩工作室1、知识共享2、充分交流3、共同进步king----金色st----沙滩金沙滩工作室小宋老师以实验的方式倾情奉献《手把手教你学单片机》第二课:点亮你的LED单片机的选择单片机内部资源的三大指标:1.FLASH(程序存储空间ROM)2.RAM(内存)3.SFR(特殊功能寄存器)单片机的选择STC89C52:8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源。P89V51RD+:64KFLASH、1024字节RAM、32个IO口、3个定时器、1个UART、8个中断源、1个SPI、PWM、并且支持与KEIL连机进行在线仿真。单片机最小系统三要素:电源电路、复位电路、晶振电路。特点:单片机可以运行程序,是单片机控制系统的核心。点亮一个LED发光二极管发光二极管(LED):通常红色贴片LED:电压1.6V~2.4V,电流2到20mA,在2到5mA亮度有所变化,5mA以上亮度基本无变化。(5-2)/r=2ma(5-2)/R=20ma150-1.5K单片机(MCU),最小控制单元。首先,我们用单片机来控制一个灯的亮灭。单片机C语言SFR声明:sfrP0=0x80;sfrTCON=0x88;sbitIT0=TCON^0;sbitLED=P0^0;一个字节是8位,一位控制一个I/O口,字节控制所有的I/O口1号:000000002号:000000003号:000000004号:000000005号:000000006号:000000007号:000000008号:000000009号:0000000010号:0000000011号:0000000012号:00000000作业1、牢记发光二极管参数和限流电阻计算方法。2、理解单片机基本外围电路,以及单片机的FLASH、RAM、SFR的概念。3、初步了解单片机程序的基本方式,并且通过查看数据手册来了解SFR的有关内容。第三课:硬件基础学习电磁干扰1、冬天的时候,空气比较干燥的城市,朋友们经常对电脑,铁柜等等放电,这就是“静电放电(ESD)”干扰。2、使用电钻的时候听收音机,看电视有杂音,这就是“快速瞬间脉冲群(EFT)”的效果。3、电脑性能不好,热插拔优盘等外围设备会出现蓝屏重启电脑等现象,这就是热插拔“浪涌(Surge)的效果。去耦电容的使用低频滤波电容,平常应用最多的是钽电容,电解电容,陶瓷电容,起到去除电源低频纹波,稳定电源的作用。高频滤波电容,电源附近,通常用104电容来进行去除高频干扰。三极管三极管是我们的日常应用电路中经常会用到的一个器件。分为PNP和NPN型。三极管常用功能:1、开关控制2、信号放大3、电平转换PNP型三极管NPN型三极管三极管的型号记忆方式:箭头朝哪腿朝哪,导通电压顺箭头过,电压导通,电流控制b:基极e:射极c:集电极74HC138:由三个输入来控制8个输出口的状态,即所谓的三八译码器。0000111111100110111111010110111110111110111110011110111101111110111101111110111111111110作业1、理解并掌握电源输入端滤波电路及其电容的应用和原理。2、记忆三极管的型号和导通原理。3、理解三八译码器的原理,并且学会使用。第四课:流水灯常用延时办法非精确延时1、for(i=0;i100;i++);2、i=100;while(i--);精确延时办法1、利用库函数_nop_();(需要includeintrins.h)2、利用定时器进行定时(后边的课程进行介绍)变量类型关键字所占字节取值范围unsignedchar10~255“00000000”到”11111111”unsignedint20~65535“0000000000000000”到“1111111111111111”依照国际惯例,我们可以用uint8uint16等缩写来替代,只需要用typedef语句可以完成:typedefunsignedcharuint8;typedefunsignedintuint16;流水灯实验8个LED发光二极管,分别对应单片机IO口的P0.0到P0.7口,8个单片机IO口组成一个字节,在程序编写过程中,可以直接用P0来进行操作。C语言的8位二进制数代表了8个IO口P0=0xfe;P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.011111110C语言运算符左移右移X2X2左移,最低位填0补充;右移,最高位填0补充0xf01110000001111000按位取反符号~取反后1变成0,0变成10x0F取反后成为0xF0,即00001111-11110000数码管数码管真值表根据单片机连接电路,可以计算出数码管的真值表:P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0dpgfedcba11111001P0=0xF9;数码管真值表根据单片机连接电路,计算出数码管的真值表0123450xc00xf90xa40xb00x990x926789Ab0x820xf80x800x900x880x83CdEF0xa70xa10x860x8e作业1、记住C语言2个变量类型及其范围,掌握C语言的位操作和字节操作。2、用3个LED小灯做一个交通灯的程序。3、根据原理图和流水灯程序,独立完成流水灯反方向流动以及小灯一个个点亮直到全亮的功能。4、明白数码管的原理,写出数码管真值表。第五课:定时器时钟周期和机器周期时钟周期T是时序中最小的时间单位。具体计算就是1/时钟源。我们开发板上单片机使用的时钟周期=1/11059200s。机器周期CPU完成一个操作的最短时间。普通51一个机器周期是12个时钟周期。定时器和计数器2个定时器/计数器:定时器0和定时器1定时器:每经过一个机器周期,寄存器加1。因此,可以将机器周期看作为计数周期。计数器:后续课程介绍。特殊功能寄存器TCONTF:定时器溢出标志。溢出时,该位自动置1。中断执行时硬件清零,或者软件清零。TR:定时器运行控制位,置1开始计时,清0停止计时。位76543210符号TF1TR1TF0TR0IE1IT1IE0IT0定时器的特殊功能寄存器TMODT1和T0分别代表单片机两个计数器GATE:该位被置位时为门控位。仅当TR1被置位并且INT1脚为高,定时器开始计数。当该位被清零时,只要TR1被置位,定时器1马上开始计数。C/T:该位为0的时候,用作定时器,该位为1的时候,用做计数器。位76543210符号T1GATET1C/TT1M1T1M0T0GATET0C/TT0M1T0M0M1,M000011011模式0模式1模式2模式3模式1:16位的计数器。(TH1,TL1)模式2:自动装载8位计数器。主要应用在串口波特率发生器。模式0&模式3:几乎不用。TCON和TMOD复位后都会自动变成0x00.12*(65536-x)/11059200=0.001使用定时器的方法第一:设置特殊功能寄存器TMOD,使之工作在需求的状态。第二:设置计数寄存器的初值,精确设定好定时时间。第三:设置特殊功能寄存器TCON,通过打开TR来让定时器进行工作。(也可设置为中断模式)TH1=0xfc;TL1=0X66;12(65536–x)/11059200=0.02s第六课:定时器+数码管数组数组是一组变量,这组变量需要满足三个条件:1、具有相同的数据类型2、具有相同的名字3、在存储器中是被连续存放的a[5]={1,2,3,4,5}a[]={1,2,3,4,5}a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;动态显示动态显示:轮流向各位数码管送入数据,并且将数据输入速度控制在人肉眼所分辨不出来的范围内,利用发光二极管的余晖让人的视觉能够识别的过程。switch语句适合多选一的选择性语句,具体使用方法:switch(表达式){case表达式一:语句1;case表达式二:语句2;……default:语句n;}函数函数:实现一个特定功能的模块。Main()函数为主函数,且唯一。注意:如果函数体放在main函数的后边,则需要进行函数声明才能使用。作业1、理解清楚定时器在工作方式1下的编程方式和使用方法,并且独立使用定时器进行流水灯实验操作。2、学会通过查找设置特殊功能寄存器SFR的方式来编写程序。3、理解清楚数码管的原理,和使用数码管进行数字显示的原理的方法。4、理解动态显示的原理和方法。第七课:基础学习+习题课变量1、局部变量:在函数内部声明的变量是内部变量,它只在本函数内有效,在此函数外是不能作用的。函数体内占内存,出了函数释放内存。2、全局变量:在函数外边声明的变量就是外部变量,也叫做全局变量,一个源文件(.c)可以包含一个或者多个函数,全局变量的作用范围是从声明的位置一直到文件结束,一直占用内存。3、静态变量在函数体内声明,前边加static关键字声明,属于局部变量,和局部变量的区别是一直占用内存,和全局变量的区别是只能在函数体内使用。注意:只有第一次赋值有效。晶振电路1、晶振选择:根据实际系统需求选择,6M,12M,11.0592M,20M等等2、负载电容:对地接2个10到30pF的电容即可,常用20pF。3、万用表测晶振:直接用红表笔对晶振引脚,黑表笔接GND,测量电压即可。复位电路复位:把单片机内部电路设置成为一个确定的状态,所有的寄存器初始化。51单片机的复位时间大约在2个机器周期左右,具体需要看芯片数据手册。一般通过复位芯片或者复位电路,具体的阻容参数的计算,通过google查找。单片机IO口状态1、普通IO口2、强推挽3、开漏(开集)4、单片机IO口的驱动能力5、74HC245的应用上下拉电阻上拉就是将不确定的信号通过一个电阻嵌位在高电平,下拉同理。1、电平转换,提高输出电平数值。2、OC门必须加上拉电阻才能使用。3、加大普通IO引脚驱动能力。4、悬空引脚上下拉抗干扰。上拉电阻选取原则1、从节约功耗及芯片灌电流能力考虑应当足够大;电阻大,电流小。2、从确保足够的驱动电流考虑应当足够小;电阻小,电流大。3、对于高速电路,过大的上拉电阻可能会导致边沿变平缓。综合考虑:上拉电阻常用值在1K到10K之间选取,下拉同理。在线仿真ISP:In-SystemProgramming,是指在系统可编程,指电路板上的空白器件(单片机)可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。Ice:InCircuitEmulator,是指在线仿真器,ICE是最为常用的调试设备,它的核心思想是完全模拟CPU工作,通过外围电路捕获CPU的各种状态信息,输送到PC端,通过PC来查看当前CPU的工作状态。&和|对于不能进行直接位操作的SFR进行位操作的办法:某一位置1的办法:a=a|10000000,将要置1的位为1,其他为0。a|=0x01;低位置1a=xxxxxxx1某一位清0的办法:a=a&xxxxxxx0,将要清0的位为0,其他为1。a&=0xef;xxx0

1 / 92
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功