基于MSP430单片机的信号发生器毕业设计_第1页
基于MSP430单片机的信号发生器毕业设计_第2页
基于MSP430单片机的信号发生器毕业设计_第3页
基于MSP430单片机的信号发生器毕业设计_第4页
基于MSP430单片机的信号发生器毕业设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、 毕业生毕业设计说明书题 目: 基于msp430单片机的任意信号发生器设计 学院名称: 电气工程学院 班 级: 电气f0902 学生姓名: 学 号: 指导教师: 教师职称: 高级工程师 目 次1 概述11.1 信号发生器背景及其发展状况11.2 本设计主要研究内容12 方案论证22.1 设计方案的提出22.2 设计方案的比较22.3 设计方案的选择33 选用模块介绍33.1 msp430f149单片机33.2 1602液晶63.3 dac5571芯片83.4 时钟模块及定时器a94 方案的实现104.1 系统硬件设计104.2 系统软件设计124.3 仿真调试18总结26致谢27参考文献28附

2、录a:硬件原理图29附录b:仿真调试程序301 概述1.1 信号发生器背景及其发展状况信号发生器在各个领域都有着相当广泛的应用,无论是通信产品还是电子仪表,无论是科学指导还是教学研究,小到电子手表、大到计算机,都离不开信号发生器。信号发生器在许多方面发挥着重要的作用。信号发生器也常常被称为信号源,能够提供稳定的和可靠的参考信号。信号发生器的频率、幅值、波形等信号参数可以通过人设置调节。现代电子领域中,单片机的应用越来越深入到各个方面,这一发展趋势必然会使得以前的检测技术获得巨大变革。由单片机控制的仪器具有可靠性高、性能价格比好的优点,并广泛应用在医疗通信和智能仪器等诸多领域,而且还走入普通家庭

3、从冰箱、遥控器到汽车,随处可见其身影。以单片机为控制核心,加上键盘扫描、1602液晶显示、数模转换(d/a)等电路,可以设计出功能多样化、性能卓越的信号发生器,同时该信号发生器还可以采用usb接口设计,从而使其具有远程通信的功能。目前,实验、科研和生产制造中一般都选择该方法去实现所需信号源。伴随着科技的进步,各个领域需要的信号种类五花八门、频率也越来越高。所以,目前信号发生器的发展趋势是朝着频率调节范围宽、功率消耗低、调节频率精度要求高、实现功能多样化、自动控制程度高和智能控制好方向发展。1.2 本设计主要研究内容通过图书馆查阅msp430单片机相关书籍,了解该单片机的功能模块、内部硬件结构、

4、主要技术特点、存储方式,从而进一步利用网络资源,搜寻msp430系列单片机开发板的教学视频,加深对该单片机的理解和应用,最后根据本次设计的要求,选择合适的功能模块及芯片,完成相应设计,达到应用要求。主要开展以下几个方面的学习与设计工作:对msp430系列单片机有一定程度的掌握,熟悉内部各个模块的基本功能;了解d/a转换器的原理,选择合适的d/a转换器以获得高精度的波形信号; lcd1602液晶显示的控制;键盘键位的功能定义;波形信号发生程序的编写;各个电路模块之间的数据传输以及模块的初始化。2 方案论证信号发生器的应用领域非常宽广,根据不一样的应用条件,对信号发生器的具体要求也不一样。所以,信

5、号发生器的设计方法就会各式各样。2.1 设计方案的提出方案一:主要采用运算放大器加上分立元件来实现。第一步是产生出正弦波,第二步运用波形变换实现其他波形信号,如果要改变波形信号的频率、幅值及占空比,只需要改变电路的具体参数就可以实现,第三步通过开关电路来选择输出不同的波形信号。如果要实现精度准的频率和稳定的信号输出,需要对电路的结构进行优化以及选用高精度的元器件才能达到目的。例如采用555振荡电路产生正弦波、方波等。方案二:主要采用单片机作为控制核心,通过键盘扫描,获得波形参数的输入信息,然后将信息传输给显示电路,根据参数信息设定定时器的定时间隔,当定时器中断到来,进入中断服务程序,将选择波形

