《(完整word版)基于STC89C52的数字电子钟设计.doc》由会员分享,可在线阅读,更多相关《(完整word版)基于STC89C52的数字电子钟设计.doc(14页珍藏版)》请在金锄头文库上搜索。
1、制作和调试(50分)设计报告(50分)评 定 等 级指 导 教 师湖州师范学院求真学院信息与工程系单片机应用系统设计总结报告题目:基于STC89C52的数字电子钟设计专 业 电子科学与技术 班 级 092835 班 姓 名 姚宇飞 学 号 09283524 指导教师 吴小红 万东辉 信息与工程系2011年4月14日14设计任务:1. 采用STC单片机和键盘,设置4位LED数码管显示的电子时钟;2. 上电时,显示12:00并且“:”间隔500ms闪烁,其中“:”代表秒功能;3. 具有闹钟设定,闹铃功能;4. 通过键盘可修改时间。发挥功能:1. 实现时钟整点“嘟”声提示功能;2. 实现秒表功能。秒
2、表具有计时开始,计时结束,及时复位等功能。总体设计:原理图中应该包括8052芯片,晶振复位系统,按键大概4个,蜂鸣器,数码管1. 首先分析数码管,此次课程设计的数码管为共阳极,所以低电平有效。且管脚分别为P14,P15,P16,P17;2. 蜂鸣器P32必须接低电平有效;3. 按键是一个矩阵按键,一定要进行键盘扫描,4*3型的管脚分别是P27,P26,P25,P24,P23,P22,P21,P20,在扫描的时候必须另P24接低电平有效。4. 晶振是12MHZ;还有电阻阻值详细见电路图设计流程图:走时时钟分修改时钟时修改闹钟分修改闹钟时修改走时 说明:状态的修改由按键1的按下的次数决定,时钟,闹
3、钟的调时用按键2和按键3,按键2调上,按键3调下,按键4用了返回走时状态。原理图:程序#include#include#define uint unsigned int#define uchar unsigned char/按键端口定义sbit key1=P20;/定义按键-功能键sbit key2=P21;/按键定义-增加键sbit key3=P22;/按键定义-减少键sbit key4=P23;/按键定义-确定键sbit beep=P24;/蜂鸣器端口sbit speaker=P32;/数码管端口sbit com1=P14;sbit com2=P15;sbit com3=P16;sbit
4、com4=P17;/全局变量定义uint z=0;uchar flag=1;uchar temp=0;uchar num1=0,num4=0;/设置按键按下次数uchar speaker_num;uchar second_miao_ting;uchar second_min_ting;uchar second_miao=0;uchar second_min=0;uchar clk_hour=12,clk_min=0,clk_miao=0;uchar alm_hour=0,alm_min=0;uchar count=0,count1=0;uchar T0_int_nums;/T0中断次数ucha
5、r code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f;/数码管正码uchar code table1=0xc0,0xcf,0xa4,0x86,0x8b,0x92,0x90,0xc7,0x80,0x82,0x7f;/数码管倒码/void jinwei();void zhengdian();/延时程序void delayms(uint xms) uint i,j; for(i=xms;i0;i-); for(j=1060;j0;j-);/显示子程序void display() if(num1=0&num4=0) if
6、(count 50) com4=0;com3=1;com2=1;com1=1;/显示时钟时的十位 P0=tableclk_hour/10; delayms(1); com4=1;com3=0;com2=1;com1=1;/显示时钟时的个位 P0=tableclk_hour%10; delayms(1); com4=1;com3=1;com2=0;com1=1;/显示时钟分的十位 P0=table1clk_min/10; delayms(1); com4=1;com3=1;com2=1;com1=0;/显示始终分的个位 P0=table1clk_min%10; delayms(1); else
7、com4=0;com3=1;com2=1;com1=1; P0=tableclk_hour/10; delayms(1); com4=1;com3=0;com2=1;com1=1; P0=tableclk_hour%10&0x7f; delayms(1); com4=1;com3=1;com2=0;com1=1; P0=table1clk_min/10&0x7f; delayms(1); com4=1;com3=1;com2=1;com1=0; P0=table1clk_min%10; delayms(1); elseif(num1!=0) if(num1=1) if(count50) com
8、4=0;com3=1;com2=1;com1=1; P0=tableclk_hour/10; delayms(1); com4=1;com3=0;com2=1;com1=1; P0=tableclk_hour%10; delayms(1); com4=1;com3=1;com2=0;com1=1; P0=table1clk_min/10; delayms(1); com4=1;com3=1;com2=1;com1=0; P0=table1clk_min%10; delayms(1); else com4=0;com3=1;com2=1;com1=1; P0=tableclk_hour/10;
9、delayms(1); com4=1;com3=0;com2=1;com1=1; P0=tableclk_hour%10; delayms(1); com4=1;com3=1;com2=0;com1=1; P0=0x7f; delayms(1); com4=1;com3=1;com2=1;com1=1; P0=0x7f; delayms(1); if(num1=2) if(count50) com4=0;com3=1;com2=1;com1=1; P0=tableclk_hour/10; delayms(1); com4=1;com3=0;com2=1;com1=1; P0=tableclk_
10、hour%10; delayms(1); com4=1;com3=1;com2=0;com1=1; P0=table1clk_min/10; delayms(1); com4=1;com3=1;com2=1;com1=0; P0=table1clk_min%10; delayms(1); else com4=1;com3=1;com2=1;com1=1; P0=0x7f; delayms(1); com4=1;com3=0;com2=1;com1=1; P0=0x7f; delayms(1); com4=1;com3=1;com2=0;com1=1; P0=table1clk_min/10;
11、delayms(1); com4=1;com3=1;com2=1;com1=0; P0=table1clk_min%10; delayms(1); if(num1=3) if(count50) com4=0;com3=1;com2=1;com1=1; P0=tablealm_hour/10; delayms(1); com4=1;com3=0;com2=1;com1=1; P0=tablealm_hour%10; delayms(1); com4=1;com3=1;com2=0;com1=1; P0=table1alm_min/10; delayms(1); P0=table1alm_min%10; com4=1;com3=1;com2=1;com1=0; delayms(1); else com4=0;com3=1;com2=1;com1=1; P0=tablealm_hour/10; delayms(1); com4=1;com3=0;com2=1;com1=1; P0=tablealm_hour%10&0x7f; delayms(1); com4=1;com3=1;com2=0;com1=1; P0=0x7f; delayms(1); P0=table1alm_min%10; com4=1;com3=1;com2=1;c