已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于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_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) 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_bee_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; 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_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(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) switch(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+100;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) 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(); TimerISR_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_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_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_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,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_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_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_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,15); LCD_PrintString( ); LCD_Position(1,14); LCD_PrintNumber(day/10); LCD_Position(1,15); LCD_PrintNumber(day%10);if(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,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(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_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=12)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);if(InterruptCnt=0)LCD_PrintString( );else 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(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_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=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_PrintNumber(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_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_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,15); LCD_PrintString( ); LCD_Position(1,14); LCD_PrintNumber(day/10); LCD_Position(1,15); LCD_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(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(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_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); 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年二级建造师之二建水利水电实务考试题库300道含答案【达标题】
- 2026年机械员之机械员基础知识考试题库300道附答案【黄金题型】
- 2026年一级注册建筑师之建筑物理与建筑设备考试题库300道及答案(网校专用)
- 2025年无刷直流电机试题及答案
- 2025年国家网络安全知识竞赛题库及参考答案(培优)
- 2026年安全员之A证考试题库500道含答案【培优】
- 2026年国家电网招聘之通信类考试题库300道及完整答案(考点梳理)
- 2026年企业人力资源管理师之四级人力资源管理师考试题库300道含答案【模拟题】
- 2025年高三化学高考化学科普视频制作模拟试题
- 2026年一级建造师之一建铁路工程实务考试题库300道含答案【预热题】
- 第11课《山地回忆》公开课一等奖创新教学设计
- 整本书阅读《平凡的世界》(教学课件)
- DB11-T 1448-2017 城市轨道交通工程资料管理规程
- 三年级数学小学数学答题卡模板
- 《巴托克钢琴作品《小宇宙》的作曲技法分析》
- GB/T 25738-2024核电厂电动机调试技术导则
- GB/T 8574-2024复合肥料中钾含量的测定
- 湖北工程学院《西方哲学史》2023-2024学年第一学期期末试卷
- 2024购物中心场地租赁合同
- (完整版)兽药GSP考试试卷及答案 - 副本
- 2024年黑龙江省哈尔滨市中考英语试题卷(含答案及解析)
评论
0/150
提交评论