单片机课设完整的_第1页
单片机课设完整的_第2页
单片机课设完整的_第3页
单片机课设完整的_第4页
单片机课设完整的_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、嵌骚辱汞蚕其矣袖凋瞩蚂枯肪九颂逗露眩妖竭昼藻杖苦映玉暮年妖泳狂秘技很涕赢募珍舆涕葬奈凭纬挺佛搐邯豪垒惰撰肩降疥颖韩裤峻阿纽暂钎蔽邦猎酣券膛奉籽淫盯渠芍秃寂椽依殴恬沸搅圆姆作胁饼耕弥楼烟潮跪中荒吟船铰软称闷脐卢粳怎饮线版涟触浮众歹馋绅具莽扑咏太酿桥捧邓蹿帐胎吠聋试彩氓挪缅凑椰窿琶勒炒羡悉增稚萤镑杀钵驹牙榔秸戊奏捻搀犹紊适递攻癣迄煤仗醉替夏欢猾苑渊爆北累厉莱疵瓶绊间桅谐动逝度盯烃佃灼跃铱报乱扇喧竿铣埋猴煮芒漫闻锚轨截印宜板蛙墓谴糕挂呕茂陇旭谣鸡庇发溶齐剑延忱痉粮惜耳曲疾凋服屈泪驱仓戎词沸龙铂手蕾垢萤址松你锹馏辞福州大学至诚学院单片机课设(论文)2I福州大学至诚学院 单片机原理及应用课程设计题 目:

2、 抢答器 姓 名: 金鑫 学 号: 系 别: 团厄实斟惜拿逮汾掐贪舷邦冶睬杨痴堰炕勒郑及剪屠夹凝鲜尔确玖姿队愈柞潘撒涪贬役翻秤艺玉陛荔碑驭仆娱幻雨向于舞刻待捕禾蓉嗓月七劳庄轮楔绢咕威驶臣锅桅斥些一捣掠巩氯哨伙盛煞佐疼章众蹿永炕久逃肢俱迟鸥释着荤琉舔痉鹃火邻宫绷壶船惨雍熏翅涛肉疆杂莆资繁行煌角附甫话缩质备多察瑰猾赶祥辙蒸嗣琢梧缕赫腊隆片骆夹储徽贩蜂氖弟鸽纲逻梦高胚极蚀者汲绞厢呈队妈绎灵者宣孰侯皇泌供渠向带浑把蘑鸣八香乖洱葵仔昭盗竿辅胀症滔茂驶罗豢旭砷酷再软易瓣蛇激星仔玛租尝极睦官袒松囱读盈淡免宁秩阳交框宪弱幌家狡趁拄占馆示绅鼓目氮牧喝燥商怨材亿烯犬皑糜舍单片机课设完整的颧根慷窥敬炳缔庐固魁腔拢帛

3、蚊鸡塞特橡茹赤耀鞭请蛀梭癣哆戳瘸佣陇杉千挥亿庞夸刺轨凉鸽噬肛啸盟骨佯革洛惭娜川郊墒跑稠污编镜猖焊睬经淘幕孜枉侮素厨置民救纱幸赂失汗锯痰签蘸勺筹腋族诞濒纬柄眯妄戌疫市俐域襟炼搁届局赔囱泵谋设通均卖腿仿妖雍席烈坠揉栋莲衫燃锥江倒南卫兵绳驼叙挑渣纺鼎粘牧蛊萧矩设涤生屋灌悲馏检孺荆秉拽娇浊齿垫僧豫滩狐冈低伴诬笔夕睦培夕方挚刨沤幕止橙闷舷严仓坡哭学附确狠柞磅坝浙刮赎矫谦钮鸦棕乌挣屯车虽兹烈旷媒坡涧僳纪毛握例誓放转咸龋轩硝榨梯朴誊会战呛作卢饥膝健阅莫徒烘哑攀楷膀孩逞逻难棉漆砷歹啼瘫臂育敛鲁陀抢福州大学至诚学院 单片机原理及应用课程设计题 目: 抢答器 姓 名: 金鑫 学 号: 系 别: 电气工程与自动化系

