ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:376.44KB ,
资源ID:9917362      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9917362.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多路监控报警系统单片机课程设计.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

多路监控报警系统单片机课程设计.docx

1、多路监控报警系统单片机课程设计单片机课程设计 多路监控报警系统 多路监控报警系统一、实验目的1了解A/D芯片TLC0809转换性能及编程方式。2把握A/D转换器与单片机的接口方式3学会利用A/D转换器进行电压信号搜集。二、设计任务及要求 利用串行模/数转换芯片TLC080九、SST89E58及液晶显示器,设计完成一个数字电压多路监控报警系统。要求: 数字电压多路监控报警系统可测量05V输入电压,电压值通过液晶连番显示,并依照设置的限定值对输入超出额度的路端警报提示。三、工作原理及设计思路多路监控报警系统的设计由A/D转换、数据处置及显示操纵等组成。A/D转换由集成电路TLC0809完成,利用T

2、LC0809将模拟电压转换为数字量,经单片机将数字量转换成对应的电压值,并通过液晶显示输出。四、系统特点本系统能够每一路独立设置最高最低的电压值,并对每一路电压进行监控报警,对超出范围内的电路显示对应路值,并用LED灯和蜂鸣器表示不同的路值。五、硬件电路设计及原理一、ADC0809(1)、ADC0809管脚图及时序图: 该ADC0809数据搜集部份是单片CMOS器件,它具有8位模拟数字转换器,8通道多路复用器和微处置器兼容操纵逻辑。8位A / D转换器采纳逐次逼近作为转换技术。依照时序电路的分析,能够完成单片机编程。该系统在工作时,单片机将产生串行时钟,并按时序发送和同意数据位。由上图可知,A

3、DC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,许诺8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平常,才能够从三态输出锁存器取走转换完的数据。IN0IN7:8条模拟量输入通道 ADC0809对输入模拟量要求:信号单极性,电压范围是05V,假设信号过小,必需进行放大;输入的模拟量在转换进程中应该维持不变,如假设模拟量转变太快,那么需在输入前增加采样维持电路。 地址输入和操纵线:4条 ALE为地址锁存许诺输入线,高电平有效。当ALE线为高电平常,地址锁存与译码器将A

4、,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入。数字量输出及操纵线:11条 ST为转换启动信号。当ST上跳沿时,所有内部寄放器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应维持低电平。EOC为转换终止信号。当EOC为高电平常,说明转换终止;不然,说明正在进行A/D转换。OE为输出许诺信号,用于操纵三条输出锁存器向单片机输出转换取得的数据。OE1,输出转换取得的数据;OE0,输出数据线呈高阻状态。D7D0为数字量输出线。 CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟

5、信号必需由外界提供,通常利用频率为500KHZ, VREF(),VREF()为参考电压输入。 (2)、ADC0809应用说明 ADC0809内部带有输出锁存器,能够与AT89S51单片机直接相连,初始化时,使ST和OE信号全为低电平,送要转换的哪一通道的地址到A,B,C端口上,在ST端给出一个至少有100ns宽的正脉冲信号,是不是转换完毕,咱们依照EOC信号来判定,当EOC变成高电平常,这时给OE为高电平,转换的数据就输出给单片机了。 二、SST89E58RD(1)、SST89E58RD管脚图:3、1602液晶引脚功能说明第1脚:VSS为电源地,接GND。 第2脚:VDD接5V正电源。 第3脚

6、:VL为液晶显示器对照度调整端,接正电源时对照度最弱,接地电源时对照度最高。 第4脚:RS为寄放器选择,高电平常选择数据寄放器、低电平常选择指令寄放器。 第5脚:RW为读写信号线,高电平常进行读操作,低电平常进行写操作。当RS和RW一起为低电平常能够写入指令或显示地址,当RS为低电平RW为高电平常能够读忙信号,当RS为高电平RW为低电平常能够写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平常,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 第15脚:BLA背光电源正极(+5V)输入引脚。 第16脚:BLK背光电源负极,接GND。序号指令RSR/WD7D6D5D4D3D2

7、D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容指令1:清显示,指令码01H,光标复位到地址00H位置 指令2:光标复位,光标返回到地址00H 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左

