版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE17-《PIC单片机》课程设计学生姓名:学号:0112007XX指导教师: 2014年12月30日目录1、硬件介绍 -2-1.1电源模块 -2-1.2LCD模块 -2-1.3矩阵按键模块 -4-1.4时钟模块(DS1307)+温度模块(TC74) -4-1.4.1时钟模块(DS1307) -4-1.4.2温度模块(TC74) -4-1.6PROTEUS仿真图 -6-2、软件介绍 -7-2.1Main程序 -7-2.2初始化 -8-2.3自定义字符 -8-2.4显示欢迎语 -9-2.5时间及温度显示 -10-2.6中断设置 -11-2.6.1按键功能说明 -13-2.6.2按键修改说明 -14-2.6.3光标移动说明 -15-2.7蜂鸣器设置音乐 -15-3、设计结果 -15-4、设计体会 -16-1、硬件介绍这次课设所用到的硬件模块有,PIC16F887单片机芯片,LCD1602芯片,4×4键盘,DS1307时钟芯片,TC74温度计芯片,还有PWM控制的蜂鸣器模块。现将各个模块的硬件原理图画于下方:1.1电源模块图1-1电源模块电源部分包括接RE3/MCLR的复位电路,按下S17可复位单片机;电源并接的电容C24、C23起到消除干扰,稳定电源电压的作用;RA6、RA7接外部4M晶振,为单片机提供时基频率。1.2LCD模块图1-2LCD模块PROTEUS接线:本次设计采用点阵型LCDYB1602A,图中采用4位数据线接线方式,可以节省单片机的I/O口,原理图中电位器用于调整背光亮度接VEE脚。(因在PROTEUS中无法仿真背光亮度,故仿真图未画出)该LCD为16×2型,5×8点阵。1.3矩阵按键模块图1-3矩阵键盘模块1-4行接RB0-RB3,1-4列接RB4-RB7。1.4时钟模块(DS1307)+温度模块(TC74)1.4.1时钟模块(DS1307)DS1307是实时时钟芯片,它提供秒、分、时、日、月、年和星期等数据,并能自动计算闰年至2100年。时钟晶振是典型的32.768kHz。1.4.2温度模块(TC74)温度传感器TC74是Microchip公司的一款I²C接口的数字式温度传感器。其测温范围为-40至125℃。PROTEUS接线:DS1307和DC74的时钟线接RC3/SCL,数据线接RC4/SDA;DS1307的SOUT脉冲输出接RA4,以供修改数据时显示闪烁控制。1.5蜂鸣器模块图1-4蜂鸣器模块本设计中采用CCP2,故接RC2。1.6PROTEUS仿真图2、软件介绍2.1Main程序2.2初始化其中:D端口设置为输出,控制YB1602,D7设置高电平使能LCD背光;B口工作于矩阵按键扫描模式,B口低4位为输入,且电平变化中断使能,设置ANSELH,使B端口为I/O口,B口上拉使能;RC2输出低电平,方向为输入;全局中断使能,外设中断使能,T0IE和RBIE使能,清中断标志位RBIF;LCD写入自定义字符;发送控制序列,4位数据格式,2行,清屏;DS1307初始化时间为2014年11月27日15时32分00秒星期四。2.3自定义字符constcharDDD[8][8]={{0b01111,0b01001,0b01001,0b01111,0b01001,0b01001,0b01111,0b00000},//“时”1{0b00010,0b11111,0b00010,0b01110,0b00010,0b01010,0b00110,0b00000},//“时”2{0b01011,0b00100,0b10011,0b10010,0b10011,0b10010,0b10011,0b00000},//“间”1{0b11111,0b00001,0b11001,0b01001,0b11001,0b01001,0b11011,0b00000},//“间”2{0b00111,0b01000,0b00011,0b00000,0b00111,0b00000,0b00000,0b00000},//“气”1{0b11000,0b00000,0b10000,0b01000,0b11000,0b01010,0b01100,0b00000},//“气”2{0b10011,0b01010,0b00011,0b11000,0b00011,0b01010,0b10111,0b00000},//“温”1{0b11110,0b00010,0b11110,0b00000,0b11110,0b11010,0b11111,0b00000}//“温”2};voidZK(void)//用来存LCD1602自定义符号”时间“”气温“的子程序{unsignedi,j,k; DELAY(2); k=0b01000000; for(i=0;i<8;i++) { LCD_WRITE(k,COM); //写地址,每个字符为8个字节数据(5x8点阵) for(j=0;j<8;j++) //对每个数据的行循环,共8行 LCD_WRITE(DDD[i][j],DATA); k+=8; }}2.4显示欢迎语constcharWelcomeWord1[11]//WelcometoconstcharWelcomeWord2[15]//ElectricClockconstcharIDCode1[10]//011200715constcharIDCode2[10]//BestwishvoidDISP_Welcome(void){signedchari,j,k,l; LCD_WRITE(0b00000001,COM);//清屏显示,光标归零 DELAY(30); LCD_WRITE(LINE1,COM); for(i=0;i<10;i++) LCD_WRITE(WelcomeWord1[i],DATA);//显示Welcometo LCD_WRITE(LINE2,COM); for(i=0;i<14;i++)LCD_WRITE(WelcomeWord2[i],DATA);//显示ElectricClock DELAY(500); LCD_WRITE(0b00000001,COM);//清屏显示,光标归零 DELAY(30); for(i=0,k=0;i<16;i++) { LCD_WRITE(LINE1,COM); for(l=i;l>0;l--) LCD_WRITE('',DATA); if(i>7)k++; for(j=0;j<9-k;j++) LCD_WRITE(IDCode1[j],DATA);//显示011200715,并右移出屏幕 DELAY(100);//调节数值可调节移动移动速度 } LCD_WRITE(0b00000001,COM);//清屏显示,光标归零 DELAY(30); for(i=0,k=0;i<25;i++) { LCD_WRITE(LINE2,COM); for(l=16-i;l>0;l--) LCD_WRITE('',DATA); if(i>16)k++; for(j=k;j<9;j++) LCD_WRITE(IDCode2[j],DATA);//显示BestWish,并左移出屏幕 for(l=i-9;l>0;l--) LCD_WRITE('',DATA); DELAY(100); } LCD_WRITE(0b00000001,COM);//清屏显示,光标归零 DELAY(30);}2.5时间及温度显示各时间单位、自定义字符、其他符号位置如图所示。其中,星期由英文单词缩写表示,分别为Sat、Sun、Mon、Tue、Wed、Thu、Fri。自定义字符显示函数(以自定义的第1至4个字符为例): for(i1=0;i1<4;i1++) { LCD_WRITE(LINE1+i1,COM); LCD_WRITE(0x00+i1,DATA); }时间显示函数(以“年”为例): LCD_WRITE(YEAR,COM);//写命令 LCD_WRITE('2',DATA); LCD_WRITE('0',DATA); LCD_WRITE(((TIME[6]&0xF0)>>4)+0x30,DATA);//取“年”的高四位 LCD_WRITE((TIME[6]&0x0F)+0x30,DATA);//取“年”的低四位 2.6中断设置 WPUB=0xFF;//B口设为弱上拉 TRISB=0x0F;//先将B口低4位设为输入 IOCB=0x0F;//B口低4位电平变化中断 PORTB=0x0F;//先让B口高4为输出低电平 if(RB0==0) //若RB0为0,检测到第一行有按键按下{H=0;PORTB=0b11111110;}//H=0,代表第一行有按键按下,然后将有按键按下的那行的RB值拉低if(RB1==0)//以下的意思同上{H=1;PORTB=0b11111101;} if(RB2==0) {H=2;PORTB=0b11111011;} if(RB3==0) {H=3;PORTB=0b11110111;} TRISB=0xF0;//将RB口高4位设为输入 IOCB=0xF0;//B口高4位电平变化中断 PORTB=0xF0;//让B口高4为输出高电平 if(RB4==0)//若RB4=0,说明第一列有按键按下,L=0;//L=0,代表第一列 if(RB5==0)//以下意思同上L=1; if(RB6==0) L=2; if(RB7==0)L=3;TRISB=0x0F;//扫描一次按键完毕将RB口重新设为低4位输入PORTB=0x0F;//重新设RB口高4位输出低电平 IOCB=0x0F;//B口低4位电平变化中断 RBIF=0;//清电平变化中断标志2.6.1按键功能说明0123456789前移后移1:时间显示2:闹钟设置3:返回默认模式待开发1:闹钟开启2:闹钟关闭确认键受篇幅所限,省略KEY_Number[H][L]值为10、11即前移后移键所对应的流程图,其主要动作为置位移动标志位FLAG.Move,并赋值对应的前移后移标志位FLAG.Front_Back。 相应程序如下:switch(KEY_Number[H][L]) {case(10):FLAG.Move=1;iplus=1;FLAG.Front_Back=1;break;//前移光标case(11):FLAG.Move=1;iplus=1;FLAG.Front_Back=0;break;//后移光标 case(12): FLAG.Affirm_Alarm=1; if(N1<4) {FLAG.CA_Change=1; N1+=1; }//FLAG.CA_Change=1时钟显示和闹钟修改模式开启 if((N1==2)&&(FLAG.Alarm==0))//时间显示修改 {FLAG.Alarm=1; R1=LCD_READ(); LCD_WRITE(0b00000001,COM);//清屏显示,光标归零 DELAY(30); } if((N1==3)&&(FLAG.Alarm==1))//闹钟设置修改 {FLAG.Alarm=0; KEY.SET=4; R1=LCD_READ(); LCD_WRITE(0b00000001,COM);//清屏显示,光标归零 DELAY(30); } if((FLAG.CA_Change==1)&&(N1==4)) {FLAG.CA_Change=0;N1=0;FLAG.Alarm=1;}//FLAG.CA_Change=1时钟显示和闹钟修改模式关闭 break; case(14):if(FLAG.On_Off==0)FLAG.On_Off=1;//闹钟开启 elseFLAG.On_Off=0;//闹钟关闭 break; case(15)://确认键 if(((FLAG.CA_Change==1)&&(FLAG.Affirm==0)))//时间显示模式下的确认键 FLAG.Affirm=1;//FLAG.Affirm=1确认修改 break; }2.6.2按键修改说明程序以修改“年“为例:case(1)://年份设置 if(FLAG.Affirm==1) { TIME[6]=KEY1*16+KEY2; BCD1(TIME[6]); DS1307_WRITE(0x06,TIME[6]); LCD_WRITE(YEAR+2,COM); LCD_WRITE(SW+0x30,DATA); LCD_WRITE(YEAR+3,COM); LCD_WRITE(GW+0x30,DATA); FLAG.Affirm=0; }2.6.3光标移动说明以时间修改前移为例:if((FLAG.Front_Back==1)&&(FLAG.Move==1))//时间显示模式下前移光标 {KEY.SET-=1;//KEY.SET代表光标对应时间位置 if(KEY.SET==0)//使循环移动 KEY.SET=7; FLAG.Move=0; }2.7蜂鸣器设置音乐查阅资料得中音do为523.3Hz,Re为587.3Hz,Mi为659.3Hz,So为784Hz,低音La为440Hz,Si为493.9Hz,经计算得对应PWM设置的写入值。连续调用不同频率的PWM可得乐音,即闹钟铃声。以Do为例:voidPWM1(void){ TRISC2=0; //RC2/CCP1为输出 PR2=238; //周期为1ms,X=0b0010010110 CCPR1L=0b01111101;//高八位放入CCPR1L CCP1CON=0b00001100; //PWM模式,低二位为10 T2CON=0b00001101; //TMR2预分频1:16,开始工作}3、设计结果欢迎界面:时间显示模式:时间修改模式(修改时对应位会全黑闪烁):闹钟关闭:闹钟开启:4、设计体会经过近一个学期的学习,虽然知道距离真正掌握单片机程序设计的技术还要有很长的实践和经验积累过程,但在课堂和完成课程设计的过程中学到的单片机知识已经让我受益匪浅。平时课程的实验主要都是单一模块,如TMR,AD等,但在课程设计中,则要求我们能综合运用各种
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度户外广告资源合作开发合同范本
- 2025年度新型农业机械购置与技术服务合同
- 2025年度国际商会国际商业代理货物进出口合同
- 二零二四年医疗机构与医护人员长期聘用合同范本3篇
- 2025年光伏发电项目信息咨询服务合同范本
- 二零二五年度车辆挂靠汽车租赁公司车辆租赁合同10篇
- 二零二四围挡产品技术创新与应用合同3篇
- 2025年度化妆品研发中心技术支持与产品供应合同
- 2025年共享办公空间合租房租合同模板
- 2025年度光伏电站余热回收与电力交易合同
- 2024年胡麻油市场前景分析:全球胡麻油市场规模达到了25.55亿美元
- 《 西门塔尔牛脸数据集的研究》范文
- 八年级上册 第三单元 11《简爱》公开课一等奖创新教学设计
- 中小商业银行数字化转型现状及对策研究
- 亲子非暴力沟通培训讲座
- 保险投诉处理流程培训
- JJG 707-2014扭矩扳子行业标准
- 2025财年美国国防预算概览-美国国防部(英)
- 2024年江西省南昌市中考一模数学试题(含答案)
- 《采暖空调节能技术》课件
- 游戏综合YY频道设计模板
评论
0/150
提交评论