6、的幅值信息发送给数模转换(d/a)芯片输出,从而得到相应设定参数的波形信号(正弦波、方波、三角波、锯齿波),输出的波形信号可以通过外接运放进行调节。方案三:主要采用单片集成的信号发生器。首先将各种波形信号的功能电路集成优化到一个集成电路芯片里,然后再外加少量的电阻、电容元件来实现。例如max038(最高频率可达40mhz)和icl8038(最高频率为300khz)。2.2 设计方案的比较方案一:优点是工作原理相对简单,抗干扰性好,不用使用集成芯片。缺点是频率调节范围窄而且波形质量比较差,体积大,电路结构复杂,工作不稳定。方案二:优点是操作方便,频率和幅值参数易于调节,工作原理简单,体积小,成本

7、低。缺点是频率精度不高,方波通过d/a输出后有轻微失真现象,波形发生程序复杂。方案三:优点是频率调节范围相对较宽,精度好,操作简单,体积小。缺点是波形信号种类少,调节方式单一,对集成芯片控制要求高。2.3 设计方案的选择根据上述三种设计方案的优缺点,并结合自身对知识的掌握程度,从各个方面综合分析,决定选择方案二来达到实现该设计的目的。具体实现过程以msp430f149单片机作为控制核心,通过键盘扫描,获得波形参数的输入信息,然后将输入内容传输给lcd1602显示电路,根据参数信息设定定时器a的定时间隔,当定时器的中断标志置1时,调用中断服务程序,将选择波形的幅值信息发送给d/a芯片输出,从而得

8、到设定的相应波形信号(正弦波、方波、三角波、锯齿波)。如果要改变频率,只需要重新设置定时器a的记数周期值就可以,要改变幅值的话,只需要将送入数模转换(d/a)芯片的数值乘以一定的比例系数(不大于1)就可以。3 选用模块介绍3.1 msp430f149单片机msp430f149单片机是按照精简指令集(risc)和高透明的宗旨来设计内核cpu的结构的,该单片机的存储器采用“冯诺依曼”结构使得rom和ram在同一地址空间(0000h-ffffh),地址和数据总线为同一组。msp430f149单片机含有一个16位的算术逻辑单元(alu)、一个指令控制操作单元,其中4个特殊的功能寄存器分别是程序计数器(

9、pc)、堆栈指针(sp)、状态寄存器和常数发生器2。3.1.1 msp430f149单片机引脚图msp430f149单片机的引脚图如图3-1所示。图3-1 msp430f149单片机引脚图3.1.2 msp430单片机的特点强大的处理能力msp430系列单片机是一款16位的单片机,采用了精简指令集(risc)结构,查询地址的方式非常丰富,相比89c51的111条指令msp430的27 条内部指令就相当简洁,同时具有许多模拟指令和可参与几种运算的寄存器,还有高效率的对表查询处理指令。低电压、超低功耗msp430系列单片机电源电压范围是1.8-3.6v,该单片机还具有低功耗应用、根据对速度和数据传

10、输的处理要求以及外围设备需要消耗的最小电流可以设置成不同的操作模式。单片机可以随时进入低功率消耗模式,进入低功率消耗模式后,系统的时钟会停止,所有的i/o端口、ram和寄存器的内容不会发生变化,此时系统的功率消耗处于a级。当出现外部中断时系统能从低功率消耗模式中苏醒,从而去执行规定的操作。只需要不到6us,该单片机就能从低功耗模式迅速转换到活跃模式。msp430单片机具有一种活动模式和5种低功率消耗模式2。片内资源丰富msp430系列单片机内部都含有丰富的功能模块可以实现好多应用,主要有看门狗(wdt)、定时器a、比较器、adc模块、usart模块、flash模块、基础时钟、i/o端口等若干外

