智能仪表实验三剖析

上传人:我** 文档编号:113210254 上传时间:2019-11-08 格式:DOCX 页数:16 大小:33.24KB
返回 下载 相关 举报
智能仪表实验三剖析_第1页
第1页 / 共16页
智能仪表实验三剖析_第2页
第2页 / 共16页
智能仪表实验三剖析_第3页
第3页 / 共16页
智能仪表实验三剖析_第4页
第4页 / 共16页
智能仪表实验三剖析_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《智能仪表实验三剖析》由会员分享,可在线阅读,更多相关《智能仪表实验三剖析(16页珍藏版)》请在金锄头文库上搜索。

1、智能仪表开发实验报告姓名:大葱哥学号:班级:测控12022015.6.25实验三 六位八段数码管操作实验【实验目的】1、了解共阴极八段数码管和共阳极八段数码管的工作原理。2、掌握 MAX7219 数码管驱动芯片的工作时序。3、了解八段数码管静态显示和动态扫描的区别。【实验内容】1 、要求:运用C语言编程完成对智能仪表多功能实验箱系统六位八段数码管模块的控制。2、功能:通过单片机端口对MAX7219进行读/写操作,实现对六位八段数码管的控制。3、现象:六位八段数码管同时顺序显示0F ;六位八段数码管分别显示 “0 1 2 3 4 5” , 按键后分别显示 “6 7 8 9 A b ”,再次按键后

2、显示“C d E F 0 0” 。【实验步骤】1、 阅读共阴极六位八段数码管 CAI3661AS 和驱动芯片 MAX7219 相关技术资料。掌握数码管驱动方式和控制时序。2、进行 C 语言单片机程序编写。3、利用 JTAG 口将程序烧写进入单片机中。4、进行程序调试。观察数码管显示情况。【实验程序】#include msp430x54x.h#include stdio.h #define CPU_F (double)12000000)#define delay_us(x) _delay_cycles(long)(CPU_F)*(double)x/1000000.0)#define delay_

3、ms(x) _delay_cycles(long)(CPU_F)*(double)x/1000.0)void DigitLed_init(void);void DigitLedLoop(void);void SendData(unsigned char cmd, unsigned char data);void clock_init(void);static unsigned char LED_CODE=0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B,0x77,0x1F,0x4E,0x3D,0x4F,0x47;/ LED 控制芯片 初始化/

