1、LM3S811DDLLXXRR笔记之五LM3S811DDLLXXRR笔记之五:AD转换5110联合军演首先:我先说下这个的难点,这个是两个程序往一起摄,摄不了也得摄,我就用EXTERN哈,也不必费劲的搞H但这还不算难点,难点是那个带小数点的显示我又搞了两个晚上。上图哈:(又是大奔拍地,照像机老忘拿回下次注意)我先说我的显示是什么:the volate is:1.6*因为我采样是1.6伏多点后两位显示什么不一定反证是1.6几,有一次是1.663好象来这不费话了上图先Picture084_096月11.jpg (63.53 KB)2011-6-9 19:33Picture083_096月11.jp
2、g (61.19 KB)2011-6-9 19:33my5110ADC.JPG (145.27 KB)2011-6-9 19:33上程序:5110部分#include #include english_6x8_pixel.h#include DriverLCD_Nokia5110.h#include gpio.h#define uchar unsigned char#define uint unsigned int#define ulong unsigned long#define true 1#define flase 0/*-LCD_init : 3310LCD初始化编写日期 :2004-
3、8-10 最后修改日期 :2004-8-10 -*/#define LCD_DC GPIO_PIN_0/ PA#define LCD_RST GPIO_PIN_7#define LCD_SCLK GPIO_PIN_1 /PA时钟信号#define LCD_SDIN GPIO_PIN_6 /数据输入#define LCD_CE GPIO_PIN_5/#define c_Lcd_Max_x 84#define c_Lcd_Max_y 6/以字节为单位#define c_LCD_Max_Dot_X 84#define c_LCD_Max_Dot_Y 48#define COM 0 /指令#defin
4、e DAT 1 /数据/-#define STR 1 /字符#define HAN 2 /汉字/-LPH7366指令集-#define Nokia5110_basic_fun_set 0x20 /基本功能设置 #define Nokia5110_expand_fun_set 0x21 /扩展功能设置/ D7 D6 D5 D4 D3 D2 D1 D0/ 0 0 1 0 0 PD V H/ | | |_1-扩展指令集 0-基本指令集/ | |_1-垂直寻址 0-水平寻址 / |_1-低功耗模式 0-正常模式/-/基本指令集#define Nokia5110_dis_set 0x0c/显示模式设置#
5、define Nokia5110_DispMode_AllLightOff 0x08#define Nokia5110_DispMode_AllLightOn 0x09#define Nokia5110_DispMode_Reverse 0x0d/ D7 D6 D5 D4 D3 D2 D1 D0/ 0 0 0 0 1 D 0 E/ | |_0 0 1 1/ |_0 1 0 1/ 白屏 正常显示 全显 反转/-#define Nokia5110_add_Yset 0x40 /设置Y地址 / D7 D6 D5 D4 D3 D2 D1 D0/ 0 1 0 0 0 Y1 Y2 Y3/-#define
6、Nokia5110_add_Xset 0x80 /设置X地址 / D7 D6 D5 D4 D3 D2 D1 D0/ 0 1 X6 X5 X4 X3 X2 X1/-/扩展指令集#define Nokia5110_tem_set 0x06 /温度系数设置/ D7 D6 D5 D4 D3 D2 D1 D0/ 0 0 0 0 0 1 TC1 TC0/-#define Nokia5110_vot_set 0xBF /电压系数设置 0xD7/ D7 D6 D5 D4 D3 D2 D1 D0/ 1 vo6 vo5 vo4 vo3 vo2 vo1 vo0 /-/void Delay_1uS(void);voi
7、d delay_1us(void) /1us延时函数 unsigned int i; for(i=0;i1;i+); /1ms Delayfunctionvoid Delay(uint uiDelayCount)uint uiTempCount;uint uci;for(uiTempCount=0; uiTempCountuiDelayCount; uiTempCount+)uci = 1000;while(uci-)delay_1us(); /*-LCD_write_byte : 使用SPI接口写数据到LCD输入参数:data :写入的数据; command :写数据/命令选择;编写日期 :
8、2004-8-10 最后修改日期 :2004-8-13 -*/void LCD_write_CMD(unsigned char ucWriteData) unsigned char uci; GPIOPinWrite(GPIO_PORTC_BASE, LCD_CE,LCD_CE);GPIOPinWrite(GPIO_PORTA_BASE, LCD_DC,LCD_DC);for(uci=0;uci8;uci+)if(ucWriteData & 0x80)GPIOPinWrite(GPIO_PORTC_BASE, LCD_SDIN,LCD_SDIN); elseGPIOPinWrite(GPIO_
9、PORTC_BASE, LCD_SDIN,LCD_SDIN); GPIOPinWrite(GPIO_PORTA_BASE, LCD_SCLK,LCD_SCLK);ucWriteData = ucWriteData 1;GPIOPinWrite(GPIO_PORTA_BASE, LCD_SCLK,LCD_SCLK); /LCD_CE = 1;GPIOPinWrite(GPIO_PORTC_BASE, LCD_CE,LCD_CE);/*-LCD_write_byte : 使用SPI接口写数据到LCD输入参数:data :写入的数据; command :写数据/命令选择;编写日期 :2004-8-1
10、0 最后修改日期 :2004-8-13 -*/void LCD_write_Data(unsigned char ucWriteData) unsigned char uci; GPIOPinWrite(GPIO_PORTC_BASE, LCD_CE,LCD_CE);GPIOPinWrite(GPIO_PORTA_BASE, LCD_DC,LCD_DC);for(uci=0;uci8;uci+)if(ucWriteData & 0x80)GPIOPinWrite(GPIO_PORTC_BASE, LCD_SDIN,LCD_SDIN); elseGPIOPinWrite(GPIO_PORTC_B
11、ASE, LCD_SDIN,LCD_SDIN); GPIOPinWrite(GPIO_PORTA_BASE, LCD_SCLK,LCD_SCLK);ucWriteData = ucWriteData 1;GPIOPinWrite(GPIO_PORTA_BASE, LCD_SCLK,LCD_SCLK);GPIOPinWrite(GPIO_PORTC_BASE, LCD_CE,LCD_CE);/*-LCD_set_XY : 设置LCD坐标函数输入参数:X -83 Y :05编写日期 :2004-8-10 最后修改日期 :2004-8-10 -*/void LCD_set_XY(unsigned c
12、har X, unsigned char Y) LCD_write_CMD(0x40 | (Y & 0X07);/ column LCD_write_CMD(0x80 | (X & 0X7F); / row/*-LCD_clear : LCD清屏函数-*/void LCD_Clear(void)uint uii;LCD_set_XY(0,0);for(uii=0; uiic_Lcd_Max_x * c_Lcd_Max_y; uii+)LCD_write_Data(0x00);void LCD_Init(void) GPIOPinWrite(GPIO_PORTC_BASE, LCD_CE,LCD
13、_CE); GPIOPinWrite(GPIO_PORTC_BASE, LCD_RST,LCD_RST);delay_1us(); GPIOPinWrite(GPIO_PORTC_BASE, LCD_RST,LCD_RST); delay_1us(); delay_1us(); LCD_write_CMD(0x21);/ 使用扩展命令设置LCD模式 LCD_write_CMD(Nokia5110_vot_set); LCD_write_CMD(0x06);/ 温度校正 LCD_write_CMD(0x13);/ 1:48 LCD_write_CMD(0x20);/ 使用基本命令 LCD_Cle
14、ar(); / 清屏 LCD_write_CMD(0x0c);/ 设定显示模式,正常显示 GPIOPinWrite(GPIO_PORTC_BASE, LCD_CE,LCD_CE); /*-LCD_write_char : 显示英文字符输入参数:c :显示的字符;编写日期 :2004-8-10 最后修改日期 :2004-8-10 -*/void LCD_write_char(unsigned char c) unsigned char line; c -= 32; for (line=0; line6; line+) LCD_write_Data(font6x8cline); /*-LCD_wr
15、ite_english_String : 英文字符串显示函数输入参数:*s :英文字符串指针; X、Y : 显示字符串的位置,x 0-83 ,y 0-5编写日期 :2004-8-10 最后修改日期 :2004-8-10 -*/void LCD_write_english_string(unsigned char X,unsigned char Y,char *s) LCD_set_XY(X,Y); while (*s) LCD_write_char(*s); s+; void TestLCD_Nokia5110(void)LCD_Init(); /初始化液晶 LCD_Clear(); whil
16、e(1) LCD_write_english_string(0,0,NOKIA 5110 LCD);Delay(100);LCD_write_english_string(0,2,Designed by :);Delay(100);LCD_write_english_string(0,3, DDLLXXRR );Delay(100);LCD_write_english_string(0,5, Very Good!);Delay(1000);LCD_Clear();Delay(100);void init(void) /SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCT
17、L_USE_OSC | SYSCTL_OSC_MAIN | / SYSCTL_XTAL_6MHZ); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 );GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);ADC部分:#include #inc
18、lude #include #include #define ADCSequEnable ADCSequenceEnable#define ADCSequDisable ADCSequenceDisable#define ADCSequConfig ADCSequenceConfigure#define ADCSequStepConfig ADCSequenceStepConfigure#define ADCSequDataGet ADCSequenceDataGettBoolean ADC_EndFlag = false; / 定义ADC转换结束的标志extern void init(voi
19、d);extern void LCD_Init(void);extern void LCD_write_english_string(unsigned char X,unsigned char Y,char *s);unsigned long ulVal;/ 防止JTAG失效void jtagWait(void)SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); / 使能KEY所在的GPIO端口GPIOPinTypeGPIOInput(GPIO_PORTC_BASE,GPIO_PIN_4); / 设置KEY所在管脚为输入if (GPIOPinRead(GP
20、IO_PORTC_BASE,GPIO_PIN_4) = 0x00) / 若复位时按下KEY,则进入 while(1); / 死循环,以等待JTAG连接 SysCtlPeripheralDisable(SYSCTL_PERIPH_GPIOC); / 禁止KEY所在的GPIO端口/ ADC初始化void adcInit(void)SysCtlLDOSet(SYSCTL_LDO_2_75V); /配置PLL前需将LDO电压设置为2.75V SysCtlClockSet(SYSCTL_USE_PLL | / 系统时钟设置,采用PLL SYSCTL_OSC_MAIN | / 主振荡器 SYSCTL_XT
21、AL_6MHZ | / 外接6MHz晶振 SYSCTL_SYSDIV_4); / 分频结果为50MHzSysCtlPeripheralEnable(SYSCTL_PERIPH_ADC); / 使能ADC模块SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS); / 设置ADC采样速率ADCSequDisable(ADC_BASE, 0); / 配置前先禁止采样序列/ 采样序列配置:ADC基址,采样序列编号,触发事件,采样优先级ADCSequConfig(ADC_BASE, 0, ADC_TRIGGER_PROCESSOR, 0);/ 采样步进设置:ADC基址,采样序列编号,步值,通道设置ADCSequStepConfig(ADC_BASE, 0, 0, ADC_CTL_CH0 |ADC_CTL_END |ADC_CTL_IE);ADCIntEnable(ADC_BASE, 0); / 使能ADC中断IntEnable(INT_ADC0); / 使能ADC采样序列中断IntMasterEnable(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1