11、围模块。其中,看门狗可以通过设定中断的时间间隔,防止程序出现“跑飞”的现象,一旦打开看门狗,程序在正常运行的情况下到中断的地点会自动清除看门狗内容,而当程序异常时,则无法清除,此时看门狗将产生一个信号使得系统复位,从而重新启动系统,保证了系统的正常运行。定时器(timer_a 和 timer_b)是一个16位的定时/计数器,含有多个捕获/比较寄存器,能同时对多个时序进行控制,可以实现pwm的输出,而且具有多个中断能力。定时器(timer_a 和 timer_b)具有停止计数模式、増加计数模式、连续增加计数模式、增加/减少计数模式这四种工作的模式。时钟电路模块主要产生三种不一样的时钟信号,通常情

12、况下,系统的功率消耗随着系统的工作频率增加而增加,根据各自的情况选择适合的时钟可以达到降低功率消耗的目的。例如要实现较低功率消耗则选择低速的晶体;如果要满足系统的运算速度需要选用高速的晶体产生的时钟;对系统实时的操作要求高时,应该选用aclk时钟。系统工作稳定系统上电复位后,由dcoclock作为系统时钟,从而使系统可以从正确的地址去执行程序。随后其灵活的时钟系统允许软件选择不同的系统的时钟,但是在晶体振荡器作为系统的时钟无法起振时,dcoclock被默认切换为系统的时钟从而保证了系统的正常工作。3.1.3 msp430f149单片机的应用msp430f149单片机具有超低功耗、16位指令,内

13、置a/d转换器、usart模块、硬件乘法器、lcd液晶驱动电路及抗干扰能力强、运算速度快等技术特点,因此,特别适合应用在智能仪表、智能化家用电器、工业控制、计算机网络和医用设备领域等产品之中。该设计中主要运用msp430f149的低功耗,时钟可以分频控制,运算速度快,工作稳定等技术特点,将输入的波形信息,显示在1602液晶上,同时可以选用按键对波形参数进行选择,最后采用d/a芯片输出波形信号,用示波器测量实际波形信息。3.2 1602液晶1602液晶也被称为1602字符型液晶主要用来显示字母、数字、符号的点阵型液晶模块。每个点阵字符可以实现一个字符的显示,由于每一位之间具有一个点距间隔,同时每

14、一行之间也具有间隔,所以图形内容是无法实现显示的。3.2.1 1602液晶引脚图图3-2 1602液晶引脚图表3-1 lcd1602的引脚功能说明引脚符号功能说明1vss接地端2vdd接正电源端3ao对比度设置端4r/s置1时为选择数据,置0时为选择指令5r/w置1时读操作,置0时写操作。6e下降沿使能端7-13d0-d6 双向数据线14d7置1表明液晶处于忙状态15bla背光电源正极16blk背光电源负极3.2.2 lcd1602显示控制表表3-2 基本操作时序读状态输入:rs=l,rw=h,e=h输出:d0-d7=状态字读数据输入:rs=h,rw=h,e=h输出:d0-d7=数据写指令输入

15、:rs=l,rw=l,e=高脉冲,d0-d7=指令码输出:无写数据输入:rs=h,rw=l,e=高脉冲,d0-d7=数据输出:无表3-3 ram地址映射图表3-4 指令说明表3-5 lcd1602控制指令集3.3 dac5571芯片3.3.1 dac5571引脚图图3-3 dac5571引脚图表3-6 dac5571的引脚功能说明3.3.2 dac5571工作原理dac5571芯片采用i2c协议的半双工串行通信方式,空闲时通过上拉电阻sda和sck线置1。首先,单片机向芯片发送起始信号(sck为高电平时,sda从高电平向低电平跳变),接着单片机向芯片按照从高到低的顺序发送地址以及读写(r/w为

16、0)数据,然后单片机等待接收芯片发送的应答的信号,正确接收后向芯片发送要输出的数据信息。每次在sck为高电平期间,芯片才能读取sda线上信息,sck低电平期间,更新sda线上内容,为了保证正确的传输,每发送完一个字节的数据后,等待芯片向单片机发送应答的信号,最终单片机向芯片发送结束信号,才能结束本次通信。dac5571数模转换芯片可以通过设置运放外接不同的电阻从而实现输出电压幅值的调节。3.3.3 dac5571转换运算原理输入8位二进制数表示256种状态,从而控制电阻的不同连接方式,达到不同分压的目的,最终数字信号转换为模拟信号输出。图3-4 dac5571芯片内部转换图dac5571输出模

