文档详情

电子钟实验报告.c..doc

发布:2017-01-16约4.77千字共11页下载文档
文本预览下载声明
2011-2012学年上半年工程实训实验报告 ------电子钟制作 姓名:付攀 学号:8000609066 班级:计软092班 实验目的:通过编程与仿真,制作电子钟实物。电子钟实现时钟功能、时钟调整功能、秒表功能、闹钟功能。同时体会制作实物的过程,包括编程、仿真、和焊接。 实验器材: 器件名称 数量 单片机AT89C52 1 共阳极数码管(2个一排) 1 共阳极数码管(4个一排) 1 发光二极管 1 按键 4 晶振12M 1 30P电容 2 10μ电容 1 电阻200Ω 1 电阻5.1K 3 排阻200Ω*8 2 驱动芯片ULN2803 1 40脚IC插座 2 18脚IC插座 1 28脚IC插座 1 排座 180孔 插线 若干 按键说明:一个用于小时加,一个用于分钟加,一个用于功能切换,一个用于复位。 实验流程:总体步骤:1.编程与仿真 2.焊接制作实物。 流程说明:在protues仿真平台上画出仿真图,在keil平台上编写程序,编译运行生成hex文件,把hex文件灌入仿真图中,进行电子钟仿真。 仿真截图如下: 时钟显示 时间调整 秒表计时 闹钟设置 所编写的程序如下: #include reg51.h sbit thour=P1^0; sbit tmin=P1^1; sbit light=P1^2; sbit rst=P1^4; #define uchar unsigned char #define uint unsigned int int flag; uint count1,count2; uchar hour=0,min=0,sec=0; uchar msec=0,se=0,mi=0; uchar h=7,m=10,s=0; uchar table[30]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极数码管,分别表示0~9 void delay(uint k) //延时函数 { uint i,j; for(i=0;i120;i++) for(j=0;jk;j++); } void display() //时钟显示函数 { delay(1);P2=0xdf;P0=table[hour/10]; delay(1);P2=0xef;P0=table[hour%10]; delay(1);P2=0xf7;P0=table[min/10]; delay(1);P2=0xfb;P0=table[min%10]; delay(1);P2=0xfd;P0=table[sec/10]; delay(1);P2=0xfe;P0=table[sec%10]; } void settime() //时间调整函数,小时加和分加 { if (tmin==0) { delay(1); if (tmin==0) { min++; if(min=60) min=0; } while(tmin==0) display(); } if (thour==0) { delay(1); if (thour==0) { hour++; if(hour=24) hour=0; } while(thour==0) display(); } } void init1() //定时计数器0的初始化 { //TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1; } void display2() //秒表显示函数 { delay(1);P2=0xdf;P0=table[mi/10]; delay(1);P2=0xef;P0=table[mi%10]; delay(1);P2=0xf7;P0=table[se/10]; delay(1);P2=0xfb;P0=table[se%10]; delay(1);P2=0xfd;P0=table[msec/10]; delay(1);P2=0xfe;P0=table[msec%10]; } void init2() //定时计数
显示全部
相似文档