1、初学者的困难 1、想看书不知道看哪本书,看一遍忘一遍,看完了还不知道怎么用单片机。2、想用开发板练习却不知道如何练习。3、想参与项目却苦于没有机会。4、想找人带一带身边却没有专业人员。5、第一课:如何学习单片机学习单片机四部曲 步骤:步骤:第一步:鹦鹉学舌 第二步:照葫芦画瓢 第三步:他山之石可以攻玉 第四步:理论实践结合要领要领 在 实 践 中 成 长!条件:1、信心和恒心。2、C语言教材一本。(谭浩强)3、开发板一块。课程内容 基础课程:主要以开发板为平台,将开发板上的电子器件全部讲解清楚,并且讲授单片机知识和C语言基础知识。扩展课程:讲授除了开发板资源外的常用的一些电路和编程使用方法技巧
2、。提高课程:主要讲授项目开发的流程和方式方法。金沙滩工作室 1、知识共享 2、充分交流 3、共同进步 king -金色 st -沙滩 www.kingst.org-金沙滩工作室 第二课:点亮你的LEDLED单片机的选择 单片机内部资源的三大指标:1.FLASH(1.FLASH(程序存储空间)2.RAM(2.RAM(内存)3.SFR(3.SFR(特殊功能寄存器)单片机的选择 STC89C52STC89C52:8KFLASH8KFLASH、512512字节RAMRAM、3232个IOIO口、3 3个定时器、1 1个UARTUART、8 8个中断源。P89V51RD+P89V51RD+:64KFLA
3、SH64KFLASH、10241024字节RAMRAM、3232个IOIO口、3 3个定时器、1 1个UARTUART、8 8个中断源、1 1个SPISPI、PWMPWM、并且支持与KEILKEIL连机进行在线仿真。单片机最小系统 三要素:电源电路、复位电路、晶振电路。特点:单片机可以运行程序,是单片机控制系统的核心。点亮一个LEDLED发光二极管发光二极管(LED)(LED):通常红色贴片LED:LED:电压1.6V2.4V1.6V2.4V,电流2 2到20mA20mA,在2 2到5mA5mA亮度有所变化,5mA5mA以上亮度基本无变化。(5-2)/r=2ma (5-2)/R=20ma 15
4、0 -1.5K(5-2)/r=2ma (5-2)/R=20ma 150 -1.5K单片机(MCU(MCU),最小控制单元。首先,我们用单片机来控制一个灯的亮灭。单片机C C语言SFRSFR声明:sfr P0 =0 x80;sfr P0 =0 x80;sfr TCON =0 x88;sfr TCON =0 x88;sbit IT0 =TCON0;sbit IT0 =TCON0;sbit LED =P0 0;sbit LED =P0 0;一个字节是8 8位,一位控制一个I/OI/O口,字节控制所有的I/OI/O口1号:000000002号:000000003号:000000004号:0000000
5、05号:000000006号:000000007号:000000008号:000000009号:0000000010号:0000000011号:0000000012号:00000000作业 1 1、牢记发光二极管参数和限流电阻计算方法。2 2、理解单片机基本外围电路,以及单片机的FLASHFLASH、RAMRAM、SFRSFR的概念。3 3、初步了解单片机程序的基本方式,并且通过查看数据手册来了解SFRSFR的有关内容。第三课:硬件基础学习电磁干扰 1 1、冬天的时候,空气比较干燥的城市,朋友们经常对电脑,铁柜等等放电,这就是“静电放电(ESD)”(ESD)”干扰。2 2、使用电钻的时候听收音
6、机,看电视有杂音,这就是“快速瞬间脉冲群(EFT)”(EFT)”的效果。3 3、电脑性能不好,热插拔优盘等外围设备会出现蓝屏重启电脑等现象,这就是热插拔“浪涌(Surge)(Surge)的效果。去耦电容的使用 低频滤波电容,平常应用最多的是钽电容,电解电容,陶瓷电容,起到去除电源低频纹波,稳定电源的作用。高频滤波电容,电源附近,通常用104104电容来进行去除高频干扰。三极管 三极管是我们的日常应用电路中经常会用到的一个器件。分为PNPPNP和NPNNPN型。三极管常用功能:1 1、开关控制 2 2、信号放大 3 3、电平转换PNP 型三极管型三极管NPN型三极管型三极管三极管的型号记忆方式:
7、箭头朝哪腿朝哪,导三极管的型号记忆方式:箭头朝哪腿朝哪,导通电压顺箭头过,电压导通,电流控制通电压顺箭头过,电压导通,电流控制b:基极:基极 e:射极:射极 c:集电极:集电极 74HC13874HC138:由三个输入来控制8 8个输出口的状态,即所谓的三八译码器。0000000 1 1 1 1 1 10 1 1 1 1 1 1 1 1 0010011 0 1 1 1 1 11 0 1 1 1 1 1 1 1 0100101 1 0 1 1 1 11 1 0 1 1 1 1 1 1 0110111 1 1 0 1 1 11 1 1 0 1 1 1 1 1 1001001 1 1 1 0 1 1
8、1 1 1 1 0 1 1 1 1 1011011 1 1 1 1 0 11 1 1 1 1 0 1 1 1 1101101 1 1 1 1 1 01 1 1 1 1 1 0 1 1 1111111 1 1 1 1 1 11 1 1 1 1 1 1 0 0作业 1 1、理解并掌握电源输入端滤波电路及其电容的应用和原理。2 2、记忆三极管的型号和导通原理。3 3、理解三八译码器的原理,并且学会使用。第四课:流水灯常用延时办法 非精确延时 1 1、for(i=0;i 100;i+);for(i=0;i 100;i+);2 2、i=100;while(i-);i=100;while(i-);精确延时
9、办法 1 1、利用库函数_nop_();_nop_();(需要include)include)2 2、利用定时器进行定时 (后边的课程进行介绍)变量类型关键字所占字节取值范围unsigned charunsigned char1 102550255“00000000”“00000000”到”11111111”11111111”unsignedunsigned intint2 2065535065535“00000000 00000000”“00000000 00000000”到“11111111 11111111”11111111 11111111”依照国际惯例,我们可以用依照国际惯例,我们可
10、以用uint8 uint16 等缩写来等缩写来替代,只需要用替代,只需要用typedef语句可以完成:语句可以完成:typedef unsigned char uint8;typedef unsigned int uint16;流水灯实验 8 8个LEDLED发光二极管,分别对应单片机IOIO口的P0.0P0.0到P0.7P0.7口,8 8个单片机IOIO口组成一个字节,在程序编写过程中,可以直接用P0P0来进行操作。C C语言的8 8位二进制数代表了8 8个IOIO口 P0=0 xfe;P0=0 xfe;P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0P0.7
11、P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 1 1 1 1 1 1 1 01 1 1 1 1 1 1 0C C语言运算符 左移 X2 X2 左移,最低位填0 0补充;右移,最高位填0 0补充 0 xf0 11100000 011110000 xf0 11100000 01111000 按位取反符号 取反后1 1变成0 0,0 0变成1 10 x0F0 x0F取反后成为 0 xF0,0 xF0,即00001111-1111000000001111-11110000数码管数码管真值表 根据单片机连接电路,可以计算出数码管的真值表:P0.7 P0.6 P0.5 P0.4 P
12、0.3 P0.2 P0.1 P0.0P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 dp g f e d c b adp g f e d c b a 1 1 1 1 1 0 0 1 P0=0 xF9;数码管真值表根据单片机连接电路,计算出数码管的真值表 0 1 2 3 4 50 1 2 3 4 5 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 6 7 8 9 A b6 7 8 9 A b0 x82 0 xf8 0 x80 0 x90 0 x88 0 x830 x82
13、 0 xf8 0 x80 0 x90 0 x88 0 x83 C d E FC d E F0 xa7 0 xa1 0 x86 0 x8e0 xa7 0 xa1 0 x86 0 x8e作业 1 1、记住C C语言2 2个变量类型及其范围,掌握C C语言的位操作和字节操作。2 2、用3 3个LEDLED小灯做一个交通灯的程序。3 3、根据原理图和流水灯程序,独立完成流水灯反方向流动以及小灯一个个点亮直到全亮的功能。4 4、明白数码管的原理,写出数码管真值表。n第五课:第五课:n n 定时器定时器时钟周期和机器周期时钟周期和机器周期n时钟周期时钟周期T是时序中最小的时间单位。具是时序中最小的时间单位
14、。具体计算就是体计算就是1/时钟源。我们开发板上单时钟源。我们开发板上单片机使用的时钟周期片机使用的时钟周期=1/11059200 s。n机器周期机器周期CPU完成一个操作的最短时间。完成一个操作的最短时间。普通普通51一个机器周期是一个机器周期是12个时钟周期。个时钟周期。定时器和计数器定时器和计数器n2个定时器个定时器/计数器:定时器计数器:定时器0和定时器和定时器1n定时器:每经过一个机器周期,寄存器加定时器:每经过一个机器周期,寄存器加1。因此,可以将机器周期看作为计数周期。因此,可以将机器周期看作为计数周期。n计数器:后续课程介绍。计数器:后续课程介绍。n特殊功能寄存器特殊功能寄存器
15、TCONnTF:定时器溢出标志。溢出时,该位自动置:定时器溢出标志。溢出时,该位自动置1。中断执行时硬件清零,或者软件清零。中断执行时硬件清零,或者软件清零。nTR:定时器运行控制位,置:定时器运行控制位,置1开始计时,清开始计时,清0停停止计时。止计时。位位76543210符符号号TF1TR1TF0TR0IE1IT1IE0IT0定时器的特殊功能寄存器定时器的特殊功能寄存器nTMODnT1和和T0分别代表单片机两个计数器分别代表单片机两个计数器nGATE:该位被置位时为门控位。仅当该位被置位时为门控位。仅当TR1被置位并且被置位并且INT1脚为高,定时器开始计数。当该位被清零时,只脚为高,定时
16、器开始计数。当该位被清零时,只要要TR1被置位,定时器被置位,定时器1马上开始计数。马上开始计数。nC/T:该位为该位为0的时候,用作定时器,该位为的时候,用作定时器,该位为1的时候,用的时候,用做计数器。做计数器。位位76543210符号符号T1GATET1C/TT1M1T1M0T0GATET0C/TT0M1T0M0M1,M0n00 01 10 11n模式模式0 模式模式1 模式模式2 模式模式3n模式模式1:16位的计数器。(位的计数器。(TH1,TL1)n模式模式2:自动装载:自动装载8位计数器。主要应用在串口波位计数器。主要应用在串口波特率发生器。特率发生器。n模式模式0&模式模式3:
17、几乎不用。:几乎不用。nTCON和和TMOD复位后都会自动变成复位后都会自动变成0 x00.n12*(65536-x)/11059200=0.001使用定时器的方法使用定时器的方法n第一:设置特殊功能寄存器第一:设置特殊功能寄存器TMOD,使,使之工作在需求的状态。之工作在需求的状态。n第二:设置计数寄存器的初值,精确设第二:设置计数寄存器的初值,精确设定好定时时间。定好定时时间。n第三:设置特殊功能寄存器第三:设置特殊功能寄存器TCON,通,通过打开过打开TR来让定时器进行工作。来让定时器进行工作。(也可也可设置为中断模式设置为中断模式)nTH1=0 xfc;TL1=0X66;n12(655
18、36 x)/11059200=0.02sn第六课:第六课:n n 定时器定时器+数码管数码管数组数组n数组是一组变量,这组变量需要满足三个条件:数组是一组变量,这组变量需要满足三个条件:n1、具有相同的数据类型、具有相同的数据类型n2、具有相同的名字、具有相同的名字n3、在存储器中是被连续存放的、在存储器中是被连续存放的na5=1,2,3,4,5 a =1,2,3,4,5 na0=1;a1=2;a2=3;a3=4;a4=5;动态显示动态显示n动态显示:动态显示:n 轮流向各位数码管送入数据,轮流向各位数码管送入数据,并且将数据输入速度控制在人肉眼并且将数据输入速度控制在人肉眼所分辨不出来的范围
19、内,利用发光所分辨不出来的范围内,利用发光二极管的余晖让人的视觉能够识别二极管的余晖让人的视觉能够识别的过程。的过程。switch语句语句n适合多选一的选择性语句,具体使适合多选一的选择性语句,具体使用方法:用方法:nswitch(表达式表达式)ncase 表达式一:表达式一:语句语句1;n case 表达式二:表达式二:语句语句2;n n default:语句语句n;n函数函数n函数:实现一个特定功能的模块。函数:实现一个特定功能的模块。nMain()函数为主函数,且唯一。函数为主函数,且唯一。n注意:如果函数体放在注意:如果函数体放在main函数的函数的后边,则需要进行函数声明才能使后边,
20、则需要进行函数声明才能使用。用。作业作业n1、理解清楚定时器在工作方式、理解清楚定时器在工作方式1下的编程方式下的编程方式和使用方法,并且独立使用定时器进行流水灯和使用方法,并且独立使用定时器进行流水灯实验操作。实验操作。n2、学会通过查找设置特殊功能寄存器、学会通过查找设置特殊功能寄存器SFR的的方式来编写程序。方式来编写程序。n3、理解清楚数码管的原理,和使用数码管进、理解清楚数码管的原理,和使用数码管进行数字显示的原理的方法。行数字显示的原理的方法。n4、理解动态显示的原理和方法。、理解动态显示的原理和方法。n第七课:第七课:n 基础学习基础学习+习题课习题课变量变量n1、局部变量、局部
21、变量:l在函数内部声明的变量是内部变量,它只在本函数内有效,在函数内部声明的变量是内部变量,它只在本函数内有效,在此函数外是不能作用的。函数体内占内存,出了函数释放在此函数外是不能作用的。函数体内占内存,出了函数释放内存。内存。n2、全局变量:、全局变量:l在函数外边声明的变量就是外部变量,也叫做全局变量,一在函数外边声明的变量就是外部变量,也叫做全局变量,一个源文件个源文件(.c)可以包含一个或者多个函数,全局变量的作用范可以包含一个或者多个函数,全局变量的作用范围是从声明的位置一直到文件结束,一直占用内存。围是从声明的位置一直到文件结束,一直占用内存。n3、静态变量、静态变量l在函数体内声
22、明,前边加在函数体内声明,前边加static关键字声明,属于局部变量,关键字声明,属于局部变量,和局部变量的区别是一直占用内存,和全局变量的区别是只和局部变量的区别是一直占用内存,和全局变量的区别是只能在函数体内使用。能在函数体内使用。注意:只有第一次赋值有效。注意:只有第一次赋值有效。晶振电路晶振电路n1、晶振选择、晶振选择:l根据实际系统需求选择,根据实际系统需求选择,6M,12M,11.0592M,20M等等等等n2、负载电容:、负载电容:l对地接对地接2个个10到到30pF的电容即可,常用的电容即可,常用20pF。n3、万用表测晶振:、万用表测晶振:l直接用红表笔对晶振引脚,黑表笔接直
23、接用红表笔对晶振引脚,黑表笔接GND,测量,测量电压即可。电压即可。复位电路复位电路n复位:复位:l把单片机内部电路设置成为一个确定的状把单片机内部电路设置成为一个确定的状态,所有的寄存器初始化。态,所有的寄存器初始化。l51单片机的复位时间大约在单片机的复位时间大约在2个机器周期左个机器周期左右,具体需要看芯片数据手册。右,具体需要看芯片数据手册。l一般通过复位芯片或者复位电路,具体的一般通过复位芯片或者复位电路,具体的阻容参数的计算,通过阻容参数的计算,通过google查找。查找。单片机单片机IO口状态口状态n1、普通、普通IO口口n2、强推挽、强推挽n3、开漏、开漏(开集开集)n4、单片
24、机、单片机IO口的驱动能力口的驱动能力n5、74HC245的应用的应用上下拉电阻上下拉电阻n上拉就是将不确定的信号通过一个上拉就是将不确定的信号通过一个电阻嵌位在高电平,下拉同理。电阻嵌位在高电平,下拉同理。n1、电平转换,提高输出电平数值。、电平转换,提高输出电平数值。n2、OC门必须加上拉电阻才能使用。门必须加上拉电阻才能使用。n3、加大普通、加大普通IO引脚驱动能力。引脚驱动能力。n4、悬空引脚上下拉抗干扰。、悬空引脚上下拉抗干扰。上拉电阻选取原则上拉电阻选取原则n1、从节约功耗及芯片灌电流能力考虑应、从节约功耗及芯片灌电流能力考虑应当足够大;电阻大,电流小。当足够大;电阻大,电流小。n
25、2、从确保足够的驱动电流考虑应当足够、从确保足够的驱动电流考虑应当足够小;电阻小,电流大。小;电阻小,电流大。n3、对于高速电路,过大的上拉电阻可能、对于高速电路,过大的上拉电阻可能会导致边沿变平缓。会导致边沿变平缓。n综合考虑:综合考虑:上拉电阻常用值在上拉电阻常用值在1K到到10K之间选取,下拉同理。之间选取,下拉同理。在线仿真在线仿真nISP:In-System Programming,是指在系统,是指在系统可编程,指电路板上的空白器件可编程,指电路板上的空白器件(单片机单片机)可以可以编程写入最终用户代码,编程写入最终用户代码,而不需要从电路板而不需要从电路板上取下器件,已经编程的器件
26、也可以用上取下器件,已经编程的器件也可以用ISP方方式擦除或再编程。式擦除或再编程。nIce:In Circuit Emulator,是指在线仿真器,是指在线仿真器,ICE是最为常用的调试设备,它的核心思想是是最为常用的调试设备,它的核心思想是完全模拟完全模拟CPU工作,通过外围电路捕获工作,通过外围电路捕获CPU的各种状态信息,输送到的各种状态信息,输送到PC端,通过端,通过PC来查来查看当前看当前CPU的工作状态。的工作状态。&和和|n对于不能进行直接位操作的对于不能进行直接位操作的SFR进行位进行位操作的办法:操作的办法:n某一位置某一位置1的办法:的办法:a=a|10000000,将要
27、置将要置1的位为的位为1,其他为,其他为0。n a|=0 x01;低位置低位置1a=xxxxxxx1n某一位清某一位清0的办法:的办法:a=a&xxxxxxx0,将要清将要清0的位为的位为0,其他为,其他为1。n a&=0 xef;xxx0 xxxx作业作业n1、充分理解并且学会使用晶振电路、复、充分理解并且学会使用晶振电路、复位电路。位电路。n2、理解单片机的、理解单片机的IO口的状态,并且具有口的状态,并且具有以后阅读数据手册进行以后阅读数据手册进行IO口设计的能力。口设计的能力。n3、理解并且牢记上下拉电阻的原理和选、理解并且牢记上下拉电阻的原理和选用方式。用方式。n4、学会如何使用在线
28、仿真进行调试程序,、学会如何使用在线仿真进行调试程序,要学会定位问题并且解决问题。要学会定位问题并且解决问题。n第六课:第六课:n 中断中断中断的介绍中断的介绍n比如说我正在厨房用煤气烧一壶水,这样就只能比如说我正在厨房用煤气烧一壶水,这样就只能守在厨房里,苦苦等着水开守在厨房里,苦苦等着水开如果水溢出来浇如果水溢出来浇灭了煤气,有可能就要发生一场灾难了。灭了煤气,有可能就要发生一场灾难了。n门外忽然又传来了铿锵有力的歌声,我最喜欢的门外忽然又传来了铿锵有力的歌声,我最喜欢的古装剧要开演了,真想夺门而出,然而,听着水古装剧要开演了,真想夺门而出,然而,听着水壶发出壶发出“咕嘟咕嘟咕嘟咕嘟”的声
29、音,我清楚:除非等到的声音,我清楚:除非等到水开,否则没有我享受人生的时候。水开,否则没有我享受人生的时候。n这个场景跟中断有什么关系呢?这个场景跟中断有什么关系呢?n在这个场景中,我是唯一具有处理能力的主体,在这个场景中,我是唯一具有处理能力的主体,不管是烧水、还是看电视,同一个时间点上我只不管是烧水、还是看电视,同一个时间点上我只能干一件事情。但是,在我专心致志干一件事情能干一件事情。但是,在我专心致志干一件事情时,总有许多或紧迫或不紧迫的事情突然出现在时,总有许多或紧迫或不紧迫的事情突然出现在面前,都需要去关注,有些还需要我停下手头的面前,都需要去关注,有些还需要我停下手头的工作马上去处
30、理。只有在处理完之后,方能回头工作马上去处理。只有在处理完之后,方能回头完成先前的任务,完成先前的任务,“把一壶水彻底烧开!把一壶水彻底烧开!”n中断机制不仅赋予了我处理意外情况的能力,如中断机制不仅赋予了我处理意外情况的能力,如果我能充分发挥这个机制的妙用,就可以果我能充分发挥这个机制的妙用,就可以“同时同时”完成多个任务了。完成多个任务了。n事实上烧水需要事实上烧水需要10分钟完成,但是提下水壶和关分钟完成,但是提下水壶和关煤气我只要几秒钟就可以完成。为了这几秒,我煤气我只要几秒钟就可以完成。为了这几秒,我需要在厨房等候需要在厨房等候10分钟。如果使用闹钟定时分钟。如果使用闹钟定时10分钟
31、,分钟,10分钟一到,闹钟就会提醒我该去关煤气分钟一到,闹钟就会提醒我该去关煤气了,那么我就可以去安心看电视了。了,那么我就可以去安心看电视了。n实际上就是用了闹钟这样一个中断信号来提示我实际上就是用了闹钟这样一个中断信号来提示我完成提水壶和关煤气的任务。完成提水壶和关煤气的任务。中断的中断的SFRn中断使能控制寄存器中断使能控制寄存器IEnEA:总中断使能位,总阀门。总中断使能位,总阀门。nEC:PCA中断使能位中断使能位nET2:定时器定时器2中断使能位中断使能位nES:串口中断串口中断位位76543210符号符号EAECET2ESET1EX1ET0EX0nET1:定时器定时器1溢出中断使
32、能溢出中断使能nEX1:外部中断外部中断1使能使能nET0:定时器定时器0溢出中断使能溢出中断使能nEX0:外部中断外部中断0使能使能位位76543210符号符号保留保留PPCPT2PSPT1PX1PT0PX0位位76543210符号符号保留保留PPCHPT2HPSHPT1HPX1HPT0HPX0H中断优先级寄存器中断优先级寄存器IP IPHPPC:PCA中断优先级中断优先级PT:定时器中断优先级定时器中断优先级PS:串口中断优先级:串口中断优先级PX:外部中断优先级:外部中断优先级中断优先级的说明中断优先级的说明n当设置为默认中断优先级时:当设置为默认中断优先级时:当几个中断同时发生时,则先
33、处理中断当几个中断同时发生时,则先处理中断优先级高的中断程序,在处理任意中断优先级高的中断程序,在处理任意中断期间发生中断,都不会响应。期间发生中断,都不会响应。n当人为配置了中断优先级,当人为配置了中断优先级,同时发生中断,优先级高的先响应,在同时发生中断,优先级高的先响应,在处理任意中断时,发生同级别或低级的处理任意中断时,发生同级别或低级的中断,则不响应,发生优先级更高的中中断,则不响应,发生优先级更高的中断时,则先处理高优先级中断,处理完断时,则先处理高优先级中断,处理完毕,再回来处理当前中断。毕,再回来处理当前中断。中断优先级的说明中断优先级的说明n当设置为默认中断优先级时:当设置为
34、默认中断优先级时:假设假设“水开水开”默认优先级高于默认优先级高于“门铃门铃”优先级,当先听到优先级,当先听到“水开水开”则先处理则先处理“水开水开”这件事,当先听到这件事,当先听到“门铃门铃”则则先处理先处理“门铃门铃”这件事。只有当两件事这件事。只有当两件事同时发生时,则会先去处理同时发生时,则会先去处理“水开水开”,再处理再处理“门铃门铃”。中断优先级的说明中断优先级的说明n当人为配置了中断优先级当人为配置了中断优先级n配置配置“水开水开”为高优先级,则当为高优先级,则当“水开水开”事件发生时,直接处理事件发生时,直接处理“水开水开”,在处,在处理理“水开水开”的过程中,即使的过程中,即
35、使“门铃门铃”响响了,也不会去理会。当了,也不会去理会。当“门铃门铃”响了,响了,正在走向门口时,这个时候,正在走向门口时,这个时候,“水开水开”事件又发生了,那么从门口转向,先去事件又发生了,那么从门口转向,先去处理处理“水开水开”,处理好了后,再回头到,处理好了后,再回头到门口,处理门口,处理“门铃门铃”事件。事件。作业作业n1、充分理解中断的意义。、充分理解中断的意义。n2、使用照葫芦画瓢将这节课的全部程序、使用照葫芦画瓢将这节课的全部程序重新编写并且下载到单片机里边,看是重新编写并且下载到单片机里边,看是否能够将功能进行实现。否能够将功能进行实现。n3、将数码管的显示功能加以改进,使其
36、、将数码管的显示功能加以改进,使其只显示有效位。只显示有效位。n第九课:第九课:n LED点阵点阵n1、关于、关于51的位声明的位声明n2、关于、关于P89V51的仿真功能的仿真功能n3、水滴程序演示、水滴程序演示n4、项目开发模式、项目开发模式n5、第一个开源项目、第一个开源项目点阵点阵LEDn1、led灯是整齐排列的,被镶嵌到一块塑料板上,灯是整齐排列的,被镶嵌到一块塑料板上,可以显示汉字和图形,用来介绍商品,吸引顾客。可以显示汉字和图形,用来介绍商品,吸引顾客。n1、点阵、点阵led显示屏作为一种现代电子媒体,具有显示屏作为一种现代电子媒体,具有灵活的显示面积(可分割、任意拼装)、高亮度
37、、灵活的显示面积(可分割、任意拼装)、高亮度、长寿命、大容量、数字化、实时性的特点。长寿命、大容量、数字化、实时性的特点。点阵点阵LED点阵点阵LED原理原理作业作业n1、仿照水滴程序,做个类似的作业。、仿照水滴程序,做个类似的作业。n2、弄明白点阵、弄明白点阵LED原理和硬件设计原理和硬件设计n3、自己用点阵、自己用点阵led画出漂亮的图片。画出漂亮的图片。n4、进行单个汉字的静态显示和多个、进行单个汉字的静态显示和多个汉字的动态显示。汉字的动态显示。n第十课:第十课:n 按键按键n1、跳动的心、跳动的心n2、程序空间占用大小、程序空间占用大小n3、数据手册下载地址、数据手册下载地址n n4
38、、关键字设置、关键字设置独立式按键独立式按键矩阵按键矩阵按键虾米虾米I代开发板矩阵键盘代开发板矩阵键盘头文件的建立头文件的建立.hn#ifndef _MAIN_H_n#define _MAIN_H_n.n.n#endif按键抖动按键抖动硬件去抖硬件去抖软件去抖软件去抖n检测出键闭合后执行一个延时程序,产生检测出键闭合后执行一个延时程序,产生5ms10ms的延时,让前沿抖动消失后再的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。电平,则确认为真正有键按下。作业作业n1、理解按键扫描,和按键消抖原理、理解按键扫描,和按键
39、消抖原理n2、发挥想象力,利用矩阵按键控制数码管、发挥想象力,利用矩阵按键控制数码管的数字变化。的数字变化。n3、用定时中断的方式去抖动、用定时中断的方式去抖动n4、在主函数中不占时间的方式去抖动、在主函数中不占时间的方式去抖动n第十一课:第十一课:n 异步串口通信异步串口通信UARTn1、关于按键去抖的问题、关于按键去抖的问题n2、计算器程序、计算器程序n3、仿真芯片使用说明、仿真芯片使用说明常用串行通信方式常用串行通信方式n1、UART异步串口通信异步串口通信n2、I2C总线串行同步通信总线串行同步通信n3、SPI串行总线同步通信串行总线同步通信UART异步串口通信nUART是单片机与是单
40、片机与PC之间的最简单的通信方之间的最简单的通信方式之一,也是单片机之间常用通信。式之一,也是单片机之间常用通信。UART的四种模式的四种模式n模式模式0:使用较少,暂时不讲或自学。:使用较少,暂时不讲或自学。n模式模式1:以:以TXD为例,平时没数据时为例,平时没数据时TXD为高电平,来了数据,一位起始位为高电平,来了数据,一位起始位0,八,八位数据位(一个字节),一位停止位位数据位(一个字节),一位停止位1。n模式模式2和和3:原理和模式:原理和模式1一样,只是添一样,只是添加了一位奇偶校验位(防止通信出错)。加了一位奇偶校验位(防止通信出错)。串口波特率串口波特率n常用串口波特率:常用串
41、口波特率:300、600、1200、2400、4800、9600、19200 115200;n波特率:就是发送一位数据的速率,即波特率:就是发送一位数据的速率,即发送一个数据的持续时间发送一个数据的持续时间=1/baud;nSBUF:串口数据缓冲寄存器,发送数据串口数据缓冲寄存器,发送数据时,只要将数据送入时,只要将数据送入SBUF,则单片机,则单片机自动发送数据,接收数据时,自动将数自动发送数据,接收数据时,自动将数据接收至据接收至SBUF。SCON串口控制寄存器串口控制寄存器位位76543210符号符号SM0SM1SM2RENTB8RB8TIRISM0和和SM1为工作方式选择位为工作方式选
42、择位SM0SM1方式方式说明说明波特率波特率000移位寄存器移位寄存器fosc/120118位数据位位数据位定时器产生定时器产生1029位数据位位数据位fosc/32或或fosc/641139位数据位位数据位定时器产生定时器产生nSM2:使能模式:使能模式2和和3中的多机通信功能。通常不中的多机通信功能。通常不使用。使用。nREN:使能串口接收。由软件置:使能串口接收。由软件置1,则允许串口接,则允许串口接收数据;由软件清零,则禁止串口接收数据。收数据;由软件清零,则禁止串口接收数据。nTB8,RB8:方式:方式2和方式和方式3中的校验位,分为四种中的校验位,分为四种方式方式A.偶校验偶校验;
43、B.奇校验奇校验;C.强制为强制为0;D.强制为强制为1。nTI:发送中断标志,在发送停止位时由硬件置:发送中断标志,在发送停止位时由硬件置1。必须通过软件才能清零。必须通过软件才能清零。nRI:接收中断标志,接收停止位的中间时刻由硬:接收中断标志,接收停止位的中间时刻由硬件置件置1,必须通过软件清零。,必须通过软件清零。串口实验串口实验n实现一个串口程序,向电脑发送一串数实现一个串口程序,向电脑发送一串数据。据。n接收从电脑来的数据,加接收从电脑来的数据,加1后返回给电脑。后返回给电脑。n通过串口中断的方式来实现,并且理解通过串口中断的方式来实现,并且理解串口中断。串口中断。定时器定时器1作
44、为波特率发生器作为波特率发生器n定时器定时器1使用自动重装模式,即模式使用自动重装模式,即模式2。nTH1=TL1=256-11059200/(12*32*9600)=n实现步骤:实现步骤:n1、将定时器、将定时器1置为自动重装模式。置为自动重装模式。n2、将串口设置为方式、将串口设置为方式1。n3、根据公式计算出定时器、根据公式计算出定时器1的初值。的初值。n4、打开定时器、打开定时器1,打开串口允许接受。,打开串口允许接受。ASCII表表作业作业n1、学习视频完全掌握单片机和电脑通信、学习视频完全掌握单片机和电脑通信n2、将单片机的按键值通过串口上传到电脑、将单片机的按键值通过串口上传到电
45、脑n3、用电脑串口调试助手下发数据,通过数、用电脑串口调试助手下发数据,通过数码管上显示出来。码管上显示出来。n第十一课:第十一课:n IIC通信通信EEPROMn1、单片机控制功能、单片机控制功能n2、UART通信的字符显示通信的字符显示n3、UART通信的波特率设置通信的波特率设置常见的存储器件的介绍常见的存储器件的介绍n常见存储器件:铁电,常见存储器件:铁电,E2PROM,FLASH。n共同特点:掉电后数据不丢失共同特点:掉电后数据不丢失n各自特点:各自特点:n铁电:理论上可以无限次擦写,操作简单,但铁电:理论上可以无限次擦写,操作简单,但是容量小。是容量小。nE2PROM:理论上擦写次
46、数在:理论上擦写次数在30w到到100w的的不等,操作简单,容量中等。不等,操作简单,容量中等。nFLASH:理论上擦写次数在:理论上擦写次数在10w到到100w不等,不等,容量很大,但操作较复杂,若要改变一个字节容量很大,但操作较复杂,若要改变一个字节就要改变整个扇区。就要改变整个扇区。I2C总线简介总线简介n1、I2C(InterIntegrated Circuit)总线是一总线是一种由种由PHILIPS公司开发的两线式串行总线,用公司开发的两线式串行总线,用于连接微控制器及其外围设备于连接微控制器及其外围设备(特别是外部存特别是外部存储器件储器件)。n2、I2C总线是由数据线总线是由数据
47、线SDA和时钟和时钟SCL构成构成的串行总线,可发送和接收数据。的串行总线,可发送和接收数据。n3、I2C总线在传送数据过程中共有三种特殊类总线在传送数据过程中共有三种特殊类型信号,型信号,它们分别是:开始信号、结束信号它们分别是:开始信号、结束信号和应答信号。和应答信号。I2C总线简介总线简介n1、I2C总线最主要的优点是其简单性和有效性。由于总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此接口直接在组件之上,因此I2C总线占用的空间非常总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。互联成本。I2C总线
48、的另一个优点是,它支持多主机,总线的另一个优点是,它支持多主机,其中任何能够进行发送和接收的设备都可以成为主机。其中任何能够进行发送和接收的设备都可以成为主机。一个主控能够控制信号的传输和时钟频率。当然,在一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主机。任何时间点上只能有一个主机。n2、I2C总线是由数据线总线是由数据线SDA和时钟和时钟SCL构成的串行构成的串行总线,可发送和接收数据。各种总线,可发送和接收数据。各种I2C均并联在这条总均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有
49、唯一的地址。作,所以每个电路和模块都有唯一的地址。EEPROM的硬件连接的硬件连接I2C的起始和停止的起始和停止 SCL线为高电平期间,线为高电平期间,SDA线由高电平向低线由高电平向低电平的变化表示起始信号;电平的变化表示起始信号;SCL线为高电平期间,线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。线由低电平向高电平的变化表示终止信号。I2C的数据传输的数据传输nSCL为高电平期间,数据线上的数据必须保持稳为高电平期间,数据线上的数据必须保持稳定,只有定,只有SCL信号为低电平期间,信号为低电平期间,SDA状态才允状态才允许变化。许变化。I2C的起始程序的起始程序nvoid I
50、2CStart(void)nnSDA=1;nDelay();/延时子程序延时子程序nSCL=1;nDelay();nSDA=0;nDelay();nSCL=0;nI2C的结束程序的结束程序nvoid I2CStop(void)nnSCL=0;n Delay();nSDA=0;nDelay();nSCL=1;nDelay();nSDA=1;nDelay();nI2C的数据读写和应答的数据读写和应答nI2C与与UART不同的地方首先在于先传高位,不同的地方首先在于先传高位,后传送低位。后传送低位。n主机写数据时,每发送一个字节,接收机需要主机写数据时,每发送一个字节,接收机需要回复一个应答位回复一