17、拟电压计算方法:vout = vdd*(d/256)。3.4 时钟模块及定时器a3.4.1 时钟模块的应用msp430f149的时钟模块主要有高速晶体,低速晶体和数字控制振荡器(dco)等器件组成。低速晶体振荡器支持超低功耗,低频模式下将32768hz晶体连接在xin和xout针脚,不需要外接电容,作为aclk时钟源;高速晶体的振荡器需要消耗的功率较大,外接高速晶体在xin2和xout2之间另外还需要外接电容,作为smclk和mclk时钟源;dco是内部集成的rc类型振荡器,msp430f149上电默认选择该类型振荡器,频率会随着温度和电压的变化而变化,作为smclk和mclk时钟源。msp4

18、30f149有一种活动模式和5种低功耗模式,主要通过状态寄存器中的cpuoff、oscoff、scg0、scg1来设置的2。表3-7 控制位与工作模式scg1scg0oscoffcpuoff模式cpu和时钟状态0000活动cpu激活、所有的时钟激活0001lpm0cpu、mclk停止;smclk、aclk活动0101lpm1cpu、mclk、dco停止;smclk、aclk活动1001lpm2cpu、mclk、smclk、dco停止;dc使能;smclk、aclk活动1101lpm3cpu、mclk、smclk、dco停止;dc禁止;smclk、aclk活动1111lpm4cpu所有时钟停止3

19、.4.2 定时器a的功能应用定时器a是一个16位定时/计数器,通过设定mc1和mc0的值可以确定定时器a的四种工作方式。该设计主要采用増计数模式:首先设定ccr0寄存器里面的内容(定时器的记数周期),当计数器增加到等于ccr0寄存器里面的内容时,计数器重新从0开始计数,此时taifg中断标志置1,进入中断服务程序后将波形信息发送给数模转换dac5571芯片进行输出。要实现不同频率的波形输出只需要改变ccr0寄存器里面的数值就可以实现。通过对tactl寄存器设置,选择定时器a的时钟源,然后打开定时器中断。4 方案的实现4.1 系统硬件设计4.1.1 信号发生器工作原理信号发生器电路主要由msp4

20、30f149单片机、独立键盘电路、1602液晶显示电路、dac5571数模转换芯片、系统电源电路等组成。系统原理方框图如4-1所示。图4-1 系统原理方框图4.1.2 msp430f149复位电路复位电路的主要作用是在上电时对单片机进行一些初始的设置或者当程序运行失控时,选择手动复位从而使单片机重启。有上电自动复位,手动复位和外部脉冲复位3种复位方式。本设计用到的msp430f149单片机采用的是低电平上电自动复位,当上电瞬间由于电容电压不能突然变化,所以rst也就相当于和地相连,单片机复位。当程序运行出现故障时,可以手动按下s5键进行手动复位。msp430f149复位电路如图4-2所示。 图

21、4-2 msp430f149复位电路4.1.3 独立键盘电路采用了四个独立按键对波形信息进行选择和设置如图4-3所示。图4-3 独立键盘电路4.1.4 液晶显示电路通过lcd1602显示电路能将按键输入的波形信息显示出来。lcd1602显示电路如图4-4所示。图4-4 lcd1602显示电路4.1.5 波形产生电路采用dac5571芯片将单片机输出的数字信号转换成模拟信号输出。数模转换dac5571波形发生电路如图4-4所示。图4-5 dac5571波形产生电路4.2 系统软件设计4.2.1 信号发生器主流程图首先对各个功能模块进行初始化,接着扫描独立按键获取默认参数(10hz,0.5v)的波

22、形信号(正弦波、方波、锯齿波、三角波)并将参数信息显示在1602液晶上,然后再次扫描按键,判断是否修改波形参数,如果要改变频率,只需要重新设置定时器a中ccr0的记数周期值就可以,要改变幅值的话,只需要将送入dac数模转换芯片的数值乘以一定的比例系数(不大于1)就可以,如图4-5所示。图4-6 信号发生器主流程图4.2.2 正弦波程序流程图首先建立一个正弦波数据列表tosin256,每次进入定时器a的中断服务时,就将列表里的数据送给dac数模转换芯片输出,将256个元素输出一遍,产生一个正弦波,如此循环如图4-6所示。图4-7 正弦波产生程序流程图4.2.3 方波程序流程图方波信号是通过msp

23、430f149内部定时器a每次中断到来时,进入中断服务程序,前128次中断时将0xff乘以一定系数(不大于1)送dac数模转换芯片输出,后128次中断时将0送dac数模转换芯片输出,然后中断次数清零,如此循环如图4-7所示。图4-8 方波产生程序流程图4.2.4 锯齿波程序流程图锯齿波信号的产生是当定时器a中断时,一旦进入中断服务程序后,变量i自增,同时将变量i的值送给dac数模转换芯片输出,当i等于255时,i清零,重新计数,如此循环如图4-8所示。图4-9 锯齿波产生程序流程图4.2.5 三角波程序流程图三角波和锯齿波的主要区别是:前者上坡和下坡的斜率相等,后者的不相等。三角波信号的产生是

24、当定时器a中断时,一旦进入中断服务程序,变量i乘以2,同时将变量i乘以2的值送给dac数模转换芯片输出,当i大于128时,将(255-i)乘以2的值送给dac数模转换芯片输出,当i等于255时,i清零,重新计数,如此循环如图4-9所示。图4-10 三角波产生程序流程图4.2.6 开发工具和语言介绍本次设计使用的开发工具是iar embedded workbench,该工具对c/c+语言高度优化,同时也是一个强大的编辑器和一个项目工程管理器,其次更重要的是该工具在仿真调试方面功能也很强大。这款开发工具适用于许多8位、16位和32位的mcu,本次用到的msp430单片机属于16位的单片机,因此同样

25、也适用。msp430单片机开发语言有两种,分别是汇编语言和c语言。传统的汇编语言开发出来的代码虽然运行效率高,但是开发难度相对较大,并且代码不容易移植。尽管c语言没有汇编的高效率,但是现在很多编译器都对c语言进行优化,而且单片机的时钟频率也很高所以效率方面已经不是问题了,另外c语言开发相当简单,而且比较方便实现移植。因此本次设计采用了c语言编程。4.3 仿真调试4.3.1 信号发生器仿真原理图选择合适的芯片,依据信号发生器的硬件设计原理和软件设计流程图,在proteus中对信号发生器系统进行仿真和调试,运用proteus仿真从而可以很方便将各个功能模块进行连接,了解各个数据端口的电平变化,波形

26、信息也比较直观,而且不需要真实的元件,通过应用仿真进行软件调试很大程度上降低了成本。通过仿真调试,可以完善自己思路,优化自己硬件的设计电路和软件的程序结构,发现自己系统设计中的问题,让自己更加深入的了解信号发生器的工作原理。软件仿真并不能完全反映实际情况,但可以作为一种学习的辅助手段。信号发生器仿真原理图如图4-11所示。图4-11 信号发生器仿真原理图4.3.2 正弦波仿真图(1) 初始设置(10hz,0.5v)正弦波仿真图图4-12 默认设置正弦波仿真图(2) 调频(15hz,0.5v)正弦波仿真图图4-13 频率调节正弦波仿真图(3) 调幅(10hz,1.0v)正弦波仿真图图4-14 幅

27、值调节正弦波仿真图4.3.3 方波仿真图(1) 初始设置(10hz,0.5v)方波仿真图图4-15 默认参数方波仿真图(2) 调频(15hz,0.5v)方波仿真图图4-16 频率调节方波仿真图(3) 调幅(10hz,1.0v)方波仿真图图4-17 幅值调节方波仿真图4.3.4 锯齿波仿真图(1) 初始设置(10hz,0.5v)锯齿波仿真图图4-18 默认参数锯齿波仿真图(2) 调频(15hz,0.5v)锯齿波仿真图图4-19 频率调节锯齿波仿真图(3) 调幅(10hz,1.0v)锯齿波仿真图图4-20 幅值调节锯齿波仿真图4.3.5 三角波仿真图(1) 初始设置(10hz,0.5v)三角波仿真

