1、数量单位1WD990微机电源个28051最小系统板套3键盘显示接口板块4万用表5示波器台6Proteus7.8 SP2仿真软件份7单芯杜邦线若干根图3-1 简易航标灯控制结构图三、实验内容1、2位拨码开关:灯质设定(频率与占空比) 2、光敏电阻:实现光照采集(光照强,电阻小;光照弱,电阻大)3、灯驱动:发光二极管采用12V供电,要实验单片机驱动电路设计,三极管驱动要求:通过光敏电阻采集光照度,白天灯熄灭,黑夜灯按照上表闪烁。课时数:2课时四、预习要求1、完成简易航标灯系统的标准DXP原理图;2、编程实现简易航标灯的各项功能;3、Proteus78仿真说明:光敏电阻:TORCH_LDR,2位拨码
2、开关:DIPSW_2接时不能接上拉电阻,否则仿真不通过;五、实验步骤1、硬件:Proteus仿真电路设计,实物输入、输出信号模拟;2、软件:在Keil 环境下编写程序,生成.hex文件,通过ProteusProteusV78_Timer0_HBD)进行功能仿真;3、调试:反复修改程序,完善功能。4、仿真完成后有条件的同学可通过端口模拟进行功能验证。六、实验过程1、实验原理图原理图2、程序部分#include reg51.h#define COUNT 50000 /50ms gcd:50ms的倍数#define D_OPEN 1 /开灯#define D_CLOSE 0 /关灯sbit led=
3、P00; /灯输出控制,高电平有效sbit OPCON=P12; /光照检测 ,高电平(亮) struct IALA unsigned char num; /拨码开关状态 unsigned char gcd; /各时间间隔最大公约数 unsigned char state6;/无符号字符型时间常数;unsigned int State6;unsigned char GetKey(void) unsigned char key; key=0; if(P1&0x01)=0) /低电平有效 key|=0x01;0x02)=0) key|=0x02; return(key); key|=P1; ret
4、urn key&0x03;/获取键值,两个开关有四种状态,分别是00,01,10,11即可获得四个键值0,1,2,3const struct IALA IALA44= 0,10,1,0,0,0,0,0, 1,10,1,3,0,0,0,0, 2,10,1,1,1,7,0,0, 3,10,1,2,1,2,1,5将计数判断点存入数组中/设定灯质状态,以及各个状态的时间unsigned int it=0;void T0_ISR(void) interrupt 1 unsigned char j; TH0=(65536-COUNT)/256; TL0=(65536-COUNT)%256; if(OPCO
5、N=0) /黑夜、暗照度 it+; for(j=0;j=State5) it=0; else /白天、亮照度 led=D_CLOSE; /中断服务程序 void main(void) unsigned int sum=0; unsigned char key,pre_key=0,i; TMOD=(TMOD&0xf0)|0x01; ET0=1; /中断使能 EA=1; TR0=1; /T0启动 led=1; sum=0; while(1) key=GetKey();/获取键值 if(key!=pre_key) for(i=0;ii+) sum=sum+(IALA4key.gcd)*(IALA4k
6、ey.statei); Statei=sum; if(sum=1) led=1; pre_key=key;3、仿真波形:第一种状态仿真波形第二种状态仿真波形第三种状态仿真波形第四种状态仿真波形4、调试过程记录:调试先在Keil uVision4软件环境下进行程序编写,利用C语言来编写本次实验所需程序。因为本次实验为简易航标灯的控制设计实验,通过两个拨码开关来实现四种状态的变化。并且用一个LED灯,来显示航标灯的亮灭规律。程序编写完成后再生成hex文件在proteus7.8的仿真图中进行模拟仿真,有问题时,再回到Keil uVision4中对程序进行修改。当在proteus中仿真成功以后,再将程
7、序烧写到开发板上,进行实物调试。在进行实物调试时需要将输入信号接到示波器上,这样可以精确观察,以确保编写的程序定时的准确,没有误差,达到精确定时的目的。仿真时发现波形不对,与各种状态的时间不符合,然后我们将程序的50000参数改变为500,这样在仿真的时候就可以观察到完整的波形,也可以进行验证各个状态的参数是否设置正确,最后加以改正,得出了正确的仿真结果,使得程序能正确运行。七、实验小结经过好几次实验的训练,我们知道了单片机实验最主要的就是程序的编写以及Keil软件的熟练运用。在程序编写好的基础上,我们要进行仿真,只有看到仿真效果才能判别出我们程序的对与错,从而才能进行实物上的操作。如果仿真出不来我们实验所要求的效果,则很大可能就是我们程序的某一部分编写错误,我们要对程序进行修改。本次试验我们在Keil环境下编写了程序并通过Proteus(SY1_Proteus_test)进行了功能仿真,在面包板上搭建了2个按键控制8个发光二极管的跑马灯的设计,总的来说并不是很难,下次实验我们会继续努力,提前做好充分的预习准备,实验前的预习很重要。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1