资源描述:
《单片机并口简单应用(流水灯)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、75实验一单片机并口简单应用(流水灯)09电气陈毅斌32号实验目的1、了解单片机汇编语言程序的基本结构2、了解单片机汇编语言程序的设计和调试方法3、掌握顺序控制程序的简单编程实验仪器单片机开发板、万利仿真机、稳压电源、计算机实验原理1、流水灯硬件电路如图4-1所示,流水灯硬件电路由移位寄存器74LS164、功能选择开关J502、二极管、三极管、单片机并口(P0)、限流电阻等组成。发光二极管连接成共阳极结构。发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。因此,通过程序控制74LS164的Q0端。Q0端输出0,公共端阳极就接成高电平,然后再按一定规则从P0口输出数据,发光
2、二极管就会点亮。图4-1流水灯电路图2、单片机流水灯程序设计由上图可知,发光二极管要点亮,需要先把J502的2、3脚相连,三极管Q500导通,然后从P0口输出数据。(1)控制三极管导通程序控制三极管有两种方法,第一种:在74LS164的第8脚产生一个正脉冲,此时1脚为0,三极管就导通;为1,三极管就截止。第二种:在单片机IO模拟74LS164时序,一次输出一个字节,只要Q0=0即可控制三极管开通。为1,三极管截止。三极管导通DIN=0,CLK=0,输出8位输出数据=07FH(最高位为0)输出数据左移一位,把移出的位送到DIN,CLK产生正脉冲CLK产生一个正脉冲输出数据位数减
3、1输出完成?三极管导通两种方法的程序流程如图4-2所示。三极管导通DIN=0CLK=0CLK=1CLK=0返回图4-2流水灯位选信号控制(2)产生流水灯效果程序三极管导通后,就可以从P0口输出数据控制发光二极管。P0口输出数据既可以编写程序逐个输出,也可以将输出数据序列定义在存储器中,然后用读程序存储器指令逐个取出并输出到P0口。程序流程图如图4-3所示。流水灯返回P0口输出0FEH延时0.2秒P0口输出0FDH延时0.2秒。。。流水灯返回偏移位置为8从程序存储器中取出偏移位置的数据延时0.2秒,偏移位置计数减1取数完成?YN图4-3流水灯程序流程图实验内容1、直接输出法输出
4、数据序列LEDCLKbitP3.4LEDDINbitP2.3ORG0000HLJMPMAINORG0030HMAIN:LCALLLedSequence;调用LED此程序产生流水灯效果SJMPMAINLedSequence:CLRLEDCLK;往74LS164的Q0端送一个0CLRLEDDIN;CLK引脚产生一个正脉冲NOPSETBLEDCLKNOPCLRLEDCLKMOVP0,#0FEH;为0的位对应的二极管亮,第一个灯亮MOVR7,#200;R7为延时量,NmsLCALLDelayNms;该程序延时时间由R7决定MOVP0,#0FDH;第二个灯亮MOVR7,#200LCAL
5、LDelayNmsMOVP0,#0FBH;第三个灯亮MOVR7,#200LCALLDelayNmsMOVP0,#0F7H;第四个灯亮MOVR7,#200LCALLDelayNmsMOVP0,#11101111B;第五个灯亮MOVR7,#200LCALLDelayNmsMOVP0,#11011111B;第六个灯亮MOVR7,#200LCALLDelayNmsMOVP0,#10111111B;第七个灯亮MOVR7,#200LCALLDelayNmsMOVP0,#01111111B;第八个灯亮MOVR7,#200LCALLDelayNmsRETDelayNms:LCALLDelay
6、1msDJNZR7,$-3RETDelay1ms:;延时1ms程序PUSH07MOVR7,#250;1msNOPNOPDJNZR7,$-2POP07RETEND2、查表法输出数据序列LEDCLKbitP3.4LEDDINbitP2.3ORG0000HLJMPMAINORG0030HMAIN:LCALLLedSequence;调用LED此程序查表方法设置流水灯SJMPMAINLedSequence:LCALLLedLightMOVR6,#8;循环次数赋值MOVDPTR,#LedSequenceTab;查表赋值首地址LedSequence1:MOVA,R6MOVCA,@A+DPT
7、RCPLA;取反使得只有一个位为0其余为1MOVP0,AMOVR7,#200LCALLDelayNms;调用延迟时间DJNZR6,LedSequence1RETLedSequenceTab:DB80H,40H,20H,10H,08H,04H,02H,01H,00HDelayNms:LCALLDelay1msDJNZR7,$-3RETDelay1ms:MOVA,R7MOVR7,#250;1msNOPNOPDJNZR7,$-2MOVR7,ARETLedLight:MOVB,#8MOVA,#0FEHCLRLE