欢迎来到天天文库
浏览记录
ID:25125070
大小:317.00 KB
页数:9页
时间:2018-11-18
《led交通灯实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、交通灯实验——练习使用两位LED灯一、器件清单(1)单片机AT98C51(2)晶振CRYSTAL(3)瓷片电容CAP【30pF】(4)电解电容CAP-ELEC【1uF】(5)电阻RES(6)两位LED(共阳极)7SEG-MPX2-CA电源POWER地GROUND二、实验目的熟悉两位LED灯的原理及使用。三、实验要求1、参照以上电路在Proteus下完成电路图绘制。注意:该图中使用了总线,绘制总线的工具按钮是,总线的两端必须加上线路标号。2、在Keil下编写C51程序,实现以下功能:每隔1秒钟,LED灯显示数字加1。显示从00开始,能够加到99。到了100又重新从00开始向
2、上加。3、使用T0定时器实现定时1秒钟(1s=20*50000µs)。四、两位LED灯的工作原理1、学会识别两位LED灯是共阴极还是共阳极l7SEG-MPX2-CA:Red,2Digit,CommonAnode,7-SegmentAnodeDisplay共阳极l7SEG-MPX2-CC:Red,2Digit,CommonCathode,7-SegmentAnodeDisplay共阴极2、本实例选用了共阳极的两位LED,其中引脚“12”表示位选端,当引脚“1”送高电平时,点亮左侧的LED灯;当引脚“2”送高电平时,点亮右侧的LED灯。每点亮一个LED灯时,应从引脚“ABCD
3、EFG”送这个LED灯的显示段码。3、以下程序段可以顺序点亮右侧、左侧的两个LED灯P1=duan[ge];//从P1口送个位数(右侧LED灯)的显示段码P2_1=1;//单片机的P2.1=1,让LED灯的引脚2为高电平,点亮右侧LED灯delay();//高电平持续一小段时间,注意delay()函数设计为单层循环即可P2_1=0;//单片机的P2.1=0,不再选中右侧的LED灯P1=duan[shi];//从P1口送十位数(左侧LED灯)的显示段码P2_0=1;//单片机的P2.0=0,让LED灯的引脚1为高电平,点亮左侧LED灯delay();//延时P2_0=0;/
4、/单片机的P2.0=0,不再选中左侧的LED灯五、将运行效果图粘贴在此处六、将C51源代码粘贴在此处,并对每个函数添加序言性注释#include#include//#defineCOM_8279XBYTE[0x5fff]//定义8279的控制口为COM_8279//#defineDAT_8279XBYTE[0x5eff]//定义8279的数据口为DAT_8279typedefunsignedcharuchar;typedefunsignedintuint;typedefunsignedlongulong;ulongtime=0;sbi
5、tflag=ACC^7;sbitP2_1=P2^1;//定义特殊标志位sbitP2_0=P2^0;//定义特殊标志位ucharcodetable[50]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};ucharduan[6]={0,0};ucharT0_num=0;voidInitT0(void){//uchari,j;//while(1)//{//for(i=0;i<20;i++)//{TMOD=0x01;TH0=0x3c;TL0=0xb0;TR0=1;EA=1;ET0=1;//}//}//}}voidT0Fun
6、()interrupt1using1{TH0=0x3c;TL0=0xb0;T0_num++;if(T0_num==20)//判断定时1秒是否到{T0_num=0;//把中断次数置为0time++;//时间自加1duan[0]=time%10;duan[1]=time/10%10;}}voidmain(){InitT0();while(1){P1=table[duan[0]];//从P1口送个位数(右侧LED灯)的显示段码P2_1=1;//单片机的P2.1=1,让LED灯的引脚2为高电平,点亮右侧LED灯//高电平持续一小段时间,注意delay()函数设计为单层循环即可P2
7、_1=0;//单片机的P2.1=0,不再选中右侧的LED灯P1=table[duan[1]];//从P1口送十位数(左侧LED灯)的显示段码P2_0=1;//单片机的P2.0=0,让LED灯的引脚1为高电平,点亮左侧LED灯//延时P2_0=0;//单片机的P2.0=0,不再选中左侧的LED灯}}
此文档下载收益归作者所有