




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、初学者的困难1、想看书不知道看哪本书,看一遍忘一遍,看完了还不知道怎么用单片机。2、想用开发板练习却不知道如何练习。3、想参与项目却苦于没有机会。4、想找人带一带身边却没有专业人员。5、 第一课: 如何学习单片机学习单片机四部曲步骤: 第一步:鹦鹉学舌 第二步:照葫芦画瓢 第三步:他山之石可以攻玉 第四步:理论实践结合要领 在 实 践 中 成 长 ! 条件: 1、信心和恒心。 2、C语言教材一本。(谭浩强) 3、开发板一块。 课程内容基础课程:主要以开发板为平台,将开发板上的电子器件全部讲解清楚,并且讲授单片机知识和C语言基础知识。扩展课程:讲授除了开发板资源外的常用的一些电路和编程使用方法技
2、巧。提高课程:主要讲授项目开发的流程和方式方法。金沙滩工作室 1、知识共享 2、充分交流 3、共同进步 king - 金色 st - 沙滩 - 金沙滩工作室第二课: 点亮你的LED单片机的选择单片机内部资源的三大指标: 1.FLASH (程序存储空间) 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连机进行在线仿真。单片机最小
3、系统三要素:电源电路、复位电路、晶振电路。特点:单片机可以运行程序,是单片机控制系统的核心。点亮一个LED发光二极管发光二极管(LED):通常红色贴片LED:电压1.6V2.4V,电流2到20mA,在2到5mA亮度有所变化,5mA以上亮度基本无变化。(5-2)/r= 2ma (5-2)/R = 20ma 150 - 1.5K单片机(MCU),最小控制单元。首先,我们用单片机来控制一个灯的亮灭。 单片机C语言SFR声明: sfr P0 = 0 x80; sfr TCON = 0 x88; sbit IT0 = TCON0; sbit LED = P0 0;一个字节是8位,一位控制一个I/O口,字
4、节控制所有的I/O口1号:000000002号:000000003号:000000004号:000000005号:000000006号:000000007号:000000008号:000000009号:0000000010号:0000000011号:0000000012号:00000000作业1、牢记发光二极管参数和限流电阻计算方法。2、理解单片机基本外围电路,以及单片机的FLASH、RAM、SFR的概念。3、初步了解单片机程序的基本方式,并且通过查看数据手册来了解SFR的有关内容。第三课: 硬件基础学习电磁干扰1、冬天的时候,空气比较干燥的城市,朋友们经常对电脑,铁柜等等放电,这就是“静电放
5、电(ESD)”干扰。2、使用电钻的时候听收音机,看电视有杂音,这就是“快速瞬间脉冲群(EFT)”的效果。3、电脑性能不好,热插拔优盘等外围设备会出现蓝屏重启电脑等现象,这就是热插拔“浪涌(Surge)的效果。去耦电容的使用低频滤波电容,平常应用最多的是钽电容,电解电容,陶瓷电容,起到去除电源低频纹波,稳定电源的作用。高频滤波电容,电源附近,通常用104电容来进行去除高频干扰。三极管三极管是我们的日常应用电路中经常会用到的一个器件。分为PNP和NPN型。三极管常用功能:1、开关控制 2、信号放大 3、电平转换PNP 型三极管NPN型三极管三极管的型号记忆方式:箭头朝哪腿朝哪,导通电压顺箭头过,电
6、压导通,电流控制b:基极 e:射极 c:集电极74HC138:由三个输入来控制8个输出口的状态,即所谓的三八译码器。0000 1 1 1 1 1 1 1 0011 0 1 1 1 1 1 10101 1 0 1 1 1 1 10111 1 1 0 1 1 1 11001 1 1 1 0 1 1 11011 1 1 1 1 0 1 11101 1 1 1 1 1 0 11111 1 1 1 1 1 1 0作业1、理解并掌握电源输入端滤波电路及其电容的应用和原理。2、记忆三极管的型号和导通原理。3、理解三八译码器的原理,并且学会使用。第四课: 流水灯常用延时办法非精确延时 1、for(i = 0;
7、 i 100; i+); 2、i = 100; while(i-);精确延时办法 1、利用库函数_nop_(); (需要include ) 2、利用定时器进行定时 (后边的课程进行介绍)变量类型关键字所占字节取值范围unsigned char10255“00000000”到”11111111”unsigned int2065535“00000000 00000000”到“11111111 11111111”依照国际惯例,我们可以用uint8 uint16 等缩写来替代,只需要用typedef语句可以完成:typedef unsigned char uint8;typedef unsigned
8、int uint16;流水灯实验8个LED发光二极管,分别对应单片机IO口的P0.0到P0.7口,8个单片机IO口组成一个字节,在程序编写过程中,可以直接用P0来进行操作。C语言的8位二进制数代表了8个IO口P0 = 0 xfe;P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.01 1 1 1 1 1 1 0C语言运算符左移 X2左移,最低位填0补充;右移,最高位填0补充0 xf0 11100000 01111000按位取反符号 取反后1变成0,0变成10 x0F取反后成为 0 xF0,即00001111-11110000数码管数码管真值表 根据单片机连接电路,可以
9、计算出数码管的真值表:P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0dp g f e d c b a1 1 1 1 1 0 0 1P0 = 0 xF9;数码管真值表根据单片机连接电路,计算出数码管的真值表 0 1 2 3 4 5 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 6 7 8 9 A b0 x82 0 xf8 0 x80 0 x90 0 x88 0 x83 C d E F0 xa7 0 xa1 0 x86 0 x8e作业1、记住C语言2个变量类型及其范围,掌握C语言的位操作和字节操作。2、用3个LED小灯做一个交通灯的程序。3
10、、根据原理图和流水灯程序,独立完成流水灯反方向流动以及小灯一个个点亮直到全亮的功能。4、明白数码管的原理,写出数码管真值表。第五课: 定时器时钟周期和机器周期时钟周期T是时序中最小的时间单位。具体计算就是1/时钟源。我们开发板上单片机使用的时钟周期= 1/11059200 s。机器周期CPU完成一个操作的最短时间。 普通51一个机器周期是12个时钟周期。定时器和计数器2个定时器/计数器:定时器0和定时器1定时器:每经过一个机器周期,寄存器加1。因此,可以将机器周期看作为计数周期。计数器:后续课程介绍。特殊功能寄存器TCONTF:定时器溢出标志。溢出时,该位自动置1。中断执行时硬件清零,或者软件
11、清零。TR:定时器运行控制位,置1开始计时,清0停止计时。位76543210符号TF1TR1TF0TR0IE1IT1IE0IT0定时器的特殊功能寄存器TMODT1和T0分别代表单片机两个计数器GATE:该位被置位时为门控位。仅当TR1被置位并且INT1脚为高,定时器开始计数。当该位被清零时,只要TR1被置位,定时器1马上开始计数。C/T:该位为0的时候,用作定时器,该位为1的时候,用做计数器。位76543210符号T1GATET1C/TT1M1T1M0T0GATET0C/TT0M1T0M0M1,M000 01 10 11模式0 模式1 模式2 模式3模式1:16位的计数器。(TH1,TL1)模
12、式2:自动装载8位计数器。主要应用在串口波特率发生器。模式0&模式3:几乎不用。TCON和TMOD复位后都会自动变成0 x00.12 * (65536- x)/11059200 = 0.001使用定时器的方法第一:设置特殊功能寄存器TMOD,使之工作在需求的状态。第二:设置计数寄存器的初值,精确设定好定时时间。第三:设置特殊功能寄存器TCON,通过打开TR来让定时器进行工作。(也可设置为中断模式)TH1 = 0 xfc; TL1 = 0X66;12(65536 x) /11059200 = 0.02s第六课: 定时器 + 数码管数组数组是一组变量,这组变量需要满足三个条件:1、具有相同的数据类
13、型2、具有相同的名字3、在存储器中是被连续存放的a5 = 1, 2 , 3, 4, 5 a = 1, 2 , 3, 4, 5 a0 = 1; a1 = 2; a2 = 3; a3 = 4; a4 = 5;动态显示动态显示: 轮流向各位数码管送入数据,并且将数据输入速度控制在人肉眼所分辨不出来的范围内,利用发光二极管的余晖让人的视觉能够识别的过程。switch语句适合多选一的选择性语句,具体使用方法:switch(表达式)case 表达式一: 语句1; case 表达式二: 语句2; default: 语句n; 函数函数:实现一个特定功能的模块。Main()函数为主函数,且唯一。注意:如果函数体
14、放在main函数的后边,则需要进行函数声明才能使用。作业1、理解清楚定时器在工作方式1下的编程方式和使用方法,并且独立使用定时器进行流水灯实验操作。2、学会通过查找设置特殊功能寄存器SFR的方式来编写程序。3、理解清楚数码管的原理,和使用数码管进行数字显示的原理的方法。4、理解动态显示的原理和方法。第七课: 基础学习+习题课变量1、局部变量: 在函数内部声明的变量是内部变量,它只在本函数内有效,在此函数外是不能作用的。函数体内占内存,出了函数释放内存。2、全局变量:在函数外边声明的变量就是外部变量,也叫做全局变量,一个源文件(.c)可以包含一个或者多个函数,全局变量的作用范围是从声明的位置一直
15、到文件结束,一直占用内存。3、静态变量在函数体内声明,前边加static关键字声明,属于局部变量,和局部变量的区别是一直占用内存,和全局变量的区别是只能在函数体内使用。注意:只有第一次赋值有效。 晶振电路1、晶振选择: 根据实际系统需求选择,6M,12M,11.0592M,20M等等2、负载电容:对地接2个10到30pF的电容即可,常用20pF 。3、万用表测晶振:直接用红表笔对晶振引脚,黑表笔接GND,测量电压即可。 复位电路复位:把单片机内部电路设置成为一个确定的状态,所有的寄存器初始化。51单片机的复位时间大约在2个机器周期左右,具体需要看芯片数据手册。一般通过复位芯片或者复位电路,具体
16、的阻容参数的计算,通过google查找。单片机IO口状态1、普通IO口2、强推挽3、开漏(开集)4、单片机IO口的驱动能力5、 74HC245的应用上下拉电阻上拉就是将不确定的信号通过一个电阻嵌位在高电平,下拉同理。1、电平转换,提高输出电平数值。2、OC门必须加上拉电阻才能使用。3、加大普通IO引脚驱动能力。4、悬空引脚上下拉抗干扰。 上拉电阻选取原则1、从节约功耗及芯片灌电流能力考虑应当足够大;电阻大,电流小。2、从确保足够的驱动电流考虑应当足够小;电阻小,电流大。3、对于高速电路,过大的上拉电阻可能会导致边沿变平缓。综合考虑:上拉电阻常用值在1K到10K之间选取,下拉同理。在线仿真ISP
17、:In-System Programming,是指在系统可编程,指电路板上的空白器件(单片机)可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。Ice: In Circuit Emulator,是指在线仿真器,ICE是最为常用的调试设备,它的核心思想是完全模拟CPU工作,通过外围电路捕获CPU的各种状态信息,输送到PC端,通过PC来查看当前CPU的工作状态。 &和|对于不能进行直接位操作的SFR进行位操作的办法:某一位置1的办法:a = a| 10000000, 将要置1的位为1,其他为0。 a |= 0 x01; 低位置1a= xxxxxx
18、x1某一位清0的办法:a = a& xxxxxxx0, 将要清0的位为0,其他为1。 a &= 0 xef; xxx0 xxxx作业1、充分理解并且学会使用晶振电路、复位电路。2、理解单片机的IO口的状态,并且具有以后阅读数据手册进行IO口设计的能力。3、理解并且牢记上下拉电阻的原理和选用方式。4、学会如何使用在线仿真进行调试程序,要学会定位问题并且解决问题。第六课: 中断中断的介绍比如说我正在厨房用煤气烧一壶水,这样就只能守在厨房里,苦苦等着水开如果水溢出来浇灭了煤气,有可能就要发生一场灾难了。门外忽然又传来了铿锵有力的歌声,我最喜欢的古装剧要开演了,真想夺门而出,然而,听着水壶发出“咕嘟咕
19、嘟”的声音,我清楚:除非等到水开,否则没有我享受人生的时候。这个场景跟中断有什么关系呢?在这个场景中,我是唯一具有处理能力的主体,不管是烧水、还是看电视,同一个时间点上我只能干一件事情。但是,在我专心致志干一件事情时,总有许多或紧迫或不紧迫的事情突然出现在面前,都需要去关注,有些还需要我停下手头的工作马上去处理。只有在处理完之后,方能回头完成先前的任务,“把一壶水彻底烧开!” 中断机制不仅赋予了我处理意外情况的能力,如果我能充分发挥这个机制的妙用,就可以“同时”完成多个任务了。 事实上烧水需要10分钟完成,但是提下水壶和关煤气我只要几秒钟就可以完成。为了这几秒,我需要在厨房等候10分钟。如果使
20、用闹钟定时10分钟,10分钟一到,闹钟就会提醒我该去关煤气了,那么我就可以去安心看电视了。实际上就是用了闹钟这样一个中断信号来提示我完成提水壶和关煤气的任务。中断的SFR中断使能控制寄存器IEEA:总中断使能位,总阀门。EC:PCA中断使能位ET2:定时器2中断使能位ES:串口中断位76543210符号EAECET2ESET1EX1ET0EX0ET1:定时器1溢出中断使能EX1:外部中断1使能ET0:定时器0溢出中断使能EX0:外部中断0使能位76543210符号保留PPCPT2PSPT1PX1PT0PX0位76543210符号保留PPCHPT2HPSHPT1HPX1HPT0HPX0H中断优先
21、级寄存器IP IPHPPC:PCA中断优先级PT: 定时器中断优先级PS:串口中断优先级PX:外部中断优先级中断优先级的说明当设置为默认中断优先级时: 当几个中断同时发生时,则先处理中断优先级高的中断程序,在处理任意中断期间发生中断,都不会响应。当人为配置了中断优先级, 同时发生中断,优先级高的先响应,在处理任意中断时,发生同级别或低级的中断,则不响应,发生优先级更高的中断时,则先处理高优先级中断,处理完毕,再回来处理当前中断。中断优先级的说明当设置为默认中断优先级时: 假设“水开”默认优先级高于“门铃”优先级,当先听到“水开”则先处理“水开”这件事,当先听到“门铃”则先处理“门铃”这件事。只
22、有当两件事同时发生时,则会先去处理“水开”,再处理“门铃”。 中断优先级的说明当人为配置了中断优先级配置“水开”为高优先级,则当“水开”事件发生时,直接处理“水开”,在处理“水开”的过程中,即使“门铃”响了,也不会去理会。当“门铃”响了,正在走向门口时,这个时候,“水开”事件又发生了,那么从门口转向,先去处理“水开”,处理好了后,再回头到门口,处理“门铃”事件。 作业1、充分理解中断的意义。2、使用照葫芦画瓢将这节课的全部程序重新编写并且下载到单片机里边,看是否能够将功能进行实现。3、将数码管的显示功能加以改进,使其只显示有效位。第九课: LED点阵1、关于51的位声明2、关于P89V51的仿
23、真功能3、水滴程序演示4、项目开发模式5、第一个开源项目点阵LED1、led灯是整齐排列的,被镶嵌到一块塑料板上,可以显示汉字和图形,用来介绍商品,吸引顾客。1、点阵led显示屏作为一种现代电子媒体,具有灵活的显示面积(可分割、任意拼装)、高亮度、长寿命、大容量、数字化、实时性的特点。点阵LED点阵LED原理作业1、仿照水滴程序,做个类似的作业。2、弄明白点阵LED原理和硬件设计3、自己用点阵led画出漂亮的图片。4、进行单个汉字的静态显示和多个汉字的动态显示。第十课: 按键1、跳动的心2、程序空间占用大小3、数据手册下载地址 4、关键字设置独立式按键矩阵按键虾米I代开发板矩阵键盘头文件的建立
24、.h#ifndef _MAIN_H_#define _MAIN_H_.#endif按键抖动硬件去抖软件去抖检测出键闭合后执行一个延时程序,产生5ms10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。作业1、理解按键扫描,和按键消抖原理2、发挥想象力,利用矩阵按键控制数码管的数字变化。3、用定时中断的方式去抖动4、在主函数中不占时间的方式去抖动第十一课: 异步串口通信UART1、关于按键去抖的问题2、计算器程序3、仿真芯片使用说明常用串行通信方式1、UART异步串口通信2、I2C总线串行同步通信3、SPI串行总线同步通信UART异步串口通信UART
25、是单片机与PC之间的最简单的通信方式之一,也是单片机之间常用通信。UART的四种模式模式0:使用较少,暂时不讲或自学。模式1:以TXD为例,平时没数据时TXD为高电平,来了数据,一位起始位0,八位数据位(一个字节),一位停止位1。模式2和3:原理和模式1一样,只是添加了一位奇偶校验位(防止通信出错)。串口波特率常用串口波特率: 300、600、1200、2400、4800、9600、19200 115200;波特率:就是发送一位数据的速率,即发送一个数据的持续时间 = 1/baud;SBUF:串口数据缓冲寄存器,发送数据时,只要将数据送入SBUF,则单片机自动发送数据,接收数据时,自动将数据接
26、收至SBUF。SCON串口控制寄存器位76543210符号SM0SM1SM2RENTB8RB8TIRISM0和SM1为工作方式选择位SM0SM1方式说明波特率000移位寄存器fosc/120118位数据位定时器产生1029位数据位fosc/32或fosc/641139位数据位定时器产生SM2:使能模式2和3中的多机通信功能。通常不使用。REN:使能串口接收。由软件置1,则允许串口接收数据;由软件清零,则禁止串口接收数据。TB8,RB8:方式2和方式3中的校验位,分为四种方式A.偶校验;B.奇校验;C.强制为0;D.强制为1 。TI:发送中断标志,在发送停止位时由硬件置1。必须通过软件才能清零。
27、RI:接收中断标志,接收停止位的中间时刻由硬件置1,必须通过软件清零。串口实验实现一个串口程序,向电脑发送一串数据。接收从电脑来的数据,加1后返回给电脑。通过串口中断的方式来实现,并且理解串口中断。定时器1作为波特率发生器定时器1使用自动重装模式,即模式2。TH1 = TL1 = 256 - 11059200/(12 * 32 * 9600) =实现步骤:1、将定时器1置为自动重装模式。2、将串口设置为方式1。3、根据公式计算出定时器1的初值。4、打开定时器1,打开串口允许接受。ASCII表作业1、学习视频完全掌握单片机和电脑通信2、将单片机的按键值通过串口上传到电脑3、用电脑串口调试助手下发
28、数据,通过数码管上显示出来。第十一课: IIC通信EEPROM1、单片机控制功能2、UART通信的字符显示3、UART通信的波特率设置常见的存储器件的介绍常见存储器件:铁电,E2PROM,FLASH。共同特点:掉电后数据不丢失各自特点:铁电:理论上可以无限次擦写,操作简单,但是容量小。E2PROM:理论上擦写次数在30w到100w的不等,操作简单,容量中等。FLASH:理论上擦写次数在10w到100w不等,容量很大,但操作较复杂,若要改变一个字节就要改变整个扇区。I2C总线简介1、I2C(InterIntegrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连
29、接微控制器及其外围设备(特别是外部存储器件)。 2、I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。 3、I2C总线在传送数据过程中共有三种特殊类型信号, 它们分别是:开始信号、结束信号和应答信号。 I2C总线简介1、I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。I2C总线的另一个优点是,它支持多主机,其中任何能够进行发送和接收的设备都可以成为主机。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主机。2、I2C总线是由数据线SDA和时钟SCL构成
30、的串行总线,可发送和接收数据。各种I2C均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址。EEPROM的硬件连接I2C的起始和停止 SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 I2C的数据传输SCL为高电平期间,数据线上的数据必须保持稳定,只有SCL信号为低电平期间,SDA状态才允许变化。I2C的起始程序void I2CStart(void)SDA = 1; Delay(); / 延时子程序SCL = 1;Delay();SDA = 0;Delay();SC
31、L = 0;I2C的结束程序void I2CStop(void)SCL = 0; Delay();SDA = 0;Delay();SCL = 1;Delay();SDA = 1;Delay();I2C的数据读写和应答I2C与UART不同的地方首先在于先传高位,后传送低位。主机写数据时,每发送一个字节,接收机需要回复一个应答位“0”,通过应答位来判断从机是否接收成功。主机读数据时,接收一个字节结束后,主机也需要发送一应答位“0”,但是当接收最后一个字节结束后,则需发送一个非应答位“1”,发完了1后,再发一个停止信号,最终结束通信。I2C写数据流程 首先I2C起始信号,然后发送首字节,即器件(EE
32、PROM)地址。并且在读写方向位上选择“写操作”方向。(0 xa0) 第二个字节,发送数据的存储地址,就是要读取的数据所存储在EEPROM中的位置。 第三个字节,发送要存储的数据第一个字节,第二个字节 在写数据的过程中,都要等待EEPROM返回一个“应答位”。Void write_eeprom(unsigned char addr, unsigned char databyte)I2CStart();I2CSend(0 xa0);I2CSend(addr);I2CSend(databyte);I2CStop();Void I2CSend(unsigned char byte)unsigned
33、char mask, i;mask = 0 x80;for(i = 0; i = 1;Delay();SCL = 1;Delay(); SCL = 0;SDA = 1;Delay();SCL = 1;Delay();SCL = 0;I2C读数据流程 首先I2C起始信号,然后发送首字节,即器件(EEPROM)地址。并且在读写方向位上选择“写操作”方向。 第二个字节,发送数据的存储地址,就是要读取的数据所存储在EEPROM中的位置。 第三个字节,重新发送I2C起始信号和器件地址,并且在方向位上选择“读操作”方向。 在前三个字节操作过程,都要等待器件给与回应一个“应答位0” 第四个字节,接收从器件发
34、回的首字节后,单片机要主动返回一个“(非)应答位0”特别注意: 接收器件返回数据的中间字节,主机主动返回“应答位0”,但最后一个字节,主机要返回一个“非应答位1”,以此通知从机读取数据结束,发送停位。unsigned char read_eeprom(unsigned char addr)unsigned char databyte,databyte2;I2CStart();I2CSend(0 xa0);I2CSend(addr);I2CStart();I2CSend(0 xa1);databyte = I2CRead();I2CStop();return databyte;unsigned
35、char I2CReadAck(void)unsigned char i, byte;byte = 0;for(i=0;i8;i+)SCL = 0;SDA = 1;Delay();SCL = 1;Delay();byte = 1;if(SDA=1) byte |= 0 x01;Delay(); SCL = 0;Delay();SDA = 0;Delay();SCL = 1;Delay();SCL = 0;return byte;unsigned char I2CRead(void)unsigned char byte, i;byte = 0;for(i = 0; i 8; i+)SCL = 0
36、;SDA = 1;Delay();SCL = 1;Delay();byte = 1; if(SDA = 1) byte |= 0 x01; Delay(); SCL = 0;SDA = 1;Delay();SCL = 1;Delay();SCL = 0;return byte;作业彻底理解I2C总线的底层工作原理,并且依照数据手册,将I2C的时序完全弄明白,并且,自己关闭视频,独立读写EEPROM,对照课程程序。用串口调试助手,将数据通过UART下发到单片机当中,并且存储到EEPROM中,然后读取EEPROM数据取反在LED上显示出来。第十三课: UART通信深入学习1、单片机控制功能2、UA
37、RT异步和IIC的同步3、EEPROM的地址4、EEPROM的读写时序问题电平标准介绍1、TTL: Vcc:5V; 2、 LVTTL : Vcc:3.3V等3、CMOS: Vcc:5V;4、LVCMOS : Vcc:3.3V等5、RS232标准: 1:-3V -15V 0: 3V 15V232串口(1)1、 9针串口定义232串口(2)引脚:1、载波检测(DCD) 2、接收数据(RXD) 3、发送数据(TXD) 4、数据终端准备好(DTR) 5、信号地线(SG) 6、数据准备好(DSR) 7、请求发送(RTS) 8、清除发送(CTS) 9、振铃提示(RI)SP3232的应用232硬件转换电路关
38、于UART的其他知识点PCON只有第七位与串口通信波特率有关,置1可以加倍串口通信波特率。PCON |= 0 x80;关于UART数据读取的知识点:CPU读取RXD数据时,采样(读取数据)速度为波特率的16倍。在第7、8、9计数状态时,采样此时的RXD数值,取值为三个采样值的多数(即至少2次)作为读取的数值。对于起始位来说,下跳沿开始读数,但会通过7、8、9的采样来确定这个数是不是0,如果不是,则复位接收电路。作业理解串口通信的本质和实质,能够用任何频率的晶振和并且学会计算任何频率的波特率。学会使用定时器和IO口模拟串口通信,完全理解透彻串口通信发送数据和接收数据的完成情况,能够独立编写模拟串
39、口通信程序。第十四课: IIC通信EEPROM深入学习EEPROM操作注意事项1、写数据必须保证写保护的正确使用2、读写数据的读出写入地址逻辑关系3、通信过程中的时序关系4、读数据最后一个字节必须回应“非应答位”5、通信速率的使用(100k) 记录开发板的上电次数强制类型转换当赋值运算符两边或者函数变量传递调用的运算对象类型不同时,将要发生类型转换。显式类型转换(强制类型转换) (type)隐式强制类型转换 赋值过程中,左右类型不一致,则自动转成左侧的类型赋值多文件程序一个.c文件配套一个.h文件变量定义初始化,函数体都放在.c文件类型定义、宏、位声明、SFR声明等都放在.h文件中函数声明放到
40、.h文件中,所有的.c都包含所有的.h,则可以通过.h中的函数声明相互调用不同.c内的函数。结构体结构体类型声明、结构体变量定义结构体与数组类似,结构体变量内部变量内存连续 结构体内部变量可以类型不一致结构体内部可以包含数组类型EEPROM初始化问题作业本节课内容,多复习两遍,多试验几次,能够保证需要的时候回头查找将本节课的记录上电次数的程序自己练习3遍,考虑三遍,把程序的每一个细节学习明白。第十五课: 1602LCD显示6800总线从上图可以看出,我们能够对1602执行4种操作。它们分别是利用RS、RW、E的不同状态来实现的。在状态字说明中注意bit7,它是判断LCD忙状态的标志,当它为0时
41、,LCD闲,允许我们操作它;相反就不允许我们操作它。作业熟悉1602总线操作尝试1602不同的操作,熟悉效果,比如流动显示等等。第十六课: DS1302实时时钟学习BCD码介绍用4位二进制数来表示1位十进制数中的09这10个数码,简称BCD码,即BCD代码。12 0001 0010 45tmp = timedatai / 10; tmp = 4timedatai = timedatai % 10; = 5timedatai = timedatai + tmp*16; 69 0100 0101英文手册阅读对DS1302的操作包括读、写两个部分,我们根据程序来介绍芯片操作。从上图看出,无论我们是读
42、、还是写,数据都是以1个字节(8bit)为单位的,所以在程序的最底层我问要先写出字节的读写程序:void write_ds1302_byte(uint8 dat) uint8 i;SCK = 0;for (i=0;i= 1;SCK = 0;uint8 read_ds1302_byte(void) uint8 i, dat=0;for (i=0;i= 1;if (SDA)dat |= 0 x80;SCK = 1;SCK = 0;return dat;在每次发起数据传输之前,要先复位DS1302:void reset_ds1302(void)RST = 0;SCK = 0;RST = 1;由于上电
43、之后WP的状态并不确定,所以我们每次写操作时都要打开写保护。写保护程序:/* * 清除写保护*/void clear_ds1302_WP(void) reset_ds1302();RST = 1;write_ds1302_byte(0 x8E);write_ds1302_byte(0);SDA = 0;RST = 0;/* * 设置写保护*/void set_ds1302_WP(void) reset_ds1302();RST = 1;write_ds1302_byte(0 x8E);write_ds1302_byte(0 x80);SDA = 0;RST = 0;我们每次的读写时间,时间上是
44、对DS1302的相应地址进行操作,图中列出了各个信息的读写地址,为了方便对地址操作,我们封装了以下两个函数:/* * 写入DS1302*/void write_ds1302(uint8 addr, uint8 dat) reset_ds1302();RST = 1;write_ds1302_byte(addr);write_ds1302_byte(dat);SDA = 0;RST = 0;/* * 读出DS1302数据*/uint8 read_ds1302(uint8 addr)uint8 temp=0;reset_ds1302();RST = 1;write_ds1302_byte(addr
45、);temp = read_ds1302_byte();SDA = 0;RST = 0;return (temp);作业熟悉1302的资料,尝试阅读英文手册。尝试使用数码管或者1602液晶,将始终显示出来。第十七课: DS18B20温度传感器的学习18B20特点1、“一线总线”数字化温度传感器2、3V到5.5V的宽电压工作范围3、分辨率912位可设定,即精度可以设定0.5, 025, 0.125, 0.0625软件设计1、启动温度转换2、读取温度数值软件设计1、复位2、写操作3、读操作复位单片机t0时刻发送一复位脉冲(最短为480us的低电平信号),接着在tl时刻释放总线并进入接收状态,DS1
46、8B20 在检测到总线的上升沿之后,等待15-60us,接着DS18B20在t2时刻发出存在脉冲(低电平持续60-240us),如图中虚线所示。换句话说如果t2t3之间信号电平如果为低,则说明DS18B20复位成功;否则失败。写操作当单片机将总线t0时刻从高拉至低电平时,就产生写时间隙。见上图,从t0时刻开始 15us之内应将所需写的位送到总线上。DS18B20在t0后15-60us间对总线采样,若低电平写入的位是0;若高电平,写入的位是1。连续写2位间的间隙应大于1us。读操作当单片机将总线t0时刻从高拉至低电平时,总线只须保持低电平4us之后,在t1时刻将总线拉高,产生读时间隙,读时间在t
47、1时刻后t2时刻前有效,t2距t0为15us,也就是说,t2时刻前主机必须完成读位 并在t0后的60us120us内释放总线。启动温度转换三个步骤:1、复位DS18B202、发出Skip ROM命令(CCH)3、发出Convert T命令(44H)其中Skip ROM命令仅适用于总线上只有一个DS18B20时的情况。读取温度五个步骤:1、复位DS18B202、发出Skip ROM命令(CCH)3、发出Read命令(BEH)4、读两字节的温度5、温度格式转换温度格式作业熟悉DS18B20的总线结构和原理将DS18B20温度放到LCD上显示第十八课: 红外通信学习红外通信基本原理1、将基带二进制信号调制为一系列的脉冲串信号,通过红外发射管发射红外信号。2、红外线遥控就是利用波长为0.761.5m之间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- .3郑州森林湖市场监测周报-市场部
- 二零二五年度电子商务平台安全风险评估与改进合同
- 2025版互联网金融服务财务担保合同样本(金融创新支持)
- 二零二五年度消防设施安装工程合作合同范本
- 二零二五年度高端企业视频监控系统合同
- 2025版节能建筑室内空气质量检测合同样本
- 2025年度出租车租赁合同及城市交通优化服务
- 2025年度文化产业投资连带责任保证担保合同书
- 2025店面转让合同协议书:文化创意产业合作
- 移动网络维护培训教材
- 2025至2030中国解酒饮料行业深度研究及发展前景投资评估分析
- 2025自动化设备试用服务合同
- 销售提成管理办法销售
- 宣传岗培训课件
- 2025年金融法规与合规管理考试试题及答案
- 医院信息安全管理制度培训
- 2025年河北省中考数学试卷及答案
- 2025-2030年中国林业新质生产力市场深度分析及投资机遇研判报告
- 以工代赈示范项目可行性研究报告(参考范文)
- 胫骨平台骨折的外科治疗 - 张国博课件
- 应收账款信用风险的识别、评估与防控机制研究
评论
0/150
提交评论