打印
[活动专区]

【赛元95F】+6.DIY拓展4:焊接Lcd屏,准备盖2楼啦!

[复制链接]
1714|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
一路向北lm|  楼主 | 2020-3-26 21:15 | 只看该作者
2min后,叮叮叮,屏幕焊接好了,2楼大致出来了,一楼的地基也好了,哈,看成果吧!

       2楼住着小液晶屏幕
      1楼的柱子打好了,可以通电话了哈





使用特权

评论回复
板凳
一路向北lm|  楼主 | 2020-3-26 21:15 | 只看该作者
下面开始拼接,两层小洋楼平地起,我住在里面,远方那个她呢?你在哪?

使用特权

评论回复
地板
一路向北lm|  楼主 | 2020-3-26 21:16 | 只看该作者
驱动测试代码如下:(实现对1602液晶的显示)
//lcd1602.c代码
#include "lcd1602.h"

sbit rs = P2^7;
sbit rw = P2^6;
sbit en = P2^5;
#define  Lcd_Date  P3
/*****************************************************
*函数名称:Lcd1602_Delay(unsigned int c)
*函数功能:lcd1602延时函数
*入口参数:unsigned int c
*出口参数:void
*****************************************************/
void Lcd1602_Delay(unsigned int c)   
{
  unsigned char a,b;
        for (; c>0; c--)
        {
                 for (b=199;b>0;b--)
                    for(a=4;a>0;a--);             
        }
           
}

/*****************************************************
*函数名称:void LcdWriteCom(unsigned char cmd)  
*函数功能:lcd1602写指令函数
*入口参数:unsigned char cmd
*出口参数:void
*****************************************************/
void LcdWriteCom(unsigned char cmd)
{
   rs = 0;
         rw = 0;
         en = 0;
         Lcd_Date = cmd;
         Lcd1602_Delay(1);
         en = 1;
         Lcd1602_Delay(5);
         en = 0;
}
/*****************************************************
*函数名称:void LcdWriteData(unsigned char date)  
*函数功能:lcd1602写数据函数
*入口参数:unsigned char date
*出口参数:void
*****************************************************/
void LcdWriteData(unsigned char date)
{
         rs = 1;
         rw = 0;
         en = 0;
         Lcd_Date = date;
         Lcd1602_Delay(1);
         en = 1;
         Lcd1602_Delay(5);
         en = 0;
}

/*****************************************************
*函数名称:void LcdInit(void)   
*函数功能:lcd1602初始化函数
*入口参数:void
*出口参数:void
*****************************************************/
void LcdInit(void)
{
        LcdWriteCom(0x38);  //开显示
        Lcd1602_Delay(5);
        LcdWriteCom(0x0c);  //不显示光标
        Lcd1602_Delay(5);
        LcdWriteCom(0x06);  //写1个指针加1
        Lcd1602_Delay(5);
        LcdWriteCom(0x01);  //清屏
        Lcd1602_Delay(5);
        LcdWriteCom(0x80);  //设置数据指针起点
        Lcd1602_Delay(5);
}

/*****************************************************
*函数名称:void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)   
*函数功能:按指定位置显示一个字符
*入口参数:unsigned char X, unsigned char Y, unsigned char DData,限制X不能大于15,Y不能大于1
*出口参数:void
*****************************************************/
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
         Y &= 0x1;
         X &= 0xF; //限制X不能大于15,Y不能大于1
         if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
         X |= 0x80; // 算出指令码
         LcdWriteCom(X); //这里不检测忙信号,发送地址码
         LcdWriteData(DData);
}
/*****************************************************
*函数名称:void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
*函数功能:按指定位置显示一个字符串
*入口参数:unsigned char X, unsigned char Y, unsigned char code *DData,限制X不能大于15,Y不能大于1
*出口参数:void
*****************************************************/
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
  unsigned char ListLength;
  ListLength = 0;
  Y &= 0x1;
  X &= 0xF; //限制X不能大于15,Y不能大于1
  while (DData[ListLength]>=0x20) //若到达字串尾则退出
  {
                 if (X <= 0xF) //X坐标应小于0xF
                        {
                         DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
                         ListLength++;
                         X++;
                        }
  }
}


使用特权

评论回复
5
一路向北lm|  楼主 | 2020-3-26 21:17 | 只看该作者
lcd1602.h文件代码
/****************************************************************************/
//lcd1602.h代码
#ifndef _LCD1602_H
#define _LCD1602_H
#include "H/SC95F861x_C.H"
void Lcd1602_Delay(unsigned int c);
void LcdWriteCom(unsigned char cmd);
void LcdWriteData(unsigned char date);
void LcdInit(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
#endif


使用特权

评论回复
6
一路向北lm|  楼主 | 2020-3-26 21:18 | 只看该作者
main.c测试代码
/****************************************************************************/
//main.c测试代码

IO_Init();
Uart_Init(32,9600);
Uart_Send_String("\r\n串口初始化..............OK!\n");
Timer_Init();
Uart_Send_String("定时器初始化..............OK!\n");
LcdInit();
Uart_Send_String("Lcd初始化..............OK!\n");
DisplayListChar(0, 0, "SC 95F8617 Demo!");
DisplayListChar(9, 1, "--21ic");


使用特权

评论回复
7
一路向北lm|  楼主 | 2020-3-26 21:18 | 只看该作者
忙了大半夜,展示一下吧,哈哈哈,完了可以去睡觉了。

使用特权

评论回复
8
knk| | 2020-3-26 22:31 | 只看该作者
这种屏不用SPI驱动实在是太浪费IO了

使用特权

评论回复
9
一路向北lm|  楼主 | 2020-3-27 10:46 | 只看该作者
knk 发表于 2020-3-26 22:31
这种屏不用SPI驱动实在是太浪费IO了

反正IO多的是

使用特权

评论回复
10
一路向北lm|  楼主 | 2020-3-27 11:34 | 只看该作者
knk 发表于 2020-3-26 22:31
这种屏不用SPI驱动实在是太浪费IO了

1602支持SPI吗?可以用四线的啊?你傻了吧

使用特权

评论回复
11
qwe123zxc| | 2020-3-27 20:17 | 只看该作者
真佩服版主啊,一系列作品,而且程序都发出来了,太好了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

274

主题

3760

帖子

75

粉丝