OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 472|回复: 1

中颖SH88F4051A单片机驱动TM1621D 没反应

[复制链接]

  离线 

3

主题

8

帖子

0

精华

新手入门

积分
38
金钱
38
注册时间
2017-7-20
在线时间
4 小时
发表于 2017-7-20 09:17:27 | 显示全部楼层 |阅读模式
正点原子公众号
本帖最后由 baoeraiqingcai 于 2017-7-20 09:22 编辑

#include<sh88f4051.h>
#include "intrins.h"
                                         //包含nop指令头文件
#define uchar unsigned char                                 //数据类型宏定义
#define uint unsigned int                                 //数据类型宏定义

#define nop _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //宏定义


/******************TM1621模块命令定义*********************/
#define SYSDIS   0x00         //关系统振荡器和LCD偏压发生器        
#define SYSEN    0x02    //打开系统振荡器        

#define LCDOFF   0x04     //关LCD偏压
#define LCDON    0x06     //开LCD偏压

#define TONEON   0x12     //打开声音输出
#define TONEOFF  0x10     //关闭声音输出

#define XTAL     0x28     //外部接晶振                                                                 
#define RC       0x30     //内部RC振荡        

#define BIAS     0x52     //1/3偏压 4公共口        

#define WDTDIS   0x0a     //禁止看门狗
#define WDTEN    0x0e     //开启看门狗

/********************定义控制端口**********************/
sbit CS=P3^7;
//sbit READ=P2^7;
sbit WRITE=P1^0;
sbit DATA=P1^1;

/********************定义数据*************************/
uchar code Smg[16]={0xeb,0x60,0xc7,0xE5,0x6C,0xAD,0xaf,0xE0,0xef,0xed,0xee,0x2f,0x8b,0x67,0x8f,0x8e};  //0~F字型码
uchar code Tab0[16]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //清屏


/********************延时函数*************************/
void delay_nms(uint n)
{
   uint i;
   while(n--)
   for(i=0;i<500;i++);
}

/********************从高位写入数据*****************/
void Write_Data_H(uchar Data, uchar Cnt)           //Data的高cnt位写入TM1621,高位在前
{
     uchar i;
     for(i=0;i<Cnt;i++)
     {
      WRITE=0;
      if(Data&0x80)                                  //从最高位发送,Data第8位为1
        DATA=1;               
      else
        DATA=0;
      nop;
      nop;
      WRITE=1;
      Data<<=1;
     }
     WRITE=0;
     DATA=0;
}

/********************从低位写入数据*************************/
void Write_Data_L(uchar Data,uchar Cnt)        //Data 的低cnt位写入TM1621,低位在前
{
     unsigned char i;
     for(i=0;i<Cnt;i++)
     {
       WRITE=0;
       if(Data&0x01)                                //从低位发送
         DATA=1;  
       else
         DATA=0;
        nop;
        nop;
        WRITE=1;
        Data>>=1;
     }
     WRITE=0;
     DATA=0;
}

/********************写入控制命令*************************/
void WriteCmd(uchar Cmd)
{
     CS=0;
     nop;
     Write_Data_H(0x80,4);     //写入命令标志100
     Write_Data_H(Cmd,8);      //写入命令数据
     CS=1;
     nop;
}

/*********指定地址写入数据,实际写入后4位*****************/
/*void WriteOneData(uchar Addr, uchar Data)
{
     CS=0;
     Write_Data_H(0xa0,3);     //写入数据标志101
     Write_Data_H(Addr<<2,6);  //写入地址数据
     Write_Data_L(Data,4);     //写入数据
     CS=1;
     nop;
}*/

/*********连续写入方式,每次数据为8位,写入数据************/
void WriteAllData(uchar Addr,uchar *p,uchar cnt)
{
     uchar i;
     CS=0;
     Write_Data_H(0xa0,3);      //写入数据标志101
     Write_Data_H(Addr<<2,6);   //写入地址数据
     for(i=0;i<cnt;i++)            //写入数据
     {
       Write_Data_L(*p,8);            
       p++;
     }
     CS=1;
     nop;
}

/*******************TM1621初始化**********************/
void TM1621_init()
{
     CS=1;
     WRITE=1;
     DATA=1;
     nop;
     delay_nms(1);                        
     WriteCmd(BIAS);                 //1/3偏压 4公共口
     WriteCmd(RC);                         //内部RC振荡
     WriteCmd(SYSDIS);                 //关系统振荡器和LCD偏压发生器
     WriteCmd(WDTDIS);                 //禁止看门狗
     WriteCmd(SYSEN);                 //打开系统振荡器
     WriteCmd(LCDON);                 //开LCD偏压
}

void main()
{
     TM1621_init();                         //开机初始化
     delay_nms(1);
     WriteAllData(0,Tab0,16);         //LCD不显示
     while(1)
     {
          CS=0;
          WriteAllData(0,Smg,16);         //LCD显示0~F
          delay_nms(200);
          //WriteAllData(0,Tab0,16);         //LCD不显示
          //delay_nms(200);
     }
}


回复

使用道具 举报

  离线 

8

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
133
金钱
133
注册时间
2016-7-28
在线时间
9 小时
发表于 2018-6-9 11:49:32 | 显示全部楼层
完美替代TM1621D SOP24封装的,另外还有VK1621B 其他少脚位的封装 :LQFP44 LQFP48 SSOP48 DIP28 SSOP24 SOP28等等可以选择!Q:1918885898

VK1621B Rev1.pdf

1.28 MB, 下载次数: 1

VK1056B V2.1-CN.pdf

2.76 MB, 下载次数: 1

VK1072B V2.1-CN.pdf

3.3 MB, 下载次数: 1

VK1072C V2.1-CN.pdf

5.64 MB, 下载次数: 1

VK1024B V2.1-CN.pdf

3.85 MB, 下载次数: 3

联系人:许先生  QQ:191 888 5898 电话:18898582398   免费样品赠送,工程技术支持,PDF产品资料提供!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-6-18 19:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */