目前共有3篇帖子。 內容轉換:不轉換▼
 
點擊 回復
404 2
今天,我又把课本上的Insert Str的程序移植到了单片机的1602液晶上
一派護法 十九級
1樓 發表于:2015-12-2 11:25
程序(部分):
#include <reg51.h>
#include "lcd.h"

#define LCD1602_WriteCom(c) LcdWriteCom(c)
#define LCD1602_PutChar(c) LcdWriteData(c)
#define LCD1602_Init() LcdInit()

void LCD1602_Goto(unsigned char x, unsigned char y)
{
    LCD1602_WriteCom(0x80 + 0x40 * y + x);
}

void LCD1602_Puts(char* str)
{
    for (; *str != '\0'; str++)
        LCD1602_PutChar(*str);
}

unsigned char strlen(char *str)
{
    unsigned char len = 0;
    for (; *str != '\0'; str++, len++);
    return len;
}

void insert(char *s1, char *s2)
{
    unsigned char f = 0;
    unsigned char len1 = strlen(s1);
    unsigned char len2 = strlen(s2);
    char *p1 = s1;
    char *p2 = s1 + len1 - 1;
    while (*p1 != '\0' && *p1 != *s2)
        p1++;
    if (*p1 != '\0')
    {
        for (; p2 > p1; p2--)
            *(p2 + len2 - 1) = *p2;
        f = 1;
    }
    while (*s2)
        *p1++ = *s2++;
    *(s1 + len1 + len2 - f) = '\0';
}

void main()
{
    char s1[50] = "abcdef";
    char *s2 = "d45";
   
    LCD1602_Init();
    LCD1602_Goto(0, 0);
    LCD1602_Puts(s1);
    LCD1602_Puts(",");
    LCD1602_Puts(s2);
    LCD1602_PutChar(':');
   
    insert(s1, s2);
    LCD1602_Goto(0, 1);
    LCD1602_Puts(s1);
    while (1);
}

运行效果:

一派護法 十九級
2樓 發表于:2015-12-2 11:26
这次移植,可以直接完全照抄书上的void insert(char *s1, char *s2)函数的代码,一点也不需要改动。因为单片机也是用的C语言。
一派護法 十九級
3樓 發表于:2015-12-2 17:17
结构体的使用:
typedef struct {
    unsigned char x;
    unsigned char y;
    char *str;
} LCDText;

void LCD1602_Put(LCDText *text)
{
    LCD1602_Goto(text->x, text->y);
    LCD1602_Puts(text->str);
}

void main()
{
    char s1[50] = "abcdef";
    char *s2 = "d45";
    LCDText text;
   
    LCD1602_Init();
    LCD1602_Goto(0, 0);
    LCD1602_Puts(s1);
    LCD1602_PutChar(',');
    LCD1602_Puts(s2);
    LCD1602_PutChar(':');
   
    insert(s1, s2);
    text.x = 0;
    text.y = 1;
    text.str = s1;
    LCD1602_Put(&text);
    while (1);
}

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:404 回複數:2
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2015-12-2 17:17
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用共享創意姓名標示-相同方式分享 3.0 Unported許可協議進行許可。