4、P1.1:数据 P1.3:Load P1.5:时钟int main( void ) / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; DigitLed_init(); clock_init(); P1DIR&= BIT0; P1DIR&= BIT2; unsigned char i=0; /unsigned char addr=0xF1; SendData(0xF1,LED_CODE0); while(1) if(!(P1IN&BIT0) if(i0) SendData(0xF1,LED_CODE

5、i-1); delay_ms(500); i-; else SendData(0xF1,LED_CODE0); delay_ms(500); return(0);/ 共阴极数码管 3661ASvoid DigitLed_init()P1DIR|=0x2A;/ P1 口 设置为输出SendData(0xF9,0x00);/ 译码模式 00:不译码SendData(0xFA,0xF7);/ 亮度 FF:最大亮度SendData(0xFB,0xF5);/ 扫描控制 F5:Digits 0-5SendData(0xFC,0xF1);/ 正常操作模式 F1:正常模式/ 数码管测试函数void Digit

6、LedLoop()unsigned char i=0,k=0;unsigned char addr=0xF1;for(i=0;i16;i+)/ 熄灭addr=0xF1;for(k=0;k6;k+)SendData(addr,0x00);addr+;delay_ms(1000);/ 点亮addr=0xF1;for(k=0;k6;k+)SendData(addr,LED_CODEi);addr+;delay_ms(1000);/ 测试完毕,熄灭addr=0xF1;for(k=0;k6;k+)SendData(addr,0x00);addr+;/ 发送命令到 LED 控制芯片void SendDat

7、a(unsigned char cmd, unsigned char data)int i=0;P1OUT=0x00;P1OUT&=0xF7;/ P1.3 Load 信号置低 12P1OUT&=0xDF;/ P1.5 时钟信号置低 13/ 发送命令for(i=0;i8;i+)if(cmd&(BIT07-i)P1OUT|=0x02; / P1.1=1 数据 1elseP1OUT&=0xFD; / P1.1=0 数据 0P1OUT|=0x20; / P1.5 时钟信号置高 13P1OUT&=0xDF; / P1.5 时钟信号置低 13/ 发送数据for(i=0;i8;i+)if(data&(BIT

8、0(7-i)P1OUT|=0x02; / P1.1=1 数据elseP1OUT&=0xFD; / P1.1=0 数据P1OUT|=0x20; / P1.5 时钟信号置高if(i=7)P1OUT|=0x08; / P1.3 Load 信号置高P1OUT&=0xDF; / P1.5 时钟信号置低void clock_init() P5SEL|=0x0C; /选择P5.2,P5.3为特殊功能端,为XT2IN,OUT UCSCTL6&=XT2OFF; /选择XT2开启 UCSCTL3|=SELREF_2; /FFL参考晶振:选择REFOCLK,分频n默认为1 UCSCTL4|=SELA_2; /设置A

9、CLK来源为REFOCLK do UCSCTL7&=(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); SFRIFG1&=OFIFG; while(SFRIFG1&OFIFG);/清除 OFIFG,XT2OFFG,and XT1OFFG , DCOFFG /UCSCTL6&=XT2DRIVE0;/XT2选择能力驱动 UCSCTL4|=SELS_5+SELM_5;/SMCLK=MCLK=XT2CLK【实验思考】为什么需要使用数码管驱动芯片 MAX7219?MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,

10、也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。单片机输出太小,不能用以驱动,并且扫描、编码、译码等不必要占用单片机。【实验总结】通过本次实验,我了解了共阴极八段数码管和共阳极八段数码管的工作原理,对MAX7219 数码管驱动芯片也有了一定的掌握,同时也清楚了八段数码管静态显示和动态扫描之间的的区别,收获很多。实验四 4 4 矩阵键盘操作实验【实验目的】1、了解矩阵键盘的工作原理。2、掌握利用行列扫描法读取按键信息及软件消抖的方法。3、了解

11、矩阵键盘扫描方式控制和中断方式控制的区别。【实验内容】1 、要求:运用C语言编程完成对智能仪表多功能实验箱系统矩阵键盘模块的控制。2、功能:通过单片端口线实现判断矩阵键盘是否有键按下,判断输入的键值。3、现象:依次按下矩阵键盘按钮在八段数码管上显示“0F” 。【实验步骤】1、理解 44 矩阵键盘的工作原理。2、进行 C 语言单片机程序编写。3、利用 JTAG 口将程序烧写进入单片机中。4、进行程序调试。操作 44 矩阵键盘,观察八段数码管显示的变化【实验程序】#include msp430x54x.h#define CPU_F (double)12000000)#define delay_us

12、(x) _delay_cycles(long)(CPU_F)*(double)x/1000000.0)#define delay_ms(x) _delay_cycles(long)(CPU_F)*(double)x/1000.0)void clock_init();void keyb_init();void DigitLed_init();void SendData(unsigned char cmd, unsigned char data);static unsigned char LED_CODE=0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0

13、x7B,0x77,0x1F,0x4E,0x3D,0x4F,0x47;unsigned char mKeyValueIndex17 = 0xFF, 0x31, 0x32, 0x33, 0x34, 0x35,0x36, 0x37, 0x38, 0x39, 0x30, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46,;unsigned char KeyValue = 0xFF;unsigned char KeyIndex = 0x00;unsigned char m_nTestStatus = 0xFF;unsigned char addr=0xF1;int main( void ) / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; clock_init

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号