单片机课程设计报告_第1页
单片机课程设计报告_第2页
单片机课程设计报告_第3页
单片机课程设计报告_第4页
单片机课程设计报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、长 沙 学 院 单片机课程设计说明书题 目:校园作息时间控制系统系 (部):电子与通信工程系专业 (班级):08电子二班姓 名:刘 林学 号:指导教师:刘辉、王新辉、谢明华起止日期:2010年12月20日至12月31日校园作息时间控制系统摘 要:设计了一个单片机控制打铃系统。以单片机STC89C52为控制核心,控制时钟芯片DS12887的读写,实现打铃功能以及12864液晶输出时间,年月日信息,扩展了红外遥控修改时间、作息时间表等功能.关键字:单片机,时钟芯片,红外遥控,12864液晶,打铃系统.Abstract:Single chip microcomputer system, has a

2、great significance to beginners who want to create new electronic product .Circuit board of Single chip microcomputer system is very popluar in electronic development market and college students electronic design. This course includes the STC89C52 microcomputer system, LCD12864 display circuit,DS128

3、87 clock chip,Buzzer,Remote control block and so on. From this system,it can display on time,alarm clock. Meanwhile,it svery convenient for us to control its strong function with the design of remote control block. Keywords: MicrocomputerSystem; keyboard; LCD12864 display; DS12887clock chip;Buzzer;

4、Remote control bloack.目录1 系统设计方案与论证311设计要求312系统设计总体方案.32系统的硬件设计与实现.4211时钟芯片DS12887性能简介.4221 液晶SYB12864介绍4222 液晶与单片机的接口4231 红外发送与接收5232 遥控码数据分析5233 接收电路6241电源部分电路图 63程序设计 73 主程序流程图82 按键识别.933 课表计算1034 遥控解码114系统测试与总结 121系统设计方案与比较设计要求一、时钟功能:能显示年、月、日、星期、时、分、秒 。二、调整功能:能校正年份、日期、时间等。三、打铃功能:按指定时间表播放音乐、现场修改作

5、息时间表。四、设置的作息时间表数据在单片机掉电后不会丢失。2系统设计总体方案根据设计要求实现的功能,可以采用不同的设计系统方案如下:方案一:采用单片机自带定时器进行计时,外加存储器保存课表数据,普通键盘输入。由于单片机进行软件计时,硬件成本比较低,但是误差比较大,需要校准,日后的维护工作量比较大。可用廉价的AT24C04等存储器保存数据,读写比较容易。对于普通的独键盘,设置量比较大,改用矩阵键盘又会占用较大的电路板空间。方案二:采用实时时钟芯片计时,红外数据输入。时钟芯片常见的有美信公司的DS1302、DS12887等前者与后者的最大区别在于有没有自带的备份电池。前者需要增加额外的电池以及相关

6、的充电电路,后者DS12887本身已经集成了锂电池,而且掉电后相当长一段时间还可以正常走时,最重要的是它还剩下114字节的非易失RAM,由于有备份电池供电,相当于一个存储器,可以充分利用,而不需要增加另外的存储器,减少了外围电路。电视红外遥控比较常见,只要解码出来,可以充分利用面板上的多个数字键,接收电路也相当简单,另外由于是非接触式按键,避免了普通机械按键的磨损弊端。故本设计选用第二种方案总体方框图如下:单片机STC89C52时钟芯片DS12887红外接收头遥控12864液晶显示蜂鸣器系统的硬件设计与实现1时钟芯片DS12887性能简介DS12887是DALLAS半导体雄司推出的实经常钟芯片

7、,接纳CMOS技术制成,把时钟芯片所需的晶振和外部锂电池相关电路集成于芯片内部,断电后内部电池可以供电10年之久。DS12887芯片具有微功耗、外围接口简略、精度高、劳动颠簸可靠等优点,正在现代产业控制及智能仪器仪表中有着广泛的用处。22液晶显示块部分电路221液晶SYB12864功能与技术参数简介 SYB12864是一种图形点阵液晶显示器,它主要由行驱动器/ 列驱动器及12864全点阵液晶显示器组成.可完成图形显示,内置汉字库,可以显示84个(1616点阵)汉字.主要技术参数和性能:1.电源:VDD:+5V;LCD外接驱动电压为 3.08.0V 2.显示内容:128(列)64(行)点3.全屏

