TM4C123GH6PM 驱动 LCD模块显示 ADC采样 数值

使用的 LCD模块 和 TM4C123GH6PM 单片机如下:


【以下所有步骤都是基于一个可以编译通过的工程进行的,不管main.c里面是什么程序,只要编译可以通过就可以。】

首先想要驱动AY-MSE-Kit套件中的LCD模块并显示我们需要三个LCD驱动文件


可以在这个链接下载这三个文件LCD驱动文件

下载完成后将这个三个文件粘贴到你的工程目录下,如下图所示:


同样在CCS中也可以看到,这几个文件已经添加到了工程中:


然后,打开main.c文件,将下面程序粘贴到main.c中:

#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/sysctl.h"
#include "driverlib/adc.h"
#include "LCDDriver.h"

unsigned char TempAvg[4]={0};
unsigned char TempValueC[2]={0};
unsigned char TempValueF[2]={0};
unsigned char number = '0';
uint32_t ui32TempAvg;
uint32_t ui32TempValueC;
uint32_t ui32TempValueF;

int main(void)
{
	uint32_t ui32ADC0Value[4];
	SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
	ADCSequenceConfigure(ADC0_BASE, 1, ADC_TRIGGER_PROCESSOR, 0);
	ADCSequenceStepConfigure(ADC0_BASE, 1, 0, ADC_CTL_TS);
	ADCSequenceStepConfigure(ADC0_BASE, 1, 1, ADC_CTL_TS);
	ADCSequenceStepConfigure(ADC0_BASE, 1, 2, ADC_CTL_TS);
	ADCSequenceStepConfigure(ADC0_BASE,1,3,ADC_CTL_TS|ADC_CTL_IE|ADC_CTL_END);
	ADCSequenceEnable(ADC0_BASE, 1);
	// 使能LCD
	LCD_Enable();
	// 初始化LCD
	LCD_Init();
	// 清屏
	LCD_ScreenClr();
	while(1)
	{
		ADCIntClear(ADC0_BASE, 1);
		ADCProcessorTrigger(ADC0_BASE, 1);
		while(!ADCIntStatus(ADC0_BASE, 1, false))
		{
		}
		ADCSequenceDataGet(ADC0_BASE, 1, ui32ADC0Value);
		ui32TempAvg = (ui32ADC0Value[0] + ui32ADC0Value[1] + ui32ADC0Value[2] + ui32ADC0Value[3] + 2)/4;
		ui32TempValueC = (1475 - ((2475 * ui32TempAvg)) / 4096)/10;
		ui32TempValueF = ((ui32TempValueC * 9) + 160) / 5;

		TempAvg[0]=ui32TempAvg/1000;
		ui32TempAvg=ui32TempAvg-TempAvg[0]*1000;
		TempAvg[1]=ui32TempAvg/100;
		ui32TempAvg=ui32TempAvg-TempAvg[1]*100;
		TempAvg[2]=ui32TempAvg/10;
		TempAvg[3]=ui32TempAvg%10;
		LCD_Draw_Char(number + TempAvg[0], 1,0);
		LCD_Draw_Char(number + TempAvg[1], 1,8);
		LCD_Draw_Char(number + TempAvg[2], 1,16);
		LCD_Draw_Char(number + TempAvg[3], 1,24);
		TempValueC[0]=ui32TempValueC/10;
		TempValueC[1]=ui32TempValueC%10;
		LCD_Draw_Char(number + TempValueC[0], 2,0);
		LCD_Draw_Char(number + TempValueC[1], 2,8);
		TempValueF[0]=ui32TempValueF/10;
		TempValueF[1]=ui32TempValueF%10;
		LCD_Draw_Char(number + TempValueF[0], 3,0);
		LCD_Draw_Char(number + TempValueF[1], 3,8);
	}
}

随后点击编译,但是可能会报错,显示信息如下:



这个报错具体的解决方案参考我的另一篇博客点击打开链接


CCS Project Properties -> CCS Build -> ARM Compiler -> Advanced Options -> Predefined symbols添加完成后,再次进行编译,就不会再报错了~~~

随后将程序下载到单片机中,就能在LCD模块上显示出ADC采样得到的温度值了!

猜你喜欢

转载自blog.csdn.net/sunshinefcx/article/details/80636184