开发板原理图及使用教程fos820_第1页
开发板原理图及使用教程fos820_第2页
开发板原理图及使用教程fos820_第3页
开发板原理图及使用教程fos820_第4页
开发板原理图及使用教程fos820_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录单片机的目录单片机的学习单片机的前学习单片机的准备工了解开发板的配置和理解其电路用开发板如何给STC单片机下载程开发工具使用—Keil软件的使C语言与单片如何点亮按键控制LED亮IO口驱动2HC595显示4位数码51C言中断如何利用外中断下降沿给按消用定时器控制0.2LED闪用定时器控制2个不同闪烁用定时器来延时实现按键消用定时器实现数码管动态显用定时器99从单片机向电脑发送单片机与电脑互相通8.1掉电保存按键次第九章片机8AD转8通道AD串口第一单片机是什步深入的。有很多工程师可能都没有真正去理解过什么叫单片机,其实真正去理单片机的定(Microcontrollers第一单片机是什步深入的。有很多工程师可能都没有真正去理解过什么叫单片机,其实真正去理单片机的定(Microcontrollers技术把具有数据处理能力的中央处理器CPURAMROMI/OA/DC)单片机的内部组成与现在电脑有很多相同之单片机的中央处理CPU电脑的单片机的多种I/O电脑的USB、显示口、插槽、键单片机的中断、定时-------------------------电脑的USB全是中断方法实现的(CARM32单片机系统与计算机系统的简单由下2同,原理基本相同,可以用计算的原理来理解单片机工作原理,这样有利于理主硬件系外部设软件系学习单学习单片机的前是按键式,销售人员说这人是微电脑控制,其实就是单片机做的,还有常用的电压力锅、电风扇、洗衣机、麻将机等,很多都是单片机控制,还现在的汽车电子、工业控制、机器人等。由此看来,单片机无处不在我们身边,无处不用。因此,需要这方面的人才那也是不言而喻,但是要想在这个行业有立足之本,那得要脚踏实地学习和研究至少一种单片机,包括单片机外围电路,汇编和C片机、S、P、R单片机:技术比较成熟,运用在工控领域比较多,但进行嵌入式应用显得太庞大,因而派生出ARM单片机进行高端应用,可以进行操作系统的移植,但是现在一些高端单片机也可以移植操作系统,单片机跟ARM并没有什么本质的区别DSP:FPGA:可编程逻辑阵列的缩写。实际上就是做一个芯片,用软件实现它的期单片机水平,您的收入肯定不错,甚至,有的人还能建立自己的事业第七如何第七如何学习单片学习单片机的准备工C路PCB其三,C语言非常强大,可以用在计算中,也可以用在单片机中C语言可以做高级语言,也可以做低级语言,使用非常广泛。标准C语言虽然与C51有其四,要想真正成为电子工程师或单片机工程师,最后出成品是PCB板的设计,如果您不想设计PCB,只想写程序,这个PCB设计您可以暂时考虑不学,但是了解开发板的配了解开发板的配置和理解其电路原理2.2.1FoS820开发板实物说8脚到20脚单片机不同跳线,请看后期的每一章节的使用说连接关系如2.2.2的电路原理2.2.1发板硬件资料介2.2.1FoS820开发板电路原理注:“Ctrl+鼠标滚动”可以把以图片放大清楚可相同标号表示一根导线,表连接在一起,下图中列如:“ETXD”出现在2个件的管脚上,表示这两个器件ETXD管脚是连接一起的,其它以此类推。没Protel基础或没有画过PCB,要看明白这个电路原理图,必须理解上面说的每一为什么要看明白电路原理图首先,单片机程序需要看外围电路与单片机I/O口连接关系,才能知道程序中是做输出,还是输入操作ADDA,例如:如果单片机I/O口接的按键,并且要做按键判断,那就要在软件里面做输入配置;如果单片机I/O口接的是LED灯,那就要在软件里面做输出配置。这也是为什么学单片机也必须多少懂一AS1173.3V3.2431323.1231ETXDR1ERXDSW-123.45RESC1DCD#1345667821324RI#ET4DSR#15RXDCT56C132.2.1FoS820开发板电路原理注:“Ctrl+鼠标滚动”可以把以图片放大清楚可相同标号表示一根导线,表连接在一起,下图中列如:“ETXD”出现在2个件的管脚上,表示这两个器件ETXD管脚是连接一起的,其它以此类推。没Protel基础或没有画过PCB,要看明白这个电路原理图,必须理解上面说的每一为什么要看明白电路原理图首先,单片机程序需要看外围电路与单片机I/O口连接关系,才能知道程序中是做输出,还是输入操作ADDA,例如:如果单片机I/O口接的按键,并且要做按键判断,那就要在软件里面做输入配置;如果单片机I/O口接的是LED灯,那就要在软件里面做输出配置。这也是为什么学单片机也必须多少懂一AS1173.3V3.2431323.1231ETXDR1ERXDSW-123.45RESC1DCD#1345667821324RI#ET4DSR#15RXDCT56C13RE1+35VRIO2019RPSRXDTXDX2X1P32P33P341817161234567892XTAL2P1.3XTAL1P1.151413456P3512P107P3.11P3789J12系列电源跳无线接收红外接21LEDRER7WIREFIGNDRES642SW-电路原理21123P13P121234987 65422123 32112 2212531642 123456789LE系列单片机接口与开发板对应原理注意:STC15系列STC11、12系列和AT89C2051完全不同管脚排系列单片机接口与开发板对应原理注意:STC15系列STC11、12系列和AT89C2051完全不同管脚排IO输红外接如下图:上面STC11/12/C2051管脚排列,下面是STC15系列管脚排列(注:2型单片机的120号管脚排列顺序始终一致用开发板如何给STC单片机下用开发板如何给STC单片机下载程第一步:在“FoS820g开发板资料”根目录下,找到“USB驱动程序”文件夹再找到USB2.3.2>UBEILCH340(COMX)M3USBCH340的COMCOM口)windows764位下安装界面windows764位下安装成功后,显示“CH340第二步开发板的硬件跳帽第二步开发板的硬件跳帽的正确和的跳线帽配置方式如下图第三步:在夹,再找开发板第三步:在夹,再找开发板资料”根目录下,找到“STC-ISP下载软件”文(可以用旧版或新版本)”,然后,““击”,跳出以下对话框。按下面的图片中的步骤完成配第四步:在“第三步”中,点“下载/编程”时,STC-软件此时,出现所示,出现“正在检测目标单片 ”时,按一下开发板上的“冷败” 开发工具使用—软件的使 开发工具使用—软件的使2.4.1如何新建一个工程文首先,双击桌面已经安装好的KEIL(对于8位单片机,建议用Keil“”,弹出以下对话框,并且点“NewuVision点Project”后,如下对话框,写工程名后,点“保后,会弹出,选择“单片机的型号”,如下图,我们统一选择型号是“ATML->AT89C2051”,因AT89STC都是51所以,可以选择替代STC点“确定”后点“确定”后,弹出以下界面,建议保留“STARTUP.A51”文件工程建好后,接下来要往工程里面放文件:(可以放XX.C文件或xx.asm)C语言XX.C汇编XX.ASM文件。C语言,所以要新XX.C文件,如下图所示:点如下图所示图标或File->New或Ctrl+N,然后出现一个Text文件(如下图),继续点击“File->SaveAs”,弹出保存对话框,保XX.C文件即可,现在虽然,生成了XX.C文件,但还是没有加入到工程文件中,所以没有真正使用XX.C件这个XX.C必须保存这个XX.C必须保存与所建工程一个文件夹下或与工程一个根目最后,如何把XX.C(XX.ASM)加入到工程中,在这里我们用的是C语言,所以入到工程是我们刚刚建议的C文如下图所示:选中“SourceGroup1然后点“Close”。最后在工程中显示“Led_control.cC件,说明填工程建好并且加入了C文件,接下就要如何编译这个文件C文件,让这个C文件生成HEX文件。如何编译一C件,如下图所示:点“双向下箭头”,这时就会Keil输出栏显示编译结果:如图:data=17xdata=0code=162用掉内RAM17字节,ROM用了162字节(这个就是代码长度),0个错误,0个警告,如果C文译结果中HEX显示文件,然后在编译后,会输出编译后生成了以工程名字,如果C文件有问题,HEX文件也一个完整工程包括以下主要组成部分:工程栏、源代码编写区、编译信息2.4.2如何STCKEIL工程2.4.2如何STCKEIL工程第一步:必须先把KEIL软件装好在电脑操作系统上第二步:鼠标双击运行STC-ISP软件”(注意:可),图所示:点击仿真设置”,然后如上图操作KEIL新建工程时,如何选择STC单片机,首选打开KEIL软件,第四:第四:一路“确定”,回到下点“新建点“新建”,弹出TEXT1,然后点保存第五步:添第五步:添加“XX.ASM/XX.C”文件,如新建工程完成,如下C语言与单片机的关单片机的高电平和低电平的定C语言与单片机的关单片机的高电平和低电平的定单片机实际上由上千或上万个数字电路组成,数字电路就是由模拟电路组成,单片机就是一个集成电路。当然,您是学习单片机,不是发明单片机的,所0和1只要软件10,单片机就会做不同反如果10,状态太少了,实现不了多少功能,因此,引出字节,一个字节代表8位,8位还定义了顺序,第07位,这样以来,就有256种状态,现在单片机有32位或更高。所以,0和1经过前辈继续努力发明了汇编语言,直到现在很多简单的单片机还是用的汇编语言,但是汇编语言不能通用,不同单片机汇编语言不一样,现在单片机上千种,C语言,CKEILC“1”在单片机里表示IO口输出“高电平01在软件里面那是不用怀疑的数据,软件是虚拟,是理想化的。所以重点搞明白单片机IO口输出的“低电平”和“高电平”的含义。“高低电平”不同工作电压的单片机里面表示范围是不同 我看下面这张单片机程序设计中的数值表二进制码二进制是以2为基数的进21,如2.5示。在计算系统中,采用二进制计数规则。这是因为采用二进制计数,只使用01个数字符号,这样非常简单方便,并且很容易通过半导体元器件实现逻0为表示方便,在C语言中,二进制数以0b开头,如0b1011,0b010111;在汇编语言中,二进制B/b结尾1011B/1011b、010111B/010111b。注意:二进制数中,从右到左,第0位在最右边,然后从右到左依次加十进制是10为基数的进位制,即逢101,如表2.5所示。在十制进计数规则中,只出现0、1、2、3、4、5、6、7、8、9这十个数字。通过十六进制5V单片3V单片备高电大概(3.6-5)V之越接近5V好,最稳大概(2.2-3)V之越接近3V最好,最理论的1不一定就是5V3V,低电越接近0好,最越接近0好,最六制计数规则中,只使用数字0、1、2、3、4、5、6、7、8、9和字母A/a、B/b、C/b、D/d、E/e、F/f表示。注意:A/a、B/b、C/b、D/d、六制计数规则中,只使用数字0、1、2、3、4、5、6、7、8、9和字母A/a、B/b、C/b、D/d、E/e、F/f表示。注意:A/a、B/b、C/b、D/d、E/e、F/f对应于十进制数的10为了表方C言中,十六进制0x开头,如在汇编语言中,十六制数以H结尾,如1234H、E1DDH.注意:这种对应关系,只限制在非负的整数0x1234、不同制数之间的对应从表2.5中可以得出一些结(1)为什么在十六进制计数系统中916使用A/a、B/bC/b、D/d、E/e、F/f示的原因了。这是因为如果不A/a10,而10的话,会出现理解上的错误,十六进制中的10对应于十进制数16,而不是对应于十进制数的10。(2)观察十六进制计数系统,十六进制的0~F分别对应于二进制低四位的0000~1111;十六进制的10~1F也分别对应于二进制计数系统中低四位的0000~111。也就是说,连续的十六进制数,其循环周期为16。因此,如果将二进制数从最低位开始,每四个数字为一组进行划分,就可以将二进制数转换成十六进制数。例如,对一个二进制数001010数字划分为一组,得到划分后的二进数“100,1100,010”,可以直接得到所4C2。从一组P1口对应的二进制和十六进制的关系看出,二进制和十六进制,本是一样的,只是表现形式不同。针对IO口是一一对应二进10100101十六进十进制二进制十六进制00112233445566778899ABCDEC第三单片机--I/O3.1C语言与C语言的区所谓标准第三单片机--I/O3.1C语言与C语言的区所谓标准C语言主要是基于电脑操作系上的一种语言如果您对C解不多的话,那就必须先去找一下标准C语言相关书籍和电子教程来学习一下。如果不想找的话,我们在FoS820开发板资料的根目录下有一套电子档的标准C语言教程(即标准C语言学习电子教程)。C语言是目前非常基础和广泛的编程语必须要有main函数(main函数就是主函数),并且每一个C源程序里面只能有main函数包括一些单片机C语言的组成与标准C语言的组成基本结构也一样,语法、语句等本完全通用,不同在头文件、操作对象、输出对象等不C语单片机CMain函数的输出到电脑软件输出到硬头文只用于电脑软件上调软件和硬件上调用输出函针对电脑软件上显针对单片机的IO操作对主要用于算法生成软主要是控制逻辑操作源代编写VC、VB等电脑软件不同单片机类型是不生成结我们这次单片我们这次单片机C语言以51单片机内核为主的单片机C语言进行讲解,所以主要是用KEIL软件来进行编写。目前851片机来说,建议最KEIL3详细讲解这个原因。我们现在看看KEILC51C语言源代码主要组部分(如何建KEIL程,前面有一章节专门讲解了如何新建一KEILC51工程,这里就不在讲解KEIL工程的建立),如下图所示,跟标准C语言一样的,只是多了新的概念:地址、IO口输出、寄存器等相关硬件的操作对象。 keilC51IO口如何编单片机C语言编写的必须步骤第一步:看单片机的硬件电路IO口对应的电路的作用第二步:新建KEIL工程文件和C语言文件四步:画程序流程图,建C言的各个函数的框架口、中断等相关配置第七步:把HEX文件通过烧录器,下载到开发板上的单片机进行验证测试源代码根据以上步骤,我们来开始学习FoS820开发板第一步:AT89C2051STC10/11/12/15系列STC-1TIO口内部电路AT89C2051IO口电STC10/11/12/15IO电由上面图片可以看出,AT89C2051与STC-1T单根据以上步骤,我们来开始学习FoS820开发板第一步:AT89C2051STC10/11/12/15系列STC-1TIO口内部电路AT89C2051IO口电STC10/11/12/15IO电由上面图片可以看出,AT89C2051与STC-1T单片机的大致结构相同,明显可模式,这三种模式通过专用寄存器通过程序来配置(通STC单片机资料查看详细配置),这样可以节省外部上拉,选择性更灵活,相比AT89C2051驱动方式有更多选择。但是如果不STC-1T片IO进行配置,默认是跟AT89C2051是完全兼容的IO口工作模式。STC-1T单片机的IO路结构与目PIC、STM8、AVR等单片机IO构基本上一样的,都是采用这种方式。接下我来讲解这样设计IO口电路的好处。 不建议用AT89C2051的IO口高电平驱动内核上拉R1Vcc-V 30K左右I 二极管阻->LED->GND。 如果这里的R2限流电阻 集成的晶体管->GND。这样电流没 经过内部上拉电阻,相当于一个三外部限流电阻管驱动一个LED 是最强的,这也是为什么传统的512 直接是5V,而LED电压一般在2V 单片机如何驱动外部STC-1T单片P1IO口如何配置的示例表,适合STC-1T单片机图3.2.3STC-1TIO输入输出配置寄存这个单片机如何驱动外部STC-1T单片P1IO口如何配置的示例表,适合STC-1T单片机图3.2.3STC-1TIO输入输出配置寄存这个使用注意PxM0PxM1两个寄存器同时进配置(x代表0~5IO第二步:对应这个配置表,在初始化或主程序中,配置您要IO口模如何点亮一第一:看懂开发板电路原理图:看AT89C2051和STC10/11/12单片机的管脚排是一模一样的,只STC15不一样。先FoS8208LED应的IO口是那个。如下图 外部限流电 AT89C2051和非STC15管脚对应IOSTC15单片机管脚对应IOAT89C2051和非STC15管脚对应IOSTC15单片机管脚对应IO下图JP1双排针跳线的原理图和实物图片,操作即可。电路原理第二:程序编程写:首先要建立一个工程文件(前面第二章有仔细讲解),接下主要讲解如何用C语言写出写出这个功“include”在C语言中是一个关键字,意思是包含头文件。C语言有关键字,在以后学习中会遇到很多。Include后面可以>或”表示<reg51.h>这个头文件适合“AT89C1051/2051/4051”单片这个适合于“STC12C/LE1052这个适合于“STC15W系列”单对STC单片机头文件,在STC-ISP软件里面,可以自动生成,您只要打STC-最新版软件,如下图所示:找到“STC-最新版软件,如下图所示:找到“头文件”->“单片机系列“sbit”在51核的单片机语言才会出现,在标准C言里面是没有的。意思是把IO口声明成另一个名字,这样目的是以便于下次修成别的IO什么这样?因为假如IO在大的程序里面很多地方用到了,如果在改成别的IO口,那是不是很麻烦的事,而容易漏掉一些。“P1M0PM1M1、P3M0P3M1”只有在STC-1T片机才有的,其它单片机可以直接删除,并且要包STC10/11/12/15的一个头文件,才能直接在程序中使用这个寄存器。如果是STC15系列单片机,那对应P3M0P3M1、P5M0和P5M1、P1M0和P1M1。“LED0”意思是给这个硬件上的LED一个低电平,这个是位操作。字节操作就是8位,也是C语言中针对位的赋值操作。如何点亮多个LED及花样第一步:开发板的LED驱动电路前3.3已经讲解。采用直接赋值法点亮多个LED“#define”表示宏定义。它的定义形式标识字符串)。常数、表达式、格式“LED80x55”二进常数、表达式、格式“LED80x55”二进表示01010101LED别交替显示。如果您想改变LED显示方式,可以直接改动十六进制“0x55”为其十六进制数。采用查表方法实现花“查表表格”是一维数组,那么数组的定义我们可以标C语言教程里面到,这里不在详细讲解。一维数组,在单片机C语言,其实就是在地址中放了一些数据,数组中的元素对应是地址中的内容。其中“unsignedchar”表示是无符号的字节类型,存储数据范围为0~255,其它类型请看表3.4。“code”表示这个表ROM区(程序代码区),从而减小RAM占用,由于表的数据是固定的,所以可声明ROM。“table[]”table表的名字,不能用C语言中的关键字,“[]”中可以不填确定的数量,由数组中的元素数量来决一组数组的定义方(类型说数组名[常量表达式]“unsingedchari”i定义成了一个无符号的变量,并且是全局变如果定义在某个子函如果定义在某个子函数中,表示局部变量“P1=table[i]”如果table[0]那么这个地址内容0x7f,请看程序中的表。如果i015,那就是在不同地址中输出了不同的数据,对应我们的IO口输出不同01,点亮不同的LED。那么这样以来其实点多个LED就是表中地址放了不同数据,通过i变化找到不同的数据,送到P1口显示。“Delay(3000)”带参数函数的调用,其中“unsignedint”3000。前面是“voidDelay(unsignedintt);”声明函数,只要后面有用到这个函数,类型标识符函数名();类型标识符函数名(形式参数);“void”表示无参数函数有返回值,“unsignedintt”形式参数声明。函数调用形式:函数名(实际参数表 C51中不同数量类型不同的存储范围第一步:看本开发板对应的按键电路图,独立按键对应是独立的IO口,所以叫独立按键,前面学了IO口驱LEDIO出状态,现在的按键是要求IOSTC10/11/12系列单片机对应IOSTC10/11/12系列单片机对应IO3.5.1片机独立按键接线部程序控制的,而输入是由单片机来判断IO外部的电平变化,单片机此时被动状态,电平变化由外部电路来决3.5.1,独立按键电路很简单,按键一端接地,另一IO。我们采用的是轻触按键,不按下情况是断开的(IO不按下按键时,IO口表示输入高电平状态;按下键时,IO口端表示输入低电平,当然IO要能判断高低电平变化,程序上必须把IO为输第二步:IO口做为输入状态时,IO口的初始化配置如果是AT89C1051/2051/4051/C5112T片机IO口配置寄器。详细请“第三章中介片机在IO口上就是这样点区别。示:所以写程序为什么要看电路,为什么理论与实践区别是很大的,这就是软件来解普通IO口驱软件来解普通IO口驱动2HC595显示4位数码第一步:先看2595驱动4钟数码管的电路图如下图:2595实现动动态显示,只需要3IO。如果通常是至少用12IO驱动4位码管动态显示。这样以来,您就要换或脚的单片机,成本既然就高3.6.125954钟的数码数码管模块与开发板实物连数码管模块与开发板实物连接示意数码管模块820单片机配合使用时,都一样的插入式,由于数码管模块7个排针,其实只5个排针有用,其个排针为了与1602座子兼容而设计5针分别是DATARCLKSRCLKVCC、GND。其中IO口用3个,VCC可以5V3V,但是3V时数码显示可能会暗一点IO直接413IO如果用8脚的STC单片机,驱动这个数码管模块,还剩3个口,3IO还可18B20、继电器、时钟模块、按键等我们看到下面这个图(这个图引自我们看到下面这个图(这个图引自74HC595芯片手册),输出使能端13我们一直让它使能,复位端10脚我们一直让它无效,这两个引脚在硬件设为了方便,就直接给它们连到相应的电平上了。程序中我们只需要关注数据入引脚14脚、移位脉冲引11脚和锁存脉冲引12脚图中的SRA——SRH是移位寄存器(ShiftRegister),数据从它D输入,从Q引脚输出,每次移位脉冲引脚(ShiftClock)提供一个脉冲,D脚的数据就会输出并保持到Q引脚,因为这里的移位脉冲引脚是连到每一个SR上的,所以自然每次给一个移位脉冲的时候,所有的数据后移动了这里我们注意到,SRAD脚连接的是串行数据输入,也就是我们这里我们注意到,SRAD脚连接的是串行数据输入,也就是我们脚。所以每次给脉冲移位之前,我们需要准备好该引脚的值,因为每次给一脉冲,它的数据就会移入后方很直观的看到,我们给几个脉冲,数据引脚就会有几次被移入移位寄存器并且这些值会保持在各个SR的Q脚。所以假设我们要将一个字节移入移位器,因为1个字节是8位的,所以我们需要给出8个脉冲,那么SRA——SRH的脚就保持了这8位值,再看看这8位值,它是先在数据引脚输出的值就会越远,所以如果我们先输出数据高位的话,最高位在8个脉冲后就会跑到SRHQ脚。这就像我们排队一样,一个寄存器里面有8个位置,每次给一个脉冲比一次呼叫:“大家可以往前移一位了!”就这样,队伍不断得往前移,很单吧然后我们看到LRA——LRH,它们是锁存寄存器Register),每次存脉冲引脚(LatchClock)给一个脉冲,Q脚就会输出并保持D脚的值。聪明的人肯定会看出来了,LR和SR其实是差不多的功能,只是SR多了个复脚我们可以看成是照相机,锁存脉冲引脚就相当于是照相机的快门,们给一个锁存脉冲,那么数据就被锁存在了对应Q脚。而当我们没有操存引脚的时候,照相机只是摆在那里,不管队伍怎么前进了,照相机的输出终是不变的。只有某次按下了快门,所有的照相机的照片就都更新了一次这样讲我想大家应该都明白了。大概有人会问,图中的三角形加小圆圈是么呢?那是非门,说白了就是如果它前面是0,后面就是1;前面是1,后面是0。还有就是贴在方形锁存器上的那些小圆圈,也是起到反向再结合这个图,图中U9Q7’连接到了U11再结合这个图,图中U9Q7’连接到了U11DS引脚,看到之前的那芯片内部结构图,对应起来,我们就可以看到是把U9的串行数据输出脚9脚U11串行数据输入脚14行相想象一下,这样是不是就形成了16SR的相连呢?是的,就是16个连来。当然,所有的移位脉冲引脚和所有的锁存脉冲引脚也要连到一起,这样能在单片机输出一个脉冲的时候,所有SR都向后移一位。按照之前的思我们只要在对应的输出电平时给出16次移位脉冲之后16位数据(也就是个字节)就移位到了对应的位置,然后输出一个锁存脉冲(即按下快门数据就锁存在了对应的输出引脚我们的数码管为什么没用三极管驱动,只加了限流电阻,其实我们0.56英寸的数码管是可以直接驱动点亮的,所以不需要三极管了2595驱动,U5是负责数码管的片选,U6是负责数码管显示的数据,么程序当中,我只要送一个片数据和数码管断码数据就可以锁存一次信号,示一个数码管,依次类推,跟IO口驱动数码管一样,送4次就OK,如何编程下面如果上面看不明白,就不要浪费时间了,一点都不影响写程序,您可以直看源代如何写程序就可以了,如何操作三个IO口就OK了第二步:FoD4数码第二步:FoD4数码管模块驱动首先,如何把一个字节8位送到一个595输出8位的程序,如下图:这个源代适合所有51内核单片机,当然,您只要明白下面程序的思路,什么单片机应595的83个IO8个IO口。8次,一个字5952个595的4位数码管显示模块程序,其实跟普通数码管显示原理一样,只是换成了发送数据到5955955952个5952据到595(调用2次送数据到595的函数),然后锁存输出(P_HC595_RCLK)。如果三、四或更多595级联,那就根据级联数送几次数据到595,然后锁存。就这样,这就595结构原理可以不用看明白原因,明白如何调用和使用锁存信号即可。(3IO595NIO口,点阵屏就595来驱动第四单片机--第四单片机--外中才做的事情,打断就是中断,即然是打断,打断后做另一件事情的时间肯定很什么要中断,吃饭接个电话不会影响您吃饭,但是您多做了一件事,这个就是很单片机中断入口在汇编程序中有具体地址来跳到不同的中断,具体详细我们可以找到STCC“interrpt”利用外中断下降沿利用外中断下降沿给按键消第一步按键的电路图。如下图所示:P3.2P3.3分别对应外中断0(INT0)和外中断1(INT1),但本按键没有对应STC15系列单片机外中断口,不过可以通过杜邦线跳线跳到STC15的中断口做实验。STC10/11/12系列单片机对应IO第二步:如何在C语言编写中其中,使用中断前,必须中断相关寄存器进行初化,比喻:打开外中断0是EX01;IT01打开下降沿中断,0示低电平中断,最后是EA=1中断函数“voidISR_Key(void)interrupt0using1”其中“using1”0对就P3.2,我们就P3.2对应按键即第五单片第五单片机--定时单片机定时器的时钟信号源来自于单片机自身的晶振产生的时间,只要晶振不死,定时器的定时就会存在。引入定时器的目的是计时、延时、分时处理不同的事件和定时处理某些事件等,并且定时器运行时间与代码运行所用的时间没有冲突,只要启动了定时器,定时器就会开始计时,这时候与主函数代码运行所用时间是分别独立的,没有关系的,这时候代码会在正常运行,定时器也就可以用这个原理来做定时器中断事件,当定时器运行时,主函数也正常运行,当定时器的定时间到了时,就会产生定时中断,去处理定时器中断函数,那么这样以来,主函数可以在不等定时器中断之前,正常运行程序中断后会用尽可短时间完成定时器的中断服务程序,从而不影响主函数的正常STC-1T单片机的定时器0和定时器1都与传统的8051(如:AT89C2051)的定时器完全兼容,但是不同的是STC-1T单片机可以设置为1T模式,详细表请看“芯片资料”文件夹下对应STC单片机的中文数据资料。以STC12C2052AD单片机为列,看一下定时器/计数器的相关寄其中,AUXR、WAKE_CLKOSTC-1T片机多出来寄存器AT89CX051列单片机是没有这些寄存器的于都51内核单片机软件编程上是一模一样的。关5.1用定时器控制0.2LED闪接可以看到IO口对应LED的关系,在这里我们不在列出这个原理图部。第二步:采用定时器0实现LED0.5S闪烁下面程序中,我们没有加AUXR,因为定时08051完全兼容,所以默认不需要对AUXR配置,当然,加入AUXR配置也是没有问题。前面讲过C语言中,中断函数的执行需要正确的中断初始化程序和对应正确的中断号,才能进入对应中断服务函数中。这里的定时器0采用的16位定时模式所以最大计数是216次方=65536,那么定时器的定时时间如何计算。655366553612T模式下(与8051兼容)每计数一次的时间=(晶振/12)×1微秒(us),那么65536次就65.536ms,所以在12MH晶振和12T模式下,最大模式下,最大定时时间65.536ms。如STC-1T单片机12T模式下的时间是1T式12的时间,所12T式下定时器最长。初始化为什么要这样设置,这个我们打开“芯片资料”中的芯片数据手册的闪烁效果,本质5.2用定时0控制2不同闪烁速第一步:查看原理图或实物图上的LED对应的IO口,由于前面提到了LED灯与单片机的IO口对应关系,这里就不在详细讲解。不明白可以返回前面几章学习一第二步:直接编写第二步:直接编写的源代码截如上图所示:其中“AUXR”是STC单片机中多出来的寄存器,这个就是与AT89C2051不同的地方。虽然STCAT都是51单片机STC来51内核基础加强一些功能,本质是一样。如果我们把STC的定时器全部配置成12T配置成12TAT89C2051STC还是快了一些,但是这个不影响定时器的使用。因此,如果51机都用到基本中断功能,串口,定时,基本是可以通用,当然,如果是STC上面程序,我们把定时器0定了一个最小时间是1MS,意思就是定时器0每中断一次就是1MS,那我就每中断一次我计数一次,这样以来,我就可以以1MS*N次计数来产生不同的时间。本程序就2个寄存器进行计数,count_1count_2分计数500100次,这样就500ms100ms时间,我if语句实现,这里必须if语句,同时闪烁LED,但是速度不同2LED烁误差几us,忽略不计。总第一步:在找原理图或前面几章找到按键对IO口和LED对应的第二步:直接来读懂我们的源代解。首先我看来看定时器,是1MS中断一次,然后利用中断计数产生了20MS时间,就是20MS定时器0后对t0_flag志进行置1操作,但是我们看主函数是用了一个while(t0_flag==0);直等待t0_flag1时,对t0_flag进行清零操作。每一次主函数t0_flag=0;时,定时器也开始重新计数,同时主函数也开始运行程序,定时器和主2个同时并行运行。一种情况,如果主函数运行程序时间没有超过20MS,那么就会在while(t0_flag==0);这里等待20MS到时,把t0_flag=1;,意思就是每一次到t0_flag=0;这语句时,就是20MS到了,等于每20MS后主函数的程序运行一次。如果主函数时间超过了20MS,就不能准确保证每20MS运利用上面讲到每20MS运行一次主函数原理,这样,我就可以利用20MS来做延时处理。我们key_ct个寄存器if(key_ct++>4);,key_ct计数4是主420MS*4=80MS,这样就是消抖时间就是80MS,key_ct计数超过4次马上处理按键动作。利用定时时间来运行主函数几个注意问1、主函数不能用死循环,不然主函数只运行一次,那个整个程序不能正工作了2常工作。3、利用这个原理,在主函数放一个寄存器来产生1S和0.5S的时间第六单片机--定时定时1与定时第六单片机--定时定时1与定时0是一样的工作原理,只是多了一个定时前面已经说过定时器的作用,多一个定时器就多一个中断就会多一件事。定时器1和定时器0用法是一样的,只是多一个定处理更多中断程序,更多事件定时0和定时1的初始化和相关配置,芯片的数据资料(“片资料”文件夹)讲的也很清楚。并且STC-最新版软件上能找应源代码,使用起来非常方便。以下就是我们的实际应用用定时器实现数码管动态显第一步:了解数码管硬件原理图,这里我们不在多讲,前面已经对码管模块进行详细的讲现在我们只要找到原理图中数码管模块STC11/12/AT89C2051对应I数码模块第二步:读懂第二步:读懂我们的本例程的源1中断函1中断函以中断里面不能有死函数,延时函数等长时间运行程序。这也为1MS原因,每到1MS就显示另一个数码管内容,4次中断就完成了4个数码管动显用定时器实99秒倒计其实就是在上一节的程序中把显示缓冲区单元的数据改变一下可以了。从而在一个定时器中断中,如上一节的程序中又增加了一个事件,这就是定时器中断的必第二:源代码及源代码的解由于代码与上一节是基本是一样,只在上一节的基础上增加了一些代码,所以,不一一列出代码,只是把增加部分代码列出。不明白的,请返回上一节仔细查看。上面这个些代码,就是在上一节里面的源程序里面增加和改动的一部分代码。首先,声明由于代码与上一节是基本是一样,只在上一节的基础上增加了一些代码,所以,不一一列出代码,只是把增加部分代码列出。不明白的,请返回上一节仔细查看。上面这个些代码,就是在上一节里面的源程序里面增加和改动的一部分代码。首先,声明了计数变量单元ct_reg1S产生的变量ct_1s减1一次,如果循环下去。一定要ct_reg在减之前要判断是否为0,如果不判断为是否为0,假如ct_reg已经是0减1是255(十进制),所以,先判ct_reg。主函数主要是把ct_reg分离成个位和十位分离后查数码管码表,然后送到seg_buff[1]和seg_buff[0]缓冲区以用于显示函数显示,seg_buff[2]和seg_buff[3]不需要显示,所就送固定的不显示断码。总结:用定时器1中断实现了4位数码管动态显示和秒的产生单片机串口就是用来与外设或其它单片机做串口通信,进行数据交换。现在我们常用的设备与设备之间的通信有串口通讯,CA单片机串口就是用来与外设或其它单片机做串口通信,进行数据交换。现在我们常用的设备与设备之间的通信有串口通讯,CAN总线通信,USB单片机有串行通信和并行通信。并行通讯一次需要使用多个IO,如果一次要传8并行8IO口。如果用串口通讯,就只需要2IO简单来说,同一时间,串口通讯一次能传1通讯一次能传8。如下R,GND地线必须连接在一起,原因是没有地线,串口的线上电压没有参靠点,从而无法识别TX和RX单片机与单片机之间短离距通串口模块连接后才能与电脑通信,因为电脑USB通信与串口通信协议不能通用,只能通USBTTL串口模块。TTL串口232串口区别:TTL平是03V05V,23210V,所以不能直接单片机的IO232串口目的是为7.1从单片机向电脑发送数第一:认识硬件的工作电路,如下原理图所示:在开发板上找到J13排针,如果是AT89C2051、STC11系列和STC12系列单片机,跳线连接是:1-3;2-4。如果是STC15系列单片机,跳线连接是:3-5;4-6。然连接USB线到电脑。USBTT串本程序串口发送采用的是查本程序串口发送采用的是查询方式:查询方式就要判TI1,TI=1代表一个字节发送完毕,必须清零TI,准备下一次发送。本次只是单方向PCON置波特率倍率;SCON设置通信方式;在STC单片机的芯片资料有详这节功能是从电脑发一个数据到单片机单片机就返回一个相应的据第二:源代码及源代码本程序里面比上一节里面要多了一个串口中断,这里有串口中断是用来接收R本程序里面比上一节里面要多了一个串口中断,这里有串口中断是用来接收Rev_reg以随时响应外部发过来的数据,并且在没有数据发过来时,我们不需要一直去查RIRI功能说明:第一种功能说明:第一种情况:电脑串口助手以16进制发送cc到单片机,此时,单片机发送16进制88到电脑串口助手显示,并且LED发生指示变化(请看程序)。另一种情况:电脑串口助16进制发送11到单片机,此时,单片机第八单片机EEPROMElectricallyErasableProgrammableRead-OnlyMemory),电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片。EEPROM可以在电Flash是用来存储代码的,在运行过程中不能改;EEPROM是用来保存用户数据,运行过程中可以改变,比如一个时钟的闹铃时间初始化设定12:00,后来在运行中改为6:00,这是保存在EEPROM里,不怕掉电,就算重新上电也不需要重新调整到6:00。目前,STC单片机内部基本上都EERPOM,存储数据时无需要(如:24Cxx,93Cxx等芯片)。AT89C列单片机基本上都没有EEPROM单片机,存储数据时,必须外扩EEPROM芯片。(STC的内部EEPROM详细介绍和操作。请查看“芯片资料”文件夹,找到相应的单片机资料,在找到EERPOM。)8.1本节用STC12C2052AD做示例来写一个掉电存储胡数据功能:通过一个加键和减键来实现099变化,并且用数码管显示。数码管模块与开发板的连接,第三章,3.7节有详细说

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论