编写如下代码:
/* ========================================
*
* Copyright YOUR COMPANY, THE YEAR
* All Rights Reserved
* UNPUBLISHED, LICENSED SOFTWARE.
*
* CONFIDENTIAL AND PROPRIETARY INFORMATION
* WHICH IS THE PROPERTY OF your company.
*
* ========================================
*/
#include
uint16 AD_Resulit = 0;
uint16 Channel = 0;
float C_to_V = 0.0;
uint8 Flag = 0;
#define ROW_0 0 /* LCD row 0 */
#define COLUMN_0 0 /* LCD column 0 */
#define COLUMN_9 9 /* LCD column 9 */
#define COLUMN_10 10 /* LCD column 10 */
#define COLUMN_11 11 /* LCD column 11 */
/* For clearing Tens and Hundreds place */
#define CLEAR_TENS_HUNDREDS " "
/* For clearing Hundreds place */
#define CLEAR_HUNDREDS " "
void UpdateDisplay (float voltageRawCount,uint16 Channel);
void main()
{
ADC_Start();/*启动AD*/
LCD_Char_1_Start();
Timer_1_Start();
isr_Timer1_Start();
AMux_1_Start();
ADC_Init(); /* 初始化AD */
ADC_Enable(); /*ADC使能*/
ADC_StartConvert(); /*AD开始转换*/
LCD_Char_1_Position(ROW_0,COLUMN_0); /*移动光标到(0,0)处 */
LCD_Char_1_PrintString("V Count: ");
AMux_1_Select(Channel);
CYGlobalIntEnable;
for(;;)
{
if(Flag == 0)
{
Timer_1_Stop() ;
if(ADC_IsEndConversion() == ADC_RETURN_STATUS) /* 判断转换是否结束. */
{
AD_Resulit = ADC_GetResult16();
C_to_V = ADC_CountsTo_Volts(AD_Resulit);
UpdateDisplay(C_to_V, Channel);
Flag = 1;
Timer_1_Start();
Channel++;
if (Channel == 4)
Channel = 0;
AMux_1_Select(Channel);
}
}
}
}
void UpdateDisplay (float voltageRawCount,uint16 Channel)
{
int Integer,Decimal; /*定义两个变量分别存整数部分和小数部分*/
Integer = (int) voltageRawCount;
Decimal = (int) ((voltageRawCount - Integer)*1000)+1; /*分别取出小数部分和小数部分,保留3位小数*1000,两位*100*/
LCD_Char_1_Position(ROW_0,COLUMN_9); /* 移动光标到(0,9) */
LCD_Char_1_PrintNumber(Integer); /* 输出整数部分 */
LCD_Char_1_PrintString("."); /* 输出小数点*/
LCD_Char_1_PrintNumber(Decimal); /*输出小数部分*/
LCD_Char_1_Position(1,0);
LCD_Char_1_PrintString("Channel: ");
LCD_Char_1_PrintNumber(Channel);
}
|