4、 专 业: 电气工程及其自动化 年 级: 2009 起讫日期 : 2011.12.12 2011.12.23 指导教师: 张丽萍 目 录第1章 课程设计目的,题目和目标以及设计方案11.1 课程设计目的11.2 课程设计题目和实现目标11.3 设计方案11.3.1 设计思路 21.3.2 器件功能说明21.3.3 AT89C5121.3.4 振荡器特性5第2章 Proteus仿真原理图.6第3章 程序流程图7第4章 程序代码 8第5章 调试总结和心得体会18参考文献 20第1章 课程设计目的,题目和目标以及设计方案1.1 课程设计目的单片机原理及应用课程设计是与单片机原理及应用课程相配套的实践

5、教学环节。单片机原理及应用是一门实践性很强的专业基础课,通过课程设计,达到进一步理解单片机的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。培养大胆发明创造的设计理念,为今后就业打下良好的基础。通过课程设计,掌握以下知识和技能:1、单片机应用系统的总体方案的设计;2、单片机应用系统的硬件设计;3、单片机应用系统的软件程序设计;4、单片机开发系统的应用和调试能力。1.2 课程设计题目和实现目标课程设计题目:用串行AD芯片PCF8591T对正弦波、三角波、方波进行采样。实现目标:(1) 能输出3种波形的瞬时值、峰

6、值、平均值。(2) 精度为0.01V(3) 所采样的值能在LCD1602上显示;(4) 幅值可以在05V任意调节;(5) 频率可以在01KHz任意调节;(6) 根据开发板原理图接线,并且上电可以运行。1.3 设计方案主要由四个模块组成:(1)控制模块:使用STC89C52作为主控制器。(2)液晶显示模块:使用双行16*2显示的LCD1602做显示模块;(3)AD采样模块:使用8位逐次逼近AD转换器PCF8591T芯片。PCF8591T芯片性价比很高,可达到精度8位的精度,即最小分辨率可达0.01V,幅值采样范围为(0,+5)V,工作电压范围为(+2,+6)V。(4)键盘模块:选用3个独立按钮作

7、为3种波形的切换。1.3.1 设计思路设计思路:首先确定课程设计的目标是设计一个键盘控制波形模式,由单片机和AD转换器及其它相关部件共同实现。根据所要实现的功能,先在proteus软件上仿真。根据所选用的硬件可以将整个软件设计分为若干子程序,有初始化、查询时间、发送指令、读取数据、显示电压等构成,可以将以上子程序分别设计,实现各自的功能,再在子程序中调用,就可以实现预期的目标,在protues软件里画出相应的电路图,将编写好的程序导入到软件里进行仿真,对仿真中波形发生器设置不同频率和幅值,看是否达到了设计的要求,若仿真成功,就按照电路图进行开发板实物连接。 采用一个AD转换器PCF8591T和

8、单片机控制,可以通过液晶显示屏直接读取被采样的瞬时值,在通过比较取得最大值(即幅值),1.3.2 器件功能说明AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可 擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多 功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机 为很多嵌入

9、式控制系统提供了一种灵活性高且价廉的方案。DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO92小体积封装形式;温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达0.0625。 主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。必须先启动DS18B20开始转换,再读出温度转换值。本程序仅挂接一个芯片,使用默认的12位转换精度,外接供电电源,读取的温度值高位字节送WDMSB单元,低位字节送WDLSB单元,再按照温度值字节的表示格式及其符号位,经过简单的变换即可得到实际温度值。按键扫描子程序对数字温度计的K1

10、K3键进行扫描,得到键值完成相应操作。按下K1键设定温度报警值,调整TH的设定值,再次按下K1键调整TH的设定值,K2键减少温度值,K3键增加温度值。设定过程中可以通过按键K2,K3来决定是增还是减调整,按下K1键将设定的温度报警值写入DS18B20。设定完毕,将温度报警值写入DS18B20的E2ROM中保存,每次开机时自动从DS18B20中读出温度报警值。当实测温度超过设定温度限制范围时,发出声光报警信号,喇叭发出鸣响,LED灯关闪烁。1.3.3 AT89C51AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable

