资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
课程设计课 程 单片机原理及应用课程设计题目自动打铃控制器院系电子科学学院专业班级学生姓名 学生学号指导教师2011年3月18日目录1 引言 22 设计要求 32.1 总体设计思想3. 硬件电路设计思想 .3.1PCB 图4. 程序流程图 33555. 程序清单 66 元器件明细表 267. 调试过程 278. 参考文献 27#1 引言单片机又称单片微控制器 , 它不是完成某一个逻辑功能的芯片, 而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相 比,单片机只缺少了 I/O 设备。概括的讲:一块芯片就成了一台计算机。它 的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时, 学习使用单片机是了解计算机原理与结构的最佳选择。单片机内部也用和电脑功能类似的模块,比如CPU内存,并行总线,还有和硬盘作用相同的存储器件, 不同的是它的这些部件性能都相对我们的 家用电脑弱很多,不过价钱也是低的,一般不超过10 元即可用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、 排烟罩、VCD等等的家电里面都可以看到它的身影!它主要是作为控制部分 的核心部件。可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。 这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因 为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有 如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的 使用领域已十分广泛, 如产品未使用单片机或其它可编程逻辑器件上智能控 制、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单 片 机 , 就能 起 到 使 产品 升级 换代 的 功 效, 常 在 产 品名 称 前 冠以 形容 词 “智能型”,如智能型洗衣机等。今天我利用单片机控制学校的打铃系 统,下面是我的设计思路2 设计要求用单片机、数字温度传感器、实时时钟芯片、点阵液晶模块设计一个简易的自动打铃系统,系统工作时,在LCD显示器的第一行用16X 16点阵的汉字显示“自 动打铃系统”,第二行显示当前时间, 第三行显示当前温度值, 在随后的四行显示 一页最近的打铃时间,即将要打铃的时间用黑底白字显示,如果该页的最后一个 时间打过铃后,自动翻页,将下一页的 4 个打铃时间显示出来;用户可以通过按 键修改当前时间或打铃时间 ; 用户可以通过按指定键获知各键的功能。2.1 总体设计思想用TG12864B晶模拟块设计一个简易的自动打铃系统, 系统正常工作是,在 LCD显示器的第一行用16*16的点阵的汉字显示“自动打铃系统”,第二行显示当 前时间,第三行显示当前温度,在随后的四行显示一页的最近的打铃时间,即将 要打铃的时间用黑底白字显示,如果该页的最后一个时间打过铃后,自动翻页, 将下一个的 4个打铃时间显示出来;用户可以通过按键修改当前时间或打铃时间。 利用KDOW键进入HELP功能;打铃时用音乐声代替。3. 硬件电路设计思想分析:自动打铃系统的本质就是电子钟, 如果当前的时间与打铃时间相同, 就 控制蜂鸣器发出打铃声。虽然利用单片机本身的定时器也能够实现走时功能,但 精度不够高,程序也比较复杂,而实时时钟芯片 PCF8563能够轻松的解决以上问 题。由于打铃时间可能多达数十个,如果用户设置完打铃时间后将其保存在片内RAM中, 一旦断电或重新启动,打铃时间又必须重新设置,为此可利用串行E2PROM 器件24C02来保存打铃时间。另外用4个按键来设置当前时间和打铃时间。系统正常工作时,按 KDOW键 进入帮助菜单;按KSET键进入当前时间的设置,长按 KSET键则进入打铃时间的 设置;进入设置方式后,按KSET键移动光标,用黑底白字指示当前正在修改的时、 分、秒,KINC, KDEC键分别对当前的修改对象加、减 1如果是修改的打铃时间, 用KDOW/键对下一个打铃时间进行设置,长按KSET键退出当前时间或打铃时间的 设置方式,回到正常状态。电子钟是一个以“分”,“秒”显示于人的视觉器官 的计时装置。它的计时周期为 24小时,显示满刻度为 23时 59分 59 秒,另外应 有校时功能和一些显示星期、报时、停电查看时间等附加功能。因此,一个基本 的数字钟电路主要由译码显示器、“时”,“分”,“秒”,“星期”计数器、 校时电路、报时电路和振荡器组成。干电路系统由秒信号发生器、“时、分、秒、 星期”计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号产生器 是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加 分频器来实现。 将标准秒信号送入“秒计数器”, “秒计数器”采用 60进制计数 器,每累计 60 秒发出一个“分脉冲”信号, 该信号将作为“分计数器”的时钟脉 冲。“分计数器”也采用 60 进制计数器,每累计 60分钟,发出一个“时脉冲” 信号,该信号将被送到“时计数器”。 “时计数器”采用 24 进制计时器, 可实现 对一天 24小时的累计。每累计 24 小时,发出一个“星期脉冲”信号,该信号将 被送到“星期计数器”,“星期计数器” 采用 7 进制计时器,可实现对一周 7 天的累计。译码显示电路将“时”、“分”、“秒”、“星期”计数器的输出状 态送到七段显示译码器译码,通过七位 LED七段显示器显示出来。整点报时电路 时根据计时系统的输出状态产生一脉冲信号, 然后去触发一音频发生器实现报时。 校时电路时用来对“时”、 “分”、 “秒”、 “星期”显示数字进行校对调整的。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供 稳定,精确的单频振荡。在通常工作条件下,普通的晶振频率绝对精度可达百万 分之五十。 高级的精度更高。 有些晶振还可以由外加电压在一定范围内调整频率, 称为压控振荡器( VCO)晶体振荡器电路给数字钟提供一个频率稳定准确的 32768Hz 的方波信号, 此外还有一校 正电容可以对温度进行补偿,以提高频率准确度和稳定度,使稳定度优于10-4,可保证数字钟的走时准确及稳定,下面我画出硬件电路图,见附录 1。3.1PCB 图见附录2。4.程序流程图(开始)初始化定时器T0初始化外部中断0初始化液晶屏显示”自动打铃 系统”显示当前时间显示当前温度24C02中的打铃时间有 效?发DS18B20复位命令发跳过ROM命令 发启动温度转换命发DS18B20复位命令发跳过ROM命令 发读暂存器指令 读取一2字节的温度将打铃时间从24C02 中至数组alatime中将温度值转换为BCD码送显 示缓存、调用显示程序初始化PCF8563允许定是、报警中断写入当前时间 显示当前温度 显示1页最近打铃时间 确定下一个要打铃的时间 将其设为PCF8563的报警时 间将其以黑KSET_键按卞KSET键按下N修改打铃时/器与入产4生方波修改当前时间控制定时器写T入产40写入 PCF8563将正在打铃时间以正常方式显示 i-产的打铃时间将其设为P将其以黑底白字方式显示KDOW键按下-Y ; 显示Help功能N Y t” KINCN、键按翻页从PCF8563读取当前时间,显示当前 时间,KDOWN键按下是否结束?文件I2C.C的清单如下:#in elude #in elude vintrin s.h#define uchar unsigned char#define delay1us() _nop_()#define delay5us() _nop_();_nop_();_nop_();_nop_();_nop_()sbit SDA=PM7;/P1.1模拟 I2C 总线的 SDAsbit SCL=P1A6; /P1.0模拟 I2C 总线的 SCLbit ack_mk;/ 应答标志位,有应答为 1,无应答为 0SDA=1;SCL=1;delay5us(); /SDA=0;delay5us(); /SCL=0;/将SDA SCL置为1void Start() /始信号/产生起起始条件建立时间大于 4.7us, 故延时 5us/SCL为高时,SDA由高变低,发送起始信号 延时 5us/SCL 变低,准备发送或接收数据void Stop() / 产生停止信号SDA=0;/ 将 SDA青 0, SCL置 1SCL=1;delay5us(); / 结束条件建立时间大于 4.7us ,所以延时 5usSDA=1;/当SCL为高电平时,SDA由低变高,产生结束信号delay5us(); / 延时 5usSCL=0;void Ack(void) / 产生应答信号SDA=0; /SDA 先清 0,发应答信号SCL=1;/SCL 由低变高,产生一个时钟delay5us(); / 延时 5usSCL=0; / 时钟线SCL恢复到低电平,以便继续接收void NAck(void)SDA=1; /SDA SCL=1; /SCL delay5us();/ 产生非应答信号先置 1,发非应答信号由低变高,产生一个时钟 / 延时 5usSCL=0; /时钟线SCL清恢复到低电平,以便继续接收void SendByte(uchar c) / 向 I2C 总线发送一个字节uchar n ;for(n=0;n8;n+)if(c&0x80) SDA=1;/ 一字节为 8 位,循环 8 次/根据发送位将数据线SDA置为1或清0else SDA=0;SCL=1;/delay5us();/SCL=0;/SCLc=c1;/ delay5us();/SDA=1;/置SCL为高,通知被控从机开始接收数据位 延时 5us变低电平,准备发送下一位数据 将下一位要发送的数据移到最高位 , 先高后低延时 5us 一字节发送完后释放数据线,准备接收应答位delay5us();SCL=1;/SCLdelay5us();/if (SDA=1)ack_mk=0;else ack_mk=1; /由低变高,产生一个时钟,读取 SDA的状态 延时 5us/如果SDA=1则发送失败,将ack_mk清0否则发送成功,将ack_mk置1SCL=0;/SCL 变低uchar RcvByte() uchar c;/ 接收一个字节uchar n;for(n=0;n8;n+) SDA=1;/ 一字节为 8 位,循环 8 次置数据线SDA为输入方式,进入接收方式SCL=1; /SCL由低变高,产生一个时钟if (SDA=0)c=c&0x7f;/根据数据线SDA勺状态,将c的最高位清0或置1elsec=c|0x80;c
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号