基于MSP430F149的多通道ADC采样与12864显示.docx

上传人:李医生 文档编号:8727829 上传时间:2021-01-05 格式:DOCX 页数:7 大小:70.70KB
返回 下载 相关 举报
基于MSP430F149的多通道ADC采样与12864显示.docx_第1页
第1页 / 共7页
基于MSP430F149的多通道ADC采样与12864显示.docx_第2页
第2页 / 共7页
基于MSP430F149的多通道ADC采样与12864显示.docx_第3页
第3页 / 共7页
基于MSP430F149的多通道ADC采样与12864显示.docx_第4页
第4页 / 共7页
基于MSP430F149的多通道ADC采样与12864显示.docx_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《基于MSP430F149的多通道ADC采样与12864显示.docx》由会员分享,可在线阅读,更多相关《基于MSP430F149的多通道ADC采样与12864显示.docx(7页珍藏版)》请在三一文库上搜索。

1、最新 料推荐/*/ADC12 序列通道与D12864 液晶模块显示程序/*#include #define CPU_F (double)8000000)#define delay_us(x) _delay_cycles(long)(CPU_F*(double)x/1000000.0) #define delay_ms(x) _delay_cycles(long)(CPU_F*(double)x/1000.0) #define uchar unsigned char#define uint unsigned int#define ulong unsigned long/*12864应用指令 */

2、#define CLEAR_SCREEN 0x01/ 清屏指令:清屏且AC 值为 00H#define AC_INIT 0x02/ 将 AC 设置为 00H 。且游标移到原点位置#define CURSE_ADD 0x06/ 设定游标移到方向及图像整体右移,#define FUN_MODE 0x30/ 工作模式: 8 位基本指令集#define DISPLAY_ON 0x0c/ 显示开 ,显示游标,且游标位置反白#define DISPLAY_OFF 0x08/ 显示关#define CURSE_DIR 0x14/ 游标向右移动 :AC=AC+1#define SET_CG_AC 0x40/

3、设置 AC,范围为: 00H3FH#define SET_DD_AC 0x80#define P50 0#define P51 1#define P55 5#define P56 6#define P57 7#define RS_CLR P5OUT &= (1 P55)/RS置低#define RS_SET P5OUT |= (1 P55)/RS置高#define RW_CLR P5OUT &= (1 P56)/RW置低#define RW_SET P5OUT |= (1 P56)/RW 置高#define EN_CLR P5OUT &= (1 P57)/E置低#define EN_SET P

4、5OUT |= (1 P57)/E 置高#define PSB_CLR P5OUT &= (1 P50)/PSB置低,串口方式#define PSB_SET P5OUT |= (1 P50)/PSB置高,并口方式#define RST_CLR P5OUT &= (1 P51)/RST置低#define RST_SET P5OUT |= (1 P51)/RST置高#define DataPortP4OUT/P4 口为数据口uint Results32;/ 存放 ADC 的结果uchar shuzi = 0123456789.V;uchar ptr6;uint Average;uint Temp;