28、图图4-21 默认参数三角波仿真图(2) 调频(15hz,0.5v)三角波仿真图图4-22 频率调节三角波仿真图(3) 调幅(10hz,1.0v)三角波仿真图图4-23 幅值调节三角波仿真图4.3.6 结果分析通过软件仿真调试发现,只要改变d/a芯片的参考电压,就可以改变输出波形的幅值,可以用滑动变阻器实现分压,送给d/a芯片作为参考电压,同时将此时的参考电压采集并且显示在1602液晶上的话,就可以扩大幅值调节的范围。还有输出波形的最大频率与所选择的d/a芯片有关,还与外接运放的处理速度有很大联系。由于只是软件仿真,所以波形的频率和幅值参数其实只作为参考,用来观察模拟该功能的。总结通过本次课题

29、设计,首先深入了解了信号发生器的工作原理和发展趋势,对于msp430单片机的内部模块以及应用特点有了清晰的认识,扩展了自己的知识面,锻炼了自己的学习能力以及如何有条理的进行一项设计。该设计主要产生四种波形信号(正弦波、方波、锯齿波、三角波),而且这四种波形信号还可以通过按键实现幅值(0.5v,1.0v,2.0v)和频率(10hz,20hz,30hz,50hz)的调节。最后,对课题进行了仿真,可以很直观的看到波形信号的变化,通过调试不断完善自己的思路。该设计还可以进行扩展功能从而达到幅值和频率的宽覆盖,高精度的目的。当然在设计中也遇到许多问题比如方波的波形出现失真,这主要是因为方波是从d/a输出

30、的波形信号,由于方波的电平变化剧烈,内部电容充放电明显从而影响了输出信号波形。如果方波从单片机的i/o管脚输出的话,不会出现失真,不过i/o管脚只有高地电平变化,不能进行幅值调节,需要通过外接电路改变参考电压来调节幅值,为了方便对四种波形统一调节,就都从d/a输出,其实当方波频率提高的时候,失真现象就会减弱。还有就是1602液晶手册上说明使用的时候要进行忙检测,在硬件调试的时候没问题,当进行仿真的时候,忙检测程序导致1602液晶忙检测位一直处于高电平状态,使得1602液晶无法正常工作,删除忙检测程序就可以。软件仿真只能模拟大概功能,好多具体实际参数需要硬件调试去修改。软件仿真和硬件调试互相配合

31、,可以更好的处理问题。致谢能顺利完成该设计,首先衷心的感谢指导老师杨勇老师,他细致的指导给我提供了巨大的帮助,使我学到了今后工作中也会用到的能力,怎样一步步解决问题。还要感谢的就是帮助我的同学,和他们的讨论加深了我对知识的运用,还有对我所参考的作者也表示感谢。参 考 文 献1 张涵,任秀华,王全景.基于proteus的电路及单片机设计与仿真m.北京:电 子工业出版社,2012.2 秦龙. msp430单片机常用模块与综合系统实例精讲m. 1版. 北京:电子工业出版社, 2007.3 林志琦, 蒋惠萍. 信号发生电路原理与实用技术m. 1版. 北京:人民邮电出版社, 2010. 4 郭惠, 解书

32、刚. protel 99se常用功能与应用m. 1版. 北京:电子工业出版社, 2008. 5 曹磊. msp430单片机c程序设计与实践m. 1版. 北京:北京航空航天大学出版社, 2007. 6 胡大可. msp430系列超低功耗16位单片机原理与应用m. 2版. 北京:北京航 空航天大学出版社, 2001. 7 张晞, 王德银, 张晨. msp430系列单片机实用c语言程序设计m. 1版. 北京:人民邮电出版社, 2005. 8 杨平,王威. msp430系列超低功耗单片机及应用j. 国外电子测量技术,2008,27(12):48-50. 9 吴平,龚彬,丁铁夫.液晶显示模块和msp43

