版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于PSOC3的自动报时系统.功能:可以调时、计时。显示日期,时间。还具有闹钟功能。整点报时原理图如下:引脚分配:P2是LCD的接口。Pin_3Pin_4是两个按钮。Pin_1是蜂鸣器。Mian.c的程序如下:#include uint8 StatusRegister;uint8 InterruptCnt;uint8 secl,sech,minl,minh,houl,houh,a_secl=9,a_sech=5,a_minl=9,a_minh=5,a_houl=3,a_houh;uint16 sec=50,min=59,hou=3,day=1,mon=1,yea=2013,a_sec=0,a_
2、min=0,a_hou=0;uint8 my_mode=0;flag=0;char*alarmclock_state=OFF;uint8 alarmclock_other_flag=0;uint8 alarmclock_flag1=0,alarmclock_flag2=0,alarmclock_flag3=0; uint8 blank_flag=0;uint8 test_flag=0;uint8 mode0_flag=0;uint8 baoshi_flag=0;uint8 baoshi_cishu=0;uint8 cnt=0;uint8 alarm_bee_flag=0;CY_ISR(TT1)
3、 test_flag+; my_mode=0; if(alarm_bee_flag=1) Pin_1_Write(0); alarm_bee_flag=0; alarmclock_flag2=0; alarmclock_flag3=0; alarmclock_state=OFF; mode0_flag=0;CY_ISR(MY_I) if(a_houh=(hou/10)&(a_houl=(hou%10)&(a_minh=(min/10)&(a_minl=(min%10)&(a_sech=(sec/10)&(a_secl=(sec%10)&(alarmclock_flag1=1) alarm_be
4、e_flag=1; if(alarm_bee_flag=1) Pin_1_Write(1); if(baoshi_flag=1) cnt+; if(cnt2) Pin_1_Write(0); if(cnt=4) cnt=0; baoshi_cishu-;if(baoshi_cishu=0)baoshi_flag=0; else baoshi_flag=0; StatusRegister = Timer_1_ReadStatusRegister(); InterruptCnt+; if(InterruptCnt=2) InterruptCnt=0; sec+;if(sec=60) sec=0;
5、min+; if(min=60) hou+; min=0; if(hou=24) hou=0; day+; if(day=29) if(yea/4=0&yea/100!=0)|(yea/400=0)&(mon=2) day=0; mon+; if(day=31) if(mon=1)|(mon=3)|(mon=5)|(mon=7)|(mon=8)|(mon=10)|(mon=12) day=0; mon+; if(day=32) day=0; mon+; if(mon=13) yea+; if(min=0)&(sec=0) baoshi_flag=1; baoshi_cishu=hou; CY_
6、ISR(B_b) if(my_mode=0) mode0_flag+; if(mode0_flag=15) mode0_flag=0; if(my_mode=1) if(alarmclock_flag3=0) alarmclock_flag1+; if(alarmclock_flag1=2) alarmclock_flag1=0; if(alarmclock_flag1=1) alarmclock_flag2+; if(alarmclock_flag2=2) alarmclock_flag2=0; else switch(alarmclock_flag3) case 1:a_houh+;if(
7、a_houh=3)a_houh=0;break; case 2:a_houl+;if(a_houl=10)a_houl=0;break;case 3:a_minh+;if(a_minh=6)a_minh=0;break;case 4:a_minl+;if(a_minl=10)a_minl=0;break;case 5:a_sech+;if(a_sech=6)a_sech=0;break;case 6:a_secl+;if(a_secl=10)a_secl=0;break;default:break; CY_ISR(B_a) if(my_mode=0)&(mode0_flag!=0) switc
8、h(mode0_flag) case 14:hou=hou+10;if(hou24)hou=0;break;case 13:hou+;if(hou24)hou=0;break;case 12:min=min+10;if(min=60)min=0;break;case 11:min+;if(min=60)min=0;break;case 10:sec=sec+10;if(sec=60)sec=0;break;case 9:sec+;if(sec=60)sec=0;break;case 8:yea=yea+1000;if(yea=10000)yea=0;break;case 7:yea=yea+1
9、00;break;case 6:yea=yea+10;break;case 5:yea=yea+;break;case 4:mon=mon+10;break;case 3:mon+;break;case 2:day=day+10;break;case 1:day+;break;default:break; if(alarmclock_flag2=0)&(mode0_flag=0) my_mode=my_mode+1; if(my_mode=2) my_mode=0; if(alarmclock_flag2=1) alarmclock_flag3+; if(alarmclock_flag3=7)
10、 alarmclock_flag3=0; void main() CyGlobalIntEnable;ButtonISR_Start();ButtonISR_Disable();ButtonISR1_Start();ButtonISR1_Disable(); TimerISR_Start(); TimerISR_Disable();TimerISR_1_Start(); TimerISR_1_Disable();ButtonISR_SetVector(B_a);ButtonISR_Enable();ButtonISR1_SetVector(B_b);ButtonISR1_Enable(); T
11、imerISR_SetVector(MY_I); TimerISR_Enable();TimerISR_1_SetVector(TT1); TimerISR_1_Enable(); clock_1_Enable(); clock_2_Enable(); Timer_1_Start();Timer_2_Start(); LCD_Start(); Pin_1_Write(0); for(;) LCD_Position(0,15); LCD_PrintNumber(cnt); switch(my_mode)case 0: if(mode0_flag=0) LCD_Position(0,0); LCD
12、_PrintString(Time:); LCD_Position(0,5); LCD_PrintString( ); LCD_Position(0,6); LCD_PrintNumber(hou/10); LCD_Position(0,7); LCD_PrintNumber(hou%10); LCD_Position(0,8); LCD_PrintString(-); LCD_Position(0,9); LCD_PrintNumber(min/10); LCD_Position(0,10); LCD_PrintNumber(min%10); LCD_Position(0,11); LCD_
13、PrintString(-); LCD_Position(0,12); LCD_PrintNumber(sec/10); LCD_Position(0,13); LCD_PrintNumber(sec%10); LCD_Position(0,14); LCD_PrintString( ); LCD_Position(1,0); LCD_PrintString(Date:); LCD_Position(1,5); LCD_PrintString( ); LCD_Position(1,6); LCD_PrintNumber(yea/1000); LCD_Position(1,7);LCD_Prin
14、tNumber(yea%1000)/100);LCD_Position(1,8);LCD_PrintNumber(yea%1000)%100)/10);LCD_Position(1,9);LCD_PrintNumber(yea%1000)%100)%10); LCD_PrintString(-); LCD_Position(1,11); LCD_PrintNumber(mon/10); LCD_Position(1,12); LCD_PrintNumber(mon%10); LCD_Position(1,13); LCD_PrintString(-); LCD_Position(1,15);
15、LCD_PrintString( ); LCD_Position(1,14); LCD_PrintNumber(day/10); LCD_Position(1,15); LCD_PrintNumber(day%10); if(mode0_flag=14)LCD_Position(0,0); LCD_PrintString(Time:); LCD_Position(0,5); LCD_PrintString( ); LCD_Position(0,6);if(InterruptCnt=0)LCD_PrintString( );else LCD_PrintNumber(hou/10); LCD_Po
16、sition(0,7); LCD_PrintNumber(hou%10); LCD_Position(0,8); LCD_PrintString(-); LCD_Position(0,9); LCD_PrintNumber(min/10); LCD_Position(0,10); LCD_PrintNumber(min%10); LCD_Position(0,11); LCD_PrintString(-); LCD_Position(0,12); LCD_PrintNumber(sec/10); LCD_Position(0,13); LCD_PrintNumber(sec%10); LCD_
17、Position(0,14); LCD_PrintString( ); LCD_Position(1,0); LCD_PrintString(Date:); LCD_Position(1,5); LCD_PrintString( ); LCD_Position(1,6); LCD_PrintNumber(yea/1000); LCD_Position(1,7);LCD_PrintNumber(yea%1000)/100);LCD_Position(1,8);LCD_PrintNumber(yea%1000)%100)/10);LCD_Position(1,9);LCD_PrintNumber(
18、yea%1000)%100)%10); LCD_PrintString(-); LCD_Position(1,11); LCD_PrintNumber(mon/10); LCD_Position(1,12); LCD_PrintNumber(mon%10); LCD_Position(1,13); LCD_PrintString(-); LCD_Position(1,15); LCD_PrintString( ); LCD_Position(1,14); LCD_PrintNumber(day/10); LCD_Position(1,15); LCD_PrintNumber(day%10);i
19、f(mode0_flag=13)LCD_Position(0,0); LCD_PrintString(Time:); LCD_Position(0,5); LCD_PrintString( ); LCD_PrintString( );LCD_Position(0,6); LCD_PrintNumber(hou/10); LCD_Position(0,7);if(InterruptCnt=0)LCD_PrintString( );else LCD_PrintNumber(hou%10); LCD_Position(0,8); LCD_PrintString(-); LCD_Position(0,
20、9); LCD_PrintNumber(min/10); LCD_Position(0,10); LCD_PrintNumber(min%10); LCD_Position(0,11); LCD_PrintString(-); LCD_Position(0,12); LCD_PrintNumber(sec/10); LCD_Position(0,13); LCD_PrintNumber(sec%10); LCD_Position(0,14); LCD_PrintString( ); LCD_Position(1,0); LCD_PrintString(Date:); LCD_Position(
21、1,5); LCD_PrintString( ); LCD_Position(1,6); LCD_PrintNumber(yea/1000); LCD_Position(1,7);LCD_PrintNumber(yea%1000)/100);LCD_Position(1,8);LCD_PrintNumber(yea%1000)%100)/10);LCD_Position(1,9);LCD_PrintNumber(yea%1000)%100)%10); LCD_PrintString(-); LCD_Position(1,11); LCD_PrintNumber(mon/10); LCD_Pos
22、ition(1,12); LCD_PrintNumber(mon%10); LCD_Position(1,13); LCD_PrintString(-); LCD_Position(1,15); LCD_PrintString( ); LCD_Position(1,14); LCD_PrintNumber(day/10); LCD_Position(1,15); LCD_PrintNumber(day%10); if(mode0_flag=12)LCD_Position(0,0); LCD_PrintString(Time:); LCD_Position(0,5); LCD_PrintStri
23、ng( ); LCD_PrintString( );LCD_Position(0,6); LCD_PrintNumber(hou/10); LCD_Position(0,7);LCD_PrintNumber(hou%10); LCD_Position(0,8); LCD_PrintString(-); LCD_Position(0,9);if(InterruptCnt=0)LCD_PrintString( );else LCD_PrintNumber(min/10); LCD_Position(0,10); LCD_PrintNumber(min%10); LCD_Position(0,11)
24、; LCD_PrintString(-); LCD_Position(0,12); LCD_PrintNumber(sec/10); LCD_Position(0,13); LCD_PrintNumber(sec%10); LCD_Position(0,14); LCD_PrintString( ); LCD_Position(1,0); LCD_PrintString(Date:); LCD_Position(1,5); LCD_PrintString( ); LCD_Position(1,6); LCD_PrintNumber(yea/1000); LCD_Position(1,7);LC
25、D_PrintNumber(yea%1000)/100);LCD_Position(1,8);LCD_PrintNumber(yea%1000)%100)/10);LCD_Position(1,9);LCD_PrintNumber(yea%1000)%100)%10); LCD_PrintString(-); LCD_Position(1,11); LCD_PrintNumber(mon/10); LCD_Position(1,12); LCD_PrintNumber(mon%10); LCD_Position(1,13); LCD_PrintString(-); LCD_Position(1
26、,15); LCD_PrintString( ); LCD_Position(1,14); LCD_PrintNumber(day/10); LCD_Position(1,15); LCD_PrintNumber(day%10);if(mode0_flag=11)LCD_Position(0,0); LCD_PrintString(Time:); LCD_Position(0,5); LCD_PrintString( ); LCD_PrintString( );LCD_Position(0,6); LCD_PrintNumber(hou/10); LCD_Position(0,7);LCD_P
27、rintNumber(hou%10); LCD_Position(0,8); LCD_PrintString(-); LCD_Position(0,9); LCD_PrintNumber(min/10); LCD_Position(0,10);if(InterruptCnt=0)LCD_PrintString( );else LCD_PrintNumber(min%10); LCD_Position(0,11); LCD_PrintString(-); LCD_Position(0,12); LCD_PrintNumber(sec/10); LCD_Position(0,13); LCD_Pr
28、intNumber(sec%10); LCD_Position(0,14); LCD_PrintString( ); LCD_Position(1,0); LCD_PrintString(Date:); LCD_Position(1,5); LCD_PrintString( ); LCD_Position(1,6); LCD_PrintNumber(yea/1000); LCD_Position(1,7);LCD_PrintNumber(yea%1000)/100);LCD_Position(1,8);LCD_PrintNumber(yea%1000)%100)/10);LCD_Positio
29、n(1,9);LCD_PrintNumber(yea%1000)%100)%10); LCD_PrintString(-); LCD_Position(1,11); LCD_PrintNumber(mon/10); LCD_Position(1,12); LCD_PrintNumber(mon%10); LCD_Position(1,13); LCD_PrintString(-); LCD_Position(1,15); LCD_PrintString( ); LCD_Position(1,14); LCD_PrintNumber(day/10); LCD_Position(1,15); LC
30、D_PrintNumber(day%10);if(mode0_flag=10)LCD_Position(0,0); LCD_PrintString(Time:); LCD_Position(0,5); LCD_PrintString( ); LCD_PrintString( );LCD_Position(0,6); LCD_PrintNumber(hou/10); LCD_Position(0,7);LCD_PrintNumber(hou%10); LCD_Position(0,8); LCD_PrintString(-); LCD_Position(0,9); LCD_PrintNumber
31、(min/10); LCD_Position(0,10); LCD_PrintNumber(min%10); LCD_Position(0,11); LCD_PrintString(-); LCD_Position(0,12);if(InterruptCnt=0)LCD_PrintString( );else LCD_PrintNumber(sec/10); LCD_Position(0,13); LCD_PrintNumber(sec%10); LCD_Position(0,14); LCD_PrintString( ); LCD_Position(1,0); LCD_PrintString
32、(Date:); LCD_Position(1,5); LCD_PrintString( ); LCD_Position(1,6); LCD_PrintNumber(yea/1000); LCD_Position(1,7);LCD_PrintNumber(yea%1000)/100);LCD_Position(1,8);LCD_PrintNumber(yea%1000)%100)/10);LCD_Position(1,9);LCD_PrintNumber(yea%1000)%100)%10); LCD_PrintString(-); LCD_Position(1,11); LCD_PrintN
33、umber(mon/10); LCD_Position(1,12); LCD_PrintNumber(mon%10); LCD_Position(1,13); LCD_PrintString(-); LCD_Position(1,15); LCD_PrintString( ); LCD_Position(1,14); LCD_PrintNumber(day/10); LCD_Position(1,15); LCD_PrintNumber(day%10); if(mode0_flag=9)LCD_Position(0,0); LCD_PrintString(Time:); LCD_Position(0,5); LCD_PrintString( ); LCD_PrintString( );LCD_Position(0,6); LCD_PrintNumber(hou/10); LCD_Position(0,7);LCD_PrintNumber(hou%10); LCD_Position(0,8); LCD_PrintString(-);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年小学成语故事《对簿公堂》成语科普完整教案
- 审计师(初级)审计理论与实务考前押题卷含答案
- 执业药师(西药)药事管理与法规模拟试卷(含答案解析)
- 初级护师相关专业知识模拟试卷及高频考点总结
- 3 沟通与合作能力
- 2027年工程合同残值二篇
- 2025年看美食节目学法语AI对话教学
- 二级综合医院评审自评报告
- 美甲美睫行业技师薪酬协议2026
- 洗浴中心顾客会员积分兑换协议
- 急性胃炎临床路径(2017年县医院适用版)
- 六、果实品质形成-课件
- 移动通信网络部署与运维(初级)PPT完整全套教学课件
- 水生生物学绪论HJJ
- GB/T 35980-2018机械产品再制造工程设计导则
- GB/T 22848-2009针织成品布
- GB/T 13576.1-1992锯齿形(3°、30°)螺纹牙型
- 大学科技英语翻译教程 边立红 ISBN978-7-5663-1529-8 PPT
- 学校体育科研方法
- 深圳市企业职工养老保险死亡待遇结算申请表-空表
- 江苏苏州张家港经开区(杨舍镇)学校公益性岗位招考聘用(全考点)模拟卷含答案
评论
0/150
提交评论