单片机最小系统板实验指导书_第1页
单片机最小系统板实验指导书_第2页
单片机最小系统板实验指导书_第3页
单片机最小系统板实验指导书_第4页
单片机最小系统板实验指导书_第5页
已阅读5页,还剩143页未读 继续免费阅读

下载本文档

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

文档简介

单片机实验板工程训练指导书2005年10月目录实验一LED闪烁灯设计4实验二模拟开关控制指示灯设计7实验三多路开关状态指示设计10实验四广告灯左、右移设计14实验五查询法设计广告灯18实验六报警产生器设计21实验七I/O并行口直接驱动LED显示设计25实验八单键识别设计29实验九一键多功能按键识别设计33实验十0099计数器设计38实验十一六十秒计时器设计42实验十二可预置可逆4位计数器设计46实验十三动态数码显示设计51实验十四44矩阵式键盘识别设计55实验十五定时计数器T0作定时应用设计(一)64实验十六定时计数器T0作定时应用设计二71实验十七99秒跑马表设计76实验十八“嘀、嘀、”报警声设计82实验十九“叮咚”门铃设计87实验二十智能电子钟设计92实验二十一“新年好”音乐设计102实验二十二电子琴设计108实验二十三模拟计算器数字输入及显示设计119实验二十四数字电压表设计126实验二十五DS18B20数字温度计设计131附录A实验板中模拟/数字转换器ADC0804的参数及使用说明139附录B实验板中DS18B20智能温度控制器的参数及使用141单片机实验板详细说明该单片机实验板设计巧妙,经过了严格的检查,可放心使用。由于考虑到众多的实验要在此单片机实验板上完成,然而每个实验用到的单片机的I/O口不尽相同,所以设计时采用拨动拨码开关和替换跳线帽的位置来完成每个实验内容。在完成各个实验内容时,首先要看清楚实验电路原理图,然后按照实验内容给出的单片机实验板上的硬件连线、拨动拨码开关或替换跳线帽的位置来完成系统设计。检查无误后下载程序。由于每个程序都经过了单片机实验板的验证,证明程序没有问题。所以要是调不出来,肯定是硬件没有连好,再次检查直到完成实验。每做完一个实验后,把拨动拨码开关和跳线帽恢复到初始状态。一、拨码开关和跳线帽的初始化状态介绍如下单片机实验板上有8联拨动拨码开关4个(JP1、JP2、JP3、JP4),2联拨动拨码开关1个(JP5),跳线帽13个。在初始化状态下,拨动拨码开关都处于紧靠数字的位置,此位置下的拨动拨码开关为不用状态。8排针接插件J3上的8个跳线帽要全部连接在标号为P0位置上。单排针接插件J4上的跳线帽要连接在OE和GND的位置上。单排针接插件J5上的跳线帽连接在OE和GND的位置上。单排针接插件J6上的跳线帽要连接在OE和VCC的位置。单排针接插件J7上的跳线帽要连接在CS和GND的位置。双排针接插件J8上的跳线帽应该和J8上排插针相连。4个8联拨动拨码开关(JP1、JP2、JP3、JP4)应该全部所至下方。二、实验中具体使用介绍如下(1)当用到发光二极管时,要把8联拨动拨码开关JP4拨到ON状态。(2)当用到喇叭输出时,把2联拨动拨码开关JP5的1号拨动开关拨上去;当用DS18B20做测温时,把2联拨动拨码开关JP5的2号拨动开关拨上去。(3)当用到矩阵键盘输入时,把8联拨动拨码开关JP3的拨动开关全部拨上去。(4)当用到拨动开关SW1SW4时,把8联拨动拨码开关JP2对应的拨动开关拨上去。(5)当用到按键开关S18S21时,把8联拨动拨码开关JP2对应的拨动开关拨上去。(6)当用8个动态数码管显示时,首先应该把单排针接插件J4的OE与VCC用跳线帽相连。同时8联拨动拨码开关JP1对应的拨动开关拨上去。8联拨动拨码开关JP1的S1S8分别对应三极管Q2Q9。(7)当用8个动态数码管输入AH数码时,如果用到P0口,不用移动跳线帽;如果用到P1口,把8个跳线帽移到下面的标有P1的位置。(8)当用P0口做数码管静态显示时,把单排针接插件J5的OE与VCC用跳线帽相连。(9)当用P2口做数码管静态显示时,把单排针接插件J6的OE与GND用跳线帽相连。总之,在用单片机编写简单程序时,汇编语言编写起来比较简单,但复杂的程序还是用C51编写起来比较简单。所以C51编程是必学的。这里基本上所有的实验程序都采用汇编和C51两种编程方法。有的实验还给出了两套设计方案,便于比较学习。实验一LED闪烁灯设计一、实验目的1、初步了解单片机I/O口的简单控制。2、掌握单片机外围常用电路的固定接法。二、设计原理利用单片机控制一个发光二极管,使此发光二极管间隔02秒亮、灭一次。三、参考电路图11LED闪烁灯外部电路原理图四、电路硬件说明如图11所示在单片机的P10端口上通过8联拨动拨码开关JP4的相应拨码开关连接一个发光二极管D1。五、程序设计内容(1)延时程序的设计方法单片机指令的执行时间是很短的,它的数量级为微秒级。在本程序设计中,要求LED闪烁灯的闪烁时间间隔为02秒。相对于微秒来说,相差太大,所以在执行某一指令时,需要插入延时程序,来达到的要求。然而这样的延时程序是如何设计呢下面具体介绍其原理如图11所示,单片机所用的石英晶体为12MHZ。因此,1个机器周期为1微秒。延时10MS子程序机器周期微秒MOVR6,201个1D1MOVR7,2481个1120DJNZR7,2个2248220248DJNZR6,D12个220因此,上面的延时程序时间为10478MS。由以上可知,当R610、R7248时,延时时间为5MS;R620、R7248时,延时时间为10MS。通常所用延时时间以此为基本的计时单位。比如本实验要求为02秒200MS,所以用10MSR5200MS,得到R520。延时子程序如下DELAYMOVR5,201D1MOVR6,20120D2MOVR7,24812020120DJNZR7,2248202248202248202248DJNZR6,D222022020DJNZR5,D1220RET2上面的延时程序为0220081S。(2)单片机的P10端口的输出控制方法如图11所示,根据发光二极管的单向导电性,当单片机的P10端口输出高电平,即P101时,发光二极管D1熄灭;当单片机的P10端口输出低电平,即P100时,发光二极管D1亮。可以使用SETBP10指令使单片机的P10端口输出高电平,使用CLRP10指令使单片机的P10端口输出低电平。六、程序流程图如图12所示图12LED闪烁灯设计流程图七、汇编源程序ORG0000H系统复位LJMPSTART转入主程序ORG0003H外部中断0RETI中断返回ORG000BH定时器0溢出中断RETIORG0013H外部中断1RETIORG001BH定时器1溢出中断RETIORG0023H外部中断2RETIORG0100HSTARTCLRP10和P10口接的二极管亮LCALLDELAY200MS延时02秒SETBP10和P10口接的二极管灭LCALLDELAY200MS延时02秒LJMPSTART循环DELAY200MSMOVR5,20延时子程序D1MOVR6,20D2MOVR7,248DJNZR7,DJNZR6,D2DJNZR5,D1RETEND八、C语言源程序INCLUDESBITL1P10VOIDDELAY02SVOID/延时子程序/UNSIGNEDCHARI,J,KFORI20I0IFORJ20J0JFORK248K0KVOIDMAINVOID/主程序/WHILE1/进入循环/L10/指示灯亮/DELAY02S/延时02秒/L11/指示灯灭/DELAY02S/延时02秒/九、注意事项(1)用KEIL软件时,注意中文说明及注释。(2)用汇编语言编写程序时不区分大小写,但用C语言编写程序时注意区分大小写。(3)汇编语言和C语言定义口的方式不同,如汇编语言为P10,P20,P30,而C语言为P1_0,P2_0,P3_0。实验二模拟开关控制指示灯设计一、实验目的1、掌握单片机外围常用电路的固定接法。2、掌握单片机利用模拟开关控制指示灯的简单设计。二、设计原理如图21所示,用发光二极管监视模拟开关的状态。如果模拟开关合上,发光二极管点亮;如果模拟开关打开,发光二极管熄灭。三、参考电路图21模拟开关控制指示灯原理图四、电路硬件说明如图21所示,模拟开关SW1通过8联拨动拨码开关连接在单片机的P30端口上,用发光二极管D1(通过8联拨动拨码开关接在单片机的P10端口上)显示模拟开关SW1的状态。当模拟开关SW1断开时,单片机的P30端口为高电平;当模拟开关闭合时,单片机的P30端口为低电平。五、程序设计内容(1)开关状态的检测过程对于单片机来说,开关状态的检测是从单片机的P30端口输入信号,然而输入的信号只有高、低电平两种。当拨动开关SW1拨上去(输入高电平)时,拨动开关SW1断开;当拨动开关SW1拨下来(输入低电平)时,拨动开关SW1闭合。单片机可以采用JBBIT或者JNBBIT指令来完成对拨动开关状态的检测。(2)输出控制如图21所示,当单片机的P10端口输出为高电平,即P101时,根据发光二极管的单向导电性可知,这时发光二极管D1熄灭;当单片机的P10端口输出为低电平,即P100时,发光二极管D1亮。可以使用SETBP10指令使单片机的P10端口输出高电平,使用CLRP10指令使单片机P10端口输出低电平。六、程序流程图如图22所示图22模拟开关控制指示灯程序流程图七、汇编源程序ORG0000H程序复位入口地址LJMPSTART跳到主程序ORG0003H外部中断0入口地址RETI中断返回ORG000BH定时器中断0入口地址RETI中断返回ORG0013H外部中断1入口地址RETI中断返回ORG001BH定时器中断1入口地址RETI中断返回ORG0023H串行口中断入口地址RETI中断返回ORG002BH定时器中断2入口地址RETI中断返回ORG0100HSTARTJBP30,NEXP30为1,则跳NEXCLRP10P10亮SJMPSTARTNEXSETBP10P10灭SJMPSTARTEND八、C语言源程序INCLUDEMAINIFP3_01P1_00/P1_0亮/ELSEP1_01/P1_0灭/九、注意事项如果程序下载到实验板上后,要把8联拨动拨码开关JP2和JP4的相应开关合上去。实验三多路开关状态指示设计一、实验目的利用多路模拟开关进行指示灯控制。二、设计原理如图31所示,单片机的P10P13端口通过8联拨动拨码开关连接四个发光二极管D1D4。单片机的P30P33端口通过8联拨动拨码开关连接四个拨动开关SW1SW4。编程时将拨动开关的状态反映到发光二极管上(开关闭合,对应的灯亮,开关断开,对应的灯灭)。三、参考电路图31多路开关状态指示电路原理图四、电路硬件说明如图31所示,拨动开关SW1、SW2、SW3、SW4通过8联拨动拨码开关JP2接连单片机的P30、P31、P32、P33端口。单片机的P10、P11、P12、P13口通过8联拨动拨码开关JP4分别连接四个指示灯D1、D2、D3、D4。五、程序设计内容(1)开关状态检测拨动开关状态的检测,对于单片机来说,是一种输入关系,轮流检测每个开关的状态,根据每个开关的状态让相应的发光二极管指示显示。在编写程序时,可以使用JBP3X或JNBP3X指令来完成指示控制。(2)单片机的输出控制根据拨动开关SW1、SW2、SW3、SW4的状态,经由发光二极管D1D4来指示显示。在编写程序时,可以用SETBP1X和CLRP1X指令来完成。六、程序流程图如图32所示图32多路开关状态指示流程图七、汇编源程序ORG0000H程序复位入口地址LJMPSTART跳到主程序ORG0003H外部中断0入口地址RETI中断返回ORG000BH定时器中断0入口地址RETI中断返回ORG0013H外部中断1入口地址RETI中断返回ORG001BH定时器中断1入口地址RETI中断返回ORG0023H串行口中断入口地址RETI中断返回ORG0100HSTARTLCALLKAIGUAN调用检测开关状态子程序LJMPSTART跳回继续检测KAIGUANJBP30,N1判断P30是否按下CLRP10P30按下则亮P10SJMPM1跳到M1N1SETBP10P30没有按下则灭P10M1JBP31,N2判断P31是否按下CLRP11P31按下则亮P11SJMPM2跳到M2N2SETBP11P31没有按下则灭P11M2JBP32,N3判断P32是否按下CLRP12P32按下则亮P12SJMPM3跳到M3N3SETBP12P32没有按下则灭P12M3JBP33,N4判断P33是否按下CLRP13P33按下则亮P13SJMPM4跳到M4N4SETBP13P33没有按下则灭P13M4LJMPKAIGUAN跳回检测开关状态子程序进行循环RET子程序返回END结束八、C语言源程序INCLUDEMAINIFP3_00P1_00ELSEP1_01IFP3_10P1_10ELSEP1_11IFP3_20P1_20ELSEP1_21IFP3_30P1_30ELSEP1_31九、注意事项(1)程序下载到实验板上后,要把8联拨动拨码开关JP2和JP4的相应按键合上去。(2)与8联拨动拨码开关JP4相连的指示灯是高电平亮,低电平灭。实验四广告灯左、右移设计一、实验目的1初步了解广告灯的移动设计。2掌握循环移动的原理。二、设计原理如图41所示,八个发光二极管D1D8通过8联拨动拨码开关JP4分别连接在单片机的P10P17端口上,做单一灯的左移右移。如果单片机的P1端口输出为“0”时,发光二极管亮,依次为P10P11P12P13P17P16P10亮,重复循环。三、参考电路图41广告灯左、右移设计电路原理图四、电路硬件说明把“单片机系统”区域中的单片机的P10P17端口通过8联拨动拨码开关JP4连接到“八路发光二极管指示模块”区域中的D1D8端口上,要求P10对应着D1,P11对应着D2,P17对应着D8。五、程序设计内容运用输出端口指令MOVP1,A或MOVP1,DATA,给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。每次送出的数据是不同的,具体的数据如下表42所示表428个LED循环显示真值表P17P16P15P14P13P12P11P10说明D8D7D6D5D4D3D2D111111110D1亮11111101D2亮11111011D3亮11110111D4亮11101111D5亮11011111D6亮10111111D7亮01111111D8亮六、程序流程图如图43所示图43广告灯左右移程序流程图七、汇编源程序ORG0000H系统复位LJMPSTART转入主程序ORG0003H外部中断0RETI中断返回ORG000BH定时器0溢出中断RETIORG0013H外部中断1RETIORG001BH定时器1溢出中断RETIORG0023H外部中断2RETIORG0100HSTARTMOVR2,7MOVA,0FEHSETBC给CY置1LOOPMOVP1,ALCALLDELAYRLCA带进位左移DJNZR2,LOOPR2减1不为0转到LOOPMOVR2,8LOOP1MOVP1,ALCALLDELAYRRCA带进位右移DJNZR2,LOOP1R2减1不为0转到LOOP1LJMPSTARTDELAYMOVR5,20延时02秒子程序D1MOVR6,20D2MOVR7,248DJNZR7,DJNZR6,D2DJNZR5,D1RETEND八、C语言源程序INCLUDEUNSIGNEDCHARIUNSIGNEDCHARTEMPUNSIGNEDCHARA,BVOIDDELAYVOID/延时子程序/UNSIGNEDCHARM,N,SFORM20M0MFORN20N0NFORS248S0SVOIDMAINVOIDWHILE1TEMP0XFEP1TEMPDELAYFORI1I8I/向右移8I位/P1A|B/A或B/DELAYFORI1IIBTEMPUNSIGNEDCHARCODETABLE0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F,0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F,0X7F,0XBF,0XDF,0XEF,0XF7,0XFB,0XFD,0XFE,0X7F,0XBF,0XDF,0XEF,0XF7,0XFB,0XFD,0XFE,0X00,0XFF,0X00,0XFF,0X01/数据数组/UNSIGNEDCHARI/定义全局变量/VOIDDELAYVOID/延时子程序/UNSIGNEDCHARM,N,SFORM20M0MFORN20N0NFORS248S0SVOIDMAINVOIDWHILE1/循环/IFTABLEI0X01/判断是否查完表格/P1TABLEIIDELAYELSEI0九、注意事项(1)利用C语言编写程序时,一定要注意合局变量和局部变量的定义。(2)利用汇编语言编写程序时,注意16位数据指针DPTR的用法。实验六报警产生器设计一、实验目的掌握利用单片机产生音频信号的方法。二、设计原理利用单片机产生1KHZ的信号,并且让此信号响100MS;再利用单片机产生500HZ的信号,并且让此信号响200MS。同时让这两个信号交替产生。通过单片机的P10端口输出1KHZ和500HZ的音频信号驱动扬声器,作为报警信号。单片机的P30端口通过8联拨动拨码开关连接一拨动开关(如SW1)进行控制。拨动开关闭合时报警器报警,断开时报警器停止报警。三、参考电路图61报警产生器原理图四、电路硬件说明把单片机的P10端口连接到“音频放大模块”区域中的SPKIN端口上;P30端口连接到“八路拨动开关”区域中的K1端口上,并在“音频放大模块”区域中的SPKOUT端口上接上一个8欧的或者是16欧的喇叭。五、程序设计内容500HZ信号周期为2MS,信号电平为每1MS取反1次,1KHZ的信号周期为1MS,信号电平每500US取反1次,以此来产生报警信号。六、程序流程图如图62所示图62报警产生器流程图七、汇编源程序FLAGBIT00HORG0000HLJMPSTARTORG0003HRETIORG000BHRETIORG0013HRETIORG001BHRETIORG0023HRETIORG002BHRETI主程序ORG0100HSTARTLCALLBAOJING1LCALLBAOJING2LJMPSTART500HZ报警信号程序BAOJING1MOVR2,200DVCPLP10LCALLDELAY500LCALLDELAY500DJNZR2,DVRET1KHZ报警信号程序BAOJING2MOVR2,200DV1CPLP10LCALLDELAY500DJNZR2,DV1RET500US延时程序DELAY500MOVR7,249LOOPDJNZR7,LOOPRET结束标志END八、C语言源程序INCLUDEINCLUDEUNSIGNEDCHARCOUNTVOIDDELY500VOID/延时子程序/UNSIGNEDCHARIFORI250I0I_NOP_VOIDMAINVOIDWHILE1/程序循环/IFP3_00/判断P30是否按下/FORCOUNT200COUNT0COUNTP1_0P1_0DELY500FORCOUNT200COUNT0COUNTP1_0P1_0DELY500DELY500九、注意事项(1)程序下载后,一定要把8联拨动拨码开关JP5的第一个开关拨上去。(2)程序下载后,要把8联拨动拨码开关JP3拨下,8联拨动拨码开关JP2拨上去。实验七I/O并行口直接驱动LED显示设计一、实验目的1了解静态数码管的显示方法。2掌握共阴极数码管和共阳极数码管的接法以及区别。二、设计原理如图71所示,利用单片机P0端口的P00P07连接到一个共阴数码管DS1的AH的笔段上,数码管的公共端接地。在数码管上循环显示09数字,显示时间间隔为02秒。三、参考电路图71I/O并行口直接驱动LED显示电路原理图四、电路硬件说明在“单片机系统”区域中,把单片机的P00P07端口连接到静态数码管DS1上的AH端口上;要求P00与A相连,P01与B相连,P02与C相连,P07与H相连。五、程序设计内容(1)LED数码显示原理LED数码管内部由七个条形发光二极管和一个小圆点发光二极管组成,根据发光二极管的连接形式,可分为共阴极型和共阳极型。LED数码管的AG七个发光二极管加正向电压导通发亮,加反向电压截止熄灭。不同亮暗的二极管组合形成不同的字形,这种组合称之为字形码。见表72为共阴极数码管的字形码表。(2)由于数码管显示数字09的字形码没有规律,只能采用查表的方式来完成所需要的要求。这样按着数字09的顺序,把每个数字的笔段代码按顺序排好并建立的表格如下所示TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH表72共阴极的字形码表“0”3FH“8”7FH“1”06H“9”6FH“2”5BH“A”77H“3”4FH“B”7CH“4”66H“C”39H“5”6DH“D”5EH“6”7DH“E”79H“7”07H“F”71H六、程序流程图如图73所示图73I/O并行口直接驱动LED显示流程图七、汇编源程序ORG0000HLJMPSTARTORG0003HRETIORG000BHRETIORG0013HRETIORG001BHRETIORG0023HRETIORG002BHRETI主程序ORG0100HSTARTLCALLXIANSHILJMPSTART显示程序XIANSHIMOVR1,00HNEXTMOVA,R1MOVDPTR,TABLEMOVCA,ADPTRMOVP0,ALCALLDELAYINCR1CJNER1,10,NEXTRET200MS延时程序DELAYMOVR5,20D1MOVR6,20D2MOVR7,248DJNZR7,DJNZR6,D2DJNZR5,D1RET数码译码表TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH结束标志END八、C语言源程序INCLUDEUNSIGNEDCHARCODETABLE0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6FVOIDDELAY200MSVOID/延时02秒的程序/UNSIGNEDCHARI,J,KFORI20I0IFORJ20J0JFORK248K0KVOIDMAINVOIDUNSIGNEDCHARAWHILE1FORA0AVOIDDELAY10MSVOID/延时10毫秒/UNSIGNEDCHARI,JFORI20I0IFORJ248J0JVOIDMAINVOIDUNSIGNEDCHARKWHILE1IFP3_70/看是否P37按下/DELAY10MS/延时10毫秒/IFP3_70/再看一遍是否真的按下/K/如果按下,K记下按下的次数/IFK256/记到256次,K重0开始记/K0P1K/由于是低电平亮,所以取反后再送P1口显示/WHILEP3_70/判断P37是否弹起/九、注意事项(1)按键的识别一定要消除抖动干扰。(2)键盘消抖所用的时间不少于5毫秒。(3)下载结束后,拔掉下载线以防止P1端口对二极管的显示干扰。实验九一键多功能按键识别设计一、实验目的(1)了解按键识别方法。(2)掌握一键多功能的设计原理。二、设计原理如图91所示,按键开关S18通过8联拨动拨码开关JP3接在单片机的P37管脚上,在单片机的P1端口接有四个发光二极管。上电的时候,接在P10管脚上的发光二极管D1在闪烁。当按下一次按键开关S18的时候,接在P11管脚上的发光二极管D2在闪烁。再按下按键开关S18的时候,接在P12管脚上的发光二极管D3在闪烁。第三次按下按键开关S18的时候,接在P13管脚上的发光二极管D4在闪烁。第四次按下按键开关S18的时候,回到D1闪烁,如此循环下去。三、参考电路图91一键多功能识别技术电路原理图四、电路硬件说明(1)在“单片机系统”区域中,把单片机的P37端口连接到“独立式键盘”区域中的按键开关S18端口上。(2)在“单片机系统”区域中,把单片机的P10P14端口通过8联拨动拨码开关连接到“八路发光二极管指示模块”区域中的发光二极管“DL1DL8”端口上;要求,P10连接D1,P11连接D2,P12连接D3,P13连接D4。五、程序设计内容(1)设计思想由来在生活中,有张三、李四、王五、等等。由于每个人有不同的名子,就能很快认出。同样,对于要通过某个按键来识别其相应的功能,再给不同的功能模块赋予了不同的ID号标识。这样,每按下一次按键,ID就显不同的值,因此单片机就很容易识别不同功能的身份了。(2)设计方法从设计的原理可以看出,发光二极管D1到D4在每个时刻闪烁的时间是受按键开关S18来控制的。给发光二极管D1到D4闪烁的时段定义出不同的ID号,当D1在闪烁时,ID0;当D2在闪烁时,ID1;当D3在闪烁时,ID2;当D4在闪烁时,ID3;很显然,只要每次按下开关S18时,分别给出不同的ID号就能够实现所设计的要求了。六、程序设计流程图如图92所示、图92一键多功能识别技术程序流程图七、汇编源程序IDEQU30H定义相应的位SP1BITP37L1BITP10L2BITP11L3BITP12L4BITP13ORG0000H系统复位LJMPSTART转入主程序ORG0003H外部中断0RETI中断返回ORG000BH定时器0溢出中断RETIORG0013H外部中断1RETIORG001BH定时器1溢出中断RETIORG0023H外部中断2RETIORG0100H程序入口地址MOVID,00HSTARTJBSP1,REL判断按键是否按下LCALLDELAY10MS延时消抖JBSP1,REL再次判断INCID如果按下,用ID记下按键按下的次数MOVA,IDCJNEA,04,REL看按键是否按下4次MOVID,00H如果是清0,重新记数RELJNBSP1,等待按键弹起MOVA,IDCJNEA,00H,IS0是否第一次按下按键SETBL4如果是,第一指示灯显示SETBL3SETBL2CPLL1LCALLDELAY延时SJMPSTARTIS0CJNEA,01H,IS1是否第二次按下按键SETBL1如果是第二个指示灯显示CPLL2LCALLDELAYSJMPSTARTIS1CJNEA,02H,IS2是否第三次按下按键SETBL1如果是第三个指示灯显示SETBL2CPLL3LCALLDELAYSJMPSTARTIS2CJNEA,03H,IS3是否第四次按下按键SETBL1如果是第四个指示灯显示SETBL2SETBL3CPLL4LCALLDELAYSJMPSTARTIS3LJMPSTARTDELAY10MSMOVR6,20延时子程序LOOP1MOVR7,248DJNZR7,DJNZR6,LOOP1RETDELAYMOVR5,20LOOP2LCALLDELAY10MSDJNZR5,LOOP2RETEND八、C语言源程序INCLUDEVOIDDELAY10MSVOID/延时10毫秒子程序/UNSIGNEDCHARI,JFORI20I0IFORJ248J0JVOIDDELAY200MSVOID/延时02秒程序/UNSIGNEDCHARKFORK20K0KDELAY10MSVOIDMAINVOIDUNSIGNEDCHARHWHILE1IFP3_70/看是否P37的按键按下/DELAY10MS/延时10毫秒看是否干扰/IFP3_70/重新看是否真的按下/H/如果按下H加1,即H记下按键按下的次数/IFH4/如果H记到8次,则H清0重新记录次数/H0WHILEP3_70/等待按键弹起/SWITCHHCASE0/如果按键按下次数为1次时,进入此部分/P1_31P1_0P1_0/给P10取反,以达到闪烁的效果/DELAY200MS/每隔02秒闪烁一次/BREAKCASE1/按键按下的次数为2次时,进入此部分/P1_01P1_1P1_1/给P11取反,以达到每隔02秒闪烁一次/DELAY200MSBREAKCASE2/按键按下的次数为3次时,进入此部分/P1_11P1_2P1_2/给P12取反,以达到每隔02秒闪烁一次/DELAY200MSBREAKCASE3/按键按下为4次时,进入此部分/P1_21P1_3P1_3/给P13取反,以达到每隔02秒闪烁一次/DELAY200MSBREAK九、注意事项汇编语言和C语言定义口的书写形式不同。如汇编语言为P10,P20,P30,而C语言为P1_0,P2_0,P3_0。实验十0099计数器设计一、实验目的1掌握计数器的设计方法。2了解计数器的手动计数功能。3了解静态数码显示技术。二、设计原理如图101所示,利用单片机来制作一个手动计数器,在单片机的P37管脚口接一个轻触开关,作为手动计数的按钮,用单片机管脚的P20P27口连接一个共阴数码管,作为0099计数的个位数显示,用单片机管脚的P00P07口连接一个共阴数码管,作为0099计数的十位数显示。三、参考电路图1010099计数器设计电路原理图四、电路硬件说明(1)在“单片机系统”区域中,把单片机的P00P07端口连接到“静态数码显示模块”区域中的AH端口上;要求P00对应着A,P01对应着B,P07对应着H。(2)在“单片机系统”区域中,把单片机的P20P27端口连接到“静态数码显示模块”区域中的AH端口上;要求P00对应着A,P01对应着B,P07对应着H。(3)在“单片机系统”区域中,把单片机的P37端口通过拨动开关JP2连接到“独立式键盘”区域中的按键开关S18上。五、程序设计内容(1)单片机对按键的识别过程的处理。(2)单片机对正确识别的按键进行计数,计数满时,从零开始计数。(3)单片机对计的数值要进行数码显示,计得的数是十进制数,含有十位和个位。要把十位和个位的数值分别到各自对应的数码管上并显示。分别送数时,可以把所计得的数值对10求余,即可得到个位数字;对10整除,即可得到十位数字。(4)通过查表方式,分别显示出个位和十位的数字。六、程序流程图如图102所示图1020099计数器设计流程图七、汇编源程序定义单元COUNTEQU30H入口地址ORG0000HLJMPSTARTORG0003HRETIORG000BHRETIORG0013HRETIORG001BHRETIORG0023HRETIORG002BHRETI主程序ORG0100HSTARTLCALLCHUSHIHUANEXTLCALLXIANSHILCALLWTLCALLWAITCJNEA,100,NEXTLJMPSTART初始化程序CHUSHIHUAMOVCOUNT,00HRET显示程序XIANSHIMOVA,COUNTMOVB,10DIVABMOVDPTR,TABLEMOVCA,ADPTRMOVP0,AMOVA,BMOVCA,ADPTRMOVP2,ARET开关抬起检测程序WTJNBP37,RET开关按下次数记数程序WAITJBP37,WAITLCALLDELAY10MSJBP37,WAITINCCOUNTMOVA,COUNTRET10MS延时程序DELAY10MSMOVR6,20D1MOVR7,248DJNZR7,DJNZR6,D1RET共阴数码表TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH结束标志END八、C语言源程序INCLUDEUNSIGNEDCHARCODETABLE0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6FVOIDDELAY10MSVOID/延时10毫秒子程序/UNSIGNEDCHARI,JFORI20I0IFORJ248J0JVOIDMAINVOIDUNSIGNEDCHARKK0/先让十位和个位显示00/P0TABLEK/10P2TABLEK10WHILE1IFP3_70/看按键是否按下/DELAY10MS/延时10毫秒/IFP3_70/再判断按键是否真的按下/K/记下按键按下的次数/IFK100/如果计数到100,返回0/K0WHILEP3_71/等待按键弹起/P0TABLEK/10/显示十位数/P2TABLEK10/显示个位数/九、注意事项(1)程序中数码管的显示为共阴极显示。(2)用静态数码管DS1、DS2时,要把J5上的跳线帽加到OE和VCC上把J6上的跳线帽加到OE和GND上。实验十一六十秒计时器设计一、实验目的1了解计时器的功能。2掌握计时器的设计方法。3掌握静态数码显示技术。二、设计原理如图111所示,在单片机的P0和P2端口分别接两个共阴极数码管。P0口驱动计时器显示的十位,P2口驱动计时器显示的个位。三、参考电路图111六十秒计时器电路原理图四、电路硬件说明(1)在“单片机系统”区域中,把单片机的P00P07端口连接到“静态数码显示模块”区域中的AH端口上;要求P00对应着A,P01对应着B,P07对应着H。(2)在“单片机系统”区域中,把单片机的P20P27端口连接到“静态数码显示模块”区域中的AH端口上;要求P20对应着A,P21对应着B,P27对应着H。五、程序设计内容(1)在设计过程中要用一个存储单元作为秒计数单元。当一秒钟到来时,就让秒计数单元加1;当秒计数达到60时,就自动返回到0,从新计数。(2)对于秒计数单元中的数据来说,要把它的十位数和个数分开,方法仍采用对10整除和对10求余。(3)当在数码管上显示数时,仍通过查表的方式完成。(4)一秒时间的产生在这里采用软件精确延时的方法来完成,经过精确计算得到1秒时间为1002秒。DELY1SMOVR5,100D2MOVR6,20D1MOVR7,248DJNZR7,DJNZR6,D1DJNZR5,D2RET六、程序流程图如图112所示图11260秒计时器设计流程图七、汇编源程序定义单元COUNTEQU30H入口地址ORG0000HLJMPSTARTORG0003HRETIORG000BHRETIORG0013HRETIORG001BHRETIORG0023HRETIORG002BHRETI主程序ORG0100HSTARTLCALLCHUSHIHUALCALLNEXTLJMPSTART初始化程序CHUSHIHUAMOVCOUNT,00HRET计数显示程序NEXTLCALLXIANSHILCALLDELAY1SINCCOUNTMOVA,COUNTCJNEA,60,NEXTRET显示程序XIANSHIMOVA,COUNTMOVB,10DIVABMOVDPTR,TABLEMOVCA,ADPTRMOVP0,AMOVA,BMOVCA,ADPTRMOVP2,ARET1S延时程序DELAY1SMOVR5,100D1MOVR6,20D2MOVR7,248DJNZR7,DJNZR6,D2DJNZR5,D1RET共阴数码表TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH结束标志END八、C语言源程序INCLUDEUNSIGNEDCHARTABLE0X3F,0X06,0X5B,0X4F,0X66,/数据表格/0X6D,0X7D,0X07,0X7F,0X6FVOIDDELAY1SVOID/1秒子程序/UNSIGNEDCHARI,J,KFORI100I0IFORJ20J0JFORK248K0KVOIDMAINVOIDUNSIGNEDCHARMM0/显示0秒/P0TABLEM/10P2TABLEM10WHILE1DELAY1S/延时1秒/M/每到1秒加1/IFM60/如果到了60秒,重新开始计时/M0P0TABLEM/10/显示/P2TABLEM10九、注意事项用静态数码管DS1、DS2时,要将J5上的OE和VCC通过跳线帽连接、J6上的OE和GND通过跳线帽连接。实验十二可预置可逆4位计数器设计一、实验目的1可预置可逆4位计数器设计2掌握计数器的预置、加法和减法。二、设计原理如图121所示,用单片机的P10P13端口接四个发光二极管D1D4,用来指示当前计数的数据。用单片机的P30P33端口作为预置数据的输入端,通过8联拨动拨码开关JP2连接四个拨动开关SW1SW4,用单片机的P36和P37端口连接两个按键开关,用做加计数和减计数开关。三、参考电路图121可预置可逆4位计数器电路原理图四、电路硬件说明(1)在“单片机系统”区域中,把单片机的P10P13管脚通过8联拨动拨码开关JP4连接到“八路发光二极管指示模块”区域中的D1D4上;要求P10对应着D1,P11对应着D2,P12对应着D3,P13对应着D4。(2)在“单片机系统”区域中,把单片机的P30,P31,P32,P33管脚通过8联拨动拨码开关JP2连接到“四路拨动开关”区域中的拨码开关SW1SW4上。(3)在“单片机系统”区域中,把单片机的P36,P37管脚通过8联拨动拨码开关JP2连接到“独立式键盘”区域中的按键开关S18和S19上。五、程序设计内容(1)两个独立式按键识别的处理过程。(2)预置初值的读取问题。(3)LED输出指示。六、程序流程图如图122所示图122可预置可逆计数器设计流程图七、汇编源程序定义单元COUNTEQU30H入口地址ORG0000HLJMPSTARTORG0003HRETIORG000BHRETIORG0013HRETIORG001BHRETIORG0023HRETIORG002BHRETI主程序入口ORG0100HSTARTLCALLCHUSHIHUAMAINLCALLJIALCALLJIANLJMPMAIN初始化程序CHUSHIHUAMOVA,P3ANLA,0FHMOVCOUNT,AMOVP1,ARET加1程序JIAJBP36,JIANLCALLDELAY10MSJBP36,JIANINCCOUNTMOVA,COUNTCJNEA,16,NEXTMOVA,P3ANLA,0FHMOVCOUNT,ANEXTMOVP1,AWAITJNBP36,RET减1程序JIANJBP37,JIALCALLDELAY10MSJBP37,JIADECCOUNTMOVA,COUNTCJNEA,0FFH,NEXMOVA,P3ANLA,0FHMOVCOUNT,ANEXMOVP1,AWAIT1JNBP37,RET10MS延时程序DELAY10MSMOVR6,20D1MOVR7,248DJNZR7,DJNZR6,D1RET结束标志END八、C语言源程序INCLUDEVOIDDELAY10MSVOID/10毫秒延时子程序/UNSIGNEDCHARI,JFORI20I0IFORJ248J0JVOIDMAINVOIDUNSIGNEDCHARKKP3P1K/如果高电平时,指示灯亮,相反/WHILE1IFP3_60/判断P36是否按下/DELAY10MS/延时10毫秒/IFP3_60/再次判断是否真的按下/IFK15/如果指示的数大于等于15,都以15计/K15ELSE/否则一直能加到15/KP1K/送入P1口显示/WHILEP3_60/等待按键弹起/IFP3_60/判断是否P37按下/DELAY10MS/延时10毫秒/IFP3_60/再次判断是否真的按下/IFKUNSIGNEDCHARCODETABLE10X06,0X5B,0X4F,0X66,0X6DUNSIGNEDCHARCODETABLE20X76,0X79,0X38,0X38,0X3FVOIDMAINVOIDUNSIGNEDCHARI,J,K,MWHILE1J0X7FFORI0II1/右移I1位/MJ0K/每隔一段时间显示一次/FORM248M0M九、注意事项(1)程序中要注意共阴极数码管显示和共阳极数码管显示的区别,本程序在共阴极数码管显示时,要把单排针接插件J4中的跳线帽加到OE和VCC上。(2)程序下载后要把8联拨动拨码开关JP2中相应的拨码开关拨上去。实验十四44矩阵式键盘识别设计一、实验目的1掌握44矩阵式键盘程序识别原理。2掌握44矩阵式键盘按键的设计方法。二、设计原理(1)如图142所示,用单片机的并行口P3连接44矩阵键盘,并以单片机的P30P33各管脚作输入线,以单片机的P34P37各管脚作输出线,在数码管上显示每个按键“0F”的序号。(2)键盘中对应按键的序号排列如图141所示。三、参考电路图14244矩阵式键盘识别电路原理图图14144键盘0F显示图14344矩阵式键盘识别程序流程图四、电路硬件说明(1)在“单片机系统”区域中,把单片机的P30P37端口通过8联拨动拨码开关JP3连接到“44行列式键盘”区域中的M1M4,N1N4端口上。(2)在“单片机系统”区域中,把单片机的P00P07端口连接到“静态数码显示模块”区域中的任何一个AH端口上;要求P00对应着A,P01对应着B,P07对应着H。五、程序设计内容(1)44矩阵键盘识别处理。(2)每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是确定有无键按下,判断哪一个键按下,键的功能是什么还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。六、程序流程图如图143所示七、汇编源程序定义单元COUNTEQU30H入口地址ORG0000HLJMPSTARTORG0003HRETIORG000BHRETIORG0013HRETIORG001BHRETIORG0023HRETIORG002BHRETI主程序入口ORG0100HSTARTLCALLCHUSHIHUALCALLPANDUANLCALLXIANSHILJMPSTART初始化程序CHUSHIHUAMOVCOUNT,00HRET判断哪个按键按下程序PANDUANMOVP3,0FFHCLRP34MOVA,P3ANLA,0FHXRLA,0FHJZSW1LCALLDELAY10MSJZSW1MOVA,P3ANLA,0FHCJNEA,0EH,K1MOVCOUNT,0LJMPDKK1CJNEA,0DH,K2MOVCOUNT,4LJMPDKK2CJNEA,0BH,K3MOVCOUNT,8LJMPDKK3CJNEA,07H,K4MOVCOUNT,12K4NOPLJMPDKSW1MOVP3,0FFHCLRP35MOVA,P3ANLA,0

温馨提示

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

评论

0/150

提交评论