33、0单片机在显示终端上的应用j. 液晶与显示,2003,18(6):436-440. 10 吴少军, 刘光斌. 单片实用低功耗设计-原理,器件与应用m.北京:人民邮电 出版社,2003.11 邹江峰,刘涤尘. msp430在液晶显示上的应用j. 液晶与显示, 2005, 20(2):159-162.12 谢敏. 基于msp430的低功耗仪表系统设计j.微计算机信息, 2007, 23(22):142-144. 13 苏维嘉, 王旭辉. 基于msp430单片机的数据采集系统j. 现代电子技术, 2007(23):117-119. 14 庞文瑞. d/a转换器及其应用j. 水利水文自动化,2003,

34、1(1):41-46. 15 bucur d, kwiatkowska m. on software verification for sensor nodesj. the journal of systems & software, 2011, 84(10):1693-1707. 16 tarzanlorente m, ceravalls j, bosch j, etal. electronic system for controlling the food cooking processj. procedia chemistry, 2009, 1(1):489-492. 附录a:硬件原理图

35、附录b:仿真调试程序#include msp430x14x.h#define cs_l p5out &= bit0#define wr_l p5out &= bit1#define cs_h p5out |= bit0#define wr_h p5out |= bit1#define dataout p2out#define datain p2in #define ctrldir p6dir#define datadir p2dir#define clr_rs p6out &= bit3 #define set_rs p6out |= bit3#define clr_rw p6out &= b

36、it4#define set_rw p6out |= bit4#define clr_en p6out &= bit5#define set_en p6out |= bit5#define uchar unsigned char#define uint unsigned intchar f = 0,v = 0;uchar i = 0;uint num,flag1;uchar* strf =10hz ,20hz ,30hz ,50hz;uchar* strv =0.5v ,1.0v,2.0v;uchar tosin256=0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x

37、96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5 ,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5 ,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

38、0xff,0xff,0xff,0xfe,0xfd ,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda ,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x

39、83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51 ,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,

40、0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e ,0x51,0x55,0x57,0x5a,0x5d,0

41、x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 ; /*液晶显示模块功能定义*/void delay1(void) /*长延时*/ uint i; for(i=100;i0;i-);void lcdwritecmd(uchar cmd ) /*液晶写命令*/clr_rw;clr_rs;_nop(); dataout = cmd;_nop();set_en;_nop();_nop(); _nop();clr_en;void lcdwritedata (uchar data) /*液晶写数据*/ clr_rw;set_rs; _nop(

42、);dataout = data;_nop();set_en;_nop();_nop(); _nop();clr_en;void lcddisxy(uchar x,uchar y) /*显示坐标*/uchar temp1;temp1 = x & 0x0f;y &= 0x01;if(y) temp1 |= 0x40;temp1 |= 0x80;lcdwritecmd(temp1);void dischar(uchar x,uchar y,uchar chardata) /*指定坐标写字符*/lcddisxy(x,y);lcdwritedata(chardata);void disstring(u

43、char x,uchar y,uchar* ptr) /*指定坐标显示字符串*/uchar a,b=0;uchar *p;p = ptr;while(*ptr+ != 0) b+;for(a=0;ab;a+) dischar(x+,y,pa); if(x=0x0f) x = 0; y = 1; void lcd_init (void)/*液晶初始化*/ datadir = 0xff;ctrldir = 0xff;lcdwritecmd(0x38);lcdwritecmd(0x08); lcdwritecmd(0x01);lcdwritecmd(0x06);lcdwritecmd(0x0c); /定时器初始化void timer_init(void) /tactl = tassel_2 + mc_1; p1dir = 0xff; p1out = 0xff;void main(void) wdtctl = wdtpw + wdthold;/*关闭看门狗*/ p4dir = 0xff; p5dir |= 0x03; cs_h; wr_h; p4o

温馨提示

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

评论

0/150

提交评论