8、移 S:屏幕上所有文字是不是左移或右移。高电平表示有效,低电平那么无效 指令4:显示开关操纵。 D:操纵整体显示的开与关,高电平表示开显示,低电平表示关显示 C:操纵光标的开与关,高电平表示有光标,低电平表示无光标 B:操纵光标是不是闪烁,高电平闪烁,低电平不闪烁 指令5:光标或显示移位 S/C:高电平常移动显示的文字,低电平常移动光标 指令6:功能设置命令 DL:高电平常为4位总线,低电平常为8位总线 N:低电平常为单行显示,高电平常双行显示 F: 低电平常显示5x7的点阵字符,高电平常显示5x10的点阵字符 指令7:字符发生器RAM地址设置 指令8:DDRAM地址设置 指令9:读忙信号和光

9、标地址 BF:为忙标志位,高电平表示忙,现在模块不能接收命令或数据,若是为低电平表示不忙。 指令10:写数据 指令11:读数据。读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无五、软件设计主程序设计:1)A/D转换程序每次5组电压值组成一个数组,数组中的值为AD进入值50次的平均值。2)数据处置程序:能够说是整个程序设计的最难点,数据处置显示的电压值计算公式:V=(A*500)/255,(其中A为经0

10、809转换后所得的数字量)如此使得计算出来的数值为整型,幸免了浮点数计算复杂的缺点,在以后的显示中加入小数点即可。子程序设计:由于C语言的子程序功能比较壮大,因此本程序挪用相关子程序,减少了很多编程的繁琐,相关子程序功能如下所示:函数功能:400ms延时延时 函数功能:5ms延时 函数功能:1602A按指定位置显示一个字符函数功能:1602A初始化 函数功能:1602A读状态 函数功能:1602A写指令函数功能:1602A读数据 函数功能:1602A写数据 作用:AD0809通道选择采样值流程图: 否 是六、系统C程序依照上述软/硬件的设计,编写好的源程序如下:/* ADC0809的多路电压监

11、视器* ADC0809+1602LCD+单片机* 于萱格*/#include#include#include#include #include#define SYSTEM_OSC 1A1F1F1F1F1F1F1F1F1F1A1A1F1F1F1F1F1A1A1F1F1A1A1A1A1F1F1F1F1F1A1A1F1F1F1F1F1A1A1F1F1A0F0F1A1A1A1A1A0C0F0C1F1A1A0C1A1F1A1A1A0C0F0F0C1A0F0F1A1A1F1A1A1A1F1A1A1A1A1A1A1A1F1A1A1A1F1A1A1A1A1A1A1A1A1A0F; DisplayOneChar

12、(6, 1, uctechsw); DisplayOneChar(7, 1, uctechgw); if(func5) break; ; DisplayOneChar(6, 1, uctechsw); DisplayOneChar(7, 1, uctechgw); if(func_ok=1) LCM_WriteCommand(0x01,1); ; DisplayOneChar(7, 1, uctechsw); DisplayOneChar(8, 1, uctechgw); void EXF0() interrupt 0 using 0 /ex0 入口 EA=0; LCM_WriteComman

13、d(0x01,1); /显示清屏 Delay400Ms(); if(func=10) func=0; else func+; EA=1;void EXF1() interrupt 2 using 0 /ex1 入口 EA=0; LCM_WriteCommand(0x01,1); /显示清屏 Delay400Ms(); if(func_ok=1) func_ok=0; else func_ok+; EA=1;char B_UP_CHECK(void) / 向上按键去抖 if(B_UP=0) Delay5Ms(); Delay5Ms(); if(B_UP=0) return 1; return 0

14、; char B_DOWN_CHECK(void) / 向下按键去抖 if(B_DOWN=0) Delay5Ms(); Delay5Ms(); if(B_DOWN=0) return 1; return 0; /*ADC0809的初始化*/void init(void) ST=0; OE=0;/*/*参数名: AD(uint M)/*作用: AD0809通道选择采样值/*输入参数:CH0,CH1,CH2 ,unit型/*输出参数:选择参数的电压值,发在AD_DATA处/*/void AD(uint M) ST=0; if(M=0) A=1;b=1;C=0; else if(M=1) A=0;b

15、=0;C=1; else if(M=2) A=1;b=0;C=1; else if(M=3) A=0;b=1;C=1; else if(M=4) A=1;b=1;C=1; Delay(10); ST=1; Delay(10); ST=0; while(EOC=0); OE=1; AD_DATA=P1; OE=0;/*AD0809所用的延时*/void Delay(uint m) while(-m);void InitialSound(void) BeepIO = 0; Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256; / 计算TL1应装入的初值

16、 (10ms的初装值) Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256; / 计算TH1应装入的初值 TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TMOD = 0x11; ET0 = 1; ET1 = 0; TR0 = 0; TR1 = 0; EA = 1;void BeepTimer0(void) interrupt 1 /音符发生中断00void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigne

17、d int Speed) unsigned int NewFreTab12; /新的频率表 unsigned char i,j; unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength; unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD; for(i=0;i 11) j = j-12; NewFreTabi = FreTabj*2; else NewFreTabi = FreTabj; if(Octachord = 1) NewFreTabi=2; el

18、se if(Octachord = 3) NewFreTabi=2; SoundLength = 0; while(SoundSoundLength != 0x00) /计算歌曲长度 SoundLength+=2; Tone = SoundPoint; Length = SoundPoint+1; / 读出第一个音符和它时时值 LDiv0 = 12000/Speed; / 算出1分音符的长度(几个10ms) LDiv4 = LDiv0/4; / 算出4分音符的长度 LDiv4 = LDiv4-LDiv4*SOUND_SPACE; / 普通音最长间隔标准 TR0 = 0; TR1 = 1; wh

19、ile(Point = 2; /低音 if (SM=3) CurrentFre = 2; /高音 Temp_T = 65536-(50000/CurrentFre)*10/(/SYSTEM_OSC);/计算计数器初值 Sound_Temp_TH0 = Temp_T/256; Sound_Temp_TL0 = Temp_T%256; TH0 = Sound_Temp_TH0; TL0 = Sound_Temp_TL0 + 12; /加12是对中断延时的补偿 SLen=LengthTabLength%10; /算出是几分音符 XG=Length/10%10; /算出音符类型(0普通1连音2顿音)

20、FD=Length/100; LDiv=LDiv0/SLen; /算出连音音符演奏的长度(多少个10ms) if (FD=1) LDiv=LDiv+LDiv/2; if(XG!=1) if(XG=0) /算出普通音符的演奏长度 if (SLen0;i-) /发规定长度的音 while(TF1=0); TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TF1=0; if(LDiv2!=0) TR0=0; BeepIO=0; for(i=LDiv2;i0;i-) /音符间的间隔 while(TF1=0); TH1 = Sound_Temp_TH1; TL1 =

21、 Sound_Temp_TL1; TF1=0; Point+=2; Tone=SoundPoint; Length=SoundPoint+1; BeepIO = 0;/*1602A写数据函数*/*函数原型:void LCM_WriteData(uchar WDLCM)/*函数功能:1602A写数据/*输入参数:要写入的数据/*输出参数:无/*挪用模块:/*成立时刻:2005/11/14/*作者:站长/*/void LCM_WriteData(uchar WDLCM) LCM_ReadStatus();/检测忙 LCM_Data = WDLCM; LCM_RS = 1; LCM_RW = 0;

22、LCM_E = 0;/假设晶振速度太高能够在这后加小的延时 LCM_E = 0;/延时 LCM_E = 1;/*1602A写指令函数*/*函数原型:void LCM_WriteCommand(uchar WCLCM,BuysC)/*函数功能:1602A写指令/*输入参数:要写入的指令/*输出参数:无/*挪用模块:/*成立时刻:2005/11/14/*作者:站长/*/void LCM_WriteCommand(uchar WCLCM,BuysC)/BuysC为0时忽略忙检测 if (BuysC) LCM_ReadStatus();/依照需要检测忙 LCM_Data = WCLCM; LCM_RS

23、 = 0; LCM_RW = 0; LCM_E = 0; LCM_E = 0; LCM_E = 1;/*1602A读数据函数*/*函数原型:uchar LCM_ReadData(void)/*函数功能:1602A读数据/*输入参数:无/*输出参数:1602A返回的数据/*挪用模块:/*成立时刻:2005/11/14/*作者:站长/*/uchar LCM_ReadData(void) LCM_RS = 1; LCM_RW = 1; LCM_E = 0; LCM_E = 0; LCM_E = 1; return(LCM_Data);/*1602A读状态函数*/*函数原型:uchar LCM_Rea

24、dData(void)/*函数功能:1602A读状态/*输入参数:无/*输出参数:1602A返回的状态/*挪用模块:/*成立时刻:2005/11/14/*作者:站长/*/uchar LCM_ReadStatus(void) LCM_Data = 0xFF; LCM_RS = 0; LCM_RW = 1; LCM_E = 0; LCM_E = 0; LCM_E = 1; while (LCM_Data & 0x80);/检测忙信号 return(LCM_Data);/*1602A初始化函数*/*函数原型:void LCM_Init(void)/*函数功能:1602A初始化/*输入参数:无/*输出参数:无/*挪

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2