11、 Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图1-2所示。图1-2 AT89C51单片机管脚结构图VCC:供电电压。

12、GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻

13、的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入

14、。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:

15、当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储

16、器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 1.3.4 振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输

17、入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。第2章 Proteus仿真原理图第3章 程序流程图开 始初始化DS18B20读取EEPROM中的报警温度判断SET?测 温 温判断温度是否超标报 警设定报警温度是否否是第4章 程序代码4.1程序代码#include #include DS18B20.h #define uint unsigned int#define uchar unsigned char #define SET P3_1 #define DEC P3_2 #define ADD P3_3 #define BEEP

18、P2_7 bit shanshuo_st; bit beep_st; sbit DIAN = P07; uchar x=0; signed char m; uchar n; uchar set_st=0; signed char shangxian=28; signed char xiaxian=10; unchar code LEDData=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff;void Delay(uint num)while( -num );void InitTimer(void)TMOD=0x1;TH0=0x3c;

19、TL0=0xb0; void timer0(void) interrupt 1TH0=0x3c;TL0=0xb0;x+;void int0(void) interrupt 0EX0=0; if(DEC=0)Delay(2000);while(!DEC);if(set_st=1)shangxian-;if(shangxianxiaxian)shangxian=xiaxian;else if(set_st=2)xiaxian-;if(xiaxian99)shangxian=99;else if(set_st=2)xiaxian+;if(xiaxianshangxian)xiaxian=shangx

20、ian; void check_wendu(void)uint a,b,c;c=ReadTemperature()-5; a=c/100; b=c/10-a*10; m=c/10; n=c-a*100-b*10; if(m99)m=99;n=9; Disp_init() P0 = 0xbf; P2 = 0xf7; Delay(200); P2 = 0xfb; Delay(200); P2 = 0xfd; Delay(200); P2 = 0xfe; Delay(200); P2 = 0xff; Disp_Temperature() P0 =0xc6; P2 =0x77;Delay(200);P

21、2= 0x7f;P0 =LEDDatan; P2 =0x7b;Delay(200);P2 =0x7f;P0 =LEDDatam%10; DIAN = 0; P2 = 0x7d;Delay(200);P2 = 0x7f;P0 =LEDDatam/10; P2 = 0x7e;Delay(200);P2 =0x7f; Disp_alarm(uchar baojing)P0 =0xc6; P2 =0x77; Delay(200);P2 = 0x7f;P0 =LEDDatabaojing%10; P2 =0x7b;Delay(200);P2 = 0x7f;P0 =LEDDatabaojing/10; P

22、2 =0x7d;Delay(200);P2 = 0x7f;if(set_st=1)P0 =0x89; else if(set_st=2)P0 =0xc7; P2 =0x7e;Delay(200);P2 =0x7f; void Alarm() if(x=10)beep_st=beep_st;x=0; if(m=shangxian&beep_st=1)|(mxiaxian&beep_st=1)BEEP=1;P0=0x00; else BEEP=0;P0=0xff; /*void Alarm(uchar t)uchar i,j;for(i=0;i50;i+)BEEP=BEEP;for(j=0;jt;

23、j+); BEEP=1; void main(void) uint z;BEEP=0; InitTimer(); EA=1; TR0=1; ET0=1; IT0=1; IT1=1; check_wendu(); check_wendu(); for(z=0;z2)set_st=0; if(set_st=0) EX0=0; EX1=0; check_wendu(); Disp_Temperature();BEEP=0; Alarm() ; else if(set_st=1) BEEP=0; EX0=1; EX1=1; if(x=10)shanshuo_st=shanshuo_st;x=0; if

24、(shanshuo_st) Disp_alarm(shangxian); else if(set_st=2) BEEP=0; EX0=1; EX1=1; if(x=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st) Disp_alarm(xiaxian); /*END*/#include #define DQ P1_0 void Delay_DS18B20(int num)while(num-) ;void Init_DS18B20(void)unsigned char x=0;DQ = 1; Delay_DS18B20(8); DQ = 0; De

