MSP430单片机液晶显示实验
- 格式:pdf
- 大小:135.24 KB
- 文档页数:14
MSP430F5529 实验指导书(V1.0)2014年10月27日东北林业大学机电工程学院“3+1”实验室实验一基础GPIO实验实验二键盘与液晶显示实验实验三时钟系统配置实验实验四看门狗与定时器实验实验五 AD/DA实验实验六比较器实验实验七 Flash实验实验八串行通信实验实验一基础GPIO实验【实验目的】1、熟悉CCS的基本使用方法;2、掌握MSP430系列单片机程序开发的基本步骤;3、掌握MSP430 IO口的基本功能。
【实验仪器】1、SEED-EXP430F5529v1.0开发板一套;2、PC机操作系统Windows XP或Windows 7,CCSv5.1集成开发环境。
【实验原理】CCS(Code Composer Studio)是 TI 公司研发的一款具有环境配置、源文件编辑、程序调试、跟踪和分析等功能的集成开发环境,能够帮助用户在一个软件环境下完成编辑、编译、链接、调试和数据分析等工作。
CCSv5.1 为 CCS 软件的最新版本,功能更强大、性能更稳定、可用性更高,是 MSP430 软件开发的理想工具。
SEED-EXP430F5529v1.0开发板上的有8个可操作的LED灯,与MCU的IO口对应关系如图1-1所示:图1-1 LED与MCU的IO对应关系电路我们可以通过控制单片机IO口的输出电平状态来控制各个LED灯的亮灭。
开发板上还有2个可操作的按键S1,S2。
如图1-2所示。
图1-2 按键电路我们可以通过读取与按键相连的IO口的输入电平状态来执行相应的操作。
此外,S1,S2还可以作为外部中断源,触发中断。
【实验内容】1、用调用头文件的方法,使能MSP430F5529开发板上的8个LED灯依次按顺序循环点亮;2、用按键S1控制开发板上LED1的亮灭状态(查询法);3、用按键S2控制开发板上跑马灯的循环速度(中断方式)。
【实验步骤】内容1:使能开发板上的8个LED灯依次按顺序循环点亮1、打开CCSv5并确定工作区间,然后选择File-->New-->CCS Project 弹出图1-3对话框。
液晶显示器一.实验目的:1.了解全点阵图形LCD的结构和原理掌握在MSP430上如何使用外设。
2.了解LCD显示器的工作原理、种类(笔段型、点阵字符型、点阵图形)及主要性能指标。
3.掌握图形点阵LCD的编程使用方法;理解LCD显示模块命令的种类、功能及使用方法。
4.了解LCD字符生成软件的使用方法(见附录)。
二.实验内容:1.在LCD上显示Hello和中文字“南京工业大学”。
2.通过键盘控制Hello或者中文字符在LCD上左右、上下移动。
3.学会使用字符生成软件来实现任意字符代码的生成和显示。
4.其他另外可以实现的目标:使字符在按键没有松动的情况下连续移动;实现字符的循环移动,即当字符串移动到边界时仍可以移动,显示不完的部分从另一边显示出来。
三.实验原理:1.图形点阵式液晶原理液晶是一种具有规则性分子排列的有机化合物,它既不是液体也不是固体,而是介于固态和液态之间的物质。
液晶具有电光效应和偏光特性,这是它能用于显示的主要原因。
常用的液晶显示器可分成3类,分别是扭曲向列型(Twisted Nematic)、超扭曲向列型(Super TN)和彩色薄膜型。
字符点阵式属于扭曲向列型LCD。
典型的字符点阵式液晶显示器是由控制器、驱动器、字符发生器ROM、字符发生器RAM和液晶屏组成,字符由5*7 点阵或5*10点阵组成。
一般结果如图一所示:图一 128x64 点阵图形液晶模块方框示意图此次实验所用的LCD型号是RT12864CT。
12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128*64全点阵液晶显示器组成。
可完成图形显示,也可以显示8*4个(16*16)汉字。
管脚号管脚名称LEVER 管脚功能描述1 VSS 0 电源地2 VDD +5.0V 电源电压3 V0 - 液晶显示器驱动电压4 D/I(RS) H/L D/I=“H”,表示DB7∽DB0为显示数据D/I=“L”,表示DB7∽DB0为显示指令数据5 R/W H/L R/W=“H”,E=“H”数据被读到DB7∽DB0R/W=“L”,E=“H→L”数据被写到IR或DR6 E H/ R/W=“L”,E信号下降沿锁存DB7∽DB0R/W=“H”,E=“H”DDRAM数据读DB7∽DB07 DB0 H/L 数据线8 DB1 H/L 数据线9 DB2 H/L 数据线10 DB3 H/L 数据线11 DB4 H/L 数据线12 DB5 H/L 数据线13 DB6 H/L 数据线14 DB7 H/L 数据线15 CS1 H/L H:选择芯片(右半屏)信号16 CS2 H/L H:选择芯片(左半屏)信号17 RET H/L 复位信号,低电平复位18 VOUT -10V LCD驱动负电压19 LED+ - LED背光板电源20 LED- - LED背光板电源表1:12864LCD的引脚说明128x64 点阵图形液晶模块的内部结构可分为三个部分:LCD 控制器,LCD 驱动器,LCD 显示装置。
学号:课程设计题目LCD1602液晶字符串循环显示学院专业班级姓名指导教师2013年1月15 日课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目要求:利用LaunchPad上的板上资源,外接1602液晶,编写程序使字符串在液晶上循环移动。
时刻安排:2021年元月1日~2021年元月17日下午17:30 指导教师签名:年月日系主任(或责任教师)签名:年月日目录引言 (1)1 课程设计要求 (2)2 硬件电路 (3)2.1 MSP430G2553单片机 (3)2.1.1 MSP430G2553单片机特点 (3)2.1.2 MSP430G2553单片机结构 (3)2.1.3 MSP430G2553的时钟系统 (4)2.1.4 I/O寄放器 (5)2.2 LCD1602液晶屏 (5)3 方案设计 (7)3.1 设计方案 (7)3.2 方案选择 (7)4 程序设计 (8)4.1 程序结构 (8)4.2 主程序源程序 (8)4.3 子程序源程序 (8)4.4 子程序头文件 (12)5 调试 (13)5.1 CCSv5编译软件 (13)5.2 调试进程 (13)6 终止语 (15)附录1:代码 (16)附录2:实物图 (22)参考文献 (23)本科生课程设计成绩评定表 (24)引言本次课程设计旨在设计一个基于MSP430 系列微处置器的LCD1602液晶字符串循环移动。
单片机是一种集成电路芯片,是采纳超大规模集成电路技术把具有数据处置能力的中央处置器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、按时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上组成的一个小而完善的微型运算机系统,在工业操纵领域普遍应用。
现今时期是一个新技术层出不穷的时期,在电子领域尤其是自动化智能操纵领域,传统的分立元件或数字逻辑电路组成的操纵系统,正在以前所未见的速度被单片机智能操纵系统所代替。
MSP430系列16位超低功耗单片机原理与实践MSP430系列单片机采用了哈佛结构,具有16位的数据宽度,可以实现更高的数据处理速度。
它的主频范围从1MHz到25MHz,能够满足不同应用的需求。
同时,MSP430系列单片机具有多种低功耗模式,例如待机模式、休眠模式和独立模式,可以有效地降低功耗,延长电池寿命。
MSP430系列单片机具有丰富的外设接口,包括多个串口通信接口、通用输入输出口、模拟输入输出口以及定时器和计数器等。
这些外设接口使MSP430系列单片机可以与其他外部设备进行通信,实现数据的输入和输出。
此外,MSP430系列单片机还具有多个中断源,可以实现实时中断处理,提高系统的响应能力。
使用MSP430系列单片机进行开发,首先需要选择合适的开发板和编程工具。
德州仪器公司提供了MSP430 LaunchPad开发板,可以方便地进行程序的编写和调试。
同时,德州仪器还提供了MSP430编程工具链,包括编译器、调试器和仿真器等,在开发过程中能够提高开发效率。
在实际开发中,可以利用MSP430系列单片机的低功耗特性,实现一些需要长时间运行的应用。
例如,可以将MSP430系列单片机用于物联网中的传感器节点,采集和传输环境数据。
由于MSP430系列单片机的低功耗特性,可以通过电池供电,从而实现长时间的无线监测。
此外,MSP430系列单片机还可以用于电力管理系统、家庭自动化系统和医疗设备等领域。
它的低功耗特性和丰富的外设接口使其具有很高的适用性,能够满足各种不同应用的需求。
总结起来,MSP430系列单片机是一款16位超低功耗单片机,具有高性能和丰富的外设接口。
它的低功耗特性使得它在物联网、电力管理、家庭自动化和医疗设备等领域具有广泛的应用前景。
通过学习MSP430系列单片机的原理和实践,可以更好地应用它在实际开发中。
MSP430单片机期末设计报告课题名称:基于msp430单片机期末测试题起讫日期:14年6月23日- 14年6月27日学生学号:1200308132 1200308133 学生姓名:张玥梁尧报告成绩:中国计量学院信息工程学院生物医学工程专业目录一.实验仪器简介 (2)二.实验设计 (3)三.实验结果 (6)一:实验仪器简介MSP430单片机简介:MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。
德州仪器1996年到2000年初,先后推出了31x、32x、33x 等几个系列,这些系列具有LCD驱动模块,对提高系统的集成度较有利。
每一系列有ROM 型(C)、OTP 型(P)和 EPROM 型(E)等芯片。
EPROM 型的价格昂贵,运行环境温度范围窄,主要用于样机开发。
这也表明了这几个系列的开发模式,即:用户可以用 EPROM 型开发样机;用OTP型进行小批量生产;而ROM 型适应大批量生产的产品。
MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7 种源操作数寻址、4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。
这些特点保证了可编制出高效率的源程序。
MSP430 系列单片机能在25MHz晶体的驱动下,实现40ns的指令周期。
16位的数据宽度、40ns的指令周期以及多功能的硬件乘法器(能实现乘加运算)相配合,能实现数字信号处理的某些算法(如FFT等)。
MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压和灵活而可控的运行时钟方面都有其独到之处。
首先,MSP430 系列单片机的电源电压采用的是1.8-3.6V 电压。
因而可使其在1MHz 的时钟条件下运行时,芯片的电流最低会在165μA左右,RAM保持模式下的最低功耗只有0.1μA。
MSP430单片机的应用实例阚世俊B首先来了解什么是单片机,什么是msp30 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机了解计算机原理与结构的最佳选择。
可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
不过,这种电脑,通常是指个人计算机,简称PC机。
它由主机、键盘、显示器等组成(如图1所示)。
还有一类计算机,大多数人却不怎么熟悉。
这种计算机就是把智能赋予各种机械的单片机(亦称微控制器,如图2所示)。
顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。
因为它体积小,通常都藏在被控机械的“肚子”里。
它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。
现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。
究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗的混合信号处理器(Mixed Signal Processor)。
用MSP430实现LCD人机界面系统Using MSP430 to Design LCD Man-Machine Conversation System上海交通大学陈海波陈立功倪纯珍耿明(此文章已发表在电子产品世界杂志的2001年11月B版)摘要本文详细介绍了MSP430F149单片机与控制键以及液晶显示LCD之间的接口技术和显示技术并且给出了典型的应用电路以及相应的源程序关键词MSP430F149LCD接口电路引言随着电子技术的飞速发展越来越多的领域应用到以单片机为核心的便携式数字化仪表和测试仪为了尽可能缩小仪器的体积对选择的芯片和显示系统的要求变得更高原来使用的LED显示由于体积及功耗方面的原因已经不能满足人们的需要而现在越来越多的使用LCD 以达到更佳的人机对话效果LCD有不同的类别通常按照其显示方式分为段式点字符式点阵式等目前字符式LCD被广泛的采用随着芯片技术的不断发展不同芯片与LCD之间的连接和驱动存在着很大的差异本文介绍了一种采用MSP430F149单片机的LCD人机界面系统的设计MSP430F149是美国TI公司最新推出的超低功耗混合信号16位单片机系列中的一种图1是MSP430F149功能框图它采用RISC精简指令集125ns指令周期大部分的指令在一个指令周期内完成而且片内含有硬件乘法器大大节省了运算的时间该芯片采用超低功耗设计1.8V 3.6V的供电电压在2.2V电压32KHz晶振系统中工作电流7mA在2.2V电压1MHz晶振系统中工作电流250mA电池可保持长时间的工作它内含一个八个外部通道的12位高性能A/D转换器和一个自动扫描功能的容量为16个字的可编程缓冲器使得采样速率可达200KHz而且含有片内基准电压温度传感器以及电池低压时的检测电路可以实现数据采集及自检功能片内具有两个定时器带有7个捕获/比较寄存器的16位Timer_B和带有3个捕获/比较寄存器的16位Timer_A该芯片具有60KB的FlashROM2KB RAM采用串行在线编程方式为用户编译程序和控制参数提供灵活的空间而且内部的安全保密熔丝可使程序不被非法考制它可以10万次擦写有超强的抗干扰能力此外MSP430F149具有强大的中断功能48个I/O引脚它的I/O与传统的I/O不同(见图2)每个I/O口分别对应输入输出功能选择中断等多个寄存器使得功能口和通用I/O口复用在对同一个I/O口进行操作前首先要选择其要实现的功能这样大大的增强了端口的功能和灵活性大大提高了对外围设备的开发能力我们就是利用I/O口来开发LCD显示系统该芯片还具有两个通用同步/异步串行通讯接口由于MSP430F149具有以上的特点十分适合开发的要求所以选用其作为系统的主芯片LCD人机界面系统设计人机界面是便携式系统的重要组成部分其要求为控制面板简单指令明确表达丰富确切体积小功耗低目前显示系统多采用的是通用字符式LCD在满足条件的基础上节省了开发时间和成本我们所采用的是164的液晶显示器在以往的设计中单片机和外围的设计大部分均是5V系统而随着电子技术的发展超低功耗的芯片越来越多在此基础上提出了5V系统和3.3V系统共用技术从表1可以看出字符式LCD与MSP439F149相互之间的电平存在着很大的差异这种电平的差异直接影响到LCD对芯片发出指令的响应反之过高的LCD 反馈电压可能超过MSP439F149所能承受的最高电压对芯片造成不可预计的损坏因此我们的电路设计(如图3)采用限流箝位的方法一般LCD的驱动电流最大不会超过13mA所以通过180电阻后下降了的电压可以驱动LCD同时也解决了限流问题而且通过3.6V嵌位二极管保证MSP439F149端口所承受的电压不会超过极限值实现了单片机到LCD的电平转换满足了LCD高低电平的要求电路中利用MSP430F149的P4.4P4.5P4.6作为LCD中E R/W RS的控制线P5口作为LCD数据线由于此系统是数据采集系统中的显示部分它要对不同的中断和按键产生响应以显示相应的内容所以设计了三个按键分别对应的是进入键移动键和退出键电路还采用了上电自动复位的设计结构供开机和复位时使用MSP430F149除了内部有DCO数控晶振可以提供工作频率外还有两个外部时钟接口分别可接低速和高速时钟这样为系统的不同模块提供了不同的稳定工作频率我们在系统设计中分别选用32768手表晶振(可以作为独立外围模块的时钟源或者用于稳定DCO)和4.096M晶振(可以作为系统的主频备用)由于需用3.3V和5V两种电源我们应用ADP1073 DC-DC电荷泵升压稳压电路由两节5号电池(1.6V 3.2 V)供电获得稳定的5V电源再应用TPS7233稳压电路对5V降压获得3.3V 电源该电路结构简单稳定可靠2节5号碱性电池对带有背景光LCD电流为80mA的系统可连续工作8小时以上具体设计电路见图4所示显示系统的程序设计从MSP430F149的内部结构可以看出同一个I/O口对应多个寄存器是典型的复用端口在对LCD读写操作前要进行功能选择即设置P4P5口为输出口(LCD控制口)P1口为输入口(键盘另外需要注意的是系统的主工作频率如果使用DCO作为系统时钟由于MSP430F149芯片内部没有锁频环数字逻辑电路为了得到准确的时钟信号需要通过软件进行软锁频利用32768晶振和Timer_A或Timer_B的捕获比较功能可以实现此功能主频的选择将影响液晶显示的稳定性如果程序中Enable信号的时间过短的话由于LCD模块接受的数据不能保证显示的效果将会不稳定具体程序见程序清单该程序选用DCO作为系统的主频在中等频率0.75MHz采用软件锁频32768晶振作为软锁频的基准晶振结语通过开发以MSP430F149为核心的LCD人机界面系统对3.3V和5V系统间的交互进行了研究给出了简捷的设计此系统是我们开发的便携式振动分析仪的一个部分但由于该芯片的强大功能十分适合中小型仪器的开发此系统也可以作为其他便携式仪器的显示部分加之TI 公司提供的JTAG口在线仿真功能能够大大缩短研制周期这一点对开发研制来说十分重要参考文献1 MSP430系列超低功耗16位单片机原理与应用胡大可北京航空航天大学出版社20002陈粤初窦振中等单片机应用系统设计与实践北京航空航天大学出版社19923 MSP430x1xx Family User s Guide, 20004 MSP430x13x,MSP430x14x Data sheet, 20005 Controlling the DCO of the MSP430x11x, 2000。
MSP430 单片机应用技术实验报告学号: XXXXXXXX姓名: XXX分组:第X 组同组同学 1 姓名: XXX同组同学 2 姓名: XXX南京理工大学2016年 12月 08日实验 1一、实验题目: UCS实验二、实验目的设置 DCO FLL reference =ACLK=LFXT1 = 32768Hz, MCLK = SMCLK = 8MHz,输出 ACLK、SMCLK,用示波器观察并拍照。
UCS初始状态: XT1关闭,默认为 LFXT1,ACLK选择 XT1源(时钟错误时自动切换至), MCLK、SMCLK选择 DCOCLKDIV源。
FLL 参考时钟源为XT1CLK,DCOCLK/DCOCLKDIV,=2N=32。
因此程序需要进行的操作有,启动LFXT1,待 XT1稳定工作后,设置锁频环将XT1分频为 8MHz的 DCOCLKDIV作为 MCLK和 SMCLK的时钟源,并分别通过 P1.0和P3.4 输出。
三、实验仪器和设备计算机、开发板、示波器、信号源、电源、Code Comeposer Studio v5四、实验步骤1 、用电缆连接开发板 USB2口和电脑 USB口,打开电源开关 SW1,电源指示灯 D5 点亮;2、运行CCSV5;3、新建工作空间workspace;4、新建工程project与源文件main.c;5、编写程序;6、编译、调试、下载程序到单片机;7、观察、分析、保存运行结果。
五、实验程序六、实验结果一、实验题目:FLL+应用实验二、实验目的检测P1.4输入,遇上升沿进端口中断,在中断服务程序内翻转P4.1状态。
三、实验仪器和设备计算机、开发板、示波器、信号源、电源、Code Comeposer Studio v5四、实验步骤1、用电缆连接开发板 USB2口和电脑 USB口,打开电源开关 SW1,电源指示灯 D5 点亮;2、运行CCSV5;3、新建工作空间workspace;4、新建工程project与源文件main.C;5、编写程序;6、编译、调试、下载程序到单片机;7、观察、分析、保存运行结果。
MSP430F413单片机段式LCD设计中遇到的晶振、LCD驱动等问题2011-08-11 17:40这次设计所用到的微控制器为德州仪器(TI)的16位单片机 MSP430F413。
单从价格上面来说,这个是单片机也算是TI里面的最便宜的可以直接驱动段式96段 LCD 的单片机了,当时设计之初也是奔着价位而来的,由于在工作中用到过MSP430单片机做过低功耗类的产品,所以对单片机的外围以及硬件结构还是略知一二的。
相对于stc单片机的开发工具来说 430的开发工具也只是个JTAG接口,但是这个接口的价格嘛也得60元左右,由于以前做过MSP430的项目,所以开发工具是现成的!好了,言归正传,这次所用的LCD是淘宝上买的,详细资料如图所示:是个四位的 lcd,以前确实没有接触过段式LCD ,数码管倒是接触的不少,所以自己由好奇心的趋势,自己就做了一块开发板,想试试LCD的感觉。
首先开发板打样回来之后,元器件焊好,随便写了个定时器的程序进去,发现程序在10秒钟之内是运行正常的(此时还没有安装LCD,只是个指示灯在跑),不过也有偶尔程序不运行的情况,后来自己就找原因;1、mcu焊接不好?2、复位电路焊接不好?3、晶振焊接不好?逐一排查,发现前两项是很正常的,虽然PQFP的封装还是焊接的不多,但是自己的焊功还是过的去的,于是就找晶振的问题。
但是如果是晶振自身的问题的话,可能就不起振或者起振频率不对,以至于系统根本就无法定时启动。
所以疑点越来越在晶振上面,后来发现晶振自身是没有问题的,主要是原因是因为晶振的管脚焊接位置距离单片机的 XIN XOUT 管脚的距离着实有点远,大概20mm的样子,加上线走的比较细0.26mm,所以晶振启动异常,或者有时候根本不起振。
问题处在第3了。
没有办法只好用刻刀将晶振的线从单片机管脚出来大概3mm的地方划断,剥去丝印层,露出黄铜线,将晶振管脚直接焊接在黄铜线上,然后用硅胶枪将晶振和单片机封好,就是下面的样子(很丑但是很温柔)!凑合着先用一下,等实验好了的话,如果有需要就重新打样了。
MSP430单片机实验报告--段式LCD显示1.实验介绍:实验演示了将ADC结果用段式LCD显示,并且还原输入电压也采用段式LCD显示。
ADC的结果可以通过ADC12MEM0的值来显示。
当程序运行时,LCD屏幕采用10进制显示出ADC12MEM0的值。
2.实验目的:a.熟悉IAR5.0软件开发环境的使用b.了解MSP430段式LCD的工作方式c.掌握MSP430段式LCD的编程方法3.实验原理:驱动LCD需要在段电极和公共电极上施加交流电压。
若只在电极上施加直流电压,液晶本身发生劣化。
解决这个问题的一般方法是使用短时也就驱动器,如MSP430F4xx系列单片机就集成有段式液晶驱动。
如果要在没有液晶驱动器的情况下使用段式液晶显示器,就要用到如图1所示电路。
图1中,A为电极信号输入端,控制该段液晶是否被点亮;B为交流方波信号输入端,将有一个固定频率的方波信号从此端输入;com为公共背极信号。
工作原理为;固定的方波信号被直接加载到液晶公共背极,同时该信号通过一个异或门加载到液晶段极。
当A端为低电平时,液晶的段极与公共背极将得到一个同相、同频率、同幅度的方波信号,液晶的两端始终保持没有电压差;当A端为高电平时,液晶的段极也公共背极将得到一个反相、同幅度、同频率的方波信号,液晶两端将保持一个交流的电压差。
这样既能使液晶保持点亮状态,又不会发生劣化而损坏液晶显示器。
图一.段式液晶驱动电路4.实验步骤:(1)将PC 和板载仿真器通过USB 线相连;5.实验现象:段式LCD显示屏显示的数字为002031,ADC12MEM0的值为07EF,其值为16进制,将其转换后值为2031与屏幕显示一致。
6.关键代码分析:#include <msp430x26x.h>#include "General_File.h"#include "I2C_Define.h"void I2C_Start(void){DIR_OUT;SDA_1;I2C_Delay();SCL_1;I2C_Delay();SDA_0;I2C_Delay();SCL_0;}//End I2C_Start/*函数名:I2C_Stop 功能:遵循I2C总线协议定义的停止*/void I2C_Stop(void){DIR_OUT;SDA_0;I2C_Delay();SCL_1;I2C_Delay();SDA_1;}//End I2C_Stop/* 函数名:I2C_ReceiveACK 功能:待接受ACK 信号,完成一次操作*/void I2C_Write_ACK( void ){SDA_1;DIR_IN;SCL_1;I2C_Delay();while(SDA_IN );SCL_0;I2C_Delay();DIR_OUT;return;}//End I2C_ReceiveACK/* 函数名:2C_Read_Ack 功能:接受数据后发送一个ACK信号*/void I2C_Read_Ack(void){DIR_OUT;SCL_0;SDA_0;I2C_Delay();SCL_1;I2C_Delay();SCL_0;SDA_1;}//End I2C_Read_Ack/* 函数名:I2C_Read_NoAck 功能:最后接受数据后发送NoACK信号*/void I2C_Read_NoAck( void ){DIR_OUT;SCL_0;SDA_1;I2C_Delay();SCL_1;I2C_Delay();SCL_0;}//End I2C_Read_Ack/* 函数名:I2C_Receiveuchar 功能:接受一个字节的数据*/uchar I2C_Receiveuchar(void){uchar Read_Data = 0x00; //返回值uchar DataBit = 0x00; //每一个clk 接受到的数据SCL_0;I2C_Delay();SDA_1;DIR_IN;for( uchar i = 0;i < 8;i++ ){SCL_1;I2C_Delay();DataBit = SDA_IN;SCL_0;I2C_Delay();I2C_Delay();Read_Data = ( ( Read_Data << 1 ) | DataBit ); //将数据依次存入Read_Data }return( Read_Data );}//End I2C_Receiveuchar/* 函数名:I2C_Senduchar 功能:遵循I2C总线协议定义发送一字节数据*/void I2C_Senduchar( uchar Wr_Data ){DIR_OUT;SCL_0;SDA_1;for( uchar i = 0;i < 8;i++ ){if( Wr_Data & 0x80 ){SDA_1; //最高位是否为1,为1则SDA= 1 }else{SDA_0; //否则SDA=0}I2C_Delay();SCL_1;I2C_Delay();SCL_0;I2C_Delay();Wr_Data <<= 1; //数据左移一位,进入下一轮送数}SDA_1;return;}//End I2C_Senduchar/************ BU9796FS相关指令定义**********/#define Write_Com 0x80#define Write_Data 0x00#define Display_ON 0x48#define Half_Bias 0x44#define Set_Reset 0x6A#define Ext_Clock 0x69#define Blink_Mode0 0x70#define Blink_Mode1 0x71#define Blink_Mode2 0x72#define Blink_Mode3 0x73#define Pixel_ON 0x7E#define Pixel_OFF 0x7D#define BU9796_Addr 0x7C#define Base_Add 0x00/************** 引用的外部函数*********************/extern void I2C_Start(void);extern void I2C_Stop(void);extern void I2C_Write_ACK(void);extern void I2C_Senduchar( uchar Wr_Data );/************** 定义段式LCD的阿拉伯数字码*********************/const uchar Num_Code[] ={0xAF, // 00x06, // 10x6D, // 20x4F, // 30xC6, // 40xCB, // 50xEB, // 60x0E, // 70xEF, // 80xCF, // 90x10, //. 如果要显示小数点,必须要将此值与下一位值相加0x88 //: ,包括LCD上的两个":"};uchar Disp_Data[]={ 5,5,7,3,1,5 };/* 函数名:Segment_Display 功能:段式LCD数据包写入服务程序,负责将一串字符送到段式LCD 上去显示*/void Segment_Display( const uchar Addr,const uchar *P_Data, uchar Length ){uchar User_Addr = Addr;I2C_Start(); //启动BU9796I2C_Senduchar( BU9796_Addr ); //写BU9796的物理地址I2C_Write_ACK();I2C_Senduchar( Base_Add + User_Addr * 2 ); //发送起始地址,下一个紧跟的是数据I2C_Write_ACK();for( uchar i = Length ;i > 0;i-- ){if( *P_Data != 0x0A ) // 显存中是否有小数点?如果有,就将小数点码值与下一位码值相加{I2C_Senduchar( Num_Code[ *P_Data++ ] );}else{uchar Temp_Disp_Data = Num_Code[ *P_Data++ ];I2C_Senduchar( Temp_Disp_Data + Num_Code[ *P_Data++ ]);i--;}I2C_Write_ACK();}I2C_Stop(); //访问结束}/* 函数名:Init_BU9796FS 功能:初始化驱动芯片BU9796的相关参数*/void Init_BU9796FS( void ){I2C_Start(); //启动BU9796I2C_Senduchar( BU9796_Addr ); //写BU9796的物理地址I2C_Write_ACK(); //等待ackI2C_Senduchar( Write_Com + Set_Reset); //启动软复位I2C_Write_ACK(); //等待ackI2C_Senduchar( Write_Com + Blink_Mode2 );I2C_Write_ACK();I2C_Senduchar( Write_Com + Display_ON ); //开显示I2C_Write_ACK();I2C_Senduchar( Write_Data + Base_Add ); //发送起始地址,下一个紧跟的是数据I2C_Write_ACK();for( uchar i = 0;i<10;i++ ) //清LCD显示屏{I2C_Senduchar( 0x00 );I2C_Write_ACK();}I2C_Stop(); //访问结束}/* 函数名:Init_MCU 功能:初始化MSP430的相关参数*/void Init_MCU( void ){/* WDTCTL = WDTPW + WDTHOLD; */ // 关看门狗BCSCTL3 |= XT2S_2; // XT2频率范围设置BCSCTL1 &= ~XT2OFF; // 打开XT2振荡器do{IFG1 &= ~OFIFG; // 清振荡器失效标志BCSCTL3 &= ~XT2OF; // 清XT2失效标志for( uint i = 0x47FF; i > 0; i-- ); // 等待XT2频率稳定}while (IFG1 & OFIFG); // 外部时钟源正常起动了吗?BCSCTL2 |= SELM_2 + SELS ; // 设置MCLK、SMCLK为XT2P4OUT &= ~BIT4;P4DIR |= BIT4; // 打开LCD显示部分的电源//P8REN |= BIT3 + BIT4;P8DIR |= BIT3 + BIT4; // 配置MSP430与BU9796的数据数P8OUT |= BIT3 + BIT4;P5OUT &= ~BIT7; // 点亮外部LEDP5DIR |= BIT7;}/* 函数名:main 功能:系统入口主函数*/void main( void ){WDTCTL = WDTPW + WDTHOLD; // 停看门狗ADC12CTL0 = SHT0_2 + ADC12ON; // 设置采样时间,开ADC12,Vref = V ACC ADC12CTL1 = SHP; // 使用定时器采样ADC12MCTL0 = INCH_1; // 选用A1通道ADC12IE = 0x01; // 开ADC12MCTL0中断ADC12CTL0 |= ENC; // 启动转换ADC12MCTL0 = INCH_1;P5DIR |= BIT7; // P5.7输出-LED/*for (;;){ADC12CTL0 |= ADC12SC; // 软件启动转换_BIS_SR(CPUOFF + GIE); // LPM0模式,由ADC12中断唤醒}*//* 功能:将16进制转化为10进制*/int a,b;a=ADC12MEM0;Disp_Data[5]=a%10;b=a/10;Disp_Data[4]=b%10;a=b/10;Disp_Data[3]=a%10;b=a/10;Disp_Data[2]=b%10;a=b/10;Disp_Data[1]=a%10;b=a/10;Disp_Data[0]=b%10;Init_MCU();Init_BU9796FS();P5OUT |= BIT7;Segment_Display( 0,Disp_Data,6 );_BIS_SR( CPUOFF );}#pragma vector=ADC12_VECTOR__interrupt void ADC12_ISR (void){ _BIC_SR_IRQ(CPUOFF); }。