版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一部分设计任务和要求单片机课程设计内容…………………2单片机课程设计要求…………………2系统运行流程…………2第二部分设计方案总体设计方案说明……………………2系统方框图……………3系统流程图……………3第三部分主要器材及基本简介主要器材………………4主要器材简介…………4第四部分系统硬件设计最小系统LCD显示电路键盘输入电路…………7蜂鸣器和LED灯电路 7第五部分仿真电路图与仿真结果………………8第六部分课程设计总结…………8第七部分参考文献………………9附录A实物图附录B系统源程序第一部分设计任务和要求单片机课程设计内容利用STC89C51单片机和LCD1602电子显示屏实现电子时钟,可由按键进行调时和12/24小时切换。单片机课程设计要求1.能实现年、月、日、星期、时、分、秒的显示;2.能实现调时功能;3.能实现12/24小时制切换;4.能实现8:00—22:00整点报时功能。系统运行流程程序首先进行初始化,在主程序的循环程序中首先调用数据处理程序,然后调用显示程序,在判断是否有按键按下。若有按键按下则转到相应的功能程序执行,没有按键按下则调用时间程序。若没到则循环执行。计时中断服务程序完成秒的计时及向分钟、小时的进位和星期、年、月、日的进位。调时闪烁中断服务程序用于被调单元的闪烁显示。调时程序用于调整分钟、小时、星期、日、月、年,主要由主函数组成通过对相关子程序的调用,如图所示。实现了对时间的设置和修改、LCD显示数值等主要功能。相关的调整是靠对功能键的判断来实现的。第二部分设计方案总体设计方案说明1.程序设计及调试根据单片机课程设计内容和要求,完成Protues仿真电路的设计和用Keil软件编写程序,并进行仿真模拟调试。2.硬件焊接及调试根据仿真电路图完成电路板的焊接,并进行软、硬件的调试,只到达到预期目的。3.后期处理对设计过程进行总结,完成设计报告。单片机系统方框图单片机系统流程图键盘扫描流程图主流程图count=20?分二6cl?打开定时器T。分加1,秒清零秒加1时加count=20?分二6cl?打开定时器T。分加1,秒清零秒加1时加1,分清零建期置1星期加1月加1,天置1天加1年加1,月置口笄清零时钟流程图」一Pl.D UCC'Pl.l PO.O」一Pl.D UCC'Pl.l PO.OPL2 PO.LPI3 PO.2PI4 PO3PIS P04户1.巾 加5PIT FO6RSWFT P07P3.MLXD EAJVPPP31/7JX'PS.lSlTfl 串P土的Tl P27P3J/T0 P2.6P3.5/T1 P2.5PS.sSvR 国.4PS.Zftb P25J4TAL1 P2.2XTAL3 P2IVSS P1Q2如3然上375美e骼7SI8339.嬖—1U311]和工2S—121314151Qr17耳2223写TC89C51引的图钟频1000第三部分主要器件及简介主要器件STC89c51单片机;LCD1602液晶显示屏;主要器件简介STC89c51单片机简介STC89C51是采用8051核的ISP(InSystemProgramming)在系统可编程芯片,最高工作时率为80MHz,片内含8KBytes的可反复擦写次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。LCD1602液晶显示屏简介LCD1602可以显示2行16个字符,有8位数据总线DO—D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光。LCD1602引脚说明如下表所示:LCD液晶显示器各引脚功能及结构
编号符号引脚说明编号符号引脚说明1VSS电源地9D2双向数据2VDD电源正极10D3双向数据3VL对比度调节11D4双向数据4RS数据/命令选择12D5双向数据5R/W读写/选择13D6双向数据6E模块使能端14D7双向数据7D0双向数据15BLK背光源地8D1双向数据16BLA背光源正极VDD:电源正极,一,通常使用5V电压;VL:LCD对比度调节端,电压调节范围为0—5V。接正极时对比度最弱,接地电源时对比度最高,但对比度过高会产生“鬼影”,因此通常使用一个10K的电位器来调整对比度,或者直接串接一个电阻到地;RS:MCU写入数据或者指令选择端。MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平;R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据;EN:LCD模块使能信号控制端。写数据时,需要下降沿触发模块。D0—D7:8为数据总线,三态双向。如果MCU的I/O口资源紧张的话,该模块也可以只使用4位数据线D4—D7接口传送数据。A:LED背光正极。需要背光时,A串接一个限流电阻接VDD,K接地。K:LED背光地端。TODD7D6VEED5EMVSSD3D2D1DOERSLCD16O2PQ.7P0.6P0.5P0.4PO.3P0.2P0.1P0.0P3.4P3.5AT85C51—||■LCD与单片机连接图第四部分系统硬件设计最小系统引脚加可以使晶振,复位时单片机的初始化操作,只要给RST上两个机器周期以上的高电平信号,就STC89c51单片机复位。本次采用的是12M按钮复位电路。引脚加可以使晶振,LCD显示电路LCD显示屏的DO到D7与单片机P0口相连,LCD显示屏EN口与单片机口相连,RS与相连。通过滑动变阻器改变LCD显示屏的显示对比度。
LCD1RESPACKSF'O.OXADOFO.1XAD1F0.2/AD2FLI.3XAD3LCD1RESPACKSF'O.OXADOFO.1XAD1F0.2/AD2FLI.3XAD3P0.4.-'AD4F'U.5XAD5Pa.6XAD6F10.7XAD7LMOieLI«V1键盘输入电路本次设计采用独立键盘,键盘按下时,相应的I/O口电平由高变低,一次检测按键是否被按下。4个独立按键与单片机—口相连。U=iTEW=-<TE?nnuTEXApmU=iTEW=-<TE?nnuTEXApmo蜂鸣器和LED灯电路蜂鸣器的作用为准点报时产生报警声,LED在秒钟为偶数时或者功能键被按下时亮。蜂鸣器与单片机口相连,LED灯与单片机口相连。P2.3-OSPEAKERP2.3-OSPEAKER第五部分仿真电路图与仿真结果用Keil和Protues进行仿真调试,仿真结果完全达到预期目的。金:J盘看盘盘第六部分课程设计总结本次单片机课程设计,在我和金:J盘看盘盘第六部分课程设计总结本次单片机课程设计,在我和我的搭档陈雅琴默契配锹及邹老师的指导和同学的帮助下顺利完蝴设计过程中,从仿真电路的设计,源程序的书写和修改以及实物电路的焊接中都遇到了不少问题,但在我们的共同努力下解决了,并且从中学到了不少知识。我们在设计过程中还不断提出自己的疑点以及新的想法,联系实际应用,将课本上学习的东西运用到实际中,这些都令我们受益匪浅。课程设计需要很大的耐心,尤其是遇到困难的时候,这也是对我们的考验。在设计过程中,我们遇到问题不是感到急躁,而是耐心地寻找解决的办法,与老师、同学进行交流讨论,寻求最佳的解决办法。总之,在此次的课程设计中,我们不仅动手、动脑,也学会了不少东西,同时,谢谢对我们的设计带来建议、意见和帮助的老师和同学们!谢谢!第七部分参考文献《单片机原理及应用(第二版)》 高等教育出版社《新概念51单片机C语言教程》电子工业出版社附录A实物图附录B系统源程序#include<>#defineucharunsignedchar#defineuintunsignedintsbitlcdrs=P3八5;〃定义1602液晶RS端sbitlcden=P3"4;//定义1602液晶LCDEN端sbits1=P3I0; 〃定义按键一功能键sbits2=P31;//定义按键一增加键sbits3=P3"2;//定义按键一减小键sbits4=P3"3;//定义按键一闹钟键sbitbeep=P2八2;〃定义蜂鸣器端sbitled=P2"3;〃定义LED灯端ucharcount,s1num,s4num;charyear,month,day,week,miao,shi,fen,pshi;ucharcodetable[]="20--";//定义初始上电时液晶默认显示状态voiddelay(uintz)//延时函数{uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidzhuanhuan(){if(shi==0)pshi=12;pshi=12;pshi=12;pshi=12;if(shi<=12&&shi>=1)pshi=shi;if(shi>12)pshi=shi-12;}voiddi()//蜂鸣器发声函数{beep=0;delay(300);beep=1;delay(300);}voidwrite_com(ucharcom)//液晶写命令函数lcdrs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}voidwrite_date(uchardate)//液晶写数据函数{lcdrs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void_shi()〃写"AM"、"PM"函数{if(shi>=12){write_com(0x80+0x40+1);//写出"PM"write_date('P');write_date('M');}else{write_com(0x80+0x40+1);//写出"AM"write_date('A');write_date('M');}voidwrite_ymd(ucharadd1,uchardatel)//写年月日函数{ucharshi,ge;shi二date1/10;//分解一个2位数的十位和个位ge=date1%10;write_com(0x80+add1);//设置显示位置write_date(0x30+shi);//送去液晶显示十位write_date(0x30+ge);//送去液晶显示个位}voidwrite_sfm(ucharadd,uchardate)//写时分秒函数{ucharshi,ge;shi二date/10;//分解一个2位数的十位和个位ge=date%10;write_com(0x80+0x40+add);//设置显示位置write_date(0x30+shi);//送去液晶显示十位write_date(0x30+ge);//送去液晶显示个位}voidwrite_week(charweek)//写液晶星期显示函数{write_com(0x80+12);switch(week){write_date('M');delay(5);write_date('O');delay(5);write_date('N');break;write_date('T');delay(5);write_date('U');delay(5);write_date('E');break;write_date('W');delay(5);write_date('E');delay(5);write_date('E');delay(5);write_date('E');delay(5);write_date('E');delay(5);write_date('D');break;write_date('T');delay(5);write_date('H');delay(5);write_date('U');break;write_date('F');delay(5);write_date('R');delay(5);write_date('I');break;write_date('S');delay(5);write_date('A');delay(5);write_date('T');break;write_date('S');delay(5);write_date('N');break;}}voidwriteym(){day=1;month++;if(month==13){month=1;year++;if(year==100)year=0;write_ymd(3,year);//年若变化则重新写入write_ymd(6,month);//月若变化则重新写入}voidinit()//初始化函数{ucharnum;lcden=0;year=13;//初始化种变量值month=6;day=21;week=5;shi=13;fen=59;miao=58;count=0;s1num=0;s4num=0;write_com(0x38);//初始化1602液晶write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);//设置显示初始坐标for(num=0;num<15;num++)//显示年月日星期{write_date(table[num]);delay(5);}delay(5);write_com(0x80+0x40+6);//写出时间显示部分的两个":"write_date(':');delay(5);write_com(0x80+0x40+9);write_date(':');write_date(':');write_date(':');write_date(':');delay(5);write_week(week);write_ymd(3,year);//分别送去液晶显示write_ymd(6,month);write_ymd(9,day);write_sfm(10,miao);//分别送去液晶显示write_sfm(7,fen);write_sfm(4,shi);TMOD=0x01;//设置定时器0工作模式1TH0=(65536-50000)/256;//定时器装初值TL0=(65536-50000)%256;EA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0if(s1num==2)//if(s1num==2)//第二次按下光标闪烁定位到月位置if(s1num==2)//if(s1num==2)//第二次按下光标闪烁定位到月位置void卜6丫$。@口()//按键扫描函数{if(s1==0){delay(5);if(s1==0)//确认功能键被按下{s1num++;//功能键按下次数记录while(!s1);//释放确认if(s1num==1)//第一次被按下时{TR0=0;//关闭定时器write_com(0x80+3);//光标定位到年位置write_com(0x0f);//光标开始闪烁}{{if(s1num==6)//if(s1num==6)//第六次按下光标闪烁定位到分位置{{if(s1num==6)//if(s1num==6)//第六次按下光标闪烁定位到分位置write_com(0x80+6);}if(s1num==3)//第三次按下光标闪烁定位到日位置{write_com(0x80+9);}if(s1num==4)//第四次按下光标闪烁定位到星期位置{write_com(0x80+12);}if(s1num==7)//第七次被按下时光标定位到秒位置{write_com(0x80+0x40+10);}{{{{if(s1num==2)//if(s1num==2)//若功能键第二次按下write_com(0x80+0x40+7);}if(s1num==5)//第五次按下光标闪烁定位到时位置{write_com(0x80+0x40+4);}if(s1num==8)//第七次按下{s1num=0;//记录按键数清零write_com(0x0c);//取消光标闪烁TR0=1;//启动定时器使时钟开始走}}}if(s1num!=0)//只有功能键被按下后,增加和减小键才有效if(s2==0){delay(5);if(s2==0)//增加键确认被按下{亚g1©(!$2);//按键释放if(s1num==1)//若功能键第一次按下{year++;//则调整年加1if(year==100)//若满100后将清零year=0;write_ymd(3,year);//每调节一次送液晶显示一下write_com(0x80+3);//显示位置重新回到调节处}month++;//则调整月加1if(month==13)//若满12后将置一month=1;write_ymd(6,month);//每调节一次送液晶显示一下write_com(0x80+6);//显示位置重新回到调节处}if(s1num==3)//若功能键第三次按下{day++;//则调整日加1if(year%4==0&&month==2){if(day==30)//若满29后将置一day=1;}if(year%4!=0&&month==2)if(day==29)〃若满28后将置一day=1;)if(month!=2&&month!=4&&month!=6&&month!=9&&month!=11)(if(day==32)〃若满31后将置一day=1;)if(month==4||month==6||month==9||month==11)(if(day==31)〃若满30后将置一day=1;)write_ymd(9,day);;〃每调节一次送液晶显示一下write_com(0x80+9);〃显示位置重新回到调节处if(s1num==4)//若功能键第四次按下{week++;//则调整星期加1if(week==8)//若满8后将置一week=1;write_week(week);//每调节一次送液晶显示一下write_com(0x80+12);//显示位置重新回到调节处}if(s1num==7)//若功能键第七次按下{miao++;//则调整秒加1if(miao==60)//若满60后将清零miao=0;write_sfm(10,miao);//每调节一次送液晶显示一下write_com(0x80+0x40+10);//显示位置重新回到调节处if(s4num==0)if(s4num==0)}}if(s4num==0)if(s4num==0)}}}}if(s1num==6)//若功能键第二次按下{fen++;//则调整分钟加1if(fen==60)//若满60后将清零fen=0;write_sfm(7,fen);//每调节一次送液晶显示一下write_com(0x80+0x40+7);//显示位置重新回到调节处}if(s1num==5)//若功能键第五次按下{shi++;if(shi==24)//若满24后将清零{shi=0;{write_sfm(4,shi);;//每调节一次送液晶显示一下write_com(0x80+0x40+4);//显示位置重新回到调节处}if(s4num==1){zhuanhuan();_shi();write_sfm(4,pshi);;//每调节一次送液晶显示一下write_com(0x80+0x40+4);//显示位置重新回到调节处}}}}{{{{{{if(s3==0){delay(5);if(s3==0)//确认减小键被按下{亚g1©(!$3);//按键释放if(s1num==1)//若功能键第一次按下{year--;//则调整秒减1if(year==-1)//若减到负数则将其重新设置为99year=99;write_ymd(3,year);//每调节一次送液晶显示一下write_com(0x80+3);//显示位置重新回到调节处}if(s1num==2)//若功能键第二次按下month--;//则调整分钟减1if(month==0)//若减到负数则将其重新设置为59month=12;write_ymd(6,month);//每调节一次送液晶显示一下write_com(0x80+6);//显示位置重新回到调节处}if(s1num==3)//若功能键第二次按下{day--;//则调整日加1if(year%4==0&&month==2){if(day==0)//若满29后将置一day=29;}if(year%4!=0&&month==2)}}}}if(day==0)〃若满28后将置一day=28;)if(month!=2&&month!=4&&month!=6&&month!=9&&month!=11)(if(day==0)〃若满31后将置一day=31;)if(month==4||month==6||month==9||month==11)(if(day==0)〃若满30后将置一day=30;)write_ymd(9,day);;〃每调节一次送液晶显示一下write_com(0x80+9);〃显示位置重新回到调节处if(s1num==4)//若功能键第二次按下{week--;//则调整小时减1if(week==0)//若减到负数则将其重新设置为23week=7;write_week(week);//每调节一次送液晶显示一下write_com(0x80+12);//显示位置重新回到调节处}if(s1num==7)//若功能键第一次按下{miao--;//则调整秒减1if(miao==-1)//若减到负数则将其重新设置为59miao=59;write_sfm(10,miao);//每调节一次送液晶显示一下write_com(0x80+0x40+10);//显示位置重新回到调节处if(s4==0)if(s4==0)if(s4==0)if(s4==0)write_sfm(4,shi);;//write_sfm(4,shi);;//每调节一次送液晶显示一下if(s1num==6)//若功能键第二次按下{fen--;//则调整分钟减1if(fen==-1)//若减到负数则将其重新设置为59fen=59;write_sfm(7,fen);//每调节一次送液晶显示一下write_com(0x80+0x40+7);//显示位置重新回到调节处}if(s1num==5)//若功能键第二次按下{shi--;if(shi==-1)//若满24后将清零shi=23;if(s4num==0){write_com(0x80+0x40+4);//显示位置重新回到调节处}if(s4num==1){zhuanhuan();_shi();write_sfm(4,pshi);;//每调节一次送液晶显示一下write_com(0x80+0x40+4);//显示位置重新回到调节处}}}}if(s1num==0){delay(5);if(s4==0)//确认功能键被按下{s4num++;//功能键按下次数记录while(!s4);//释放确认if(s4num==1)//第一次被按下时{zhuanhuan();_shi();write_sfm(4,pshi);}if(s4num==2)//第二次按下{s4num=0;//记录按键数清零write_com(0x80+0x40+1);write_date('write_date('');led=0;led=0;write_date('write_date('')
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年智能家居系统集成施工合作协议3篇
- 2024学院物业管理与校园文化活动支持合同3篇
- 提升泵站的初步课程设计
- 2024年土地承包经营权托管服务合同3篇
- 2024年度重点工程项目安全生产文明施工综合管理服务合同3篇
- 2023-2024学年新教材高中生物第6章细胞的生命历程质量评估新人教版必修1
- 期末培优高频易错押题卷(试题)-2024-2025学年五年级上册数学
- Unit5Let'sEat(教学设计)-人教PEP版三年级上册
- 浙江省浙里特色联盟2024-2025学年高二上学期期中联考技术试题-高中信息技术2
- 重庆市西南大学附属中学2024-2025学年高三上学期11月阶段性检查语文试题2
- 采购合同范例壁布
- 公司员工出差车辆免责协议书
- 2024年陕西榆林市神木市公共服务辅助人员招聘775人历年管理单位遴选500模拟题附带答案详解
- 2024年度抖音短视频拍摄制作服务合同范本3篇
- 2024-2025学年高二上学期期末数学试卷(提高篇)(含答案)
- 2024年07月22208政治学原理期末试题答案
- 期末检测卷(一)(试卷)-2024-2025学年外研版(三起)英语六年级上册(含答案含听力原文无音频)
- 《客户开发技巧》课件
- 《防范于心反诈于行》中小学防范电信网络诈骗知识宣传课件
- 口腔执业医师定期考核试题(资料)带答案
- 2023-2024学年北京市通州区九年级(上)期末语文试卷
评论
0/150
提交评论