单片机流水灯实验.docx

单片机流水灯实验.docx

ID:51700508

大小:40.04 KB

页数:5页

时间:2020-03-15

单片机流水灯实验.docx_第1页
单片机流水灯实验.docx_第2页
单片机流水灯实验.docx_第3页
单片机流水灯实验.docx_第4页
单片机流水灯实验.docx_第5页
资源描述:

《单片机流水灯实验.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验二单片机并口简单应用(流水灯)实验目的1、了解单片机汇编语言程序的基本结构2、了解单片机汇编语言程序的设计和调试方法3、掌握顺序控制程序的简单编程实验仪器单片机开发板、万利仿真机、稳压电源、计算机实验原理1、流水灯硬件电路如图4-1所示,流水灯硬件电路由移位寄存器74LS164、功能选择开关J502、二极管、三极管、单片机并口(P0)、限流电阻等组成。发光二极管连接成共阳极结构。发光二极管点亮的条件是:阳极接高电平、各阴极接低电平。因此,通过程序控制74LS164的Q0端。Q0端输出0,公共端阳极就接成高

2、电平,然后再按一定规则从P0口输出数据,发光二极管就会点亮。图4-1流水灯电路图2、单片机流水灯程序设计由上图可知,发光二极管要点亮,需要先把J502的2、3脚相连,三极管Q500导通,然后从P0口输出数据。(1)控制三极管导通程序控制三极管有两种方法,第一种:在74LS164的第8脚产生一个正脉冲,此时1脚为0,三极管就导通;为1,三极管就截止。第二种:在单片机IO模拟74LS164时序,一次输出一个字节,只要Q0=0即可控制三极管开通。为1,三极管截止。三极管导通DIN=0,CLK=0,输出8位输出数据=

3、07FH(最高位为0)输出数据左移一位,把移出的位送到DIN,CLK产生正脉冲CLK产生一个正脉冲输出数据位数减1输出完成?三极管导通两种方法的程序流程如图4-2所示。三极管导通DIN=0CLK=0CLK=1CLK=0返回图4-2流水灯位选信号控制(2)产生流水灯效果程序三极管导通后,就可以从P0口输出数据控制发光二极管。P0口输出数据既可以编写程序逐个输出,也可以将输出数据序列定义在存储器中,然后用读程序存储器指令逐个取出并输出到P0口。程序流程图如图4-3所示。流水灯返回P0口输出0FEH延时0.2秒P0

4、口输出0FDH延时0.2秒。。。流水灯返回偏移位置为8从程序存储器中取出偏移位置的数据延时0.2秒,偏移位置计数减1取数完成?YN图4-3流水灯程序流程图实验内容/*********************************功能:流水灯(间隔200ms)**********************************/#include#include#defineucharunsignedchar#defineuintunsignedintsbitLEDDIN

5、=P2^3;//位声明sbitLEDCLK=P3^4;voiddelay_1ms(ucharz);//函数声明voiddelay_50ms(uchart);voidmian(){uchari;for(i=0;i<7;i++)//关闭数码管{LEDDIN=1;LEDCLK=0;LEDCLK=1;}LEDDIN=0;LEDCLK=0;LEDCLK=1;//产生一个脉冲,使三极管导通P0=0xfe;delay_50ms(4);//延时200mswhile(1){P0=_crol_(P0,1);delay_50ms(

6、4);}}voiddelay_1ms(ucharz)//延时1ms{uintx,y;for(x=z;x>0;x--)for(y=123;y>0;y--);}voiddelay_50ms(uchart)//延时50ms{uintj;for(;t>0;t--)for(j=6245;j>0;j--);}实验思考题1、请把学号后两位数进转换成二进制数,然后依次点亮其中为1对应的二极管,写出输出序列。例如,60号转换成二进制后是00111100B,依次点亮四个1对应的二极管,输出序列是0DFH,0EFH,0F7H,0F

7、CH.(从低位到高位也可以)答:#include#defineucharunsignedchar#defineuintunsignedintsbitLEDDIN=P2^3;//位声明sbitLEDCLK=P3^4;ucharcodetable[]={0xfb,0xfe,0xef,0xdf,0xbf,0x7f}//输出序列voiddelay_1ms(ucharz);//函数声明voidmian(){uchari;for(i=0;i<7;i++)//关闭数码管{LEDDIN=1;LEDCLK=0

8、;LEDCLK=1;}LEDDIN=0;LEDCLK=0;LEDCLK=1;//产生一个脉冲,使三极管导通P0=0xff;//关闭二极管delay_1ms(2);//延时2mswhile(1){for(i=0;i<6;i++){P0=table[i];delay_1ms(5);}}}voiddelay_1ms(ucharz)//延时1ms{uintx,y;for(x=z;x>0;x--)for(y=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。