8、幕点阵4.七种指令5.与CPU接口采用8位数据总线并行输入输出和8条控制线.222 12864液晶与单片机接口 外部接口信号如下表所示:管脚号管脚名称LEVER管脚功能描述1VSS0V电源地2VDD5.0V电源电压3V0-液晶显示器驱动电压4RSH/LRS=“H”,表示DB7DB0为显示数据RS=“L”,表示DB7DB0为显示指令数据5R/WH/LR/W=“H”,E=“H”,数据被读到DB7DB0R/W=“L”,E=“HL”, DB7DB0的数据被写到IR或DR6EH/L使能信号:R/W=“L”,E信号下降沿锁存DB7DB0 R/W=“H”,E=“H” DRAM数据读到 DB7DB0 7DB0

9、H/L数据线8DB1H/L数据线9DB2H/L数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线15PSBH/LH:8或4位并口,L串口(本设计中硬件置高电平)16NC17RETH/L复位信号,低电平复位(如不需要经常复位可以悬空)18VOUT10VLCD驱动电压19LED+-LED背光板电源20LED-LED背光板电源数据线D0D7与单片机P0口相连,完成数据传送。单片机P1.0与液晶RS相连,控制显示数据和显示指令数据. 单片机P1.1与液晶RW相连,控制数据读写. 单片机P1.2与液晶E相连,液晶REST与电源相连,控制液

10、晶复位信号。18脚是液晶背光驱动端,通过限流可变电阻调节对比度,由于经过试验测量可变电阻大概是16K,为了方便电路布局,用15K的固定电阻。液晶与单片机接口图23红外遥控231 发送与接收通用红外遥控系统由发射和接收两大部分组成。应用编/解码专用集成电路芯片来进行控制操作,如图 所示。发射部分包括键盘矩阵、编码调制、LED 红外发送器;接收部分包括光、电转换放大器、解调、解码电路。232 遥控码数据分析遥控发射器专用芯片很多,这里我们以运用比较广泛,解码比较容易的一类来加以说明,以东芝公司的TC9012组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同

11、。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为 0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”,其波形如图 所示。遥控码的“0”和“1” 上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制,然后再通过红外发射二极管产生红外线向空间发射。一般电视遥控器的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码,用于核对数据是否接收准确。根据红外编码的格

12、式,发送数据前需要先发送4.5ms的起始码和4.5ms的结果码作为引导码。遥控串行数据编码波形如下图所示:233接收电路接收电路较为简单,采用一体化接收头HS0038,滤波电容在这里可以减少电源带来的干扰。如图:24电源241电源部分电路图为达到提供稳定5V供电电压,变压器采用了玩具车电池充电适配器,由于此电源只包含了全波整流电路,在此加上滤波电路和稳压电路,如图。3系统的软件设计31主程序流程图主程序流程图:读取课表数据并计算读取时间上 电时钟与液晶复位欢迎界面显示时间比较课表True显示课次,播放音乐FalseTrue键扫退出菜单选择修改课表选择查看课表选择调整时间调整时间上午课表修改课表

13、保存设置下午课表保存设置32按键识别为了输入简单,用数字键直接输入要设置的数字,而且没有另外设置专门的光标移位键,即输入一个数字后自动换到一个位置,如果有现成的不需要修改的数字,可以直接按任意非数字键跳过。由于进行年月日等数据的保存时是以两个键为一个单位(比如23),由此将产生一个问题,怎样保存无效的键值,即如果第一个键是无效键或者第二个键是无效键,这个数据怎么保存。具体解决办法如下:从遥控按键解码结果可知,键值和数字键的数字对应关系为:如果键值小于9(0x09),按键数字就是键值加上1,而键值9对应按键“0”。所以两个按键的要分九种情况,第一个按键有三种情况,无效键,19键,0键,第二个键也

