主题中讨论的其他器件:LM35
工具/软件:Code Composer Studio
大家好,我是一名工程学生,在我的最终项目上遇到了问题。我在从111-114行开始运行代码时收到了4个打字错误29个“期待表达式”错误,这些错误是针对 ADC 的。 如果有人可以查看我随附的代码、请告诉我您的想法。
谢谢、
一位非常感谢的工程学生。
CCS 8源代码
#include
#include
#include //驱动程序库
#define UC_PORT P4OUT
#define UC_PORT_DIR P4DIR
#define ADC10CTL0
#define ADC10CTL1
#define ADC10AE0
// LCD 引脚分配
#define LCD_EN BIT2
#define LCD_RS BIT3
#define LCD_DATA BIT4 | BIT5 | BIT6 | BIT7
#define LCD_D0_OFFSET 4 // BIT4上的 D0,所以它是4
#define LCD_MASK LCD_EN | LCD_RS | LCD_DATA
//将 P1.1连接到 LM35温度传感器输出
#define TEMP_IN BIT1
char temperature _string[4];
短路温度= 0;
void lcd_reset ()
{
uC_port = 0x00;
_DELAY_CYCLES (20000);
uC_port =(0x03 << LCD_D0_offset)| LCD_EN;
uC_port &=~LCD_EN;
_delay_cycles (10000);
uC_port =(0x03 << LCD_D0_offset)| LCD_EN;
uC_port &=~LCD_EN;
_DELAY_CYCLES (1000);
uC_port =(0x03 << LCD_D0_offset)| LCD_EN;
uC_port &=~LCD_EN;
_DELAY_CYCLES (1000);
uC_port =(0x02 << LCD_D0_offset)| LCD_EN;
uC_port &=~LCD_EN;
_DELAY_CYCLES (1000);
}
void lcd_cmd (char cmd)
{
//发送上半字节
uC_port =((((cmd >> 4)& 0x0F)<< LCD_D0_offset)| LCD_EN;
uC_port &=~LCD_EN;
//发送低位半字节
uC_port =((cmd & 0x0F)<< LCD_D0_offset)| LCD_EN;
uC_port &=~LCD_EN;
_DELAY_CYCLES (4000);
}
void lcd_data (无符号字符 dat)
{
//发送上半字节
uC_port =((((dat >> 4)和0x0F)<< LCD_D0_offset)| LCD_EN | LCD_RS);
uC_port &=~LCD_EN;
//发送低位半字节
uC_port =(((dat 和0x0F)<< LCD_D0_offset)| LCD_EN | LCD_RS);
uC_port &=~LCD_EN;
__DELAY_CYCLES (4000);//较小的延迟可能会导致缺少字符显示
}
void lcd_init ()
{
uC_PORT_DIR = LCD_MASK; // LCD 连接的输出方向
LCD_RESET(); //调用 LCD 复位
LCD_cmd (0x28); // 4位模式–2行–5×7字体。
LCD_cmd (0x0C); //不显示光标–不闪烁。
LCD_cmd (0x06); //自动递增–无显示移位。
LCD_cmd (0x80); //地址 DDRAM、0偏移80h。
LCD_cmd (0x01); //清除屏幕
}
void display_line (char *行)
{
while (*行)
LCD_DATA (*线++);
}
void display_temperature (char *行、int len)
{
while ((3-len)>0)
LCD_DATA ('');
while (len){
如果(*行)
LCD_DATA (*线++);
}
LCD_DATA (0xDF);//度数符号
LCD_DATA ('C');
}
void initadc (void)
{
//初始化10位 ADC
uC_PORT_DIR &=~TEMP_IN;//传感器输出的输入方向
ADC10CTL0 |= ADC10ON;
ADC10CTL1 |= INCH_1_ADC10SSEL_1_|CONSEQ_1;
ADC10AE0 |= BIT0 | BIT1;
ADC10CTL0 |= ENC|ADC10SC;
}
void setup(){
WDTCTL = WDTPW + WDTHOLD; //停止看门狗计时器
//初始化 LCD
lcd_init();
//初始化 ADC
initadC();
LCD_cmd (0x80);//选择第一行(0x80 + addr)–这里的 addr = 0x00
display_line ('Temp');
LCD_cmd (0xce);//选择第二行(0x80 + addr)–这里的 addr = 0x4e
}
void loop(){
Int A1;
//测量温度
温度=(analogRead (A1)*35)/100;
//显示当前温度
LCD_cmd (0xcb);//选择第二行(0x80 + addr)–这里的 addr = 0x4b
itoa (temperature、temperature _string、10);
display_temperature (temperature _string、3);
__DELAY_CYCLES (50000); // 0.5sec 测量周期
}