洛阳理工学院实验报告系别计算机系班级B140503 学号姓名代利娟课程名称单片机原理及其应用实验日期实验名称电子秒表显示器成绩实验目的:掌握中断和定时/ 计数器的工作原理,熟悉C51 编程与调试方法。实验原理:实验电路原理图如图1 所示,由共阴极数码管LED1和 LED2、P0 口、 P2 口、上拉电阻R2-R8 以及 Vcc 组成的输出电路;由C1、 C2、晶振 X1、引脚 XTAL1、XTAL2 与接地点组成的时钟电路;由C3、 R1、引脚 RST和 Vcc 组成的上电复位电路;由Vcc 和引脚 EA____组成的片内ROM选择电路。(元件参数见表1)图 1 电路原理图表 1 实验元件清单实验电路在软件配合下,要求实现如下功能:数码管的初始显示值为“ 00”;当 1s 产生时,秒计数器加1;秒计数到60 时清 0,并从“ 00”重新开始,如此周而复始进行。软件编程原理为:采用T0 定时方式1 中断法,其中1s 定时采用20 次 50ms定时中断的方案实现,变成流程图如图2 所示。图 2 软件流程图仿真结果:图 3 仿真结果源程序:#include unsigned char code led[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char i=0,j=0; //定义中断次数i ,秒表计数j 并赋初值void timer0()interrupt 1{ //T0中断声明 i++; if (i==20) { //20次中断, i 清零, j 加 1 i=0; j++; } if(j==60)j=0; P0=led[j/10]; //P0与 P2 是分别对应的led 显示数值 P2=led[j%10]; TH0=0x3c; //T0重装载计数初值 TL0=0xb0; } void main(void){ //主函数声明 TMOD=0X01; //T0定时 50ms 方式 1 初始化 TH0=0x3c; //T0赋计数初值 TL0=0xb0; P0=led[j/10]; //LED1 与 LED2显示“ 00” P2=led[j%10]; ET0=1; //启动 T0 EA=1; // 开启中断 TR0=1; while(1); // 进入无限循环} 实验小结:经过这次的上机实验,我掌握了中断定时/ 计数器的工作原理,熟悉C51 单片机的编程与调试方法,掌握Proteus ISIS模块的原理图绘图方法及及单片机系统仿真运行方法。同时在实现电子秒表显示器的功能时提高了程序的编写及调试能力,学会了用中断函数的程序进行仿真运行来实现电子秒表显示器的功能,把在课堂上学到的科学理论知识在实践中得以运用,使学习成为一件更加的有趣与生动的事。