14、有三种情况,考虑到第二个键有可能是无效键,所以按第一个键(十位)时候要保存个位数字,具体赋值如下:(以年为例,year0,year1,year2分别是原值、第一次按键后赋值、第二次按键后赋值)第一个按键后赋值如下表:key 9(无效键)year1 = year0key 9(19键)year1 = 10*( key +1)+year0%10key = 9(0键)year1 = year0%10第二个按键后赋值如下表:第一个键第二个键赋值无效键0键year2= year1/10*1019键0键year2= year1/10*100键0键year2= year1/10*10 为方便编程没有用year

15、2= 0无效键19键year2= year1/10*10 + key+119键19键year2= year1/10*10 + key+1 0键19键year2= key+1无效键无效键year2= year119键无效键year2= year10键无效键year2= year1事实上第二个键是无效键的情况在刚开始已经考虑,所以键值不变,可以不做处理。33课表计算以上午为例,当设定好第一节课上课时间,以后的时间在此基础上往上加。第一节课下课第二节课上课第二节课下课第三节课上课第三节课下课第四节课上课第四节课下课小时增量0012223分钟增量4555400455540实际编写程序计算时,为了对齐,

16、插入了无效的0值,当然如果schedule1表同样采用二维数组可避免此弊端,这也是当时编程时候总体设计考虑不周造成的,以至于要修改就要改动其很多的数据。34 遥控解码具体解码过程如下:通过定时器读出相应的高低电平,先读出低电平,再读出高电平,如果中间有非正常的值则重新接收。每八个位为一个字节数据,总共四个有效数据,最后在数码管上显示。#include #define c(x) (x*/)/便于数据分析sbit Ir_Pin=P36;/接收管脚unsigned char code Led_Tab=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82, 0xf8,0x80,0x90

17、,0x88,0x83,0xC6,0xA1,0x86,0x8E; /共阳极数码显示码0-F. unsigned char code Led_Sel=0xfe,0xfd,0xfb,0xf7; /显示位控unsigned char Led_Buf4; /显示缓冲区unsigned char Led; /位选unsigned char Ir_Buf4; /用于保存解码结果/=timer0() interrupt 1 using 1 /防止按键时 LED显示闪烁 TL0=(65536-1000)%256; TH0=(65536-1000)/256; /定时器0设定约1000us中断一次,用于数码管扫描

18、P0=0xff; P2=Led_SelLed; /位选 P0=Led_TabLed_BufLed; /段选 if(+Led 3) Led =0; /四个扫描完了,到第一个数码管/=unsigned int Ir_Get_Low() /获取低电平时间 TL1=0; TH1=0; TR1=1; while(!Ir_Pin ); /当P3.6为低 等待 TR1=0; return TH1*256+TL1; /=unsigned int Ir_Get_High() /获取高电平时间 TL1=0; TH1=0; TR1=1; while(Ir_Pin ); /当P3.6为高 等待 TR1=0; retu

19、rn TH1*256+TL1; /=main()unsigned int temp; char i,j; TMOD=0x11; TL0=(65536-1000)%256; TH0=(65536-1000)/256; /定时器0设定约1000us中断一次,用于数码管扫描EA=1; ET0=1; TR0=1; while(1) restart: while(Ir_Pin); temp=Ir_Get_Low();/允许有一定的误差 if(tempc(5000) continue; /引导脉冲低电平4500 temp=Ir_Get_High(); if(tempc(5000) continue; /引导脉冲高电平4500 for(i=0;i4;i+) /4个字节 for(j=0;j8;j+) /每个字节8位 temp=Ir_Get_Low();/560us 低电平 if(tempc(800) goto restart; temp=Ir_Get_High();/560us 或 1680us 高电平 if(tempc(2000) goto restart; Ir_Bufi=1; /先写“0” if(tempc(1120) Ir_Bufi|=0x80; /再写“1” Led_Buf0=Ir_Buf2&0x0f; /低四位数据码 Led_Buf1=Ir_Buf24;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论