LM3S811DDLLXXRR笔记之五.docx
《LM3S811DDLLXXRR笔记之五.docx》由会员分享,可在线阅读,更多相关《LM3S811DDLLXXRR笔记之五.docx(13页珍藏版)》请在冰豆网上搜索。
LM3S811DDLLXXRR笔记之五
LM3S811DDLLXXRR笔记之五:
AD转换5110联合军演
首先:
我先说下这个的难点,这个是两个程序往一起摄,摄不了也得摄,我就用EXTERN哈,也不必费劲的搞H
但这还不算难点,难点是那个带小数点的显示我又搞了两个晚上。
上图哈:
(又是大奔拍地,照像机老忘拿回下次注意)
我先说我的显示是什么
:
thevolateis:
1.6**
因为我采样是1.6伏多点后两位显示什么不一定反证是1.6几,有一次是1.663好象来这
不费话了上图先
Picture084_096月11.jpg(63.53KB)
2011-6-919:
33
Picture083_096月11.jpg(61.19KB)
2011-6-919:
33
my5110ADC.JPG(145.27KB)
2011-6-919:
33
上程序:
5110部分
#include
#include"english_6x8_pixel.h"
#include"DriverLCD_Nokia5110.h"
#include"gpio.h"
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
#definetrue1
#defineflase0
/*-----------------------------------------------------------------------
LCD_init :
3310LCD初始化
编写日期 :
2004-8-10
最后修改日期 :
2004-8-10
-----------------------------------------------------------------------*/
#defineLCD_DCGPIO_PIN_0 // PA
#defineLCD_RSTGPIO_PIN_7
#defineLCD_SCLKGPIO_PIN_1 //PA时钟信号
#defineLCD_SDINGPIO_PIN_6 //数据输入
#defineLCD_CEGPIO_PIN_5 //
#definec_Lcd_Max_x84
#definec_Lcd_Max_y6 //以字节为单位
#definec_LCD_Max_Dot_X84
#definec_LCD_Max_Dot_Y48
#defineCOM 0 //指令
#defineDAT 1 //数据
//-------------------
#defineSTR 1 //字符
#defineHAN 2 //汉字
//--------------------------LPH7366指令集---------------------------
#defineNokia5110_basic_fun_set 0x20//基本功能设置
#defineNokia5110_expand_fun_set0x21//扩展功能设置
// D7 D6 D5 D4 D3 D2 D1 D0
// 0 0 1 0 0 PD V H
// | | |_______1->扩展指令集 0->基本指令集
// | |___________1->垂直寻址 0->水平寻址
// |_______________1->低功耗模式 0->正常模式
//-------------------------------------------------------------------
//基本指令集
#defineNokia5110_dis_set 0x0c//显示模式设置
#defineNokia5110_DispMode_AllLightOff0x08
#defineNokia5110_DispMode_AllLightOn0x09
#defineNokia5110_DispMode_Reverse0x0d
// D7 D6 D5 D4 D3 D2 D1 D0
// 0 0 0 0 1 D 0 E
// | |_______0 0 1 1
// |_______________0 1 0 1
// 白屏正常显示全显反转
//-------------------------------------------------------------------
#defineNokia5110_add_Yset 0x40//设置Y地址
// D7 D6 D5 D4 D3 D2 D1 D0
// 0 1 0 0 0 Y1 Y2 Y3
//-------------------------------------------------------------------
#defineNokia5110_add_Xset 0x80//设置X地址
// D7 D6 D5 D4 D3 D2 D1 D0
// 0 1 X6 X5 X4 X3 X2 X1
//-------------------------------------------------------------------
//扩展指令集
#defineNokia5110_tem_set 0x06 //温度系数设置
// D7 D6 D5 D4 D3 D2 D1 D0
// 0 0 0 0 0 1 TC1 TC0
//-------------------------------------------------------------------
#defineNokia5110_vot_set 0xBF //电压系数设置 0xD7
// D7 D6 D5 D4 D3 D2 D1 D0
// 1 vo6vo5vo4vo3vo2vo1vo0
//-------------------------------------------------------------------
//voidDelay_1uS(void);
voiddelay_1us(void) //1us延时函数
{
unsignedinti;
for(i=0;i<1;i++);
}
//1msDelayfunction
voidDelay(uintuiDelayCount)
{
uintuiTempCount;
uintuci;
for(uiTempCount=0;uiTempCount {
uci=1000;
while(uci--)
{
delay_1us();
}
}
}
/*-----------------------------------------------------------------------
LCD_write_byte :
使用SPI接口写数据到LCD
输入参数:
data :
写入的数据;
command:
写数据/命令选择;
编写日期 :
2004-8-10
最后修改日期 :
2004-8-13
-----------------------------------------------------------------------*/
voidLCD_write_CMD(unsignedcharucWriteData)
{
unsignedcharuci;
GPIOPinWrite(GPIO_PORTC_BASE,LCD_CE,~LCD_CE);
GPIOPinWrite(GPIO_PORTA_BASE,LCD_DC,~LCD_DC);
for(uci=0;uci<8;uci++)
{
if(ucWriteData&0x80)
{
GPIOPinWrite(GPIO_PORTC_BASE,LCD_SDIN,LCD_SDIN);
}
else
{
GPIOPinWrite(GPIO_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-10
最后修改日期 :
2004-8-13
-----------------------------------------------------------------------*/
voidLCD_write_Data(unsignedcharucWriteData)
{
unsignedcharuci;
GPIOPinWrite(GPIO_PORTC_BASE,LCD_CE,~LCD_CE);
GPIOPinWrite(GPIO_PORTA_BASE,LCD_DC,LCD_DC);
for(uci=0;uci<8;uci++)
{
if(ucWriteData&0x80)
{
GPIOPinWrite(GPIO_PORTC_BASE,LCD_SDIN,LCD_SDIN);
}
else
{
GPIOPinWrite(GPIO_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);
}
GPIOPinWrite(GPIO_PORTC_BASE,LCD_CE,LCD_CE);
}
/*-----------------------------------------------------------------------
LCD_set_XY :
设置LCD坐标函数
输入参数:
X -83
Y :
0-5
编写日期 :
2004-8-10
最后修改日期 :
2004-8-10
-----------------------------------------------------------------------*/
voidLCD_set_XY(unsignedcharX,unsignedcharY)
{
LCD_write_CMD(0x40|(Y&0X07)); //column
LCD_write_CMD(0x80|(X&0X7F)); //row
}
/*-----------------------------------------------------------------------
LCD_clear :
LCD清屏函数
-----------------------------------------------------------------------*/
voidLCD_Clear(void)
{
uintuii;
LCD_set_XY(0,0);
for(uii=0;uii {
LCD_write_Data(0x00);
}
}
voidLCD_Init(void)
{
GPIOPinWrite(GPIO_PORTC_BASE,LCD_CE,~LCD_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_Clear(); //清屏
LCD_write_CMD(0x0c); //设定显示模式,正常显示
GPIOPinWrite(GPIO_PORTC_BASE,LCD_CE,LCD_CE);
}
/*-----------------------------------------------------------------------
LCD_write_char :
显示英文字符
输入参数:
c :
显示的字符;
编写日期 :
2004-8-10
最后修改日期 :
2004-8-10
-----------------------------------------------------------------------*/
voidLCD_write_char(unsignedcharc)
{
unsignedcharline;
c-=32;
for(line=0;line<6;line++)
{
LCD_write_Data(font6x8[c][line]);
}
}
/*-----------------------------------------------------------------------
LCD_write_english_String :
英文字符串显示函数
输入参数:
*s :
英文字符串指针;
X、Y :
显示字符串的位置,x0-83,y0-5
编写日期 :
2004-8-10
最后修改日期 :
2004-8-10
-----------------------------------------------------------------------*/
voidLCD_write_english_string(unsignedcharX,unsignedcharY,char*s)
{
LCD_set_XY(X,Y);
while(*s)
{
LCD_write_char(*s);
s++;
}
}
voidTestLCD_Nokia5110(void)
{
LCD_Init();//初始化液晶
LCD_Clear();
while
(1)
{
LCD_write_english_string(0,0,"NOKIA5110LCD");
Delay(100);
LCD_write_english_string(0,2,"Designedby:
");
Delay(100);
LCD_write_english_string(0,3," DDLLXXRR");
Delay(100);
LCD_write_english_string(0,5,"VeryGood!
");
Delay(1000);
LCD_Clear();
Delay(100);
}
}
voidinit(void)
{
//SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_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
#include
#include
#include
#defineADCSequEnableADCSequenceEnable
#defineADCSequDisableADCSequenceDisable
#defineADCSequConfigADCSequenceConfigure
#defineADCSequStepConfigADCSequenceStepConfigure
#defineADCSequDataGetADCSequenceDataGet
tBooleanADC_EndFlag=false;//定义ADC转换结束的标志
externvoidinit(void);
externvoidLCD_Init(void);
externvoidLCD_write_english_string(unsignedcharX,unsignedcharY,char*s);
unsignedlongulVal;
// 防止JTAG失效
voidjtagWait(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); // 使能KEY所在的GPIO端口
GPIOPinTypeGPIOInput(GPIO_PORTC_BASE,GPIO_PIN_4); // 设置KEY所在管脚为输入
if(GPIOPinRead(GPIO_PORTC_BASE,GPIO_PIN_4)==0x00) // 若复位时按下KEY,则进入
{
while
(1); // 死循环,以等待JTAG连接
}
SysCtlPeripheralDisable(SYSCTL_PERIPH_GPIOC); // 禁止KEY所在的GPIO端口
}
//ADC初始化
voidadcInit(void)
{
SysCtlLDOSet(SYSCTL_LDO_2_75V); //配置PLL前需将LDO电压设置为2.75V
SysCtlClockSet(SYSCTL_USE_PLL| //系统时钟设置,采用PLL
SYSCTL_OSC_MAIN| //主振荡器
SYSCTL_XTAL_6MHZ| //外接6MHz晶振
SYSCTL_SYSDIV_4); //分频结果为50MHz
SysCtlPeripheralEnable(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(