常熟理工学院课程设计报告
{ };
unsigned int State[6]; unsigned char GetKey(void) {
unsigned char key; unsigned char num; unsigned char gcd;
//拨码开关状态
//各时间间隔最大公约数
unsigned char state[6];//无符号字符型时间常数
key=0; }
//获取键值,两个开关有四种状态,分别是00,01,10,11即可获得四个键值0,1,2,3
const struct IALA IALA4[4]={ };
将计数判断点存入数组中
{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}
if((P1&0x01)==0) //低电平有效
key|=0x01;
if((P1&0x02)==0)
key|=0x02;
return(key); key|=P1; return key&0x03;
常熟理工学院课程设计报告
//设定灯质状态,以及各个状态的时间 unsigned int it=0;
void T0_ISR(void) interrupt 1 {
unsigned char j; TH0=(65536-COUNT)/256; TL0=(65536-COUNT)%6; if(OPCON==0)
//黑夜、暗照度
{
it++;
for(j=0;j<6;j++) { if(it==State[j])
led=(j%2)?D_OPEN:D_CLOSE; //判断是开灯还是关灯状态
} }
//白天、亮照度
if(it>=State[5]) { it=0; }
else {
led=D_CLOSE;
}
} //中断服务程序 void main(void) {
unsigned int sum=0;
常熟理工学院课程设计报告
unsigned char key,pre_key=0,i;
TMOD=(TMOD&0xf0)|0x01; TH0=(65536-COUNT)/256; TL0=(65536-COUNT)%6; ET0=1; EA=1;
TR0=1; //T0启动 led=1; sum=0; while(1) {
key=GetKey();//获取键值 if(key!=pre_key)
//中断使能
{ }
3、仿真波形:
}
}
pre_key=key;
for(i=0;i<6;i++)
{ sum=sum+(IALA4[key].gcd)*(IALA4[key].state[i]); }
if(sum==1)
led=1;
State[i]=sum;
常熟理工学院课程设计报告
第一种状态仿真波形
第二种状态仿真波形
常熟理工学院课程设计报告
第三种状态仿真波形
第四种状态仿真波形
4、调试过程记录:
调试先在Keil uVision4软件环境下进行程序编写,利用C语言来编写本次实验所需程序。因为本次实验为简易航标灯的控制设计实验,通过两个拨码开关来实现四种状态的变化。并且用一个LED灯,来显示航标灯的亮灭规律。程序编写完成后再生成hex文件在proteus7.8的仿真图中进行模拟仿真,有问题时,再回到Keil uVision4中对程序进行修改。当在proteus中
常熟理工学院课程设计报告
仿真成功以后,再将程序烧写到开发板上,进行实物调试。在进行实物调试时需要将输入信号接到示波器上,这样可以精确观察,以确保编写的程序定时的准确,没有误差,达到精确定时的目的。仿真时发现波形不对,与各种状态的时间不符合,然后我们将程序的50000参数改变为500,这样在仿真的时候就可以观察到完整的波形,也可以进行验证各个状态的参数是否设置正确,最后加以改正,得出了正确的仿真结果,使得程序能正确运行。 七、实验小结
经过好几次实验的训练,我们知道了单片机实验最主要的就是程序的编写以及Keil软件的熟练运用。在程序编写好的基础上,我们要进行仿真,只有看到仿真效果才能判别出我们程序的对与错,从而才能进行实物上的操作。如果仿真出不来我们实验所要求的效果,则很大可能就是我们程序的某一部分编写错误,我们要对程序进行修改。本次试验我们在Keil环境下编写了程序并通过Proteus(SY1_Proteus_test)进行了功能仿真,在面包板上搭建了2个按键控制8个发光二极管的跑马灯的设计,总的来说并不是很难,下次实验我们会继续努力,提前做好充分的预习准备,实验前的预习很重要。
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新自然科学简易航标灯报告 (2)全文阅读和word下载服务。
相关推荐: