设为首页收藏本站

Discuz! Board

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5489|回复: 2
打印 上一主题 下一主题

最近在做STM8驱动HT1621怎么都点不亮那位高人给指点下

[复制链接]

1

主题

3

帖子

54

积分

注册会员

Rank: 2

积分
54
跳转到指定楼层
楼主
g05251 发表于 2015-12-1 23:12:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. <p><p> </p><p>#include "ht1621.h"


  2. void gpio_init(void)

  3. {
  4. GPIO_Init(GPIOF, GPIO_PIN_5, GPIO_MODE_OUT_PP_HIGH_FAST);
  5. GPIO_Init(GPIOA, HT1621_CS, GPIO_MODE_OUT_PP_HIGH_FAST);
  6. GPIO_Init(GPIOA, HT1621_WR, GPIO_MODE_OUT_PP_HIGH_FAST);
  7. GPIO_Init(GPIOA, HT1621_DAT, GPIO_MODE_OUT_PP_HIGH_FAST);

  8. }

  9. /********************************************************
  10. 函数名称:void Ht1621_Init(void)
  11. 功能描述: HT1621初始化
  12. 全局变量:无
  13. 参数说明:无
  14. 返回说明:无
  15. 版 本:1.0
  16. 说 明:初始化后,液晶屏所有字段均显示
  17. ********************************************************/
  18. void Ht1621_Init(void)
  19. {
  20.   SET_HT1621_CS();
  21.   SET_HT1621_WR();
  22.   SET_HT1621_DAT();
  23.   Ht1621_delayms(500);  // - - 延时使LCD工作电压稳定
  24.   Ht1621WrCmd(BIAS);
  25.   Ht1621WrCmd(RC256);   // - - 使用内部振荡器
  26.   Ht1621WrCmd(SYSDIS);  // - - 关振系统荡器和LCD偏压发生器
  27.   Ht1621WrCmd(WDTDIS);  // - - 禁止看门狗
  28.   Ht1621WrCmd(SYSEN);   // - - 打开系统振荡器
  29.   Ht1621WrCmd(LCDON);   // - - 打开LCD偏压
  30. }

  31. /******************************************************
  32. 函数名称:void Ht1621Wr_Data(uchar Data,uchar cnt)
  33. 功能描述: HT1621数据写入函数
  34. 全局变量:无
  35. 参数说明:Data为数据,cnt为数据位数
  36. 返回说明:无
  37. 说 明:写数据函数,cnt为传送数据位数,数据传送为低位在前
  38. *******************************************************/
  39. void Ht1621Wr_Data(uint8_t Data,uint8_t cnt)
  40. {
  41.   uint8_t i;
  42.   for (i=0;i<cnt;i++)
  43.   {
  44.      CLR_HT1621_WR();
  45.      Ht1621_delay_10us(1);
  46.      if((Data & 0x80)==0x80)
  47.        {
  48.           SET_HT1621_DAT();

  49.        }
  50.       else
  51.        {
  52.           CLR_HT1621_DAT();

  53.       }
  54.      Ht1621_delay_10us(1);
  55.      SET_HT1621_WR();
  56.      Ht1621_delay_10us(1);
  57.      Data<<=1;
  58.    }
  59. }
  60. /********************************************************
  61. 函数名称:void Ht1621WrCmd(uchar Cmd)
  62. 功能描述: HT1621命令写入函数
  63. 全局变量:无
  64. 参数说明:Cmd为写入命令数据
  65. 返回说明:无
  66. 说 明:写入命令标识位100
  67. ********************************************************/
  68. void Ht1621WrCmd(uint8_t Cmd)
  69. {
  70.   CLR_HT1621_CS();
  71.   Ht1621_delay_10us(1);
  72.   Ht1621Wr_Data(0x80,4);  // - - 写入命令标志100
  73.   Ht1621Wr_Data(Cmd,8);   // - - 写入命令数据
  74.   SET_HT1621_CS();
  75.   Ht1621_delay_10us(1);
  76. }
  77. /********************************************************
  78. 函数名称:void Ht1621WrOneData(uchar Addr,uchar Data)
  79. 功能描述: HT1621在指定地址写入数据函数
  80. 全局变量:无
  81. 参数说明:Addr为写入初始地址,Data为写入数据
  82. 返回说明:无
  83. 说 明:因为HT1621的数据位4位,所以实际写入数据为参数的后4位
  84. ********************************************************/
  85. void Ht1621WrOneData(uint8_t Addr,uint8_t Data)
  86. {
  87.   CLR_HT1621_CS();
  88.   Ht1621Wr_Data(0xa0,3);     // - - 写入数据标志101
  89.   Ht1621Wr_Data(Addr<<2,6);  // - - 写入地址数据
  90.   Ht1621Wr_Data(Data<<4,4);  // - - 写入数据
  91.   SET_HT1621_CS();
  92.   Ht1621_delay_10us(1);
  93. }

  94. /********************************************************
  95. 函数名称:void Ht1621WrAllData(uchar Addr,uchar *p,uchar cnt)
  96. 功能描述: HT1621连续写入方式函数
  97. 全局变量:无
  98. 参数说明:Addr为写入初始地址,*p为连续写入数据指针,
  99.                   cnt为写入数据总数
  100. 返回说明:无
  101. 说 明:HT1621的数据位4位,此处每次数据为8位,写入数据
  102.            总数按8位计算
  103. ********************************************************/
  104. void Ht1621WrAllData(uint8_t Addr,uint8_t *p,uint8_t cnt)
  105. {
  106.   uint8_t i;
  107.   CLR_HT1621_CS();
  108.   Ht1621Wr_Data(0xa0,3);     // - - 写入数据标志101
  109.   Ht1621Wr_Data(Addr<<2,6);  // - - 写入地址数据
  110.   for (i=0;i<cnt;i++)
  111.   {
  112.     Ht1621Wr_Data(*p,8);     // - - 写入数据
  113.     p++;
  114.   }
  115.     SET_HT1621_CS();
  116.   Ht1621_delay_10us(1);
  117. }

  118. void Ht1621_delay_10us(u16 n)  // - - 10微秒的延时子程序
  119. {
  120.   u16 i,j;
  121.   for(i=n;i>0;i--)
  122.     for(j=2;j>0;j--);  
  123. }

  124. void Ht1621_delayms(u16 xms)  // - - 1毫秒延时程序
  125. {
  126.   u16 i,j;  
  127.   for(i = xms;i > 0;i --)  
  128.     for(j = 110;j > 0;j --);  
  129. }  
  130. /******************** (C) COPYRIGHT 2015  ********************

  131. **********************************************************************/



  132. #include "stm8s.h"
  133. #include "sysclock.h"
  134. #include "ht1621.h"

  135. void main(void)
  136. {
  137.   SystemClock_Init();
  138.   //时钟初始化内部1分频
  139.   u8 i,j,t;
  140.   gpio_init();
  141.   Ht1621_Init();  // - - 上电初始化LCD
  142.   Ht1621_delayms(5000); // - - 延时一段时间
  143.   GPIO_WriteHigh(GPIOF, GPIO_PIN_5);
  144.   uint8_t
  145.   Ht1621Tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  146.                         0x00,0x00,0x00,0x00,0x00};
  147.   
  148.   while(1)
  149.   {
  150.    Ht1621_delayms(2000);
  151.     Ht1621WrAllData(0,Ht1621Tab,16);  // - - 清除1621寄存器数据,暨清屏
  152.     for (i=0;i<32;i++)
  153.     {
  154.       t=0x01;
  155.       for (j=0;j<4;j++)
  156.       {
  157.         Ht1621WrOneData(i,t);
  158.         t<<=1;
  159.         t++;
  160.         GPIO_WriteReverse(GPIOF, GPIO_PIN_5);             // - - 循环点亮LED
  161.         Ht1621_delayms(500);
  162.        }
  163.   
  164.     }
  165.   }
  166. }

  167. #ifdef USE_FULL_ASSERT

  168. /**
  169.   * @brief  Reports the name of the source file and the source line number
  170.   *   where the assert_param error has occurred.
  171.   * @param file: pointer to the source file name
  172.   * @param line: assert_param error line source number
  173.   * @retval : None
  174.   */
  175. void assert_failed(u8* file, u32 line)
  176. {
  177.   /* User can add his own implementation to report the file name and line number,
  178.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  179.   /* Infinite loop */
  180.   while (1)
  181.   {
  182.   }
  183. }
  184. #endif</p><p> </p><p>程序可以运行 主函数里定义的LED闪烁  HT1621驱动LCD 就是不亮求高人指点下</p>
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

1

主题

3

帖子

54

积分

注册会员

Rank: 2

积分
54
沙发
 楼主| g05251 发表于 2015-12-2 18:26:06 | 只看该作者
怎么没人回复的
回复 支持 反对

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
板凳
admin 发表于 2015-12-3 18:15:21 | 只看该作者
g05251 发表于 2015-12-2 18:26
怎么没人回复的

检查控制时序
回复 支持 反对

使用道具 举报

Archiver|手机版|小黑屋|Comsenz Inc.   

GMT+8, 2024-5-4 00:29 , Processed in 0.116181 second(s), 28 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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