新闻中心

EEPW首页>嵌入式系统>设计应用> 基于Proteus的自动拨号报警器仿真设计

基于Proteus的自动拨号报警器仿真设计

作者: 时间:2011-06-16 来源:网络 收藏

2.2 中断子程序
中断子程序基本流程如图3所示。首先建立一个整形数组numi[],将号码位数k保存在numi[0]中,而电话号码则保存在numi[1]~numi[k]中;然后将数组numi[]的前k+1位一次性发送至I2C芯片。读取的时候,从读取数据首地址一次性读取出16位数据(电话号码最多14位),将其保存在整形数组phn[]中,的时候从phn[1]开始,一共读phn[0]次,这样不但可以准确的传输电话号码并进行,同时对I2C芯片的
读/写仅需1次,降低了读写过程中未知错误发生的概率。
共有8路外部模拟报警信号输入,其警报信号定义如表1所示。将长音视为1,短音视为0,则警报内容可译为报警信号源代码的BCD码低三位,以此作为报警类型标识。

本文引用地址://m.amcfsurvey.com/article/150595.htm

c.JPG


2.3 LCD显示子程序
LCD显示子程序包含有多个子函数,包括:读LCD状态指令函数recom()、测试忙函数busytest()、写LCD指令函数wrcomn()、LCD清屏函数clrscr()、初始化LCD函数initled()、光标定位函数setpos();写单字节数据函数writedata();对于某一行的写入字符串函数wrll()与wr21()。其中,读/写指令、测试忙、清屏、光标定位、写单字数据均是按照LCD原理命令字进行操作。LCD的初始化包括复位设置、清除显示、地址归位、显示开关、游标设置、读/写地址设置等,LCD中所有数字和字符都可以通过它的ASCII码来访问显示。
2.4音频模块程序
在拨号程序设计中关键要控制好定时器以实现准确的占空比脉冲,程序编写中,设置TMOD=0x11,定时器设置为操作模式1,当生成61.5 ms低电平脉冲时,TC=216-61.5 ms/1μs=4 036=0x0FC4,因此TH0=0x0F,TL0=0xC4;当生成38.5ms高电平脉冲时,TC=216-38.5ms/1μs= 27 036=0x699C,所以TH0=0x69,TL0=0x9C;当延时500 ms时,由于单片机定时器最大定时时间为61.5 ms(方式1),因此采取在一个循环次数为10的for循环中执行定时时间为50 ms的程序,TC=216-50 ms/1μs=15 536=0x3CB0,因此TH0=0x3C,TL0=0xB0。
音频模块程序设计是通过设定特定频率的正负脉冲序列,驱动扩音器播放出相应音调的声音,例如若设置单片机定时器1TH0=0xFB,TL0= 0x44,则脉冲周期约为2.424 ms,所发出的声音与音调“do”相似。在此不妨定义发长音时间为500 ms,发短音时间为100 ms。长短音信号相互组合成不同的警报信息可用来定义不同的报警类型。

3 调试与运行
和Keil中进行相关的设置,可以让两者进行联调,联调可以在同一台计算机上进行,也可以在不同的计算机之间进行。通过与Keil的联调可以轻易做到在不使用硬件的前提下直接在平台上进行实时,对于系统的调试具有很大意义。实时能降低调试的难度,更有利于设计中一些问题的解决以及BUG的发现。相比较于只能观看运行结果的系统来说,联调可以大大提高设计制作的效率。Pro-teus与Keil的联调需要用到下的一个动态链接库文件VDM51.DLL,用其作为Keil链接到Proteus的接口。
系统运行后,首先初始化系统,并显示系统信息,数秒钟的延时之后LCD将显示提示“是否输入新号码?”,若按“#”则进入号码输入界面。输入完毕后按“#”结束输入,如果输入错误则按“*”重新输入,若按“*”则进入等待状态,若报警开关未打开,则进入空闲状态,此时按“#”可以修改已存储的电话号码。若报警开关已经打开,则进入监控状态,此时按“#”依然可以修改之前存储的电话号码。若此时有外部报警信号进入,则进入中断程序,开始拨号。同时,可用电压探针探测到输出的拨号脉冲序列,如图4所示。根据脉冲拨号原理,数字1~9拨号脉冲个数与拨号数字相同,0的脉冲个数是10。

d.JPG


拨号完成会延时10 s,之后将会根据输入报警信号类型判断警报内容,若打开第六路报警信号开关,此时系统发出了长、长、短的警报信号。若将报警开关闭合,系统被挂起,解除报警信号,可模拟成被人暂时关闭,并开始处理报警内容,如:火灾则灭火,毒气则通
风,盗窃则检查门窗物件等。报警信号解除后,程序跳出中断循环程序,返回到主程序的监控状态。

4 结语
本文给出了使用Proteus软件仿真拨号实验的具体设计过程,采用模块程序设计,利用仿真软件Proteus及Keil C51联合调试程序。程序设计过程对每个模块先进行独立编程,调试通过之后再一起合并进行系统程序总调试。通过上述方式,学生完全可以通过Proteus软件实现单片机实验的仿真,并在较短的时间内完成单片机系统的软、硬件设计,形象生动地理解并掌握单片机技术。不仅弥补了硬件资源投入不足的弊端,还明显克服了实验箱教学中固定硬件资源导致实验内容固定的缺陷,极大地发挥了学生的主观能动性和创造性。


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