




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
静止/旋转显示的流程图:开始外部中断0中断定时1中断计算实际地址与参考地址的相对地址地址归0,并根据中断的次数调整定时器1的中断时间如果按下了旋转键,参考地址加1地址加1根据预先规定的在相应的地址循环显示时间设置时间的流程图:开始接受到遥控信息,触发外部中断1,记录每次中断时间,产生33次中断后结束接收完标志置0为加键,根据右键的指示相应位加为右键,年月日时分秒之间切换接收完标志置1接收完标志是否为1判断键位 是否循环显示时间旋转led控制代码:用到了遥控接收头控制显示画面,红外对管来控制转速。能够显示数字时钟,24个字符和各种标点符号,能够显示数字时钟,可以用遥控修改时间,切换显示,改变画面旋转的速度。#include#include#define uchar unsigned char#define uint unsigned int#define Width 14/一个字符宽度#define CodeEN 0x09/确定键#define CodeUP 0x15/加键#define CodeRight 0x40/右键#define CodeRoll 0x43/旋转#define CodeYT 0x47/时间和日期切换#define CodeSpeed 0x0d/速度#define NumFunc 4/功能数目#define NumCharChange 3/最多3位数字可调#define NumXLab 180/横坐标范围(0-179)/#define FlagSan 3/用于控制闪烁/*/*红外部分*uchar irtime=0;/用来解码计时uchar irdatatime8;/8位用户码编码时间uchar irnum=0;/数据位数uchar irdata;bit recok=0;/接收完成标志bit conok=0;/转换完成标志/*/*按键部分*bit keydown=0;/响应按键标志bit numkeyen=0;/确定键按下次数,功能选择游标,0为初始画面uchar numkeyright=0;/右键按下的次数,字符调整游标uchar flagyt=0;/时间和日期切换,0为时间,1为日期,2为星期/*/*时间部分*uint timecount=0;/标准时间计时uchar year=11,month=6,date=4,week=6;/0为星期日,1为星期1uchar hour=9,minite=0,second=0;/时分秒uchar weeka=31,weekb=12,weekc=30;/装星期的字符/*/*显示部分*uint xlab=0;/横坐标uint Tfstvlue=65236;/64936;/定时器时间,用来调整显示uchar begindisp=0;/开始显示的地址uchar speed=0;/转速bit flag=0;/闪烁控制bit stoptimer=1;/0表示时间停止走动bit flagroll=0;/控制旋转/*/*字符编码* uchar code charcodeWidth=0xc0,0xc0,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xc0,0xc0,0xff,0xff,0xff,/00xff,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xdf,0xdf,0xff,0xff,0xff,0xff,0xff,/10xc2,0xc2,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xd8,0xd8,0xff,0xff,0xff,/20xc0,0xc0,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xff,0xff,0xff,/30xfb,0xfb,0xfb,0xc0,0xc0,0xfb,0xfb,0xfb,0xfb,0xc3,0xc3,0xff,0xff,0xff,/40xd0,0xd0,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xc6,0xc6,0xff,0xff,0xff,/50xd8,0xd8,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xc0,0xc0,0xff,0xff,0xff,/60xcf,0xc7,0xd7,0xd3,0xdb,0xd9,0xdc,0xdc,0xde,0xdf,0xdf,0xff,0xff,0xff,/70xc0,0xc0,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xc0,0xc0,0xff,0xff,0xff,/80xc0,0xc0,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xc6,0xc6,0xff,0xff,0xff,/90xdf,0xdf,0xcf,0xef,0xe7,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe,0xfe,0xff,/,100xff,0xff,0xff,0xed,0xed,0xed,0xed,0xed,0xef,0xff,0xff,0xff,0xff,0xff,/:,110xe0,0xc0,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xc0,0xe0,0xff,0xff,0xff,/a,120xe5,0xc0,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xc0,0xc0,0xff,0xff,0xff,/b,130xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xc0,0xc0,0xff,0xff,0xff,/c,140xf1,0xe0,0xce,0xde,0xde,0xde,0xde,0xde,0xde,0xc0,0xc0,0xff,0xff,0xff,/d,150xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xc0,0xc0,0xff,0xff,0xff,/e,160xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xc0,0xc0,0xff,0xff,0xff,/f,170xdb,0xdb,0xd8,0xd8,0xda,0xda,0xde,0xde,0xde,0xc0,0xc0,0xff,0xff,0xff,/g,180xc0,0xc0,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xc0,0xc0,0xff,0xff,0xff,/h,190xff,0xff,0xff,0xde,0xc0,0xc0,0xde,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/i,200xdf,0xcf,0xc7,0xd3,0xf9,0xfc,0xfe,0xfe,0xfc,0xf9,0xfb,0xff,0xff,0xff,/j,210xff,0xde,0xde,0xce,0xec,0xe5,0xf1,0xfb,0xfb,0xc0,0xc0,0xff,0xff,0xff,/k,220xff,0xff,0xfe,0xfe,0xfe,0xfe,0xc0,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,/l,230xc0,0xc0,0xdf,0xdf,0xdf,0xc0,0xdf,0xdf,0xdf,0xc0,0xc0,0xff,0xff,0xff,/m,240xc0,0xc0,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0xc0,0xc0,0xff,0xff,0xff,0xff,/n,250xc0,0xc0,0xde,0xde,0xde,0xde,0xde,0xde,0xc0,0xc0,0xff,0xff,0xff,0xff,/o,260xc3,0xc3,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xc0,0xc0,0xff,0xff,0xff,/p,270xc1,0xc1,0xdd,0xd8,0xd8,0xda,0xda,0xda,0xde,0xc0,0xc0,0xff,0xff,0xff,/q,280xc2,0xc2,0xda,0xd8,0xd9,0xdb,0xdb,0xdb,0xdb,0xc0,0xc0,0xff,0xff,0xff,/r,290xdd,0xd8,0xd8,0xda,0xda,0xda,0xda,0xda,0xc2,0xc2,0xe6,0xff,0xff,0xff,/s,300xdf,0xdf,0xdf,0xdf,0xdf,0xc0,0xc0,0xdf,0xdf,0xdf,0xdf,0xff,0xff,0xff,/t,310xc1,0xc0,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xc0,0xc1,0xff,0xff,0xff,/u,320xdf,0xcf,0xe7,0xf3,0xf9,0xfc,0xf9,0xf3,0xe7,0xcf,0xdf,0xff,0xff,0xff,/v,330xc0,0xc0,0xfe,0xfe,0xfe,0xc0,0xfe,0xfe,0xfe,0xc0,0xc0,0xff,0xff,0xff,/w,340xde,0xde,0xcc,0xe5,0xf1,0xfb,0xf1,0xe5,0xcc,0xde,0xde,0xff,0xff,0xff,/x,350xdf,0xdf,0xcf,0xe7,0xf3,0xf8,0xf0,0xe7,0xcf,0xdf,0xdf,0xff,0xff,0xff,/y,360xce,0xce,0xc6,0xd6,0xd2,0xda,0xd8,0xdc,0xdc,0xff,0xff,0xff,0xff,0xff/z,37; uchar code SimTimerCode=0x00,/秒钟0x03,/分钟0x07,/时钟,20xfc,/一般,30xf8,/12点; uint CalDistance(uint x,uchar begin)/计算现在和初始点的位置 if(x=begin) return x-begin; else return x+180-begin; bit IsYeap() if(!(uint)2000+year)%4)&(uint)2000+year)%100)|!(uint)2000+year)%400) return 1; else return 0;uchar CalWeek()/计算星期 return (year+year/4+(uint)26*(month+1)/10+date-36)%7;void DispSimFace(uint add)/显示表盘 if(!add) P2=SimTimerCode4; else if(!(add%15) P2=SimTimerCode3; else P2=0x7e;void DisSimCursor(uint add)/显示指针 if(second*3=add) P1=SimTimerCode0; else if(minite*3=add) P1=SimTimerCode1; else if(hour%12)*15+minite/4=add) P1=SimTimerCode2; else P1=0xff;void DispSimTime(uint add)/显示模拟时钟 DispSimFace(add); DisSimCursor(add+90)%180);void CalWeekabc(uchar num)/占3个字符,显示星期 switch(num) case 0: weeka=25; weekb=32; weekc=30; break; /sun,30,32,25 case 1: weeka=25; weekb=26; weekc=24; break;/mon,24,26,25 case 2: weeka=16; weekb=32; weekc=31; break;/tue,31,32,16 case 3: weeka=15; weekb=16; weekc=34; break;/wed,34,16,15 case 4: weeka=32; weekb=19; weekc=31; break;/thu,31,19,32 case 5: weeka=20; weekb=29; weekc=17; break;/fri,17,29,20 case 6: default:/sat,30,12,31 weeka=31; weekb=12; weekc=30; void DispYMD(uint add) if(add=0&add=Width*3*numkeyright &add=Width&add=Width*3*numkeyright &add=Width*2&add=Width*3&add=Width*3*numkeyright &add=Width*4 & add=Width*3*numkeyright &add=Width*5 & add=Width*6 & add=Width*3*numkeyright &add=Width*7 & add=Width*3*numkeyright &add=Width*9 & add=Width*10 & add=Width*11 & add=0&add=Width*3*numkeyright &add=Width&add=Width*3*numkeyright &add=Width*2&add=Width*3&add=Width*3*numkeyright &add=Width*4&add=Width*3*numkeyright &add=Width*5&add=Width*6&add=Width*3*numkeyright &add=Width*7&add=Width*3*numkeyright &add=0 & add=Width & add=Width*2 & add=Width*3 & add=Width*4 & add=Width*5 & add=Width*6 & add=Width*7-1) P1=charcode34add-Width*6; else P1=0xff;void IrConversion()/解码转换程序 uchar j; for(j=0;j1; if(irdatatimej6) irdata=irdata|0x80; void MCUInitial() TMOD=0x12;/T1为方式1,T0为方式2 TH0=0x00; TL0=0x00;/255us中断一次 TH1=Tfstvlue/256;/定时初值5MS TL1=Tfstvlue%256; EA=1; ET0=1; ET1=1; EX0=1; EX1=1;/外部中断1,用来检测遥控 IT1=1;/跳变沿触发 IT0=0;/低电平触发 TR0=1; TR1=1;void Timer0_Int()interrupt 1 irtime+;/用来遥控解码计时 timecount+; if(timecount3920)/计时一秒 timecount=0; if(numkeyen) flag=!flag;/用于控制闪烁 if(stoptimer) second+; if(second59) second=0; minite+; if(minite59) minite=0; hour+; if(hour23) hour=0; date+; switch(month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(date31) date=1; month+; break; case 4: case 6: case 9: case 11: if(date30) date=1; month+; break; default: if(IsYeap()&date29)|(!IsYeap()&date28) date=1; month+; if(month12) month=1; year+; year%=100; week=CalWeek(); CalWeekabc(week); void Timer1_Int()interrupt 3 TH1=Tfstvlue/256;/定时初值5MS TL1=Tfstvlue%256; xlab+;/横坐标 if(xlab=90) EX0=1;/*防止多次中断void EX1_Int()interrupt 2 if(irtime32) irnum=0;/用来判断起始码 if(irnum16)&(irnum32) irnum=0; recok=1;/接收完毕 irtime=0;/时间清零void EX0_Int()interrupt 0 if(xlab=NumXLab)/*注意无符号数* Tfstvlue-=xlab-NumXLab;/校正显示 else Tfstvlue+=NumXLab-xlab;/校正显示 xlab=0; if(flagroll) begindisp+=speed+1; begindisp%=180; EX0=0;/防止多次中断void main() MCUInitial(); while(1) if(conok) if(irdata=CodeEN) numkeyen=!numkeyen; if(numkeyen) stoptimer=0;/调时模式,时间停止 else stoptimer=1;/非调时模式,时间走动 if(numkeyen&(irdata=CodeRight)/1为调时模式,在调时模式下选择调的对象 numkeyright+; numkeyright%=NumCharChange; if(numkeyen&(irdata=CodeUP)/在调时模式下加 /*处理程序* if(!flagyt) switch(numkeyright) case 0:second+; second%=60; break; case 1:minite+; minite%=60; break; default:hour+; hour%=24; else if(flagyt=1) switch(numkeyright) case 0:date+; switch(month) case 1: case 3: cas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年洛阳市文学艺术界联合会下属事业单位招才引智引进工作人员4名考试模拟试题及答案解析
- 定南县2025年公开补招基层就业公共服务岗位工作人员备考考试题库附答案解析
- 2025浙江嘉兴市海宁市海洲街道办事处招聘1人备考考试题库附答案解析
- 广丰区2024-2025学年第二学期六年级数学期末学业测评考试题目及答案
- 基孔肯雅热防控技术指南2025年版测试题含答案
- 新能源项目协议书
- 2025年电网监控值班员培训考试题附答案
- 2025年上海国家公务员行测考试真题及答案
- 九省联考模拟数学试题及答案
- 农产品营销推广策划完整方案
- 无痛分娩试题及答案
- 帮忙找工作协议书
- 转让账户协议书
- 锯床操作规程
- 服刑人员出监适应性教育
- 一故事一音标课件
- 2025年煤矿安全规程试题及答案
- 六年级数学口算与解决问题
- 住宅厨房卫生间排烟气系统建筑构造L18J905
- FZ∕T 61002-2019 化纤仿毛毛毯
- 乡村医生年度个人述职报告(2篇)
评论
0/150
提交评论