




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南京邮电大学2011/2012学年第一学期课程设计实验报告模块名称AVR单片机课程设计专业学生班级学生学号学生姓名指导教师李虹戴海鸿杨洁王明伟日期:2011年9月26日至2011年10月20日AVR单片机课程设计报告课程设计目的学习ATmegal28单片机的仿真环境(AVRStudio)及C语言编程环境(ICCAVR)。学习ATmegal28单片机的C语言编程,熟悉使用板载JTAG进行仿真调试。课程设计内容基本要求:访问时钟芯片PCF8563,在LCD1602±显示年、月、口、时、分、秒,或通过串II将时间传至PC。合理定义板上按键功能,随机设定、调整时间和口期。扩展要求:闹钟功能,启动蜂鸣器鸣叫。有闰年功能课程设计过程设计原理:利用ATmegal28内部的IIC,读写实时时钟芯片PCF8563内部的寄存器,通过PC显示出来,可通过按键,设置当前时间。实验原理图:按键部分KEY&BUZZ4个独立按键,接在PD4〜PD7,通过一个电阻到地,键盘按下时为低电平,释放为高电平。
实时时钟芯片PCF8563部分实时时钟芯片PCF8563通过IIC总线连接到ATmegal28的SDA和SCL总线上。3・软件设计1)思路如下:使用ATmegal28内部TWI通过IIC总线读写实时时钟芯片PCF8563内部的寄存器实现实时时钟功能,使用四个按键设置时钟的年,月,日,时,分,秒,并把时钟显示到PC上。2)程序流程图3)关键代码:voidPoweiOiiIiutial(void)Key_imt();//初始化按键lcd_uut();//初始化LCDPCF8563_uiitQ;//初始化PCF8563PCF8563Tune.PCF8563Data.Year=11;PCF8563Tune.PCF8563Data.Month=10;PCF8563Tune.PCF8563Data.Day=14;PCF8563Tune.PCF8563Data.Hour=23;PCF8563Tune.PCF8563Data.NImute=30;PCF8563Tune.PCF8563Data.Second=30;//初始化时间DecToBCDQ;//十进制转BCD码PCF8536^1_p(0x02TCF8563Tune.bData,7); //写PCF8653时间SvsteinMode=RTCTIMEMODE;}函数PowerOiihiitial的作用是初始化按键,PCF8563,并初始化时钟的时间。voidKevProcess(void){BYTEKeyCode;KeyCode=get_key();switch(KeyCode){case(((l«S4r0xF0))://模式选择按键if(SvsteinMode==RTCTIMEMODE){ //当当前模式为显示模式SysteniNIode=SETTINGMODE;//转换成设置模式SetStep=SETYEAR:}elseif(SysteniMode=SETTINGMODE){ 〃当当前模式为设置模式SysteniNIode=RTCTIMEMODE;//转换成显示模式DecToBCD();//十进制转BCD码PCF8536_\vt_p(0x02fCF8563Time・bData,7);//写PCF8653时间}break;case(((1«S3)ZOxFO))://选择按键if(SvsteinMode!=SETTINGMODE){break;}if(++SetStep==(SETSECOND+1)){SetStep=SETYEAR:}break;case(((1«S2)ZOxFO))://加按键if(SysteinMode!=SETTINGMODE){break:}switch(SetStep){caseSETYEAR:if(++PCF8563Tmie.PCF8563Data.Yeai-==99+1){PCF8563Tune.PCF8563Data.Year=0;}break;caseSETMONTH:if(++PCF8563Tmie.PCF8563Data.Month==12+1){PCF8563Tune.PCF8563Data.Month=1;}break;caseSETDAY:if(++PCF8563Tmie.PCF8563Data.Day==31+1){PCF8563Tune.PCF8563Data.Day=1;}break;caseSETHOUR:if(++PCF8563Tmie.PCF8563Data.Hour—23+1){PCF8563Tune.PCF8563Data.Hour=0;}break;caseSETMINUTE:if(++PCF8563Tmie.PCF8563Data.Mmute—59+1){PCF8563Tiine.PCF8563Data.Minute=0;}break;caseSETSECOND:if(++PCF8563Tmie.PCF8563Data.Second==59+1){PCF8563Tiine.PCF8563Data.Second=0;}break;default:break;}break:case(((l«Sl)z0xF0)): //减按键switch(SetStep){caseSETYEAR:if(-PCF8563Time.PCF8563Data.Yeai-==0-1){PCF8563Tune.PCF8563Data.Year=99;}break;caseSETMONTH:if(-PCF8563Time.PCF8563Data.Montli==1-1){PCF8563Tune.PCF8563Data.Month=12;}break;caseSETDAY:if(-PCF8563Time.PCF8563Data.Day==1-1){PCF8563Tune.PCF8563Data.Day=31;}break;caseSETHOUR:if(-PCF8563Time.PCF8563Data.Houi—0-1){PCF8563Tune.PCF8563Data.Hom-=23;}break;caseSETMINUTE:if(-PCF8563Time.PCF8563Data.Mmute—0-1){PCF8563Tune.PCF8563Data.Minute=59;}break;caseSETSECOND:if(-PCF8563Time.PCF8563Data.Second—0-1){PCF8563Tune.PCF8563Data.Second=59;}break;default:break;}break:default:break:}}函数KeyPiocess的作用取得按键的键,并进行相应的按键处理。voidDisplayMain(void){if(SysteniMode==RTCTIMEMODE){PCF8536_[d(0x02.PCF8563Time・bData,7);〃读PCF8563时间
BCDToDecQ;//BCD码转换成十进制数}LCM1602BufferLmeO[LINEONEBASIC]PCF8563Tmie.PCF8563Data.Year/10+,0,;LCM1602BufferLmeO[LINEONEBASIC+1]PCF8563Tmie.PCF8563Data.Year%104-,0f;LCM1602BufferLmeO[LINEONEBASIC+3]PCF8563Tmie.PCF8563Data.Month/10+,0,;LCM1602BufferLmeO[LINEONEBASIC+4]PCF8563Tmie.PCF8563Data.Month%10+,0f;LCM1602BufferLmeO[LINEONEBASIC+6]PCF8563Tmie.PCF8563Data.Dav/10+*0,;LCM1602BufferLmeO[LINEONEBASIC+7]PCF8563Tmie.PCF8563Data.Dav%10+,0,;LCM1602BufferLme1[LINETWOBASIC]PCF8563Tmie.PCF8563Data.Houi710+,0,;LCM1602BufferLme1[LINETWOBASIC+1]PCF8563Tmie.PCF8563Data.Houi^>10+,0,;LCM1602BufferLme1[LINETWOBASIC+3]PCF8563Tmie.PCF8563Data.Minute/10+,0,;LCM1602BufferLme1[LINETWOBASIC+4]PCF8563Tmie.PCF8563Data.Minute%10+,0,;LCM1602BufferLme1[LINETWOBASIC+6]PCF8563Tiine.PCF8563Data.Second/10+,0,;//闪烁控制LCM1602BufferLme1[LINETWOBASIC+7]PCF8563Tmie.PCF8563Data.Second%10+,0,//闪烁控制if(SysteniMode==SETTINGMODE&&flgFlash=TRUE){switch(SetStep){caseSETYEAR:LCM1602BufferLmeO[LINEONEBASIC]=*:LCM1602BufferLmeO[LINEONEBASIC+l]=•:break:caseSETMONTH:LCM1602BufferLmeO[LINEONEBASIC+3]=1:LCM1602BufferLmeO[LINEONEBASIC+4]=1:break:caseSETDAY:LCM1602BufferLmeO[LINEONEBASIC+6]=1:LCM1602BufferLmeO[LINEONEBASIC+7]=1:break:caseSETHOUR:LCM1602BufferLme1[LINEONEBASIC]=*:
LCM1602BufifeiLme1[LINEONEBASIC+1]=1;break:caseSETNIINUTE:LCM1602BufifeiLme1[LINEONEBASIC+3]=*:LCM1602BufifeiLme1[LINEONEBASIC+4]=*:break:caseSETSECOND:LCM1602BufifeiLme1[LINEONEBASIC+6]=*:LCM1602BufifeiLme1[LINEONEBASIC+7]=*:break:default:break:}}lcd_disp_string(O,O,LCMl602BufiferLine0);//更新第一行显示lcd_disp_string(1,0,LCM1602BufiferLme1);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025房地产销售合同范本2
- 2025民宿客栈装修合同模板
- 2025新入职员工试用期合同协议
- 企业融资合同模板
- 运输及仓储合同范例二零二五年
- 二零二五常用房屋租赁合同模板
- 租房退房协议书
- 业务员合作合同二零二五年
- 2025型材供应商采购合同
- 2025商业广场绿化养护合同
- 2025年北京市海淀区高三一模政治试卷(含答案)
- 二年级下册期末教学质量分析P的课件
- 初中数学北师大七年级下册(2023年新编)综合与实践综合与实践-设计自己的运算程序 王颖
- 可燃气体报警系统安装记录
- 伸臂式焊接变位机设计总体设计和旋转减速器设计毕业设计
- 血细胞仪白细胞五分类法原理和散点图特征
- 形式发票格式2 INVOICE
- 外墙保温方案(热固性改性聚苯板)
- 电子汇划业务收费凭证
- (完整版)mmse量表
- CDR-临床痴呆评定量表
评论
0/150
提交评论