武汉工程大学《微机原理与接口技术》课程设计
}
EA=1; ET1=1; TR1=1;
void led1() interrupt 3 { } void main() {
TH1=0x3C; TL1=0xB0; num1++; num2++; if(num1==10) { }
if(amin==min&&ahour==hour&&a%2==0)
sound=0; num1=0; led=~led;
lcd_init(); init();
24
武汉工程大学《微机原理与接口技术》课程设计
while(1) {
if(num2==20) {
num2=0;
if(hour==23&&min==59&&sec==59) { }
else if(sec==59&&min==59) { }
else if(sec==59) { } else
sec++; minge=min; minshi=min/10;
25
keyscan();
hour=0;min=0;sec=0;
sec=0;min=0;hour++;
sec=0;min++;
武汉工程大学《微机原理与接口技术》课程设计
write_com(0x80+9); write_data(table1[minge]); delay(5);
write_com(0x80+8);
// delay(2); write_data(table1[minshi]); hourge=hour; hourshi=hour/10; write_com(0x80+6); write_data(table1[hourge]); delay(5);
write_com(0x80+5);
// delay(2); write_data(table1[hourshi]); write_com(0x80+7); write_data(':');
} }
}
26
武汉工程大学《微机原理与接口技术》课程设计
5. 系统仿真
1,开始程序
图7 显示器开始及定时
图8 定时闹铃开并调定时闹钟的时间
3.当闹铃打开,计时时间到了定时闹铃的时间后,喇叭开始叫
图9 仿真结果
27
武汉工程大学《微机原理与接口技术》课程设计
6. 心得体会
这次课程设计一个星期,刚知道课程设计的时候感觉题目很简单,应该花很少的时间就可以完成课程设计,感觉如果用汇编语言的话感觉程序会有点多,所以我决定用C语言编程,开始编程时,发现编程的时候就有些问题了。要学会怎么用KEIL,然后把生成的HEX文档,把它加载到Proteus里的89c51芯片,使芯片能工作。这次仿真要用到单片机种最重要的两个部分,外部中断和外部计时器,另外学会了如何驱动1602液晶显示器。这次课程设计让我学会了怎么用C语言来编写程序以供单片机使用,对单片机中的外部中断还有一些P0,P1,P2口的使用,P0需要添加上拉电阻,对单片有了更加深入的了解,对Proteus,keil的使用更加熟练了。实验中同样出现些问题,比如闹钟的设定以及K4功能的实现,还有延时功能的实现,所以要对单片机的执行程序需要的机器周期得完全了解清楚,用汇编语言容易计算所用的机器周期,用C语言的话就难些,这次课程设计使单片机能够实现定时闹钟的功能,实现了这次设计的要求。这次课程设计让我更加认真的自己做了些以前想做想学的东西,并且认识到要多请教同学。。
7. 参考文献
[1]余发山.单片机原理及应用技术.中国矿业大学出版社,2003.21-45,98-118,185-198 [2]刘和平. 单片机编程与入门.重庆大学出版社,2002.68-99,111-122
[3]陈明荧. 89C51单片机课程设计实训教材.清华大学出版社,2003.38-67,102-118 [4]刘瑞新. 单片机原理及应用教程.北京机械工业出版社,2005.78-109 [5]杨文龙. 单片机原理及应用.西安电子科技大学出版社,2002.33-62
[6]董国增. 单片机接口及应用实验和训练指导.北京机械工业出版社,1998.43-70
[7]付寿英,张登举,徐飞. 单片机接口技术及在工业控制中的应用.陕西科学技术出版,2001.78-101
28