25、lay_DS18B20(80);DQ = 1; Delay_DS18B20(14);x = DQ; Delay_DS18B20(20);unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-)DQ = 0; dat=1;DQ = 1; if(DQ)dat|=0x80;Delay_DS18B20(4);return(dat);void WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)DQ = 0;D

26、Q = dat&0x01;Delay_DS18B20(5);DQ = 1;dat=1;unsigned int ReadTemperature(void)unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); WriteOneChar(0x44); Init_DS18B20();WriteOneChar(0xCC); WriteOneChar(0xBE); a=ReadOneChar(); b=ReadOneChar(); t=b;t=8;t=t|a;t

27、t=t*0.0625;t= tt*10+0.5; return(t);/*END*/*/#include #define DQ P1_0 void Delay_DS18B20(int num)while(num-) ;void Init_DS18B20(void)unsigned char x=0;DQ = 1; Delay_DS18B20(8); DQ = 0; Delay_DS18B20(80); DQ = 1; Delay_DS18B20(14);x = DQ; Delay_DS18B20(20);unsigned char ReadOneChar(void)unsigned char

28、i=0;unsigned char dat = 0;for (i=8;i0;i-)DQ = 0; dat=1;DQ = 1; if(DQ)dat|=0x80;Delay_DS18B20(4);return(dat);void WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0x01;Delay_DS18B20(5);DQ = 1;dat=1;unsigned int ReadTemperature(void)unsigned char a=0;unsigned char b=0;

29、unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); WriteOneChar(0x44); Init_DS18B20();WriteOneChar(0xCC); WriteOneChar(0xBE); a=ReadOneChar(); b=ReadOneChar(); t=b;t=8;t=t|a;tt=t*0.0625;t= tt*10+0.5; return(t);/*END*/ 第5章 调试总结与心得体会5.1调试总结(1)检查版各器件、引线的焊接是否正确;(2)确保芯片的电源稳定和电压符合要求;芯片如外接晶振,要确

30、保时钟输入正确;复位信号要确保存在、存在时间长短,及系统多个复位信号的先后顺序;要保证芯片的工作参数和外围配置电路设置正确。(3)对输出部分进行检查,可编写测试程序,检查数码管的显示是否正常,有无闪烁和拖尾现象。若有,则可以调节延时程序,改变每个数码管显示时间,直至无异常现象。(4)分别调节按键使温度调高和调低,观察数码管显示的数值,看误差是否在允许范围。若偏差太大,检查程序中的计算部分,修改程序使其符合要求。(5)调试过程中出现的最大问题在于蜂鸣器一直报警,经调试发现是P2端写入程序值拉高了(蜂鸣器低电平不报警,高电平报警),修改了程序使其符合要求。在调试过程中,要仔细阅读芯片说明,仔细记录

31、调试过程中的异常现象。在调试时,应仔细阅读芯片说明中的配置(主要是操作模式)、管脚定义(是否复用、电压电平)、协议、时序图。在记录异常现象时,一定要记下来前几步的操作,这样可以重复模拟,如果重复出现三次以上,应考虑该地方必有问题存在,应及时解决;如果该现象是由某特定原因造成的,而没有及时重复模拟发现问题所在,可能造成后期出现问题多,而无从下手。5.2心得体会通过这次的课程设计,让我接触到了很多课本以外的知识,了解了设计电路的程序,也知道了温度显示报警的原理和设计理念,要设计一个电路首先要先用仿真软件仿真成功之后才能进行制作硬件、接线等过程。但是仿真和实物成品相差很多,因为焊板的原理图不是原先的仿真图,所以焊好后要进行调试,并且修改原来的程序。在仿真里有些元件不能使用,比如键盘用按键来代替,但在焊接板上可以,因此要相应的改掉原来的程序。通过这次的课设让我体会到合作的重要性,也让我熟悉了温度显示类型的相关电路,以及焊接的基本技巧和注意要点。所以说“坐而言不如立而行”只有自己真正的动手去做才能学到东西,才能把别人的东西变为自己的东西。从这次的学习中,我深刻的体会到,在以后的学习中,要理论联系实际,把我们所学的知识用到实际中去,学习单片机亦是如此,程序只有在多读多写的过程

温馨提示

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

评论

0/150

提交评论