C 电脑语言栏怎么调出来,书上的,一边标出来a [3][4]=3.一边又

c语言 数组中选择最小的书,返回最小值的序号。数组a[8]={5,6,8,3,6,4,7,8};找出最小值3并返回x=3_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
c语言 数组中选择最小的书,返回最小值的序号。数组a[8]={5,6,8,3,6,4,7,8};找出最小值3并返回x=3
我有更好的答案
4, 7;= size - 1;num++) {
if (tmp & *(p_num + num)) {
tmp = *(p_num + num), num = 0, num1 = 0;
for (num = 0;num &lt, 6, 8, 8), a[min(a, 8)]); 16
return num1; 11
12 } 13 int main() { 14
int a[8] = {5; 15
printf(&最小值序号是%d, 3, 6,最小值是%d\n&quot, 8};, min(a1 #include&stdio.h&
2 int min(int *p_num, int size) {
int tmp = *p_num
采纳率:72%
i&8;i++)&&&&&&&&if(a[mini]&a[i])&mini=i;&&&&printf(&&&return&&0;&is&int&main(void){&nbsp,i;&&&&&nbsp,&&&&for(mini=i=0;&nbsp#include&&stdio.h&%d\n&&&The&MIN&&&&,a[mini]);&&&int&a[8]={5,6,8,3,6,4,7,8}
为您推荐:
其他类似问题
最小值的相关知识
换一换
回答问题,赢新手礼包(吉林土特产代购)
第三方登录:当前位置: >>
MSP430-TEST44X V3.0A C语言实验指导书
LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM目录第一章 简介.............................................................. 2 1.1 MSP430F449 简介.................................................. 2 1.1.1 特点........................................................ 2 1.1.2 结构框图.................................................... 2 1.1.3 引脚图 ..................................................... 3 1.1.4 学习板实物图................................................ 4 1.2 学习板硬件电路详解............................................... 4 1.2.1 MSP430F449 电源系统......................................... 5 1.2.2 LED 显示.................................................... 6 1.2.3 LCD 显示.................................................... 7 1.2.4 矩阵键盘、独立按键.......................................... 8 1.2.5 通讯电路................................................... 9 1.2.6 12 位 A/D................................................... 11 1.2.7 外部 FLASH DATE 扩展....................................... 12 1.2.8 串行 EEPOM................................................. 12 1.2.9 Timer_ A 捕获/比较模式..................................... 13 1.3 实验项目......................................................... 13 第二章 基础实验--汇编语言............................................... 14 实验一、I/O 端口操作................................................. 14 实验二、时钟模块操作................................................ 16 实验三、FLASH 读写操作............................................... 20 实验四、看门狗操作.................................................. 23 实验五、Timer_A 操作................................................. 27 实验六、Timer_B 操作................................................. 32 实验七、比较器操作.................................................. 34 实验八、基本定时器,LCD,LED 显示操作................................. 36 实验九、ADC12 操作................................................... 43 实验十、通讯操作.................................................... 49 实验十一、键盘操作.................................................. 56 实验十二、LCD 点阵操作............................................... 78 实验十三、扩展 DATA FLASH............................................ 91 实验十四、EEPROM 操作............................................... 101公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:81 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM第一章 简介1.1 MSP430F449 简介1.1.1 特点 ? 低工作电压:1.8~3.6V 超低功耗: 活动模式 待机模式 5 种节电模式。 从待机到唤醒的响应时间不超过 6?s。 ? ? ? ? ? ? ? ? ??280?A 1.1?A;@1MHz,2.2V; 0.1?A。掉电模式(RAM 数据保持)16 位精简指令结构(RISC) , 125ns 指令周期; 8 路、12 位 A/D 转换器带有内部参考源、采样保持、自动扫描特性; 带有 3 个或 7 个捕获/比较器的 16 位定时器:定时器 A 和定时器 B; 2 个串行通讯模块 USART0/1,可软件选择 UART/SPI 模式; 片内比较器配合其他器件可构成单斜边 A/D 转换器; 可编程电压监测器(SVS) ; 可在线串行编程,不需要外部编程电压; 驱动液晶能力可达 160 段; 可编程的保险熔丝可保护设计者代码; FLASH 存储器多达 60KB,RAM 多达 2KB。1.1.2 结构框图 MSP430F449 的结构框图如图 1.1公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:82 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM1.1.3 引脚图 MSP430F449 的封装形式为 100 引脚的 PLASTIC100-PIN QFP,其引脚图如图 1.2 所 示。图 1.2MSP430F449 引脚图注:其引脚功能表请参考 MSP430F449 技术手册。公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:83 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM1.1.4 学习板实物图图 1.3 MSP430F449 学习板实物图1.2 学习板硬件电路详解 本学习板以 MSP430F449 为核心,包括了其所有接口及其扩展模块。电路由以下几 部分组成: (100 个引脚全部引出) 1. MSP430F449 系统(32768Hz、4MHz、JTAG 接口、电源电路、复位电路) 。 2. LED 显示。 3. LCD 显示(段码、点阵) 。 4. 矩阵键盘、独立按键。 5. 外部通讯(232 接口、458 接口、M-BUS 接口、SPI 接 口 ) 。 6. 12 位 A/D 转换接口。 7. 外部 FLASH DATE AT45DB041 扩展。 8. 串行 EEPROM 24LC02。公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:84 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM9. Timer_A 比较/捕获模块。 10. 欠压检测---通过电位器调节 VCC,然后用比较器检测,用 LED 灯指示。 下面就具体电路作详细说明: 1.2.1 MSP430F449 电源系统 MSP430F449 系统包括 XT1、XT2 晶振,JTAG 接口,电源管理电路。其中,XT1 接 32.768KHz,XT2 接 4MHZ 晶振;电源管理电路原理图如图 1.4 所示。图 1.4 电源管理电路电源部分跳线连接以及说明: J1: 短接第一脚、第二脚:电池供电 短接第二脚、第三脚:外部电源供电供电 断开第一、二、三脚:JTAG 内部供电 J6: 短接第一脚、第二脚:外部电源供电供电 短接第二脚、第三脚:JTAG 供电 J7: 短接:接通 Vcc 给芯片供电公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:85 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM断开:断开 Vcc 与芯片连线 1.2.2 LED 显示 LED 显示电路位于 P 区,6 位 LED,共阴极,从左到右依次为 D5~D0,其中,D5 为最高位。其电路原理见图 1.5。图 1.5 LED 显示电路P3.0~P3.7 既为 LED 的显示段码输出,又为 LED 的位选输出,通过 F449 的 P4.1、 P4.2 口控制 74HC373 的 LE 端来选择来实现输出的有效数据。其工作方式为: 当 P4.1 为高电平,P3.0~P3.7 为 LED 的显示段码输出,依次对应 LED 的 a、f、b、 g、c、h、d、e。 当 P4.0 为高电平,P3.0~P3.5 为 LED 位选输出,依次对应 D5、D4、D3、D2、D1、 D0。刷新时间是 3.3mS 一位,20mS 刷新一遍,保证显示不会出现闪烁现象。公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:86 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM1.2.3 LCD 显示 LCD 显示分为段码 LCD(LSD048)显示与点阵 LCD(ZJM12864BSBD)显示。 1.2.3.1 LCD 段码显示模块 段码 LCD 显示器型号为 LSD048,7 位半,其全码显示为 1+8888888。采用 4MUX 方式,其 S0~S14、COM0~COM3 分别与 449 的 S0~S14、 COM0~COM3 相连,显示电路见 图 1.6。图 1.6 段码 LCD 显示电路由于 MSP430F449 内部集成了 LCD 显示驱动模块, 所以 LCD 的显示操作非常简单 , 只需在软件中设置相应的的控制寄存器,把显示代码送入相应的 LCD 缓存寄存器即 可。八段显示组合段码字节组合格式为 h、e、f、c、d、g、b、a,顺序为 D7-----D0。 显示代码 0 ――B7H; 5――3DH; 1――12H; 6――BDH; 2――8FH; 7――13H; 3――1FH; 8――BFH; 4――3AH; 9――3FH;LSD048(EVK-LCD)的具体资料(管脚排列和真值表)可参考光盘里的文档。 1.2.3.2 点阵 LCD 显示模块 点阵 LCD 模块型号为 ZJM12864BSBD,其接口电路原理见图 1.7。图 1.7公司地址:杭州市登云路 425 号利尔达大厦LCD 点阵显示电路Fax:8Tel:07 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM性能描述: ZJM12864BSBD 是一低功耗的点阵图形式 LCD 模块。其特点如下: 1)显示格式:128 点(列) × 64 点 ( 行 ) ; 2)显示类型:STN 黄绿模式、半反半透、6:00 视角、正向显示; 3)驱动方式:1/64 占空比; 4)易与 8 位的 MPU 相连; 5)多功能指令; 6)加电自动复位; 7)控制芯片:KS0107B、KS0108B; 8)EL 背光源: AC 110V、400HZ; 9)工作电压:+3.30V ? 0.5V。 注:目前现有的 ZJM12864BSBD 没有带背光,如果需要带背光可以定做。有关 ZJM12864BSBD 的详细资料,可参考随板光盘资料。1.2.4 矩阵键盘、独立按键 键盘接口采用复用模式,是将行矩阵键盘、独立按键以及比较器欠压检测电路集 成,共用一个端口。其原理见图 1.8。图 1.8 按键电路由原理图可知,键盘电路功能的选通与否是通过拨动开关的开关来实现的。 按键部分拨码开关连接以及说明: P_KEY: 拨动开关 P_KEY 的 P3、P4、P5 拨到 ON 的一端,此时,电路组成 4*3 行列式键盘,公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:88 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMP1.1~P1.7 分别为键盘的行线和列线。 拨动开关 P_KEY 的 P3、P4、P5 拨到数字的一端,电路组成为独立式按键,INC、 DEC、FUN 分别与 P1.3、P1.2、P1.1 连接,可以利用 449 端口的中断功能,判断键值 并执行相应的操作。 拨动开关 P_KEY 的 P2 拨到 ON 的一端,P1.6 作为比较器欠压检测电路的输入。 1.2.5 通讯电路本学习板集成了丰富的通讯模块,有常用的 232、SPI,还有工业总线 RS485,更 有当今的仪表总线规范 M-BUS。 1)RS232 通讯模块 RS232 通讯采用 SP3222E 芯片,结合 449 的 USART 通讯模块,可以与 PC 机轻松的 实现 232 通讯。SP3222E 的具体资料可参考随板光盘。 由图 1.9 可以看出,SP3222E 是一个双通道的 232 芯片。它的两个通道分别与 449 的硬件通讯串口 USART0 和 USART1 连接。例如可实现以下两种:图 1.9串口通讯电路公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:89 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM2) SPI 通讯模块 SPI 通讯模块采用 449 集成的 USART 通讯模块 SPI 方式,其接线图见 2.27 图 。 J_SPI1P4.5/UCL K1 4 P4.4/SOMI1 3 P4.3/SIMO1 2 P4.2/STE1 1图 1.10 SPI 接口电路SPI 通讯采用了 449 内部集成的通用串行通信模块,使用时将外部的 SPI 通讯 线路与 J-SPI 插座接通即可。关于 SPI 的具体内容可参考相关书籍。 3) RS485 通讯模块 RS485 通讯模块与 RS232 模块一样,采用 MAX3485 芯片,结合 449 集成的 USART 通讯模块。有关 MAX3485 芯片资料,可参考随板光盘。 4) M-BUS 通讯模块 M-BUS 是欧洲专为家用仪表数据传输而设计的总线结构。相比 RS485,M-BUS 以 其安装方便和独特的远传供电而更显优势。M-BUS 有以下主要特点: a) 用简单的双绞线电缆,极性无关,拓扑结构无关; b) 实现异步通讯,300 至 9600 c) 半双工协议; d) 数据能可靠远传; e) 从机远传供电。 在学习板上,我们为您集成了 TI 的 M-BUS 芯片 TSS721。从电路原理图可以看 出,TSS721 的 RX、TX 经过光耦隔离分别与 449 的 USART0 模块的 P2.4,P2.5 相连,而 BUSL1、BUSL2 则与总线相连,采用总线供电模式,也可 VDD 供电。有关 TSS721 的具 体资料,可参考随板光盘。 通信部分拨码开关连接以及说明: J_USART: USART0 与 PC 机的 232 通讯:将 J_usart 的 P2、P5 拨到 ON 侧,其余的拨到数字侧。 USART0 与 PC 机的 485 通讯:将 J_usart 的 P1、P4 拨到 ON 侧,其余的拨到数字侧。 USART0 与 PC 机的 MBUS 通讯:将 J_usart 的 P3、P6 拨到 ON 侧,其余的拨到数字 侧。公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:810 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM1.2.6 12 位 A/D 本学习板引出了 A/D 模块的全部引脚,如图 1.11 所示。图 1.11 ADC12 扩展图中为 AD 转换时地线的处理,使用时只需将需要的信号接入即可。关于 ADC 转换 的抗干扰, 电阻匹配, 采样保持时间的等的知识可以参考光盘里的&&MSP430F4XX USER’ S GUIDE&&,ADC12 部分。 1.2.7 外部 FLASH DATE 扩展 MSP430F449 带有 60KB 的 FLASH 存储空间, 但考虑到外部扩展方便, 又集成了 FLASH DATE 扩展接口,采用了 AT45DB041 芯片。电路原理见图 1.12 所示。图 1.12 FLASH 扩展公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:811 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMAT45DB041 是 ATMEL 公司推出的 FLASH DATA 存储芯片, 4M BYTE ,采用 SPI 模式。 主要引脚定义如下: CS:片选 SO:Serial 输出 SCK:Serial 时钟 WP:写保护 SI:Serial 输入 RESET:resetAT45DB01 提供了多种操作方式,其详细资料可参考随板的光盘资料。 1.2.8 串行 EEPOM 本学习板还集成了 Microchip 公司的 EEPROM 芯片 24LC02,电路原理如图 1.13 所 示 :图 1.13 串行 EEPOM 电路24LC02 必须遵循 I2C 总线协议,才能对其正确操作。I2C 协议规定如下: 只有在总线空闲时,才允许启动数据传送; 在数据传送过程中, 当时钟线为高电平时, 数据位必须在数据线上保持稳定状态 , 不允许有跳变,数据线的任何电平变化将被看作是总线的启动或停止信号。 24LC02 的详细资料可参考随板的光盘资料。 1.2.9 Time_ A 捕获/比较模式VCC . R29 D4 100K IN4148 R30 . . 1K P2.1公司地址:杭州市登云路 425 号利尔达大厦.Single inD5 IN4148 . 图 1.14 捕获电路Tel:0Fax:812 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM1.3 实验项目 为了便于您更好的了解和掌握 MSP430FLASH 系列单片机的特点、使用方法,更快、 更好的投入开发,随书的光盘里提供了大量的文档和可被调用的软件包。为了满足不 同版本的编译器实验,光盘里附有 IAR 3.41A 的程序,只要您按操作说明建立工程文 件,加载相应的软件就可以开始实验。既有基础的 DEMO 实验,更有复杂、精彩的综合 实验。 另外公司网站上还提供了丰富的例程, 可以通过
下载,供学习 、 开发参考。实验项目安排如下: (1) 端口操作实验; (2) 时钟操作实验 (3) FLASH 读写实验 (4) 看门狗操作实验 (5) Timer_A 操作 (6) Timer_B 操作 (7) 比较器操作实验 (8) 基本定时器,LCD,LED 显示操作 (9) ADC12 操作 (10) 通讯操作 (11) 键盘实验 (12) 点阵 LCD 操作实验 (13) AT45DB041 读写实验 (14) EEPRAM 读写实验 在随板光盘中,我们为您加入了所有使用到的程序,现将程序命名方式规定如下: (1)*.S43 IAR 汇编程序文件: (2)*.C IAR C 语言程序文件:公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:813 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM第二章 基础实验--C 语言用 C 语言程序设计来实现嵌入式系统的系统软件和应用软件开发,可以大大提高 开发调试工作的效率;同时,产生的文档资料也容易理解,便于移植。适用于 MSP430 的 C 语言,与标准的 C 语言兼容程度高,开发调试的集成环境和人机界面良好。IAR 公司为 MSP430 提供的集成调试环境 Embedded Workbench 和 C 语言调试器 C-SPY,可 以参考胡大可的《MSP430 系列单片机 C 语言程序设计与开发》 。I/O 端口操作 实验一、I/O 实验一、实验名称 I/O 断口操作 实验目的 学会操作 449 的一般端口,了解端口寄存器的组成。 实验内容 本实验采用软件来触发 P5.1 口,并使 LED 指示灯闪烁。可以通过 LED 指示灯来观 测 P5.1 的输出是否变化(P5.1OUT=0,LED 灭,反之 LED 亮);还可以通过 IAR Embedded Workbench 中的寄存器窗口中的 I/O 子块来观测 P5.1 是否发生改变。 实验操作及程序 1、要求:连接 LED 短接器。图 2.1 实验连接图2、流程图:公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:814 LSD SCIENCE & TECHNOLOGY CO., LTD.开 始利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM关看门狗 设 置 P5.1口P5.1输 出 取 反延 时图 2.2 实验流程图3、程序:光盘资料/Source Code/C/LAB1/LAB1.eww #include { WDTCTL = WDTPW + WDTHOLD; P5DIR |= BIT1; for (;;) { P5OUT ^=BIT1; i = 50000; do (i--); while (i != 0); } } 实验思考 将 P1SEL 的 BIT0 设置成 1 或将 P1DIR 的 BIT0 设置成 0,结果怎样? // P5.1 输出取反 // 延时 // 停止看门狗定时器 // 将 P5.1 设为输出 &msp430x44x.h& void main(void)公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:815 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM实验二、时钟模块操作实验名称 1、使用外接高速晶体(450K―8M) 2、不使用 DCO+锁频环 3、使用 DCO+锁频环 实验目的 学习 449 时钟系统的操作, 了解 2274 的 XTAL1、VLO、DCO 时钟源模块和 MCLK、SMCLK、 ACLK 时钟的关系。并熟练掌握各个时钟的设置,包括时钟源的选择及频率的设置。 实验内容 以 449 中使用外置高速晶体(450K―8M) ,是否使用 DCO+锁频环三个方面来实验 实验操作及程序 1,使用外接高速晶体(450K―8M) 1、实验连接:图 2.3 实验连接图2、流程图:公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:816 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM开 始关 看 门 狗 设 置 负 载 电 容开 启 高 频 晶 振延 时N高 频 晶 振 起 振 否 ?Y输 出 时 钟 信 号死 循 环图 2.4 实验流程图3、程序:MSP430-TEST44X V2.0B\Source Code\C\LAB2\src #include &msp430x44x.h& void main(void) { WDTCTL = WDTPW + WDTHOLD; FLL_CTL0 = XCAP18PF; FLL_CTL1 = FLL_CTL1 & ~XT2OFF; do { FLL_CTL0 = FLL_CTL0 & ~XT2OF; for (i = 50000; i--); } while (FLL_CTL0 & XT2OF);公司地址:杭州市登云路 425 号利尔达大厦// 停止看门狗定时器 // 设置负载电容 // 开启 XT2// 循环直到标志位清零 // 清高频模式下振荡失效标志位 // 延时等待 // 检测高频晶振标志位Tel:0 Fax:817 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMFLL_CTL1 = SELS; P1DIR = 0x32; P1SEL = 0x32; while(1); }// SMCLK = XT2CLK // P1.1, P1.4 & P1.5 为输出 // P1.1, P1.4 & P1.5 为外围模块使用 // MCLK, SMCLK & ACLK //2,不使用 DCO+锁频环 1、实验连接:图 2.5 实验连接图2、程序:MSP430-TEST44X V2.0B\Source Code\C\LAB2\src #include &msp430x44x.h& void main(void) { WDTCTL = WDTPW + WDTHOLD; SCFI0 |= FN_2; FLL_CTL0 = XCAP18PF; SCFQCTL = 74; P1DIR = 0x22; P1SEL = 0x22; while(1); } // 停止看门狗定时器 // // 设置负载电容 // (74+1) x 32768 = 2.45Mhz // P1.1 & P1.5 为输出 // P1.1 & P1.5 分别输出 MCLK & ACLK公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:818 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM3,使用 DCO+锁频环 1、实验连接:图 2.6 实验连接图2、程序:MSP430-TEST44X V2.0B\Source Code\C\LAB2\src // ACLK = LFXT1 = 32768, MCLK = SMCLK = DCOCLK = (n+1) x 2 x ACLK #include &msp430x44x.h& void main(void) { WDTCTL = WDTPW + WDTHOLD; SCFI0 |= FN_4; SCFQCTL = 121; FLL_CTL0 = DCOPLUS + XCAP18PF; P1DIR = 0x22; P1SEL = 0x22; while(1); } // 停止看门狗定时器 // x2 DCO 频率, DCO 通常 8MHz // (121+1) x 32768 x 2 = 7.99 Mhz // // 设置 P1.1 & P1.5 输出模式 // P1.1 & P1.5 t 分别输出 MCLK & ACLK //公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:819 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM实验三、FLASH 读写操作实验名称 FLASH 读写超作 实验目的 了解 449FLASH 模块的结构及其空间分配。掌握 FLASH 擦写的基本操作。需要注意 的地方是信息段 A 中存有系统时钟数据,请勿擦除。还要注意 FLASH 操作对 VCC 电压 及编程频率有严格的要求,可参考 DATA SHEET。 实验内容 1、449 FLASH 结构图:图 2.7 图FLASH 结构MSP430 FLASH 系列都集成了大小不等的 FLASH 存储器,结构见图 3.3。根据不 同的要求可以存放程序,也可以存放数据,有 10 万次的擦写。 2、本实验将复制段 A 到段 B,地址从 00H 到 FFH。实验操作及程序: 1、实验连接图:公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:820 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM图 2.8 实验连接图2、流程图:开 始初 始 化 设 置段 擦 除 段 A 写 段 A 加 锁段 擦 除 段 B 将 A 段 内 容 复 制 到 B段 加 锁 结 束图 2.9 实验流程图3、程序:MSP430-TEST44X V2.0B\Source Code\C\LAB3\src #include char void void { WDTCTL = WDTPW + WDTHOLD; FCTL2 = FWKEY + FSSEL0 + FN0; value = 0; // 停止看门狗定时器 // 定义 FLASH 时序发生器输入时钟 // 将要写入的数据为 0 &msp430x44x.h& // 将写入信息段 A 中的 8 位数据 // 函数声明 // 函数声明 write_SegA (char value); copy_A2B (void);void main(void)公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:821 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMwhile(1) { write_SegA(value++); copy_A2B(); } } void write_SegA (char value) { char *Flash_ Flash_ptr = (char *) 0x1080; FCTL1 = FWKEY + ERASE; FCTL3 = FWKEY; *Flash_ptr = 0; FCTL1 = FWKEY + WRT; for (i=0; i&128; i++) { *Flash_ptr++ = } FCTL1 = FWKEY; FCTL3 = FWKEY + LOCK; } void copy_A2B (void) { char *Flash_ptrA; char *Flash_ptrB; Flash_ptrA = (char *) 0x1080; Flash_ptrB = (char *) 0x1000; FCTL1 = FWKEY + ERASE; FCTL3 = FWKEY; *Flash_ptrB = 0; FCTL1 = FWKEY + WRT;公司地址:杭州市登云路 425 号利尔达大厦// // 写段 A // 拷贝段 A 到段 B// 初始化指针 // 使能擦除操作 // FLASH 解锁 // 空写,启动擦除// 循环写 FLASH 128 字节// 写完后锁定// 定义段 A 指针 // 定义段 B 指针 // 初始化段 A 指针 // 初始化段 B 指针 // 擦除允许 // 解锁 // 空写以启动擦除段 B // 允许写Tel:0 Fax:822 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMfor (i=0; i&128; i++) { *Flash_ptrB++ = *Flash_ptrA++; // 读出段 A 的数据写到段 B } FCTL1 = FWKEY; FCTL3 = FWKEY + LOCK; } //写完锁定实验四、看门狗操作实验名称 1、看门狗使程序自动复位 2、程序对 WDT 计数溢出的控制 3、WDT 的定时器功能 实验目的 1、了解看门狗定时器的组成、特点、功能; 2、掌握看门狗定时器的两种工作方式:看门狗模式与定时器模式; 3、掌握看门狗定时器的读写; 4、掌握看门狗定时器的中断功能; 5、掌握 WDT 寄存器的操作; 实验内容 1、定时模式:将 WDT 设置成定时模式产生定时钟断,从而来控制 P1.0 的输出使 LED 周期亮灭。 2、看门狗模式:将 WDT 设置成看门狗模式(WDTTMSEL=0) 。在看门狗模式下,当看 门狗定时期溢出时,将会产生复位 实验操作及程序公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:823 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM1,看门狗使程序自动复位 1、实验连接:图 2.10 实验连接图2、流程图:开 始关看门狗 设 置 P5.1延 时延 时开看门狗P5.1 输 出 高死循环图 2.11 实验流程图3、程序:MSP430-TEST44X V2.0B\Source Code\C\LAB4\src #include { WDTCTL=WDTPW+WDTHOLD; P5DIR |= BIT1; P5OUT &=~ BIT1; for (i=0;i&60000;i++) P5OUT |= BIT1; for (i=0;i&60000;i++)公司地址:杭州市登云路 425 号利尔达大厦&msp430x44x.h&void main (void )// 停止看门狗 // P5.1 为输出 // P5.1 为低 // 延时 // P5.1 为高 // 延时Tel:0 Fax:824 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMWDTCTL=WDTPW; while (1); }// 启动看门狗2,程序对 WDT 计数溢出的控制 1、实验连接:图 2.12 实验连接图2、程序:MSP430-TEST44X V2.0B\Source Code\C\LAB4\src #include { WDTCTL=WDTPW+WDTHOLD; P5DIR |= BIT1; P5OUT &=~ BIT1; for (i=0;i&60000;i++) P5OUT |= BIT1; for (i=0;i&60000;i++) WDTCTL=WDTPW; while (1); { WDTCTL=WDTPW+WDTCNTCL; } } //计数器清零 //0&=i&=65535 //停止看门狗 //P5.1 为输出 //P5.1 为低 //延时 //P5.1 为高 //延时 //启动看门狗 &msp430x44x.h& void main (void )公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:825 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM3,WDT 的定时器功能 1、实验连接:图 2.13 实验连接图2、流程图:开 始 看门狗定时中断 服 务设置看门狗定 时0.2 5 SP5.1输 出 取 反 开启中断进入低功耗模 式图 2.14 实验流程图返 回3、程序:MSP430-TEST44X V2.0B\Source Code\C\LAB4\src #include { WDTCTL = WDT_ADLY_250; IE1 |= WDTIE; P1DIR |= 0x01; _EINT(); for (;;) { _BIS_SR(LPM3_bits); _NOP();公司地址:杭州市登云路 425 号利尔达大厦&msp430x44x.h&void main(void) // 设置看门狗定时时间为 0.25s // WDT 使能 // 设置 P1.0 为输出 // 中断允许// 进入 LPM3 // 验证,可用 C-SPY 观察Tel:0 Fax:826 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM} } #pragma vector = WDT_VECTOR] __interrupt void watchdog_timer(void) { P5OUT ^= 0x01; } // P5.1 输出取反实验五、Timer_A 操作实验名称: 1、定时器 A 比较模式 2、定时器 A 捕获模式 3、定时器 A 为 PWM 输出 实验目的: 1、了解 Timer_a 的结构、功能、特点; 2、掌握 Timer_a 的时钟源选择,定时器模式选择,10 个捕获/比较模块的使用操作 , 输出单元的 8 种模式输出选择,PWM 波形的产生方法; 3、掌握 Timer_a 的寄存器的操作; 4、掌握 Timer_a 的中断功能,中断控制; 5、能组合的使用 Time_A 的各个模块 实验内容: 1、定时器 A 比较模式:此程序将 Timer_A 设置为连续计数模式,用 CCR0 作比较定 时,定时时间为 50000 个 SMCLK 周期,以中断方式来翻转 P5.1 以控制 LED 灯。 2、定时器 A 捕获模式:此程序将 Timer_A 设轩为连续计数模式,用 CCR2 来捕获 ACLK,CCR2 两次捕获次信号,两次差值即为此信号一个周期内的 SMCLK 的周期数。打 开寄存器窗口, 设置断点来观察 R7 值。 并通过计算核对所捕获的值与理论值是否一致 。 3、定时器 A 为 PWM 输出:此程序将 Timer_A 设置为增计数模式,时钟源为 SMCLK=32768*32,输出模式设置为 OUTMOD_7 (Rset/Set)CCR0=512,CCR1=384,CCR2=128, 占空比分别为 75%(P1.2)和 25%(p2.0)的两路 PWM 输出公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:827 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM实验操作及程序: 1,定时器 A 比较模式 (1)实验连接图:光盘资料/Source Code/C/LAB5/LAB5.eww图 2.15 实验连接图(2)流程图:开 始T A 中断服务 停止看门狗 P5.1输 出 取 反 C C R 0+ = 5 0 0 0 0设 置 TA 开启中断 连续计数模式返 回 进入低功耗模 式图 2.16 实验流程图(3)程序:MSP430-TEST44X V2.0B\Source Code\C\LAB5\src #include &msp430x44x.h& void main(void) { WDTCTL = WDTPW + WDTHOLD; TACTL = TASSEL1 + TACLR; CCTL0 = CCIE; CCR0 = 50000; P5DIR |= 0x02; TACTL |= MC1; // P5.1 输出 // 开启 Timer_A ,连续模式 // 停止 WDT // SMCLK,清 TAR // CCR0 中断使能公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:828 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM_EINT(); for (;;) { _BIS_SR(CPUOFF); _NOP(); } } #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { P5OUT ^= 0x02; CCR0 += 50000; }// 开启 CPU 中断// CPU 关闭 //// 反转 P5.1 // 增加 CCR02,定时器 A 捕获模式 (1)流程图:光盘资料/Source Code/C/LAB5/LAB5.eww定 时 器 A捕 获 实 验 流 程 图 开 始NC C IF G = 1 ?Y初 始 化 设 置 C C R 2 值 存 入 fi rs t _ v a l u e , 清 除 捕 获 标 志等 待 晶 振 起 振 C C IF G = 1 ?YNC C R 2 值 存 入 s e c o n d _ v a l u e ,清 除 捕 获 标 志 C C R2捕 获 内 部 A C LK关 T im e r _A启 动 T IM E R 1 连 续 计 数 模 式C z p _ v a l u e = s e c o n d _ v a l u e -fi rs t _ v a l u e结 束图 2.17 实验流程图(2)程序:MSP430-TEST44X V2.0B\Source Code\C\LAB5\src #include &msp430x44x.h& volatile unsigned int cap_公司地址:杭州市登云路 425 号利尔达大厦 Tel:0//存两次捕值之差Fax:829 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMint main( void ) { volatile unsigned int first_value,second_value,n; WDTCTL=WDTPW+WDTHOLD; do { IFG1 &=~OFIFG; for(n=5000;n&0;n--); } while(OFIFG&IFG1); TACCTL2=CM1+CCIS_1+CAP; ACLK TACTL=TASSEL_2+MC_2+TACLR; 数,清 TAR TACCTL2 &=~CCIFG; while(!(CCIFG&TACCTL2)); first_value=TACCR2; TACCTL2 &=~CCIFG; while(!(CCIFG&TACCTL2)); second_value=TACCR2; TACCTL2 &=~CCIFG; TACCTL2 &=~MC1; cap_value=(second_value-first_value); return 0; } 3,定时器 A 为 PWM 输出 (1)实验连接: //清 CCR2 的标志位 //查 CCR2 标志位 //第一个捕获值存入 first_value //清 CCR2 的标志位 //查 CCR2 标志位 //第二个捕获值存入 second_value //清 CCR2 的标志位 //关定时器 A //定时器时钟源为 SMCLK,启动连续计 //捕获模式,捕获上升沿,捕获内部 //关看门狗 //等待晶振稳定图 2.18 实验连接图公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:830 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM(2)流程图:开 始停 止 看 门 狗设 置 T A 捕 获 /比 较 寄 存 器 设 置 增 计 数 模 式设 置 对 应 引 脚 输 出进 入 低 功 耗 模 式图 2.19 实验流程图(3)程序:MSP430-TEST44X V2.0B\Source Code\C\LAB5\src //************************************************************************ // // // // // MSP430TEST44X Demo - Timer_A PWM TA1-2 upmode, DCO SMCLK 程序功能:该程序是用 F449 的内部 TIMER_A 的 CCR0、CCR1 和 CCR2 的比较模式 功能 来实现周期是 488uS,占空比分别为 75%(P1.2)和 25%(p2.0)的两路 PWM 输出。 硬件连接:先连接 P5.1 口的短接器,然后连接键盘上方的短接器 J2。//************************************************************************ #include &msp430x44x.h& void main(void) { WDTCTL = WDTPW +WDTHOLD; FLL_CTL0 |= XCAP14PF; TACTL = TASSEL1 + TACLR; CCR0 = 512-1; CCTL1 = OUTMOD_7; CCR1 = 384; CCTL2 = OUTMOD_7;公司地址:杭州市登云路 425 号利尔达大厦// 停止 WDT // 设置负载电容 // SMCLK, 清 Tar // // CCR1 // CCR1 PWM 周期 // CCR2 设置Tel:0 Fax:831 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMCCR2 = 128; P1DIR |= 0x04; P1SEL |= 0x04; P2DIR |= 0x01; P2SEL |= 0x01; TACTL |= MC0; for (;;) { _BIS_SR(CPUOFF); _NOP(); } }// CCR2 PWM 周期 // P1.2 输出 // P1.2 TA1 功能 // P2.0 输出 // P2.0 TA2 功能 // 开始 Timer_A 增计数模式// 进入 LPM0实验六、Timer_B 操作Timer_B 在结构上虽然比 Timer_A 复杂,功能有所增加,但是他的操作与 Timer_A 基本相同。在使用中要注意两点。 1、Timer_B 没有 SCCI 位的功能,所以不适合在软件串口通讯中作 RX,但可做 TX; 2、Timer_B 的计数长度为 8,10,12,16 位。 所以,Timer_A 的程序在 Timer_B 上基本上都能运行,两者的移植只是在对寄存器初 始化是不一样。 以下为一个与 Timer_A 对比的例子。 Timer_A 使 P5.1 闪烁程序 #include &msp430x44x.h& void main(void) { WDTCTL = WDTPW + WDTHOLD; TACTL = TASSEL1 + TACLR; CCTL0 = CCIE; CCR0 = 50000; P5DIR |= 0x02; TACTL |= MC1;公司地址:杭州市登云路 425 号利尔达大厦// 停止看门狗定时器 // SMCLK, 清 TAR // CCR0 中断使能 // P5.1 输出 // 定时器 A 工作在上升模式Tel:0 Fax:832 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM_EINT(); for (;;) { _BIS_SR(CPUOFF); _NOP(); } } #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void){ { P5OUT ^= 0x02; CCR0 += 50000; } Timer_B 使 P5.1 闪烁程序 实验程序:// 使能中断// 关 CPU // 验证,可用 C-SPY 观察// P5.1 输出取反 // 在连续模式中加上定时值光盘资料/Source Code/C/LAB6/LAB6.eww #include &msp430x44x.h& void main(void) { WDTCTL = WDTPW + WDTHOLD; TBCTL = TBSSEL1 + TBCLR; TBCCTL0 = CCIE; TBCCR0 = 50000; P5DIR |= 0x02; TBCTL |= MC1; _EINT(); for (;;) { _BIS_SR(CPUOFF); _NOP(); } } // 关 CPU // 验证,可用 C-SPY 观察 // P5.1 定义为输出 // 设置定时器 A 为连续增计数模式 // 总中断使能 // 停止看门狗定时器 // SMCLK, 清 TAR // CCR0 中断使能公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:833 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM#pragma vector=TIMERB0_VECTOR __interrupt void Timer_B (void) { P5OUT ^= 0x02; TBCCR0 += 50000; } 由上面的对比可以知道,在 16 位计数状态时,两者的程序几乎是一样的。如果是 想使用 Timer_B 的 8,10,12 位的计数功能,只需在 TBCTL 中设置相应的控制位,使用 时与 16 位一样。您可以自己写个程序测试,这里就不再重复了。 // P5.1 输出取反 // 在连续模式中加上定时值实验七、比较器操作实验名称 比较器的操作 实验目的 (1)了解 OA 的工作原理; (2)了解 OA 的结构、特点、功能,会用软件独立配置; 实验内容 比较器:此实验 OA0 工作在模式 3(comparator),P1.6 为正端输入(0~Vcc),将 输入电压的地接到芯片的 AVss, 用 OAFBR 来选择反向端参考电压, 将直流电源接入 P1.6 调节电压值,观参输出端的变化。 实验操作及程序 (1)实验连接:图 2.20 实验连接图公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:834 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM(2)流程图:比 较 器 实 验 流 程 图 开 始初 始 化 设 置比 较 器 设 置 , 反 相 输 入 0 . 2 5 V c c , 正 相 由 P 1 .6 输 入正 相 输 入 电 压 大 于 反 相?NYP 5 .1 输 出 高P 5.1输 出 低图 2.21 实验流程图(3)程序: MSP430-TEST44X V2.0B\Source Code\C\LAB7\src#include &msp430x44x.h& void main (void) { WDTCTL = WDTPW + WDTHOLD; P5DIR |= BIT1; CACTL1 = CARSEL + CAREF0 + CAON; CACTL2 = P2CA0; while (1) { if ((CAOUT & CACTL2) == CAOUT) P1OUT |= BIT1; else P5OUT &= ~BIT1; } } // 复位 // 如果 CAOUT 置位, 就置位 P5.1 // 停止看门狗定时器 // P5.1 定义为输出 // 0.25 Vcc = -comp, on // P1.6 = +comp // 检测比较器 A 输出公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:835 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM实验八、基本定时器,LCD、LED 显示操作实验(一) LED 简介 本学习板使用了超高亮 E30361-L0(共阴红)LED, LED 的管脚结构图下图。. H 11 10 a 9 f 8 M 7 L 6 . b.1 e2 d3 dp图 2.22 图4 . c5 gLEDLED 的管脚结构由图可知,a、b、c、d、e、f、g、dp 为 LED 的显示段码引脚,H、M、L 为 3 位 LED 的位选引脚,低电平有效,依次对应 D2、D1、D0(从左到右为 D0~D2) 。学 习板的硬件 LED 电路原理见下图。.LED1 1 2 3 4 5 6 7 8 14 13 12 11 10 . 9U519 16 15 12 9 6 5 2 8Q 7Q 6Q 5Q 4Q 3Q 2Q 1Q 8D 7D 6D 5D 4D 3D 2D 1D LE OE 18 17 14 13 8 7 4 3 11 1 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 P4.1 .SNJ74AHC373J (20)U719 16 15 12 9 6 5 2 8Q 7Q 6Q 5Q 4Q 3Q 2Q 1Q 8D 7D 6D 5D 4D 3D 2D 1D LE OE 18 17 14 13 8 7 4 3 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.011 P4.0 1图 2.23 图.SNJ74AHC373J (20)LED 的电路原理公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:836 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM从图可知,学习板的 LED 显示由 2 个 E30361-L0,通过 74HC373 的锁存,用 P3.0~P3.7 分别来控制 LED 的显示段码与位选。 1、显示代码的输出 P3.0~P3.7 分别对应 LED 的 e、d、dp、c、g、b、f、a。当 P4.1 为高时,U5 选 通,P3 口的数据经过 U5 输出到 LED。当 P4.1 为低电平时,U5 的处于数据锁存状 态。此时不管 P3 口如何变化,1Q~8Q 数据保持不变。 2、位选的输出 P3.0~P3.5 为 LED 的位选信号,分别对应 D0~D5,其工作原理与显示代码的输出 一样,下面就以要在 D4 显示 5 为例,来说明 LED 是如何工作的。 1) P4.1 为高; 2) 输出 5 的显示代码 3DH; 3) P4.1 为低; 4) P4.0 为高; 5) 输出 D5 的位选信号 20H; 6) P4.0 为低。 下面给出 LED 的显示代码: (0~9) 0――7BH; 5――3DH; 1――12H; 6――7DH; 2――4FH; 7――1BH; 3――7FH; 8――7FH; 4――36H 9――3FH(二)实验操作 实验目的 学会使用 LED,LCD 的显示模块。 实验内容 用基本定时器产生时钟,并将时钟由 LED,LCD 显示出来。数据格式为字节 BCD 码,一个字节存放 2 个,低 4 位为显示的低位数据,高 4 位为显示的高位数 据。显示格式为 XX.XX.XX。依次为小时、分、秒。 实验操作及程序 (1) 实验连接: 1)短接器 JP3 和 F449 连接的短接器全部短接。 2)DIP 拨动开关 P1 的 P3、P4 拨到 ON 的一端。公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:837 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM图 2.24 实验连接图(2) 流程图:开 始时 钟 处 理 L E D一 位 显 示 程 序初 始 化 设 置S e c+ + 发 送 显 示 值 给373 锁 存B T 0 . 5S 中 断 设 置 L C D初 始 化 设 置 L E D初 始 化 设 置Y S e c& 1 2 0 ?N Sec=0 M in + +发 送 显 示 位 值 另 一 片 373 锁 存LCD , LED 清 屏Y M in & 6 0 ?进 入 低 功 耗 模 式NM in = 0 H our + +B T 0 .5 S 中 断 服 务 T A 中 断 服 务Y H our & 2 4 N刷 新 一 位 L E D显 示 位时 钟 处 理 LCD 显 示返 回 H our = 0返 回返 回图 2.25 实验流程图(3)程序:MSP430-TEST44X V2.0B\Source Code\C\LAB8\src #include &msp430x44x.h & //---------------------------------------------------------------------------------------------------公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:838 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM// 该程序是用 F449 驱动 LCD 显示 LSD 048 和 74HC373 驱动 LED 显示时钟。 // // // // // 1、程序功能:该程序是用 F449 的 LCD 内部显示功能,来控制 LCD 显示实时时 钟没,另外,也控制 LED 显示。 2、硬件连接:必须连接所有短接器,同时,必须将拨动开关 P1 的 P3 和 P4 拨到 ON 的位置。 3、显示数据:实时时钟 unsigned char led_disp_bit=0x40; unsigned char lcd_table[12]={ //*&0&*// //*&1&*// //*&2&*// //*&3&*// //*&4&*// //*&5&*// //*&6&*// //*&7&*// //*&8&*// //*&9&*// //*&no&*// //*&no&*// unsigned char led_table[12]={ //*&0&*// //*&1&*// //*&2&*// //*&3&*// //*&4&*// //*&5&*//Tel:0 Fax:8//-----------------------------------------------------------------------static static static static static static const 0x7b, 0x12, 0x4f, 0x1f, 0x36, 0x3d, 0x7d, 0x13, 0x7f, 0x3f, 0x00, 0x00, }; const 0xd7, 0x14, 0xcd, 0x5d, 0x1e, 0x5b, // 秒寄存器 // 分寄存器 // 小时寄存器 // LED 显示位寄存器// LCD 显示代码表// LED 显示代码 LED公司地址:杭州市登云路 425 号利尔达大厦39 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM0xdb, 0x15, 0xdf, 0x5f, 0x00, 0x00, };//*&6&*// //*&7&*// //*&8&*// //*&9&*// //*&no&*// //*&no&*// // 时钟处理程序 // LCD 显示程序 i,unsigned char j); // LED 显示程序void rtc(void); void display_rtc(void); void display_dec(unsigned char void main(void) { pp = 0x60; tt =(pp%10+0x20); WDTCTL = WDTPW + WDTHOLD; BTCTL=BTSSEL+BT_ADLY_500+BTFRFQ1; IE2|=BTIE; P5SEL=0 LCDCTL=LCDON+LCD4MUX+LCDP2; P3DIR=0 P4DIR=0x03; P3OUT=0x00; P4OUT|=0x02; P4OUT&=~0x02; P3OUT=0 P4OUT|=0x01; P4OUT&=~0x01; TACTL=TASSEL0+TACLR; CCTL0=CCIE; CCR0=100; TACTL|=MC0; for (i=0; i&8; ++i)公司地址:杭州市登云路 425 号利尔达大厦 Tel:0void led_display(unsigned char i);// BT 0.5S 中断 // 使能 BT 中断 // lcd 设置 // LCD 模块初始化 // 端口 3 初始化// LCD 清屏Fax:840 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMLCDMEM[i] = 0x00; _EINT(); for(;;) { _BIS_SR(LPM3_bits); _NOP(); } } #pragma vector=BASICTIMER_VECTOR __interrupt void basic_timer (void) { rtc(); display_rtc(); } #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { led_disp_bit=led_disp_bit&0x01?led_disp_bit&&1:0x40; switch(led_disp_bit) { case 1:led_display(led_table[hour/10]); case 2:led_display(led_table[hour%10]+0x20); case 4:led_display(led_table[min/10]); case 8:led_display(led_table[min%10]+0x20); case 16:led_display(led_table[(sec&&1)/10]); case 32:led_display(led_table[(sec&&1)%10]); } } void { if (++sec & 120) sec = 0;公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:8//允许中断// 进入低功耗模式 3// 时钟处理 // 时钟 LCD 显示// LED 显示处理// 0X20 是小数点rtc (void)// 0.5 秒中断一次。41 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMif (++min & 60) min = 0; if (++hour & 24) hour = 0; } void display_rtc(void) { i= i=i&&1; display_dec(0,i); i= display_dec(2,i); i= display_dec(4,i); LCDMEM[6]=0x00; } void display_dec(unsigned char { LCDMEM[i]=lcd_table[j%10]+0x80; LCDMEM[i+1]=lcd_table[j/10]; } void led_display(unsigned char i) { P3OUT=i; P4OUT=0x02; P4OUT&=~0x02; P3OUT=~led_disp_ P4OUT=0x01; P4OUT&=~0x01; P3OUT=0x00; }公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:8// 显示秒// 显示分 // 显示时i,unsigned charj) // 0X80 是小数点// 发送 LED 段 // 使能 段码 373 /CE // 发送 LED 位 // 使能 位选 373 /CE42 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM实验九、ADC12 操作实验名称: (1)ADC12.测量单通道单次模式 (2)序列通道多次转 (3)利用内置温度二极管测温 实验目的: (1)了解 ADC12 的工作原理; (2)了解 ADC12 结构、特点、功能,会用软件独立配置; (3)了解 ADC12 的转换控制,中断控制,存储控制寄存器等,会熟练的操作这些寄 存器; 实验内容: ADC12.测量单通道单次模式,序列通道多次转,利用内置温度二极管测温 电路见原理图图 2.26 实验电路图实验操作及程序 1,ADC12.测量单通道单次模式 (1)实验连接:图 2.27 实验连接图公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:843 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM(2)流程图:开 始 中断服务程序系统初始化取出转换结果 清楚中断标志A D C设 置退出低功耗模式开始转换 进入低功耗模式返 回图 2.28 实验流程图(3)程序:MSP430-TEST44X V2.0B\Source Code\C\LAB9\src #include &msp430x44x.h& static
void main(void) { WDTCTL = WDTPW+WDTHOLD; P6SEL |= 0x01; ADC12CTL0 = ADC12ON+SHT0_15; ADC12CTL1 = SHP; ADC12IE = 0x01; ADC12CTL0 |= ENC; _EINT(); while(1) { ADC12CTL0 |= ADC12SC; _BIS_SR(LPM0_bits); } }公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:8// 停止看门狗定时器 // 输入通道为 A0 // 开 ADC12, 设置采样时间 // 采样定时器 // 使能 ADC12IFG.0 // 使能转换 // 使能总中断// 开始转换 // 进入 LPM044 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM#pragma vector=ADC_VECTOR __interrupt void ADC12ISR (void) { results = ADC12MEM0; _BIC_SR_IRQ(LPM0_bits); } 2,序列通道多次转换 (1)实验连接: // 将结果存取 // 清 LPM0, 设置断点 // ADC 中断处理图 2.31 实验连接图(2)流程图:开 始 中 断 服 务 程 序系 统 初 始 化取 出 转 换 结 果 清 楚 中 断 标 志A D C设 置 多 个 通 道 设 置移 动 存 储 位 为 下 一 次 存 放 结 果 准 备开 始 转 换 进 入 低 功 耗 模 式返 回图 2.32 实验流程图(3)程序:MSP430-TEST44X V2.0B\Source Code\C\LAB9\src #include #define &msp430x44x.h& Num_of_Results 8 // 定义全局数组 // 定义全局数组 // 定义全局数组 45static unsigned int A0results[Num_of_Results]; static unsigned int A1results[Num_of_Results]; static unsigned int A2results[Num_of_Results];公司地址:杭州市登云路 425 号利尔达大厦 Tel:0Fax:8 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMstatic unsigned int A3results[Num_of_Results]; void main(void) { WDTCTL = WDTPW+WDTHOLD; P6SEL = 0x0F; ADC12CTL0 = ADC12ON+MSC+SHT0_8; ADC12CTL1 = SHP+CONSEQ_3; ADC12MCTL0 = INCH_0; ADC12MCTL1 = INCH_1; ADC12MCTL2 = INCH_2; ADC12MCTL3 = INCH_3+EOS; 列 ADC12IE = 0x08; ADC12CTL0 |= ENC; _EINT(); ADC12CTL0 |= ADC12SC; _BIS_SR(LPM0_bits); } #pragma vector=ADC_VECTOR __interrupt void ADC12ISR (void) { static unsigned int index = 0; A0results[index] = ADC12MEM0; A1results[index] = ADC12MEM1; A2results[index] = ADC12MEM2; A3results[index] = ADC12MEM3; index = (index+1)%Num_of_R }// 定义全局数组//停止看门狗定时器 //使能 AD 通道输入 //开 ADC12 //设置采样定时器,序列通道多次转换 // ref+=AVcc, channel = A0 // ref+=AVcc, channel = A1 // ref+=AVcc, channel = A2 // ref+=AVcc, channel = A3, 最后序 //使能 ADC12IFG.3 //使能转换 //使能中断 //开始转换 //进入 LPM0// 读取结果 // 读取结果 // 读取结果 // 读取结果 // 读取结果公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:846 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM3,利用内置温度二极管测温 (1)流程图:开 始 中断服务程序系统初始化取出转换结果 清楚中断标志ADC设 置 选 择 通 道1 0退出低功耗模式开始转换 进入低功耗模式 计算温度值返 回图 2.33 实验流程图(2)程序:MSP430-TEST44X V2.0B\Source Code\C\LAB9\src #include &msp430x44x.h& static unsigned int ADC static unsigned long int DegC, DegF; void main(void) { WDTCTL = WDTPW+WDTHOLD; ADC12CTL0 = ADC12ON+REFON+REF2_5V+SHT0_6; 样时间 ADC12CTL1 = SHP; ADC12MCTL0 = INCH_10+SREF_1; ADC12IE = 0x01; for (i=0; i&0x3600; i++)公司地址:杭州市登云路 425 号利尔达大厦 Tel:0// 停止看门狗定时器 // 设置 ADC12, 参考电压, 采 // 用采样定时器 // 选择通道 A10, Vref+ // 使能 ADC12IFG.0 // 延时等待参考稳定Fax:847 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM{ } ADC12CTL0 |= ENC; _EINT(); while(1) { ADC12CTL0 |= ADC12SC; _BIS_SR(LPM0_bits); DegC = ((((long)ADCresult-)/4095); DegF = ((DegC * 9/5)+32); _NOP(); } } #pragma vector=ADC_VECTOR __interrupt void ADC12ISR (void) { ADCresult = ADC12MEM0; _BIC_SR_IRQ(LPM0_bits); } // 读取结果 // 清 LPM0 // // 开始转换 // 进入 LPM0 //使能转换 // 使能中断公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:848 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM十、通讯操作 实验十、 实验实验名称 (1)异步通信 (2)485 通信 (3)同步通信 实验目的 (1)了解 USCI 模块的结构、原理、功能; (2)了解 USCI 模块的寄存器,并会操作这些寄存器; (3)了解 UART 模式,并了解地址位多机通讯方式和线路空闲通讯方式; (4)了解 SPI 模式,并会使用 3 线及 4 线模式; (5)掌握各种波特率的计数。 实验内容 (1)异步通信时,设备初始化设置好之后,进入低功耗模式,等待接受中断唤醒,然 后把接收的一个字节发送回去。 (2)485 通信:设备初始化设置好之后,进入低功耗模式,等待接受中断唤醒,然后 把接收的一个字节发送回去。 (3) 同步通信: 采用 SPI 模式,从 HC165 读取一个数据,并将这个数据写回给,HC164。 实验操作及程序 1,异步通信 (1)电路连接:图 2.34 实验连接图(2)流程图:公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:849 LSD SCIENCE & TECHNOLOGY CO., LTD.开 始利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM串口中断服务系统初始化 N 发 送 准 备 好?Y串口设置发送数据返 回 进入低功耗模式图 2.35 实验流程图(3)程序:MSP430-TEST44X V2.0B\Source Code\C\LAB10\src //************************************************************************ // // // // // // Built with IAR Embedded Workbench Version: 3.41A ID: MSP430-TEST44X 硬件连接如下: 1、PC 机串口连接 TEST44X 学习板的 9 芯串行接口 J5_232 2、对拨动开关 P_232、P1、U_USART,只有拨动开关 U_USART 的 P2 脚和 P5 脚拨 3, 显示数据如 fe fe 68 10 01 00 00 00 00 00 00 01 03 1F 90 00 2c 16到 ON 的位置; //************************************************************************ #include &msp430x44x.h& void main(void) { WDTCTL = WDTPW + WDTHOLD; FLL_CTL0 |= XCAP14PF; UTCTL0 = SSEL1; UBR00 = 0x6D;公司地址:杭州市登云路 425 号利尔达大厦// 停止看门狗 // 设置负载电容 // UCLK = SMCLK // 1MHz 9600Tel:0 Fax:850 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMUBR10 = 0x00; UMCTL0 = 0x00; UCTL0 = CHAR; ME1 |= UTXE0 + URXE0; IE1 |= URXIE0; P2SEL |= 0x30; P2DIR |= 0x10; _EINT(); for (;;) { _BIS_SR(CPUOFF); _NOP(); } } #pragma vector=UART0RX_VECTOR __interrupt void usart0_rx(void) { while ((IFG1 & UTXIFG0) == 0); TXBUF0 = RXBUF0; 发送 }// 1MHz 9600 // // 字节 RST* // 接收使能 // 接收中断使能 // P2.4,5 = USART0 TXD/RXD // P2.4 输出 // 总中断使能// 进入 LPM0 // 此处可以设置段点观察// 发送是否空闲 // 将接收的字符传递给发送缓存进行2,485 通信 (1)实验连接:图 2.36 实验连接图公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:851 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM(2)流程图:开 始 串口中断服务系统初始化485 芯片发送使能发送数据 串口设置N 485 芯片接收使能 发送完?Y485 芯片接收使能 进入低功耗模式返 回图 2.37 实验流程图(3)程序:光盘资料/Source Code/C/LAB10/LAB10.eww //************************************************************************ // // // // // 硬件连接如下: 1、PC 机串口连接 TEST44X 学习板的 9 芯串行接口 J1_485; 2、对拨动开关 U_USART 的 P1 脚和 P4 脚拨到 ON 的位置; 3、显示数据如 fe fe 68 10 01 00 00 00 00 00 00 01 03 1F 90 00 2c 16 4、本实验是半双工的,字节只是收发一个,发送多个字节将出错//************************************************************************ #include &msp430x44x.h& void delay(int a,int b) { for(int i=a;i&0;i--) for(int j=b;j&0;j--);公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:852 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM} void main(void) { WDTCTL = WDTPW + WDTHOLD; FLL_CTL0 |= XCAP14PF; UTCTL0 = SSEL1; UBR00 = 0x6D; UBR10 = 0x00; UMCTL0 = 0x00; UCTL0 = CHAR; ME1 |= UTXE0 + URXE0; IE1 |= URXIE0; P2SEL |= 0x30; P2DIR |= 0x10; P4DIR |=0x04; P4OUT &=~0x04; delay(100,100); _EINT(); for (;;) { _BIS_SR(CPUOFF); _NOP(); } } #pragma vector=UART0RX_VECTOR __interrupt void usart0_rx(void) { P4OUT |=0x04; TXBUF0 = RXBUF0; while ((IFG1 & UTXIFG0) == 0); delay(100,1); P4OUT &=~0x04; } // 准备发送数据 // RXBUF0 到 TXBUF0 // 发送缓冲空闲? // 延时 // 进入 LPM0 // // 中断使能 // 停止看门狗 // 负载电容设置 // UCLK = SMCLK // 1MHz 9600 // 1MHz 9600 // no modulation // 8-bit 字节 *SWRST* // 允许接收 // 接收中断使能 // P2.4,5 = USART0 TXD/RXD // P2.4 输出 // P4.2 输出 // 等待接收数据公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:853 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM3,同步通信 (1)实验连接:图 2.38 实验连接图(2)流程图:开 始系统初始化串口设置 SPI 模 式延 时 从H C 1 6 5 获 取 数 据发送准备好 ?NY 发送数据给 H C 164图 2.39 实验流程图(3)程序:MSP430-TEST44X V2.0B\Source Code\C\LAB10\src #include {公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:8&msp430x44x.h&void main(void)54 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMWDTCTL = WDTPW + WDTHOLD; FLL_CTL0 |= XCAP14PF; ME1 |= USPIE0; UTCTL0 = CKPH+SSEL1+SSEL0+STC; UCTL0 = CHAR+SYNC+MM; UBR00 = 0x02; UBR10 = 0x00; UMCTL0 = 0x00; P3SEL |= 0x0E; P3DIR |= 0x01; _EINT(); while (1) { for (i = 0xFFFF; i & 0; i--); while ((IFG1 & UTXIFG0) == 0); P3OUT &= ~0x01; P3OUT |= 0x01; TXBUF0 = RXBUF0; }// 停止看门沟 // 负载电容设置 // SPI 模式 // SMCLK, 3-pin 模式 // 8-bit SPI 主模式 **SWRST** // UCLK/2 // 0 // // P3.1-3 SPI 功能选择 // P3.0 输出 // 中断使能// 延时 // 发送空闲? // 发送数据到 'HC165 // RXBUF0 到 TXBUF0公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:855 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM实验十一、键盘操作实验名称 (1)独立按键操作 (2)行列按键操作 (3)捕获按键操作 实验目的 本实验是为了让您了解键盘程序的一般设计方法,判键,消抖,得到键值。 实验内容 本学习板集成了一个复用的键盘接口,其原理下图所示。图 2.40 键盘电路由上图可知,当 DIP 拨动开关 P_KEY 的 P3、P4、P5 拨到数字一端时,独立键盘 DEC、INC、FUN 与 F449 的 P1.1/2/3 端口断开,此时,键盘模块为单纯的行列式扫描 键盘, (如原理图的右面) 。键盘为 3*4 格局, P1.1,P1.2,P1.3 为行线, P1.4,P1.5, P1.6,P1.7 为列线。列线分别由上拉电阻上拉到 VCC,在行线与列线的每一个交界处 有个按键,按键的 A、B 端分别接在行线和列线上。公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:856 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM下面分析在行列键盘上实现键盘的 3 个步骤: 1, 判断是否有键按下: 如果有键按下,则与之相连的行线与列线被连通,在检测是否有键按下时,先使 3 条 行线 P1.1―P1.3 输出低电平,读列线.P1.4―P1.7。如果有按键按下,则列线读进来的 数据非全 1。如果没有按键按下,则因所有列线被上拉,读入 MCU 的数据为全 1。由 此,可判断是否有按键被按下。 按键抖动得消除使用软件延时的办法,当检测到有按键按下时,等待 10ms,再重新检 测是否有按键按下,如果有,则已经是键的稳定期了。 2,按键识别,得到键码对于行列式矩阵键盘常使用扫描的方法识别按键。通过使行线 P1.1―P1.3 任意一条输出低电平,读列线 P1.4―P1.7 的办法来得知是否有按键被按 下。那么可以用同样的办法来确认究竟是哪个按键被按下。 假定“1”键被按下,那么下面的方法能找到被按下的键: 使输出 P1.1 为低电平,其余为高; 读入列线,此时如果 P1.4 为低电平,则 #号键被按下,但因为没有被按下,所以电 平被上拉;再测试 P1.5,直到测试完 P1.7; 然后再使输出 P1.2 为低电平,其余为高; 读入列线,此时如果 P1.4 为低电平,则#号键被按下,但因为没有被按下,所以电 平被上拉;再测试 P1.5,直到测试完 P1.7; 是输出使输出 P1.3 为低电平,其余为高; 读列线,这时会发现 P1.7 为低电平,则说明 1 号键被按下。通过上面的方法找到了 被按下按键的确切位置,但识别按键最终要送出一个表示按键位置的键值。观察发现, 每一条行线上都通过 4 个按键于 4 条列线相连,那么第一条行线上的 4 个按键编码为 0~3,则后一条行线上的 4 个按键编码为前一条行线上对应的按键键值加 4 就可以了 行内相邻两键键值为加 1 递增,行间每列上相邻两键为加 4 递增。这样变实现了按 键键值的自然顺序编码。 3,等待按键松开 反复检测按键判断子程序,直到判断结果为没有按键按下。 本实验采用了 3*4 行列式键盘,采用扫描法扫描键盘。程序共分为判键、按键识 别,得到键码两块。口线 P1.1~P1.3 为行线,P1.4~P1.7 为列线。键值存放在 XXX 中。实验操作及程序公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:857 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM1,独立按键操作(1) 实验连接:连接所有 JP1、JP2、JP3、JP4 和 F449 的管脚连接的短接器; 当 DIP 拨动开关 P_KEY 的 P3、P4、P5 拨到&ON&一端.图 2.41 独立按键电路连接图(2)流程图:开 始 B T 中断服务 I/ O 中 断 服 务T A 中断服务初始化系统 初 始 化 LED输 出时钟处理按键去抖转移中断标志 清除中断标志设 置 B T 0 .5 S 中 断 设 置 T A 3.4m s 中 断LCD 显 示 程 序 调 用 le d 显 示 程 序返 回初始化变量 设 置 LCD 清 空 LCD显 示 区返 回 返 回进入低功耗模式按键处理程序图 2.42 独立按键实验流程图(3)程序:MSP430-TEST44X V2.0B\Source Code\C\LAB11\src #include &msp430x44x.h &Tel:0 Fax:8公司地址:杭州市登云路 425 号利尔达大厦58 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM// // // // // // // //程序功能:该程序是用 F449 的 I/O(P1.1、P1.2、P1.3)中断功能, 实现时钟 显示(LED 和 LCD 显示) 和键盘(P1.1=FUN; P1.2=DEC; P1.3=INC)功能,键盘是采用 I/O 口中断的方式 。 硬件连接:在必须连接所有短接器, A、显示部分,LCD 显示不受拨动开关的影响;LED 显示必须将拨动开关 P1 的第 P3 和 P4 脚拨到 ON 的位置。 B、键盘部分,必须将拨动开关 P_KEY 的第 P3、P4、P5 脚拨到 ON 的位置。 unsigned char fun_ unsigned char key_ unsigned char key_ 0x08 0x04 0x02 //秒寄存器 //分寄存器 //小时寄存器 //功能键缓存 //按键标志 //按键时间累加 //INC 键定义 //DEC 键定义 //FUN 键定义//--------------------------------------------------------static static static static static staticunsigned char led_disp_bit=0x40;//LED 显示位寄存器#define key_inc #define key_dec #define key_fun const 0x7b, 0x12, 0x4f, 0x1f, 0x36, 0x3d, 0x7d, 0x13, 0x7f, 0x3f, 0x00, 0x00, }; constunsigned char lcd_table[12]={ //*&0&*// //*&1&*// //*&2&*// //*&3&*// //*&4&*// //*&5&*// //*&6&*// //*&7&*// //*&8&*// //*&9&*// //*&no&*// //*&no&*// unsigned char led_table[12]={Tel:0 Fax:8//LCD 显示代码表公司地址:杭州市登云路 425 号利尔达大厦59 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM0xd7, 0x14, 0xcd, 0x5d, 0x1e, 0x5b, 0xdb, 0x15, 0xdf, 0x5f, 0x00, 0x00, };//*&0&*// //*&1&*// //*&2&*// //*&3&*// //*&4&*// //*&5&*// //*&6&*// //*&7&*// //*&8&*// //*&9&*// //*&no&*// //*&no&*// // LED 显示代码void rtc(void); void display_rtc(void); void display_dec(unsigned char void inc(void); void dec(void); void fun(void); void main(void) { WDTCTL = WDTPW + WDTHOLD; BTCTL=BTSSEL+BT_ADLY_500+BTFRFQ1; IE2|=BTIE; P5SEL=0 LCDCTL=LCDON+LCD4MUX+LCDP2; P1DIR&=~key_inc+key_dec+key_ P1IES=key_inc+key_dec+key_ P1IE=key_inc+key_dec+key_ P3DIR=0 P4DIR=0x03;公司地址:杭州市登云路 425 号利尔达大厦 Tel:0i,unsigned charj);void led_display(unsigned char i);//BT 0.5S 中断//LCD 模块初始化 //端口 1 初始化//端口 3 初始化 //端口 4 初始化Fax:860 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMP3OUT=0x00; P4OUT|=0x02; P4OUT&=~0x02; P3OUT=0 P4OUT|=0x01; P4OUT&=~0x01; TACTL=TASSEL0+TACLR; CCTL0=CCIE; CCR0=90; TACTL|=MC0; for (i=0; i&8; ++i) LCDMEM[i] = 0x00; _EINT(); for(;;) { _BIS_SR(LPM3_bits); _NOP(); _EINT(); switch (P1IN&0x0e) { case 6:inc(); case 10:dec(); case 12:fun(); } } } #pragma vector=BASICTIMER_VECTOR __interrupt void basic_timer(void) { rtc(); display_rtc(); } #pragma vector=TIMERA0_VECTOR公司地址:杭州市登云路 425 号利尔达大厦 Tel:0//LED 清屏//Timer_a 3ms 中断//LCD 清屏 //允许中断//进入低功耗模式 3//时钟处理 //时钟 LCD 显示Fax:861 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM__interrupt void Timer_A(void) { if(key_flag) { if (key_flag==8) { key_flag=0x00; if(0x0e!=(P1IN&0x0e)) _BIC_SR_IRQ(LPM3_bits); } else key_flag++; } led_disp_bit=led_disp_bit&0x01?led_disp_bit&&1:0x40; switch(led_disp_bit) case 1:if(sec&0x01&&fun_buffer==1) led_display(0x00); else led_display(led_table[hour/10]); case 2:if(sec&0x01&&fun_buffer==1) led_display(0x00); else led_display(led_table[hour%10]+0x20); case 4:if(sec&0x01&&fun_buffer==2) led_display(0x00); else led_display(led_table[min/10]); case 8:if(sec&0x01&&fun_buffer==2) led_display(0x00); else led_display(led_table[min%10]+0x20); case 16:if(sec&0x01&&fun_buffer==3) led_display(0x00);公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:8//LED 显示处理62 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMelse led_display(led_table[(sec&&1)/10]); case 32:if(sec&0x01&&fun_buffer==3) led_display(0x00); else led_display(led_table[(sec&&1)%10]); } } #pragma vector=PORT1_VECTOR __interrupt void PORT1_1(void) { key_flag|=0x01; P1IFG=0x00; } void { if (++sec & 120) sec = 0; if (++min & 60) min = 0; if (++hour & 24) hour = 0; } void display_rtc(void) { i= i=i&&1; display_dec(0,i); i= display_dec(2,i); i=公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:8rtc (void)63 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMdisplay_dec(4,i); LCDMEM[6]=0x00; } void display_dec(unsigned char { LCDMEM[i]=lcd_table[j%10]+0x80; LCDMEM[i+1]=lcd_table[j/10]; } void led_display(unsigned char i) { P3OUT=i; P4OUT=0x02; P4OUT&=~0x02; P3OUT=~led_disp_ P4OUT=0x01; P4OUT&=~0x01; P3OUT=0x00; } void inc (void) { switch (fun_buffer) { case 0: case 3:sec+=2;goto rtc_ case 2: min+=1;goto rtc_ case 1: hour+=1; rtc_inc: if (sec &119) sec = sec-120; if (min &59) min = min-60; if (hour & 23) hour = hour-24; }公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:8i,unsigned charj)64 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM} void dec(void) { switch (fun_buffer) { case 0: case 3:sec-=2;goto rtc_ case 2:min-=1;goto rtc_ case 1:hour-=1; rtc_dec: if(sec&119) sec=256-137; if(min&59) min=256-197; if(hour&23) hour=256-233; } } void fun(void) { if(fun_buffer&3) fun_buffer++; else fun_buffer=0x00; }公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:865 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM2,行列按键操作 (1)实验连接:图 2.43 行列键盘电路连接图程序功能:该程序是用 F449 的 I/O 的 P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、P1.7 实现 3X4 距阵键盘的检测和控制程序,键值分别是 0、1、2、3、4、5、6、7、8、9、 E、F,每按一键在 LCD 上显示键值,如同时按下多键,以第一个键值为主。 硬件连接:必须连接所有短接器,LCD 显示不受拨动开关的影响;必须将拨动开 关 P_KEY 的第 P2、P3、P4、P5 拨到数字一端。 (2)流程图:开 始 B T 中 断 服 务 键 盘 扫 描 才 程 序系 统 初 始 化 L C D 设 置时 钟 处 理 程 序 行 输 出 位 低设 置 B T 0 .2 5 S 中 断 L C D 清 屏扫 描 键 盘测 试 有 键 按 下 ? N 进 入 低 功 耗 有 键 按 下 ? YNY 获 取 键 值 显 示 键 值 显 示 时 钟返 回 返 回图 2.44 行列按键流程图(3)程序:MSP430-TEST44X V2.0B\Source Code\C\LAB11\src #include // &msp430x44x.h & //------------------------------------------------------------程序功能:该程序是用 F449 的 I/O 的 P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、Tel:0 Fax:8公司地址:杭州市登云路 425 号利尔达大厦66 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM// // // // //P1.7 实现 3X4 距阵键盘的检测和控制程序,键值分别 是 0、1、2、3、4、5、6、7、8、9、E、F,每按一键在 LCD 上显示键值,如同时 按下多键,以第一个键值为主。 硬件连接:必须连接所有短接器,LCD 显示不受拨动开关的影响;必须将拨动开 关 P_KEY 的 第 P2、P3、P4、P5 拨到数字一端。 0x2 //标志 //键值缓存 //秒缓存 //分钟缓存 //小时缓存//----------------------------------------------------------------------#define static static static static static const 0x7b, 0x12, 0x4f, 0x1f, 0x36, 0x3d, 0x7d, 0x13, 0x7f, 0x3f, 0x6d, 0x65, }; const 0x0b, 0x09, 0x08, 0x07, 0x00, 0x06, 0x05, unsigned char key_table[12]={ //*(key_vaule) //9 //8 //7 //0 //6 //5 00(key_num) 01 02 03 04 05 06Tel:0 Fax:8key_presunsigned char key_ unsigned char lcd_table[12]={ //*&0&*// //*&1&*// //*&2&*// //*&3&*// //*&4&*// //*&5&*// //*&6&*// //*&7&*// //*&8&*// //*&9&*// //*&e&*// //*&f&*////lcd 显示表//键值表公司地址:杭州市登云路 425 号利尔达大厦67 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM0x04, 0x0a, 0x03, 0x02, 0x01, };//4 //# //3 //2 //107 08 09 0a 0bvoid rtc(void); void display_rtc(void); void display_dec(int i,int j); void lcd_display (void); void scan_key_deal(void); void main(void) { WDTCTL = WDTPW + WDTHOLD; BTCTL=BTSSEL+BT_ADLY_250+BTFRFQ1; IE2|=BTIE; P5SEL=0 LCDCTL=LCDON+LCD4MUX+LCDP2; for (i=0; i&8; ++i) LCDMEM[i] = 0x00; _EINT(); for(;;) { _BIS_SR(LPM3_bits); _NOP(); } } #pragma vector=BASICTIMER_VECTOR __interrupt void basic_timer(void) { rtc(); scan_key_deal();公司地址:杭州市登云路 425 号利尔达大厦 Tel:0//BT 0.25 S 中断 //使能 lcd 显示 //清除 lcd//进入 LPM3// //扫描键值Fax:868 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMif(flag) { flag=flag&0x6f?flag+1:0; lcd_display(); } else display_rtc(); } void { if (++sec & 240) sec = 0; if (++min & 60) min = 0; if (++hour & 24) hour = 0; } void display_rtc(void) { i= i=i&&2; display_dec(0,i); i= display_dec(2,i); i= display_dec(4,i); LCDMEM[6]=0x00; } void display_dec(int i,int j) { LCDMEM[i]=lcd_table[j%10]+0x80;公司地址:杭州市登云路 425 号利尔达大厦 Tel:0//如果有键按下,显示键值rtc (void)Fax:869 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMLCDMEM[i+1]=lcd_table[j/10]; } void lcd_display (void) { for (i=0;i&7;i++) LCDMEM[i]=lcd_table[key_buff&0x0f]; } void scan_key_deal(void) { u
unsigned char com_ unsigned char key_ P1DIR=0x0f; com_byte=0 P1OUT&=~0x08; P1OUT&=~0x04; P1OUT&=~0x02; buffer=P1IN; if(0xf0!=(buffer&0xf0)) { P1OUT|=0x08; P1OUT|=0x04; P1OUT|=0x02; com_byte=0 key_num=0x00; com_byte=0x02; for(counter=0x03;counter&0;counter--) { P1OUT&=~com_ if(!(P1IN&BIT4)) key_num++;公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:8//判断是否有键按下//获取键值 //扫描行70 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMif(!(P1IN&BIT5)) key_num++; if(!(P1IN&BIT6)) key_num++; if(!(P1IN&BIT7)) key_num++; com_byte=com_byte&&1; } flag|=key_ buffer=P1IN; buffer=P1IN; key_buff=key_table[key_num]; } flag&=~key_ } //得到键值3,捕获按键操作 (1)实验连接:图 2.45 捕获键盘电路硬件连接:在必须连接所有短接器, A、显示部分,LCD 显示不受拨动开关的影响;LED 显示必须将拨动开关 P1 的第 P3 和 P4 脚拨到 ON 的位置。 B、键盘部分,必须将拨动开关 P_KEY 的第 P3、P4、P5 脚拨到 ON 的位置。公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:871 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMC、端口部分,必须连接 P1.1 和 P3.6、P1.2 和 P3.5、P1.3 和 P3.4 (2)流程图:开 始系 统 初 始 化设 置 T B 下 降 沿 中 断 设 置 L C D进 入 低 功 耗 模 式图 2.46 捕获键盘流程 图(3)程序:MSP430-TEST44X V2.0B\Source Code\C\LAB11\src //************************************************************************ // // // // // // // // 程序功能:该程序是用 F449 的 P3.4、P3.5、P3.6 口来捕获 P1.1、P1.2、P1.3 端口当键按下时的电平变化没,并将键值通过 LED 和 LCD 显示键值,键盘(P1.1=FUN; P1.2=DEC; P1.3=INC)连接 硬件连接:在必须连接所有短接器 A、显示部分,LCD 显示不受拨动开关的影响;LED 显示必须将拨动开关 P1 的第 P3 和 P4 脚拨到 ON 的位置 B、键盘部分,必须将拨动开关 P_KEY 的第 P3、P4、P5 脚拨到 ON 的位置 C、端口部分,必须连接 P1.1 和 P3.6、P1.2 和 P3.5、P1.3 和 P3.4//************************************************************************ #include &msp430x44x.h& unsigned int key_count=0x00; unsigned char key_value=0 unsigned char kinput=0x00; unsigned char ktemp=0x00; unsigned char kstore=0x00; unsigned char kready=0x00; unsigned char koutput=0x00; unsigned char getkey=0x00; unsigned char key_flag=0x00; const unsigned kconst=0x70;公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:872 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM#define ten_ms #define key_1_5s #define key_error #define key_3_5s #define key_2_3 #define key_3_2 const 0x7B, 0x12, 0x4F, 0x1F, 0x36, 0x3D, 0x7D, 0x13, 0x7F, 0x3F, 0x77, 0x7C, 0x69, 0x5E, 0x6D, 0x65, }; void main(void) { /* &0& */ /* &1& */ /* &2& */ /* &3& */ /* &4& */ /* &5& */ /* &6& */ /* &7& */ /* &8& */ /* &9& */ /* &A& */ /* &B& */ /* &c& */ /* &D& */ /* &E& */ /* &F& */0x028e; 0x1f; 0 0x3f; 0x23; 0x32;unsigned char lcd_table[16]={//0-F 显示表WDTCTL = WDTPW + WDTHOLD; TBCTL = TBSSEL0+TBCLR; TBCCTL3 = CM_2+SCS+CAP+CCIE+CCIS_1; TBCCTL4 = CM_2+SCS+CAP+CCIE+CCIS_1; TBCCTL5 = CM_2+SCS+CAP+CCIE+CCIS_1; P3SEL |= BIT4+BIT5+BIT6; BTCTL=BTSSEL+BT_ADLY_250+BTFRFQ1; IE2|=BTIE;公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:8//下降沿捕获, CCI3B 为信号源 //下降沿捕获, CCI4B 为信号源 //下降沿捕获, CCI5B 为信号源 //BT 0.25 S 中断73 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMP5SEL=0 LCDCTL=LCDON+LCD4MUX+LCDP2; for (i=0; i&8; ++i) LCDMEM[i] = 0x00; _EINT(); for(;;) { _BIS_SR(LPM3_bits); _NOP(); } } #pragma vector=TIMERB1_VECTOR __interrupt void Timer_B1 (void) { switch (TBIV) { case 6: case 8: case 10: key: if (TBCTL&MC_1) { kinput= ~P3IN;//使能 lcd 显示 // 清除 lcd //允许中断//进入低功耗模式 3kready = ktemp & kinput | kready &(ktemp ^ kinput); ktemp = koutput = kready & ( ~kstore | kconst); kstore = if (koutput!=0) key_count++; if (koutput==0x10) getkey=0x10; else if (koutput==0x20) getkey=0x20;公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:874 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COMelse if (koutput==0x40) getkey=0x40; } else { TBCTL |= MC_1+TBIE; TBCCTL3 = CCIE; TBCCR3 = ten_ TBCCR0 = TBCCR3; } switch (koutput) { case 0x00: goto key_00; case 0x10: goto key_10; case 0x20: goto key_20; case 0x30: goto key_30; case 0x40: goto key_40; case 0x50: goto key_50; case 0x60: goto key_60; key_00: if((P3IN&0x70)!=0x70) else if(getkey==0x10) key_value=0x10; else if((getkey==0x20)&(key_flag==0)) key_value=0x20; else if((getkey==0x40)&(key_flag==0)) key_value=0x40; goto tb_ key_10: if(key_count&250) { key_value=key_1_5s; goto tb_}公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:875 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM key_30: key_value=0x30; goto tb_ key_40: if(key_count&250) { key_value=key_3_5s; goto tb_} key_50: key_value=key_ goto tb_ key_60: key_flag++; if(getkey==0x20) {key_value=key_2_3;} else if(getkey==0x40) {key_value=key_3_2;} tb_init: TBCTL = TBSSEL_1+TBCLR; TBCCTL3 = CM_2+SCS+CAP+CCIE+CCIS_1; TBCCTL4 = CM_2+SCS+CAP+CCIE+CCIS_1; TBCCTL5 = CM_2+SCS+CAP+CCIE+CCIS_1; key_count=00; kinput=00; ktemp=00; kstore=00; kready=00; koutput=00; getkey=00; key_flag=00; }公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:8//下降沿捕获, CCI3B 为信号源 //下降沿捕获, CCI4B 为信号源 //下降沿捕获, CCI5B 为信号源76 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM } } #pragma vector=BASICTIMER_VECTOR __interrupt void basic_timer (void) { LCDMEM[1]=lcd_table[key_value&0x0f]; LCDMEM[2]=lcd_table[key_value&&4]; }公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:877 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM实验十二 、LCD 点阵实验1.LCD 点阵 ZJM12864BSBO 简介 本学习板为您集成了 LCD 点阵接口,配 LCD 点阵显示 ZJM12864BSBO 就可以显 示 LCD 点阵图形了。 ZJM12864BSBD 是一低功耗的点阵图形式 LCD 模块。其特点如下: 1)显示格式:128 点(列) × 64 点 ( 行 ) ; 2)显示类型:STN 黄绿模式、半反半透、6:00 视角、正向显示; 3)驱动方式:1/64 占空比; 4)易与 8、16 位的 MPU 相连; 5)多功能指令; 6)加电自动复位; 7)控制芯片:KS0107B、KS0108B; 8)工作电压:+3.3.0V ? 0.5V。 方框图如图 2.41 所示。图 2.41 点阵方框图点阵分布图如图 2.42 所示2.42 点阵分布图公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:878 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM引脚功能如表 2.2 所示:表 2.2 引脚功能控制和显示指令如表 2.3 所示。表 2.3 控 制 和 显 示指令 由点阵方框图可知 JC1、JC2 控制点阵的列,每个控制 64 列,共控制 128 列;JC3 控制行,控制 64 行,故组成 128*64 的点阵。CS1、CS2 为 JC1、JC2 的片选线; 从点阵分布图可知,64 行分为 8 页,每页 8 行。则确定 64*64 的某一点上的坐标公司地址:杭州市登云路 425 号利尔达大厦 Tel:0 Fax:879 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM为先确定列,在确定页,最后确定某一页的某一行。 结合控制和指令表,得出在点阵中的某一个点上让其显示的步骤如下: 1) 先选则 JC1 或 JC2 或两个都选; 2) 选择数据类型(数据 OR 指令、输入 OR 输 出 ) ; 3) 显示起始行地址; 4) 显示开关; 5) 设定显示中 Y 起始地址; 6) 设定显示中页地址。 在本实验中,该点阵为 8*5 的单元格,即每个显示字符的单元为 8*5。 1.1 点阵 ZJM12864BSBO 与 MSP430F449 的接口电路 前面已经介绍了点阵 ZJM12864BSBO,接下来讲讲其与 449 的接口问题,原理如图 3.43 所示。. R20 . 5M VCC 1 2 3 P2.0 4 P2.1 5 P2.2 6 P3.0 7 P3.1 8 P3.2 9 P3.3 10 P3.4 11 P3.5 12 P3.6 13 P3.7 14 P2.3 15 P2.6 16 P2.7 17 18 19 20 J_LCD1 . . 43 点阵与 449 接口电路 图 3. 3.43 .由图 3.31 可以清楚的了解到,449 的 P2 口接点阵的控制信号,P3 口接点阵的 数据信号。具体的关系为: P2.0――RS; P2.6――CS2; P3.2――DB2; P3.6――DB6; P2.1――R/W; P2.7――RST; P3.3――DB3; P3.7――DB7; P2.2――EN; P3.0――DB0; P3.4――DB4; P2.3――CS1; P3.1――DB1; P3.5――DB5;R20 用来调节 LCD 点阵的亮度。程序和操作 (1)实验连接:公司地址:杭州市登云路 425 号利尔达大厦Tel:0Fax:880 LSD SCIENCE & TECHNOLOGY CO., LTD.利尔达科技有限公司 WWW.LIERDA..CO WWW.LIERDA..COM2.50 点阵与 449 接口连接图(2)流程图:开 始 LCD 清屏程序 命令输出程序 写一个字节程 序片 选 系统初始化 发送起始页地 址 LCD初 始 化 发送起始段地 址 返 回 片 选 发送命令码发送显示起始 地 址设置数据写入命令输出程序发送显示命令擦 除 片 1LCD 初始化程 序数据输出显 示 擦 除 片 2I /O 口 设 置 返 回

我要回帖

更多关于 看到就能读出来的语言 的文章

 

随机推荐