版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章 设计方案论证2.1整个系统的原理 SHAPE * MERGEFORMAT 整个系统的设计方案如下面的介绍,主要是,系统原理,控制芯片介绍和管脚的说明。2.1.1系统原理说明图2.1 系统原理框图 从上面的框图我们很容易的可以看出,CPU是整个电路的核心,它受电源驱动,然后驱动555电路和液晶屏,并且反馈到上位机。整个设计的大体思想就是这样,CPU作为最核心的部件,是这给那个电路的主体,也是整个电路的控制部分。此次我们采用的是由飞利浦公司生产的P89V5RD2HBA单片机芯片。芯片的引脚图如图2.2所示。本设计工作,我主要负责的是软件的编程的工作,这就需要对所用的主芯片要有一个详实的了解
2、,下面是我们在此次设计中用到的芯片口的详细资料,(说明,本次设计中P2口没有用到,作为红外线报警器的扩展口来用,以备今后对红外线的升级之用.)2.1.2控制芯片介绍在本系统中采用的控制芯片是P89V51RD2,P89V51RD2 是一款80C51 微控制器,包含64kB Flash 和1024 字节的数据RAM。P89V51RD2 的典型特性是它的X2 方式选项。利用该特性,设计工程师可使应用程序以传统的80C51 时钟频率(每个机器周期包含12 个时钟)或X2 方式(每个机器周期包含6 个时钟)的时钟频率运行,选择X2 方式可在相同时钟频率下获得2 倍的吞吐量。从该特性获益的另一种方法是将时
3、钟频率减半而保持特性不变,这样可以极大地降低电磁干扰(EMI)。Flash 程序存储器支持并行和串行在系统编程(ISP)。并行编程方式提供了高速的分组编程(页编程)方式,可节省编程成本和上市时间。ISP 允许在软件控制下对成品中的器件进行重复编程。应用固件的产生/更新能力实现了ISP 的大范围应用。它的主要特性如下:(1) 80C51 核心处理单元;(2) 5V 的工作电压,操作频率为040MHz;(3) 16/32/64kB 的片内Flash 程序存储器,具有ISP(在系统编程)和IAP(在应用中编程)功能;(4) 通过软件或ISP 选择支持12 时钟(默认)或6 时钟模式;(5) SPI(
4、串行外围接口)和增强型UART;(6) PCA(可编程计数器阵列),具有PWM 和捕获/比较功能;(7) 4个8位I/O 口,含有3个高电流P1 口(每个I/O 口的电流为16mA);(8) 3个16 位定时器/计数器;(9) 可编程看门狗定时器(WDT);(10) 8个中断源,4个中断优先级;(11) 2个DPTR 寄存器;(12) 低EMI 方式(ALE 禁能);(13) 兼容TTL 和CMOS 逻辑电平;(14) 掉电检测;(15) 低功耗模式(16) 掉电模式,外部中断唤醒;(17) 空闲模式;(18) DIP40,PLCC44 和TQFP44 的封装; P89V51RD2的管脚如图2
5、.2所示。图2.2系统CPU芯片管脚图2.1.3管脚的具体说明本次设计中对芯片的使用管脚(注:本次只对设计中所用的管脚作介绍)如表2.1所示:表2.1 P89V51RD2的管脚说明符号类型描述P0.0P0.7I/OP0 口:P0 口是一个8 位开漏双向I/O 口。写入1时P0 口悬浮,可用作高阻态输入。当访问外部程序和数据存储器时,P0 口复用为低位地址和数据总线。应用中P0 口利用强内部上拉来发送1电平。P0 口可在外部主机模式编程过程中接收代码字节和在外部主机模式校验过程中发送代码字节。P0口用作程序校验或通用I/O 口时均需连接一个外部上拉电阻。P1.0P1.7I/O 带内部上拉P1 口
6、:P1 口是一个带内部上拉的8 位双向口。写入1时P1 口被内部上拉拉高,可用作输入。用作输入时,由于内部上拉的存在,P1 口被外部器件拉低时将吸收电流( IIL )。此外,P1.5,P1.6,P1.7还有16mA 的高电流驱动能力。在外部主机模式编程和校验中,P1 口也可接收低位地址字节。P1.0I/OT2:定时器/计数器2 的外部计数输入或时钟输出。P1.1IT2EX:定时器/计数器2 捕获/重装触发和方向控制。P1.2IECI:外部时钟输入。PCA 的外部时钟输入。P1.3I/OCEX0:PCA 模块0 的捕获/比较外部I/O 口。每个捕获/比较模块连接一个P1 口用作外部I/O 口。该
7、口线不被PCA 占用时仍可用作标准I/O 口。P1.4I/O/SS :SPI 从机选择输入。CEX1:PCA 模块1 的捕获/比较外部I/O 口。P1.5I/OMOSI:SPI 主机输出从机输入端。CEX2:PCA 模块2 的捕获/比较外部I/O 口。P1.6I/OMISO:SPI 主机输入从机输出端。CEX3:PCA 模块3 的捕获/比较外部I/O 口。P1.7I/OSCK:SPI 主机输出从机输入端。CEX4:PCA 模块4 的捕获/比较外部I/O 口。P2.0P2.7I/O 带内部上拉P2 口:P2 口是一个带内部上拉的8 位双向口。写入1时P2 口被内部上拉拉高,可用作输入。用作输入时
8、,由于内部上拉的存在,P2 口被外部器件拉低时将吸收电流( IIL )。在取指外部程序存储器或访问16 位地址(MOVX DPTR)的外部数据存储器时,P2 口发送高位地址。应用中P2 口利用强内部上拉来发送1。 P3.0P3.7I/O 带内部上拉P3 口:P3 口是一个带内部上拉的8 位双向口。写入1时P3 口被内部上拉拉高,可用作输入。用作输入时,由于内部上拉的存在,P3 口被外部器件拉低时将吸收电流( IIL )。在外部主机模式编程和校验中,P3 口可接收一些控制信号和部分高地址位。P3.0IRxD:串口输入。P3.1OTxD:串口输出。P3.2I/INT0 :外部中断0 输入P3.3I
9、/INT1 :外部中断1 输入P3.4IT0:定时器/计数器0 的外部计数输入。P3.5IT1:定时器/计数器1 的外部计数输入。P3.6OWR :外部数据存储器写选通信号。P3.7ORD :外部数据存储器读选通信号。/PSENI/O程序选通使能:/PSEN 是外部程序存储器的读选通信号。/PSEN 在执行内部程序存储器的程序时无效(高电平),执行外部程序存储器时每个机器周期内两次有效,但当访问外部数据存储器时两个有效/PSEN 脉冲将被跳过。当RST 输入引脚的高电平时间大于10 个机器周期时,向/PSEN 脚强制输入一个高电平到低电平的跳变将使器件进入外部主机模式编程。RSTI复位:振荡器
10、工作时,该引脚上2 个机器周期的高电平逻辑状态将使器件复位。当RST 输入引脚为高电平时,如果/PSEN 脚输入一个高电平到低电平的跳变,器件将进入外部主机模式。否则进入正常工作模式。/EAI外部访问使能:若器件要对外部程序存储器取指, /EA 就必须与VSS 相连。器件执行内部程序存储器的程序时/EA 必须与VDD 相连。然而,4 个安全锁定电平可将/EA 禁能,使器件只能执行内部程序存储器的程序。/EA 脚可承受12V 的高压ALE/PROGI/O地址锁存使能:ALE 是一个输出信号,在访问外部存储器时将地址低字节锁存。该引脚也用作Flash 的编程脉冲输入( /PROG )。通常,ALE
11、在1/6 的振荡频率时输出,可用作外部定时或外部时钟。每次访问外部数据存储器时都有一个ALE 脉冲被跳过。但是,只要AO 被置1,ALE就被禁能。NCI/O不连XTAL1I晶振1:反相振荡放大器的输入和内部时钟发生电路的输入。XTAL2O晶振2:反相振荡放大器的输出。VDDI电源VSSI地 综上所述P89V51RD2单片机既具有通用单片机的特点又有一些独特之处,因此,此芯片足以满足本设计的要求,并能很好的控制整个电路,尤其它所具有的ISP在线调试功能给本设计带来了极大的方便。2.2 16x2字符型带背光液晶显示模块 液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和
12、低功耗应用系统中得到越来越广泛的应用。 2.2.1液晶模块的认识这里介绍的字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等,这里以常用的2行16个字的1602液晶模块来介绍它的编程方法。 下面是它的实物图以及插槽连接图。图2.3(液晶显示模块的正面视图)图2.4(液晶显示模块的反面视图)图2.5(液晶显示模块的引脚插槽)其中,各个引脚所对应的含义如下表所示。 表2.2 1602管脚说明 端自号:标记:电平:功能:1VSS-电源电压GND2VCC-电源电压5V3V0-液晶驱动电源4RS0H/L寄存器选择信号:L指令寄存
13、器H:数据寄存器5RWH/L读写选择信号L:写操作H:读操作6ENHH-L使能信号7-14P00P07H/L数据总线15VCC-备光驱动电压16GND-电源电压GND2.2.2液晶模块的编程本次设计中所编写的液晶显示模块程序如附录一所示:读操作时序写操作时序:液晶模块的流程图、程序见附录一。2.3.串口通信 随着计算机的广泛应用,市场上很多电气产品应用串口通信技术作为对外数据交换的桥梁,串口通信受到如此重视,主要原因就是这个技术简单而且容易实现。所以本次设计使用串口进行通信。而且本次设计使用的是RS-232串口通信。串口通信的认识:串口通信在本次的软件设计中担任传输的作用,即上位机和下位机的数
14、据传输。(包括程序的下载和数据的传输)具体连接如图2.6所示。 图2.6 RS-232串口通信连接图串口控制程序一般分为查询和中断两者方式。查询方式适用于简单的应用,简单可靠,但是缺点是需要占用处理器资源,在发送或者接收数据的时候不能做其它的事情,处理器利用率低。中断方式下,在发送或者接受数据的时候处理器还可以做其它的工作,效率较高。对于稍微复杂的系统来说,中断方式管理串口程序将会更加有效。中断处理方式也可分为几种,其中采用循环缓冲区的方式比较高效。循环缓冲区为定义的一定长度的RAM区间,对于接受数据来说,中断中收到的数据将存入RAM中,然后等待主程序来读取。其中会涉及到数据见的协调问题,写数
15、据的时候不能把还没有读取的数据覆盖掉,读数据的时候应该读取的是缓冲区中最老的数据。当缓冲区已满的时候,写入的新数据应该覆盖掉最老的数据。这些问题的处理可以使用两个指针来实现。2.4 Visual Basic 与串口通信随着计算机的广泛应用,市场上很多电气产品应用串口通信技术作为对外数据交换的桥梁,串口通信受到如此的重视,主要原因就是这个技术简单而且容易实现。2.4.1Visual Basic简单介绍Visual Basic集成开发环境主要由以下元素组成:工具窗口、工程窗口、属性窗口、对象窗口以及代码组成等。如图2.7所示图2.7 Visual Basic集成开发环境Visual Basic是一
16、般程序设计人员在Windows环境下最常用的串口编程语言。利用Visual Basic开发串口通信程序主要有两种方法:一是使用MSComm串口控件,二是利用Windows API函数。在查阅了大量的资料和在实践资料中,使用Visual Basic串口控件实现通信的方法比调用API动态链接库的方法更加方便、快捷,而且用较少的代码可以实现相同的功能,从而使编程效率大大提高,也减少了因编程不当而导致的系统不稳定。所以本次的设计采用了串口控件实现。2.4.2MSComm控件MSComm控件全称为Microsoft Communications Control,是Microsoft公司提供的Active
17、X控件,目的是为了简化Windows下串行通信编程,它既可以用来提供简单的串行通信功能,也可以用来创建功能完备的、事件驱动的高级通信工具。MSComm控件在串口通信时非常方便,程序员不必花时间去了解较为复杂的API函数,而且在Visual Basic、Visual C+、Delphi等语言中均可使用。使用他可以建立与串行端口的连接,通过串行端口连接到其他通信设备(如调制解调器),发出命令,交换数据,以及监视和响应串行连接中发生的时间和错误。利用它可以进行诸如拨打电话号码、监视串行端口的输入数据乃至创建功能完备的终端程序等。“引用(3)”MSComm控件处理通信的方式有两种:一种是事件驱动方式,
18、另一种是查询方式。MSComm控件有许多属性,这将会在上位机设计中作具体说明。2.4.3 VB工程建立工程的具体包括如下:(注意:下面的jia.*是本次设计的上位机的文件名) = 1 * GB2 .工程文件()一个工程只有一个工程文件,他管理着该工程的所有部件。工程文件中含有该工程的所有窗体文件以及其他的相关信息(如其他部件的名称、在磁盘上的位置等)。此外,每个工程还会生成一个扩展名为.vbw的附属工程文件,它保存了工程在集成环境中各窗体的状态。 = 2 * GB2 .窗体文件() 添加到工程中的每个窗体都会单独地保存为一个文件。工程中有几个窗体就会产生几个窗体文件。窗体文件中保存了所有该窗体
19、和放置在该窗体中控件的信息,包括对象名、对象类型、对象的属性设置、对象的事件过程代码和通用过程代码。也就是说,一个窗体文件保存了这个窗体所对应的对象窗口和代码窗口所有的内容。这些内容在Visual Basic中被总称为“窗体模块”。一个工程有几个窗体就有几个窗体模块和几个窗体模块文件。 = 3 * GB2 .二进制窗体文件() 如果一个窗体中包括了图片等二进制信息(如在属性窗口中设置了窗体的Icon属性、Pircture属性),则会产生一个与窗体*.frm文件同文件名的*.frx文件。 = 4 * GB2 .标准模块文件() 标准模块是用来保存公共变量、常量、数据类型、过程的地方,其他的模块可
20、以调用标准模块中的代码。一个工程中有多个标准模块,也可以没有。工程文件()、窗体模块文件()和标准模块文件()都是纯文本文件,有经验的编程者可以使用“记事本”这类文本编辑软件打开、查看并进行修改。 = 5 * GB2 .类模块文件Visual Basic允许编程者创建新类,新类的定义保存在类模块中。一个工程中可以有多个类模块,也可以没有。 = 6 * GB2 .建立可执行文件前面执行应用程序的时候是选择“运行”菜单的“启动”命令来执行的,这种执行是解释执行,解释执行只能在Visual Basic开发环境中进行,不能脱离开发环境。为了使应用程序能脱离开发环境而直接在Windows环境下运行,就必
21、须将应用程序编译成可执行文件(5.6.21.44.exe文件,这个是此次毕业设计的上位机的运行界面的名称。意思是:五月六日9点44分完成)。生成的方法是:依次选择“文件”菜单的“生成工程1.exe”命令(这里的“工程1”是工程名),弹出“生成工程”对话框时,选定保存位置,输入可执行文件的名字,单击“确定”按钮即可在指定位置建立一个可执行文件。第三章 设计和计算3.1上位机设计(VB的设计)定义声明函数初始化串口各参数清零按钮按下?设置连接按钮按下?执行相应操作退出按钮按下?结束退出 N Y Y N Y Y N Y图3.1 VB程序的流程图3.1.1 VB编写的上位机程序程序一:Dim COMB
22、UF As StringPrivate Sub Command3_Click()ngs = 600,N,8,1 设置数据传输率,没有奇偶校验,和数据位八位,一位停止位。 ort = 6 设置通讯串口COM6 Len = 0 设置或返回一次从接收缓冲区中读取字节数,0表示一次读取所有数据 ferSize = 512 设置接收缓冲区为512ByteferCount = 0 读取整个缓冲区的数据。shold = 1 每个字符到接收缓冲区都触发接收事件字符到接收缓冲区触发接收事件 pen = True 打开串口 le = TrueEnd SubPrivate Sub Command1_Click()
23、pen = False 关闭串口 olor = RGB(0, 255, 0) 绿色 olor = RGB(0, 255, 0) le = True ed = False ed = FalseEnd SubPrivate Sub Command2_Click()Unload Me 退出End SubPrivate Sub MSComm1_OnComm()Dim i As Variant Select Case vent Case comEvReceive COMBUF = Asc()Print 苗家祥.张勇提醒: & COMBUF & 区报警 & - & Now olor = RGB(255,
24、0, 0) 红色 olor = RGB(255, 0, 0) = E:音乐哈.mp3 ed = True ed = True End SelectEnd SubPrivate Sub Timer1_Timer() Timer控件 = NowEnd SubPrivate Sub Timer2_Timer()le = FalseEnd SubPrivate Sub Timer3_Timer()le = TrueEnd Sub分析: 当报警的时候就在上位机的界面上执行下面一句:Print 苗家祥.张勇提醒: & COMBUF & 区报警 & - & Now 这样报警的信息就显示在界面上了。如下图所示
25、。 图3.2 报警信息图上述程序中的Timer控件即定时器控件主要用来控制界面中的闪烁的红色小球。如下图所示: 绿色 红色正常检测状态 图3.3 报警状态开始检测的时候,他是绿颜色的,当触发报警的时候,他就变成红颜色的并且是在不断闪烁的小球,给人以视觉冲击起到报警的作用。程序中使用了三个定时器控件,Timer1主要用来控制上图中的时钟条 。Timer2和Timer3主要用来控制小球,设计的时候把Timer2的interval属性定义成500, Timer3的interval属性定义成1000.这样再触发下面的事件。Private Sub Timer2_Timer() Private Sub T
26、imer3_Timer()le = False le = TrueEnd Sub End Sub就实现了小球的不断闪烁。同时触发WindowsMediaPlayer1发生报警信号。这样上位机的声光报警就实现3.2 下位机设计主程序分析:我们的目标是,当红外线检测到有人闯入时:(1)由P3.4输出高低电平间隔0.5s的脉冲信号去驱动声光报警电路,产生声光报警。这可通过使P3.4每隔0.5s取反一次实现,而0.5s时间可同时定时器T0(工作于定时方式1)重复定时100ms十次来实现。用工作寄存器R1作循环计数器,初值为10(0AH)。(采用中断方式编程)。(50ms*10=500ms=0.5s)(
27、2)由P0口输出数据到液晶屏显示报警所在位置的区号(1、2、3、4)。这要通过在主程序中对液晶模块的调用来实现。显示什么字符,就调用该字符函数。(3)通过RS232串口(由是程序的下载线,当下载线不用时)上传到上位机,并在上位机当中显示报警所在位置的区号(1234)。上位机部分要通过Visual Basic 软件来实现。3.2.1 C编写的下位机程序主要功能是对系统进行初始化和对系统进行监视,看是否有人闯入。其程序流程图如图3.3所示。开始系统初始化有人闯入?启动定时等待时间到时间到了吗?NYESEZNoY报警实现声光报警液晶显示上位机显示图3.4 主程序流程图整个设计的主程序如下面的“程序一
28、”所示:下面是中断程序流程图。开始定义重设定时初值1s到吗?P3.4取反中断返回图3.5 声光报警中断程序流程图NOYES程序一:#include #include#define uchar unsigned char#define uint unsigned int sbit P10=P10; sbit P11=P11; sbit P12=P12; sbit P13=P13; sbit P14=P14; sbit P15=P15; sbit P16=P16; sbit P17=P17; sbit P34=P34;void fun0(void); void fun1(void);Uart_In
29、it();Uart1_Init();extern void lcd_init(void);extern void display_string(unsigned char x,unsigned char y,unsigned char *s);extern void display_char(unsigned char x,unsigned char y,unsigned char dat);unsigned char code str1= BAO JING;uchar code Table_Count4=1,2,3,4; /要显示的数字或者字母,放在此区域void main(void) uc
30、har temp=0; P10=0; P11=0; P12=0; P13=0; Uart_Init(); Uart1_Init(); lcd_init();display_string(8,0,str1); /显示(bao jing)while(1) if(P1!=0) TR0=1; if(P1!=temp) fun0(); temp=P1; fun1(); void TR0_SER(void) interrupt 1 /中断 static uchar num=0; TH0=0 x3c; TL0=0 xb0; num+;if(num=10) num=0;P34=P34;void fun0(vo
31、id) /液晶显示模块 if(P14=1) display_char(1,0,1); /液晶屏显示字符1 if(P15=1) display_char(2,0,2); /液晶屏显示字符2 if(P16=1) display_char(3,0,3); /液晶屏显示字符3 if(P17=1) display_char(4,0,4); /液晶屏显示字符4 void fun1(void) /向串口发送字符模块 if(P14=1) /PC机上显示字符1 SBUF=Table_Count0; while(!TI); /等待发送完成 TI=0;/清除TI标志,准备下一次发送。 if(P15=1) /PC机上
32、显示字符2 SBUF=Table_Count1; while(!TI); TI=0; if(P16=1) /PC机上显示字符3 SBUF=Table_Count2; while(!TI); TI=0; if(P17=1) /PC机上显示字符4 SBUF=Table_Count3; while(!TI); TI=0; Uart_Init() /串口初始化。 TMOD=(TMOD & 0 x00) |0 x20; /定时器1使用方式2 PCON=0 x00; /SMOD为0 SCON=0 x50; /工作于方式1,波特率600,允许接受 TH1=0 xcc;/204 参考文献12P140-表10.
33、12 TL1=0 xcc; TR1=1; Uart1_Init() /主程序初始化 TMOD=TMOD|0 x01; /定时器0,方式一; TH0=0 x3c; TL0=0 xb0; ET0=1; /定时器0允许中断; EA=1; /CPU允许中断; P34=0;分析说明: = 1 * GB3 主程序初始化的设计的计算:TMOD:0000,0001 定时器0,方式一,16位(0-65536)Num=1012MHZ/12=1s 0.5s=500000s 500000/10=50000 65536-50000=15536=(3CB0H)即: TH0=0 x3c;TL0=0 xb0; = 2 * G
34、B3 串口初始化的设计的计算:综合上面的优劣,本次的毕业设计采用中断的方式比较合理。所以在本次软件设计中采用了中断方式的编程。在其中应注意的是初始化串口。初始化串口的程序和下面的相似。根据“常用波特率对应的初始值表”知因为工作频率为12M,波特率为600,由查表知:初始值应该是0XCC查表:单片机Keil Cx51应用开发技术-P140页中表10.12所以: 初始化串口, 波特率600Uart_Init() /串口初始化。 TMOD=(TMOD & 0 x00) |0 x20; /定时器1使用方式2PCON=0 x00; /和串口相关的只有第七位SMOD为0. SCON=0 x50; /工作于
35、方式1,允许接受。波特率600,TH1=0XCC; TL1=0XCC; TR1=1; 第四章 软硬件调试及方案校验软件设计的工具主要是Keil软件和Visual Basic软件.4.1 上位机软件的调试Visual Basic的一大优势在与可视化编程,良好、美观的编程界面对用户来说是必要的,应用程序的界面用户有着极大的影响,界面不好将直接影响到应用程序的易用性。对于程序员来讲,需要考虑的是如何将窗体、控件、对话框、菜单和工具栏等界面元素有机地组合在一起,从而构成一个完整的易学易用的应用程序。4.1.1 Visual Basic的调试运行Visual Basic程序,出现“新建工程”对话框,如图
36、4-1 图4.1“新建工程”对话框选择新建“标准EXE”,执行“打开”命令,进入Visual Basic工程集成开发环境,窗体设计器中会自动出现一个名为Form1的空白窗体。然后在这里建立工程编辑界面和编写程序。编程完成后的程序和界面如下所示: 从图4.2可以看出。图4.2编辑完成后图程序的编写,以及界面的编辑要有所讲究。要简洁明了的表达要实现的功能。说明一:界面上有三个按钮,分别“设置连接”、“清零按钮”、“退出按钮”,有三个定时器控件,和一个声音播放控件,还有一个TEXT1文本框。 说明二:程序中有些属性都在属性窗口中设置完成的。 说明三:运行时,运行正常时,时钟框和小球是绿色的。但当报警
37、时同为红颜色。 说明四:报警时还伴有报警的声音。下面是本次设计的日常监控时的界面-如图4.3所示。触发报警时所显示的界面-如图4.4所示。 绿色 图4.3监控界面点击“设置连接”按钮后,触发报警实现的界面如下图4.5所示: 红色 图4.4说明(报警时小球在不断闪烁,且有报警声音出现)4.1.2 上位机调试的问题问题一:在VB当中MSComm控件比较的重要特别是下面两句的每一系数的选择,都是经过不断的调试,在实践当中我们发现当(ngs = 600,N,7,1 )时,发现实现不了要接收的数据。发现问题后我们通过“串口调试精灵”发现,接收上来的数据是正确的只不过显示的是十六进制的。经过不断的调试,对
38、数据进行改进,我们发现把数据位改为 7位比较合适。即(ngs = 600,N,8,1)这样,通过串口传到上位机上显示的数字就正常了。然后关掉“串口调试精灵”,改掉参数,重新打开我们的上位机软件,问题没有了。这是由SCON决定的,它的数据位就是八位。问题二:调试的时候我们的程序中有(ngs = 9600,N,7,1)中,传输率9600的选择。开始使用的是4800,因为我们烧录程序的时候的波特率选的是4800结果不行,出现错误。通过查阅资料我发现书中这样介绍,当电源控制寄存器PCON 的SMOD位选择为“1”时,(即PCON=0 x80; /SMOD为1,波特率增加一倍)因为当SMOD为“0”时,
39、多出一个二分频。这个解释还可以参照下面的一个公式:计数器1益出速率)32 波特率=2AVERAGE(SMOD) # 0 通过上面的公式,就可以发现选择1和0的区别,(即知道了为什么要用9600和4800了)问题三:设计当中的串口问题,也占用了我们大量的时间,由于接触的不多。我们对串口的了解,仅存在与学过的书本上一点不知道。实际应用是时候不知道数据怎么传送,不知道数据放在哪里合适,开始以为问题出在VB这部分。解决方法后来去图书馆查阅资料发现要把传送的数据送到串口:uchar code Table_Count4=1,2,3,4; SBUF=Table_Count0;这两句比较重要。把字符(1,2,
40、3,4)放到数组里面,再从主程序里面调用数组,这样比较简单。然后再在VB程序中用下面的程序:COMBUF = Asc() ; Print COMBUF这样问题就解决了。4.2下位机软件的调试步骤和问题Keil 软件是目前最流行开发 MCS-51 系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持 Keil 即可看出。要实现调试,首先要建立工程文件,程序在软件中调试成功后,并且要可以生成*.HEX文件。这要才可以进一步的进行下面的调试工作。4.2.1建立文件 = 1 * GB2 . 点击“Project-New Project ”菜单,出现一个对话框,要求给将要建立的工程起一个名字,你可以
41、在编缉框中输入一个名字(设为 miao),不需要扩展名。点击“保存”按钮,出现第二个对话框,这个对话框要求选择目标 CPU(即你所用芯片的型号),Keil 支持的CPU很多,点击 ATMEL 前面的“+”号,展开该层,这里我们要选择飞利浦公司生产的P89V5RD2,然后再点击“确定”按钮。 = 2 * GB2 . 此时,在工程窗口的文件页中,出现了“Target1”,前面有“+”号,点击“+”号展开,可以看到下一层的“ Source Group1”,点击“Source Group1”使其反白显然后,点击鼠标右键,选中其中的“Add file toGroup”Source Group1”,出现一
42、个对话框,要求寻找源文件( = 1 * GB3 主程序.C = 2 * GB3 液晶.C). = 3 * GB2 . 双击 = 1 * GB3 主程序.C和 = 2 * GB3 液晶.C 文件,将文件加入项目,然后点击“Close”即可返回主界面,返回后,点击“SourceGroup 1”前的加号,会发现 = 1 * GB3 主程序.C和 = 2 * GB3 液晶.C 文件已在其中。双击文件名,打开该源程序。4.2.2调试步骤红外线防盗报警器主程序编辑完成以后,调试没问题时。要注意以下步骤: = 1 * GB3 . .要注意必须生成文件,以便烧录程序(下载程序到硬件)以实现需要的功能。 = 2
43、 * GB3 . 下载线.下载之前要连接好下载线(这里用的是USB转RS-232下载线),注意电脑上的相应驱动要安装完成才可以使用这样的转接线,并打开硬件上的开关。 = 3 * GB3 . 擦除文件.运行“Flash Magic”,选择界面上的参数,注意:参数不正确无法下载。准备擦除硬件CPU内的原始程序。步骤是:点击菜单栏的“ISP”“ Erase Flash”选中“Eraseall Flash” 点击“Erase”按一下硬件上的黑色复位健擦除完成。 = 4 * GB3 . 烧录.烧录程序,步骤是:点击” Browse” 选择路径找到先前Keil中生成的“”文件点击“Start”程序下载完成
44、,(Finished).准备硬件调试。具体如下图所示:图4.5 Flash Magic界面图 = 5 * GB3 . 液晶屏.根据设计的要求调试555声光报警电路,调试液晶屏。 = 6 * GB3 . 上位机.调试上位机时,要注意的是硬件上的串口通信开关不能断开,要保持在连接状态。(即白色按钮要按下去)。然后保持串口线连接正常后,打开上位机的监控界面。点击“设置连接”按钮,进行调试。4.2.3 下位机调试问题问题一:工程建立后出现的问题,我们的程序有两个模快,一个是主程序模块,另一个是液晶屏模快。在编译时出现下面的错误“Target not created”。结果在生成*.HEX文件的时候,怎
45、么也生成不了。 最后在查阅资料后发现问题。仔细阅读程序后才发现,在液晶模快里面也有一个主程序main()而在主程序模快同样也有一个main()。犯了一个本不应该犯的错误。我们的解决方法是把液晶部分的main()去掉,把相应的主程序操作,移动主程序模块进行实现。这样再对程序进行相应的调试,问题就可以解决了。问题二:设计当中的液晶屏的显示,开始怎么也调试不出,那个液晶屏不出字符?分析:经过我们的不断发现,不断地从软硬件上改善,最终完整实现了报警。结果是软件上所传送的字符(1改成1)不对,硬件上的V0(背光驱动电源)根本没加上去。查出问题后,我们有效的进行调节,给硬件上的V0(背光驱动电源)加上一个
46、电位器,并在软件上把1改成“1”。最终实现了液晶显示的报警。问题三:烧录软件时遇到如下图中的问题,解决不了。经过不断的调试,这种情况在我们的软件调试中经常遇到,具体有以下几点可能: = 1 * GB3 .下载线没插或者是没插好。 = 2 * GB3 .硬件的电源没打开。 = 3 * GB3 .硬件上面在串口和单片机之间的一个白色的开关没有连接好,或者根本就没有按下去导致无法下载。 = 4 * GB3 .还有可能是烧录软件上面的波特率没选好,此次的设计中波特率应该选择 600。 = 5 * GB3 .有可能COM口没选择好,要注意的是烧录器上的COM口要和电脑硬件的接口相对应。问题四:有的时候在
47、下载程序不成功的时候会出现电脑上面的画面停滞导致无法继续操作。分析:这样的情况应该是我们的误操作所致,和电脑上的问题差不多。经过我们的调试和经验可知,处理的最好的方法就是,关掉硬件电源,然后拔掉电脑上的USB下载线,重新插上,问题迎刃而解。注意出现这样的问题可能是下载的步骤不正确所致。只要注意设计中上面的步骤,再重新进行调试,问题就迎刃而解了。第五章 结论和改进意见5.1 总结此次的毕业设计,应该说是这几年来的一个结果的体现吧,从开始的选题到最后的完稿,中间经历了许多,从毫无头绪到一点点的梳理完成,再到成竹在胸,是要付出许多的。我们有过许多不眠之夜,有过几天不出宿舍的设计。本次的设计完全完成了
48、老师布置的任务,而且在此基础上我们又作出了拓展。改善了以往的单调的报警,同时在价值上也不可小计,我们的红外线报警已经在理论和实践中达到了和市面上的报警器相同的功能,甚至在有些地方已经有所超越。我们的红外线报警器不仅有现场声光报警(这个报警是利用比较传统的555电路做成的),而且还添加了上位机的部分。并且可以在上位机上实现声音报警,和屏面报警(显示界面上有个红色圆形报警区域在报警时会不断闪烁),我们设计的红外线报警器设计的还比较的细致,他的功能很强大,它可以捕捉到一分一秒的报警,每一区的报警我们设计的报警器可以精确到几点几分几秒。还有在报警的时候,我们还利用其他的软件和音频设备自己制作出了报警的
49、声音。这个给我们的设计可以说是增光添彩了。我们的红外报警器有了这些优点特色以后,完全可以有效防止不法分子的不法行为。完全完成了毕业设计的任务。欣喜之情自不必说。付出了努力才会有所回报。此次的设计不仅在能力上得到了提升。而且在心理素质上也得到了许多的锻炼。5.2改进建议当然,人无完人,事无完事,我们设计的东西也一样。此次的设计的产品由于时间的关系,只在实验设计中得以实现,它的有效传播距离由于条件限制,我们无法测量。在传播距离这一块,可以通过软件实现,也可以通过硬件实现。在软件上我的主要思路就是利用PWM脉冲,发射红外线去控制相应的受控装置时,其控制的距离与发射功率成正比。为了增加红外线的控制距离
50、,红外发光二极管工作于脉冲状态,因为脉动光(调制光)的有效传送距离与脉冲的峰值电流成正比,只需尽量提高峰值Ip,就能增加红外光的发射距离。提高Ip的方法,是减小脉冲占空比,即压缩脉冲的宽度,一些彩电红外遥控器,其红外发光管的工作脉冲占空比约为1/41/3;一些电气产品红外遥控器,其占空比是1/10。减小冲占空比还可使小功率红外发光二极管的发射距离大大增加。常见的红外发光二极管,其功率分为小功率(1mW10mW)、中功率(20mW50mW)和大功率(50mW100mW以上)三大类。要使红外发光二极管产生调制光,只需在驱动管上加上一定频率的脉冲电压。由于时间的原因,我们做的还不够完美,许多好的想法
51、都没来得及实现,比如,我们的液晶屏当在某一区报警的时候,如果能实现字符的闪动,那就更好了,更能表达报警的效果。还有下面的字符,如果能够实现下面的固定的字符的滚动,那就会使,报警器“活”起来了,那样看上去效果会更好。希望将来在有机会的话能够完善它。理论和实践的结合是需要时间的,这将在以后的社会实践中再去完善吧。参考文献周兴华 编著 单片机智能化产品C语言设计实例详解北京:北京航空航天大学出版社 2006年 田立 田清 贷方震 编著51 单片机C语言程序设计快速入门 北京 :人民邮电出版社 2006李江全 岑红雷 编著Visual Basic 串口通信与测控应用技术实战详解北京:人民邮电出版社 2
52、007毛玉良 张赤斌 编著微机系统原理及应用 南京:东南大学出版社 2006魏立峰 王宝兴 编著单片机原理与应用北京:北京大学出版社 2006年8月杨将新.李震华 编著单片机程序设计及应用从基础到实践电子工业出版社 2006年3月何立民 编著单片机实验与实践教程三 北京航空航天大学出版社 2006年3月万光毅 遍著单片机实验与实践教程一北京航空航天大学出版社 2006年3月汪文 陈林 编著单片机原理及运用 华中科技大学出版社,2007年7月赵亮 侯国锐 编著 单片机C编程与实例人民邮电出版社 2003年7月肖来胜 冯建兰 编著单片机技术实验教程华中科技大学出版社 2004年1月王为青 程国钢 编著 单片机LEIL C51 应用开发技术 人民邮电出版社 2007年2 月 液晶模块流程图/*液晶显示模块*/#include /调用头文件(单片机内部的寄存器定义) sbit LCD_RS = P3 7;sbit LCD_RW = P3 6; sbit LCD_E = P3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农机销售合同模板
- 《宁夏百科名片》课件
- 《图像信息原理教学课件》电荷耦合器件-v
- 教科版科学六年级下册课件1.3《放大镜下的晶体》
- 天体运动复习课件
- 委托招工合同协议书(2篇)
- 《T文艺唯美风》课件
- 《电视广告的表现》课件
- 2021年河北省衡水市公开招聘警务辅助人员(辅警)笔试专项训练题试卷(3)含答案
- 2022年河南省商丘市公开招聘警务辅助人员(辅警)笔试必刷测试卷(1)含答案
- 【MOOC】中国电影经典影片鉴赏-北京师范大学 中国大学慕课MOOC答案
- 【MOOC】中药药理学-学做自己的调理师-暨南大学 中国大学慕课MOOC答案
- 陕西省西安市长安区2024-2025学年八年级上学期期中地理试卷
- 预防火灾消防安全培训
- 2024年中国建设银行个人人民币贷款合同版B版
- 《古希腊罗马建筑》课件
- 第十五讲-新时代与中华民族共同体建设-中华民族共同体概论教案
- 肿瘤科介入治疗及护理
- 浙江省2023年1月学业考试物理物理试题(解析版)
- 管道定额价目表
- 民国文献《潮州茶经》
评论
0/150
提交评论