65.9K
CodeProject 正在变化。 阅读更多。
Home

带 USB Toolstick c8051 的 LCD

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.06/5 (17投票s)

2009年2月27日

CPOL

2分钟阅读

viewsIcon

56065

downloadIcon

1888

带 USB Toolstick c8051 的 LCD

引言

这是一个LCD (MC20E2D-SYL) 8位2x20 LCD模块,使用Silabs 'toolstick dauther (F330)',并更新了新的固件(在'timer.zip'中 - LCD控制器)和'调试适配器(F321)'(也称为'toolstick EK')制作的单元。

IMG005s.JPG

原型

usbio.JPG

通过它,你可以通过USB调试适配器发送文本到显示屏。

原型板
要使用'usbhidio',你必须更新'调试适配器'的固件
Toolstick --实际上在下载部分顶部的固件中被称为'调试适配器'。
(要更新,请使用'toolstick base adapter')。
在桌面上,运行usbhidio2.exe (VB6)并在屏幕上输入文本。确保波特率为9600,你就可以准备好了。

软件可以修改并在供电的情况下独立运行。
连接关系可以在此页面上看到:http://www.8051projects.net/lcd-interfacing/introduction.php

lcdpins.jpg

我这样做的

<------------------ 'Toolstick F330'-----------------> <---显示屏--->
P1.0 to P1.7 P0.6 P0.7 P0.4(TX) P0.5(RX) VDD(3V) GRD&RW 5V
^ ^ ^ ^ ? ^ ^ ^ ^
DB0 to DB7 EN RS RX(25) TX(26) PIN6 GRD USB

<--------显示屏-------> <------------- 'Debug adapter F321'------------>

要调整背景,请替换LCD上GRD和VEE(PIN3)之间的1.5K电阻。
另外,LCD输入端RW(PIN5)连接到GRD。
请参阅下面的图片了解连接方式

Click to enlarge image

这是一个非常小且精确的工作 - 因此如果无法焊接,就不要费心了。

背景

请查看之前的文章基于计数器的c8051和CodeProject文章使用并行端口的LCD
请查看下一篇文章使用c8051的USB IR

Using the Code

在桌面应用程序中,只需在文本框中按Enter键即可在LCD上显示数据 - 对于那些对代码感兴趣的人 - 这是主例程

void main (void)
{
    uchar i;
    uchar j;
    uchar dummy;
    PCA0MD &= ~0x40; 		// Clear watchdog timer enable
    Timer0_Init (); 		// Initialize the Timer0
    Port_Init (); 			// Init Ports
    //SYSCLK_Init (); 		// Initialize Oscillator
    UART0_Init();
    EA = TRUE; 			// Enable global interrupts
    LED=0;
    LCD_RS = 0;
    LCD_RW = 0;
    TimerStart( SYS_TIMER, 500 ); 	// wait for display to wake up
    while( !TimerReady( SYS_TIMER ));
    LCD_init();
    LCD_Home();
    LCD_sendstring("Start");
    /*
    move_to_specific(2, 1);
    LCD_sendstring("LCD second string");
    TimerStart( SYS_TIMER, 1000 ); 	// wait for display to wake up
    while( !TimerReady( SYS_TIMER ));
    LCD_Home();
    LCD_sendstring("UART");
    */
    while(1)
    {
        if(TX_Ready == 1 && UART_Buffer_Size != 0 && Byte == 13)
        {
            LCD_Clear();
            j=0;
           //--------------
           for(i = 0; i < (UART_Buffer_Size - 1); i++ ){ // Initialize software timers.
               if(j>19)
               {    //line full 
                    move_to_specific(2, 1);
                    j -= 20; } LCD_senddata(UART_Buffer[i]); j++;
               }
               //--------------
               TX_Ready = 0; 	// Set the flag to zero
               TI0 = 1; 		// Set transmit flag to 1
         }
    } 				// Loop forever
} 

关注点

互联网上有大量的示例,但很难找到一篇关于通过USB显示文本并使用像MC20E2D-SYL这样的8位LCD的文章。

历史

  • 2009年2月27日:初始发布
  • 2009年3月19日:文章已更新
© . All rights reserved.