5、ulong caltmp4;/*1最新 料推荐/ 系统时钟初始化 /*void Clock_Init()uchar i;BCSCTL1&=XT2OFF;/ 打开 XT 振荡器BCSCTL2|=SELM1+SELS;/MCLK为 8MHZ , SMCLK 为 8MHZdoIFG1&=OFIFG;/ 清除震荡标志for(i=0;i100;i+)_NOP();/ 延时等待while(IFG1&OFIFG)!=0);/ 如果标志为1,则继续循环等待IFG1&=OFIFG;/*/ MSP430 内部看门狗初始化 /* *void WDT_Init()WDTCTL = WDTPW + WDTHOLD;/

6、关闭看门狗/*/ 初始化 IO 口子程序/*void Port_init()P4SEL = 0x00;P4DIR = 0xFF;P5SEL = 0x00;P5DIR|= BIT0 + BIT1 + BIT5 + BIT6 + BIT7;PSB_SET;/ 液晶并口方式RST_SET;/ 复位脚 RST 置高/*/ 显示屏命令写入函数/*2最新 料推荐void LCD_write_com(unsigned char com)RS_CLR;RW_CLR;EN_SET;DataPort = com;delay_ms(5);EN_CLR;/*/ 显示屏数据写入函数/* void LCD_write_d

7、ata(unsigned char data)RS_SET;RW_CLR;EN_SET;DataPort = data;delay_ms(5);EN_CLR;/*/ 显示屏清空显示/* void LCD_clear(void)LCD_write_com(0x01);delay_ms(5);/*/ 函数名称: DisplayCgrom(uchar hz)显示 CGROM 里的汉字/*void DisplayCgrom(uchar addr,uchar *hz)LCD_write_com(addr);delay_ms(5);while(*hz != 0)LCD_write_data(*hz);hz

8、+;delay_ms(5);/*3最新 料推荐/ 显示屏初始化函数/* void LCD_init(void)LCD_write_com(FUN_MODE);/ 显示模式设置delay_ms(5);LCD_write_com(FUN_MODE);/ 显示模式设置delay_ms(5);LCD_write_com(DISPLAY_ON);/ 显示开delay_ms(5);LCD_write_com(CLEAR_SCREEN);/ 清屏delay_ms(5);/*/*/* 打开 ADC*/void ADC12(void)P6SEL |=0X0f; /使能 ADC 通道ADC12CTL0=ADC12

9、ON+SHT0_15+MSC;/打开 ADC,设置采样时间,多次转换ADC12CTL1=SHP+CONSEQ_3;/使用采样定时器;多通道转换ADC12MCTL0 |=INCH_0;/通道选择ADC12MCTL1 |=INCH_1;ADC12MCTL2 |=INCH_2;ADC12MCTL3 |=INCH_10+EOS;/以 EOS 结束此次转换ADC12IE=0X0F;/使能 ADC 中断ADC12CTL0 |=ENC+ADC12SC;/使能转换 ; 开始转换_EINT();/*ADC 中断服务函数,各个通道转换值的存储*/#pragma vector=ADC_VECTOR_interrup

10、t void ADC12ISR(void)caltmp0=ADC12MEM0;caltmp1=ADC12MEM1;caltmp2=ADC12MEM2;caltmp3=ADC12MEM3;/*void xian_shi(void)4最新 料推荐int i,j,k,l;Temp=(caltmp0*3300)/4095;/计算十进制的电压值ptr0=Temp/1000;ptr2=Temp%1000/100;ptr3=Temp%100/10;ptr4=Temp%10;ptr5=11;ptr1=10;LCD_write_com(0x80);DisplayCgrom(0x80,一通道电压 );for(i=

11、0;i6;i+)delay_ms(10);LCD_write_data(shuziptr);Temp=(caltmp1*3300)/4095;ptr0=Temp/1000;ptr2=Temp%1000/100;ptr3=Temp%100/10;ptr4=Temp%10;ptr5=11;ptr1=10;LCD_write_com(0x90);DisplayCgrom(0x90, 二通道电压 );for(j=0;j6;j+)delay_ms(10);LCD_write_data(shuziptrj);Temp=(caltmp2*3300)/4095;ptr0=Temp/1000;ptr2=Temp

12、%1000/100;ptr3=Temp%100/10;ptr4=Temp%10;ptr5=11;ptr1=10;LCD_write_com(0x88);DisplayCgrom(0x88, 三通道电压 );for(k=0;k6;k+)delay_ms(10);5最新 料推荐LCD_write_data(shuziptrk);Temp=(caltmp3*3300)/4095;ptr0=Temp/1000;ptr2=Temp%1000/100;ptr3=Temp%100/10;ptr4=Temp%10;ptr5=11;ptr1=10;LCD_write_com(0x98);DisplayCgrom(0x98, 四通道电压 );for(l=0;l6;l+)delay_ms(10);LCD_write_data(shuziptrl);/*/ 主程序/* void main(void)WDT_Init();/ 看门狗设置Clock_Init();/ 系统时钟设置Port_init();/ 系统初始化,设置 IO 口属性delay_ms(100);/ 延时 100msLCD_init();/ 液晶参数初始化设置LCD_clear();/ 清屏delay_ms(100);while(1)ADC12();delay_ms(10);xian_shi();6

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1