版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机应用系统设计说明书
设计题目:基于Proteus的多功能数字钟设计一、系统设计小组工作分工序号成员工作分工1查找相关资料、软件测试2硬件设计3系统的整体设计汇总二.系统设计目标(主要内容:所设计系统在所具有的功能及在实际应用领域中的意义)PROTEUS与Keil联调开发51系列单片机应用系统的方法以及基于PROTEUS环境下的带闹铃功能的时钟的仿真设计。将KeilC开发的程序用Proteus设计的仿真电路中交互运行调试的方法,设计LCD显示时钟。在基于PROTEUS环境下的带闹铃功能的时钟的仿真设计中,使用AT89C51芯片自带的定时器实现时钟功能,然后显示在LCD显示屏上。通过在Proteus环境下的实验证明,在PROTEUS环境下可以完成单片机系统的硬件设计和软件调试,测试系统的性能,在实际应用中可以降低设计成本,缩短开发周期,提高效率。摘要本文介绍了PROTEUS与Keil联调开发51系列单片机应用系统的方法以及基于PROTEUS环境下的带闹铃功能的时钟的仿真设计。将KeilC开发的程序用Proteus设计的仿真电路中交互运行调试的方法,设计LCD显示时钟。在基于PROTEUS环境下的带闹铃功能的时钟的仿真设计中,使用AT89C51芯片自带的定时器实现时钟功能,然后显示在LCD显示屏上。通过在Proteus环境下的实验证明,在PROTEUS环境下可以完成单片机系统的硬件设计和软件调试,测试系统的性能,在实际应用中可以降低设计成本,缩短开发周期,提高效率。关键词:Proteus;仿真;单片机;时钟;闹钟目录23:59:50";ucharcodebmp[]={0x0e,0x11,0x1f,0x00,0x0a,0x00,0x00,0x00,0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00};//闹铃符号voidwcmd(ucharcmd){ lcden=0; lcdrs=0; PORT=cmd; delay(5); lcden=1; delay(5); lcden=0;}voidwdata(uchardat){ lcden=0; lcdrs=1; PORT=dat; delay(5); lcden=1; delay(5); lcden=0;}voidgoxy(ucharx,uchary){ if(x==1) wcmd(0x80+y); else wcmd(0x80+0x40+y);}voiddisp_str(uchar*str){ while(*str) { wdata(*str); str++; }}voiddisp_bmp(ucharx,uchary,uchardat){ goxy(x,y); wdata(dat);}voidlcd_init(){ uchari; wcmd(0x38);//显示模式设置:16*2,5*7,8位数据接口 wcmd(0x0c);//开显示,不显光标,光标不闪烁 wcmd(0x06);//地址自动加1 wcmd(0x01);//清屏 wcmd(0x40);//写CGRAMfor(i=0;i<16;i++) wdata(bmp[i]); goxy(2,0); disp_str(table); }voidtimer0_init(){ TMOD=0X01; TH0=0x4c; TL0=0; EA=1; ET0=1; TR0=1;}voidtimer0()interrupt1{ TH0=0x4c; TL0=0; tcnt++; if(tcnt==20) { tcnt=0; inc_second(); disp_sfm(2,4,hour); disp_sfm(2,7,minute); disp_sfm(2,10,second); wdata(''); wdata(''); wdata(''); wdata(''); wdata(''); }}inc_minute_nop(){ minute++; if(minute==60) minute=0;}voidinc_second(){ second++; if(second==60) { second=0; inc_minute(); } if(second%2)//隔一秒":"闪一次 {goxy(2,9);wdata('');} else {goxy(2,9);wdata(':');}}voidinc_minute(){ minute++; if(minute==60) { minute=0; inc_hour(); }}voidinc_hour(){ hour++; if(hour==24) hour=0; }voidinc_nlminute(){ nlminute++; if(nlminute==60) nlminute=0;}voidinc_nlhour(){ nlhour++; if(nlhour==24) nlhour=0;}voiddisp_sfm(ucharx,uchary,uchardat){ ucharshi,ge; shi=dat/10+'0'; ge=dat%10+'0';//加'0'表示算出的数要加上0的ascII码才能显示出想要的数 goxy(x,y); wdata(shi); wdata(ge);}voidled_apm(){ if(hour<12) { lpm=1; lam=0; goxy(2,0); wdata('A'); wdata('M'); } else { lam=1; lpm=0; goxy(2,0); wdata('P'); wdata('M'); }}voidtzsjfun(){ if(nlflag==0)//若闹铃没按下,则可设置时间,否则无效 { if(setsj==0) { delay(2); while(!setsj); delay(2); if(setsj==1)//表示按下了设置时间,且已经消抖 { sj++; if(sj==1) TR0=0;//按下1次停止计时 if(sj==2) //第2次按下表示设置完毕 { TR0=1; sj=0; } } } if(sj)//要调整时间 { goxy(2,9); wdata(':'); if(ts==0) { delay(2); while(!ts); delay(2); if(ts==1) tzflag=1; } if(tf==0) { delay(2); while(!tf); delay(2); if(tf==1) tzflag=2; } } if(tzflag) { if(tzflag==1) { tzflag=0; inc_hour(); disp_sfm(2,4,hour); } if(tzflag==2) { tzflag=0; inc_minute_nop(); disp_sfm(2,7,minute); } } } }voidnl0(){ nlhour=0; nlminute=0; disp_sfm(1,4,nlhour); wdata(':'); disp_sfm(1,7,nlminute); }voidnldisappear(){ uchari; goxy(1,0); for(i=0;i<9;i++) wdata(''); delay(2);}voidtznlfun(){ if(sj==0)//若设置时间没按下,则可设置闹铃,否则无效 { if(wdnum==0) { if(setnl==0) { while(!setnl); delay(5); if(setnl==1) { nlflag++; if(nlflag==1) nl0(); if(nlflag==2)//按下1次闹铃键,设置闹铃;按下2次,设置完毕; { nlflag=0; nldisappear(); } } } if(nlflag)//要设置闹铃 { if(nlhour<12) { goxy(1,0); wdata('A'); wdata('M'); } else { goxy(1,0); wdata('P'); wdata('M'); } if(ts==0) { while(!ts); delay(5); if(ts==1) tznl=1; } if(tf==0) { while(!tf); delay(5); if(tf==1) tznl=2; } } if(tznl) { if(tznl==1) { tznl=0; inc_nlhour(); disp_sfm(1,4,nlhour); } if(tznl==2) { tznl=0; inc_nlminute(); disp_sfm(1,7,nlminute); } } } }}voidkgnlfun(){ if(knl==0) { while(!knl); delay(5); if(knl==1) { nldk=1; disp_bmp(1,15,0x00); } } if(gnl==0) { while(!gnl); delay(5); if(gnl==1) { nldk=2; goxy(1,15); wdata(''); } }}voidnljx(){ if(nldk==1) { goxy(1,15); wdata(0x00); if((nlhour==hour)&&(nlminute==minute)) { lnl=0; beep(); } else { lnl=1; fm=1; } } else { goxy(1,15); wdata(''); nldk=0; lnl=1; fm=1; } }voidkeyscan(){ tzsjfun(); tznlfun(); kgnlfun(); nljx();voiddelay2(){ uintx; for(x=65;x>0;x--); }voidbeep(){ uintx; for(x=20;x>0;x--) { fm=0; delay2(); fm=1; delay2(); }}voidwbzd_init(){ EA=1; EX0=1; ET0=1;//下降沿触发}voidwbzd0()interrupt0{ hwnum++; if(hwnum==1) nldk=0; else { hwnum=0; nldk=1; }}voidmain(){ hour=23;minute=59;second=50; timer0_init(); lcd_init(); wbzd_init(); while(1) { led_apm(); keyscan(); }} 个人体会通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026医疗耗材集中带量采购政策对创新产品研发影响分析报告
- 2026远程办公软件用户行为习惯与市场竞争格局分析报告
- 2026微生物菌剂在农业种植中的应用效果研究
- 2026氢能源关键技术发展态势分析及产业化前景研究计划
- 2026金融众筹行业市场竞争格局分析及投资前景规划研究报告
- 2026中国液体化工物流新型包装材料研发与应用前景报告
- 2026汽车主动安全系统激光雷达芯片技术路线需求分析现状及融资规划深度报告书
- 2026中国光刻胶行业市场集中度变化与竞争格局重塑
- 2026电气装备电线电缆行业产品认证与市场准入分析报告
- 2026中国疫苗产业园区建设与区域集群发展报告
- 2027年湖北省高考数学模拟试卷(含答案解析)
- 工业互联网技术赋能制造业智能化转型的系统集成路径与关键使能因素
- 铝方通吊顶施工常见问题处理方案
- 坠床跌倒的预防与护理标准
- 初中数学八年级上册全等三角形同步专项练习题含答案
- 2025年音乐视唱模拟真题及答案
- 2025年压疮应急预案演练脚本范文
- 2025审计技能大赛试题及答案
- JJF(浙) 1144-2018 交流高压试验装置校准规范
- 第十八届“振兴杯”全国青年职业技能大赛(钳工赛项)决赛试题库-下(判断题)
- 2024版2024年《中国旅游文化》教案完整版
评论
0/150
提交评论