2014-03-05 61 views
0

我們正在使用此代碼:LCD顯示器 '海峽' 對象不是可調用

# The wiring for the LCD is as follows: 
# 1 : GND 
# 2 : 5V 
# 3 : Contrast (0-5V)* 
# 4 : RS (Register Select) 
# 5 : R/W (Read Write)  - GROUND THIS PIN 
# 6 : Enable or Strobe 
# 7 : Data Bit 0    - NOT USED 
# 8 : Data Bit 1    - NOT USED 
# 9 : Data Bit 2    - NOT USED 
# 10: Data Bit 3    - NOT USED 
# 11: Data Bit 4 
# 12: Data Bit 5 
# 13: Data Bit 6 
# 14: Data Bit 7 
# 15: LCD Backlight +5V** 
# 16: LCD Backlight GND 

#import 
import RPi.GPIO as GPIO 
import time 

# Define GPIO to LCD mapping 
LCD_RS = 7 
LCD_E = 8 
LCD_D4 = 25 
LCD_D5 = 24 
LCD_D6 = 23 
LCD_D7 = 18 

# Define some device constants 
LCD_WIDTH = 16 # Maximum characters per line 
LCD_CHR = True 
LCD_CMD = False 

LCD_LINE_1 = 0x80 # LCD RAM address for the 1st line 
LCD_LINE_2 = 0xC0 # LCD RAM address for the 2nd line 

# Timing constants 
E_PULSE = 0.00005 
E_DELAY = 0.00005 

def main(): 
    # Main program block 

    GPIO.setmode(GPIO.BCM)  # Use BCM GPIO numbers 
    GPIO.setup(LCD_E, GPIO.OUT) # E 
    GPIO.setup(LCD_RS, GPIO.OUT) # RS 
    GPIO.setup(LCD_D4, GPIO.OUT) # DB4 
    GPIO.setup(LCD_D5, GPIO.OUT) # DB5 
    GPIO.setup(LCD_D6, GPIO.OUT) # DB6 
    GPIO.setup(LCD_D7, GPIO.OUT) # DB7 

    # Initialise display 
    lcd_init() 

    # Send some test 
    lcd_byte(LCD_LINE_1, LCD_CMD) 
    lcd_string("Rasbperry Pi") 
    lcd_byte(LCD_LINE_2, LCD_CMD) 
    lcd_string("Model B") 

    time.sleep(3) # 3 second delay 

    # Send some text 
    lcd_byte(LCD_LINE_1, LCD_CMD) 
    lcd_string("Raspberrypi-spy") 
    lcd_byte(LCD_LINE_2, LCD_CMD) 
    lcd_string(".co.uk") 

    time.sleep(20) 

def lcd_init(): 
    # Initialise display 
    lcd_byte(0x33,LCD_CMD) 
    lcd_byte(0x32,LCD_CMD) 
    lcd_byte(0x28,LCD_CMD) 
    lcd_byte(0x0C,LCD_CMD) 
    lcd_byte(0x06,LCD_CMD) 
    lcd_byte(0x01,LCD_CMD) 

def lcd_string(message): 
    # Send string to display 

    message = message.ljust(LCD_WIDTH," ") 

    for i in range(LCD_WIDTH): 
    lcd_byte(ord(message[i]),LCD_CHR) 

def lcd_byte(bits, mode): 
    # Send byte to data pins 
    # bits = data 
    # mode = True for character 
    #  False for command 

    GPIO.output(LCD_RS, mode) # RS 

    # High bits 
    GPIO.output(LCD_D4, False) 
    GPIO.output(LCD_D5, False) 
    GPIO.output(LCD_D6, False) 
    GPIO.output(LCD_D7, False) 
    if bits&0x10==0x10: 
    GPIO.output(LCD_D4, True) 
    if bits&0x20==0x20: 
    GPIO.output(LCD_D5, True) 
    if bits&0x40==0x40: 
    GPIO.output(LCD_D6, True) 
    if bits&0x80==0x80: 
    GPIO.output(LCD_D7, True) 

    # Toggle 'Enable' pin 
    time.sleep(E_DELAY)  
    GPIO.output(LCD_E, True) 
    time.sleep(E_PULSE) 
    GPIO.output(LCD_E, False) 
    time.sleep(E_DELAY)  

    # Low bits 
    GPIO.output(LCD_D4, False) 
    GPIO.output(LCD_D5, False) 
    GPIO.output(LCD_D6, False) 
    GPIO.output(LCD_D7, False) 
    if bits&0x01==0x01: 
    GPIO.output(LCD_D4, True) 
    if bits&0x02==0x02: 
    GPIO.output(LCD_D5, True) 
    if bits&0x04==0x04: 
    GPIO.output(LCD_D6, True) 
    if bits&0x08==0x08: 
    GPIO.output(LCD_D7, True) 

    # Toggle 'Enable' pin 
    time.sleep(E_DELAY)  
    GPIO.output(LCD_E, True) 
    time.sleep(E_PULSE) 
    GPIO.output(LCD_E, False) 
    time.sleep(E_DELAY) 

if __name__ == '__main__': 
    main() 

存在line 102 <module> main main - lcd_string(2Raspberry Pi") line 33

The TypeError: 'str' object is not callable

錯誤,也不能識別message = message.1just(LCD_WIDTH," ")

+0

某處您已將'lcd_string'重新分配爲字符串而不是函數。 (儘管這不在您發佈的代碼中)。找到你所做的並修復它。 – kindall

回答

1

TypeError: 'str' object is not callable手段你試圖做一些等同於此的事情:

"this is a string"() 

既然你不能調用一個字符串,你會得到這個錯誤信息。因爲錯誤提到了lcd_display,這意味着您的代碼中某處已將lcd_display定義爲字符串。

您發佈的代碼不會那麼做,那麼您是不是某些您發佈的代碼會給你這個錯誤?當我剔除GPIO模塊(因爲我的機器上沒有它)時,您的代碼運行良好,並且不會出現您說的錯誤。

+0

謝謝,有一個代碼問題的輕微複製。錯誤現在已消失,但顯示屏上沒有消息... – user3384380

相關問題