|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2016-3-21 22:13:15
|
显示全部楼层
- #include "ht1621.h"
- #include "stm8s.h"
- #include "delay.h"
- u8 Ht1621ClearTab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
- u8 Ht1621FillTab[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
- void DelayUS(u8 tim)
- {
- while(tim)
- {
- __asm("nop");
- tim -- ;
- }
- }
- void HT1621Wr_Data(u16 Data,u8 cnt)
- {
- u8 i;
- for (i=0;i<cnt;i++)
- {
- GPIO_WriteLow(GPIOC,HT_WR);
- __asm("nop");
- if(Data&0x8000)
- GPIO_WriteHigh(GPIOC,HT_DA);
- else
- GPIO_WriteLow(GPIOC,HT_DA);
- __asm("nop");
- GPIO_WriteHigh(GPIOC,HT_WR);
- __asm("nop");
- __asm("nop");
- Data<<=1;
- }
- }
- void HT1621_WriteCommand(u8 Cmd)
- {
- u16 SendData = 0;
- //合成指令数组
- SendData = 0x80 ;
- SendData = SendData << 4 ;
- SendData = SendData | Cmd ;
- SendData = SendData << 4 ;
-
- GPIO_WriteLow(GPIOC,HT_CS); //CS_LOW
- DelayUS(2);
-
- HT1621Wr_Data(SendData,12);
-
- GPIO_WriteHigh(GPIOC,HT_CS); //CS_HIGH
- DelayUS(2);
- }
- void HT1621_WriteData(u8 Add, u8 Data) //地址低六位有效,数据高四位有效
- {
- u16 SendData = 0 ;
-
- SendData = 0x05 ; //101
- SendData = SendData << 6 ;
- SendData = SendData | (Add&0x3f) ;
- SendData = SendData << 4 ;
- SendData = SendData | (Data>>4) ;
- SendData = SendData << 3 ;
-
- GPIO_WriteLow(GPIOC,HT_CS); //CS_LOW
- DelayUS(2);
-
- HT1621Wr_Data(SendData,13);
-
- GPIO_WriteHigh(GPIOC,HT_CS); //CS_HIGH
- DelayUS(2);
- }
- void HT1621Clear(void)
- {
- u8 i ;
- for(i=0;i<32;i++)
- {
- HT1621_WriteData(i,0x00);
- }
- }
- void HT1621Fill(void)
- {
- u8 i ;
- for(i=0;i<32;i++)
- {
- HT1621_WriteData(i,0xff);
- }
- }
- void HT1621_Configuration(void)
- {
- GPIO_Init(GPIOC,GPIO_PIN_3,GPIO_MODE_OUT_PP_LOW_FAST);
- GPIO_Init(GPIOC,GPIO_PIN_4,GPIO_MODE_OUT_PP_LOW_FAST);
- GPIO_Init(GPIOC,GPIO_PIN_5,GPIO_MODE_OUT_PP_LOW_FAST);
-
- GPIO_WriteHigh(GPIOC,HT_CS);
- GPIO_WriteHigh(GPIOC,HT_DA);
- GPIO_WriteHigh(GPIOC,HT_WR);
-
-
- delay_ms(500);
-
- HT1621_WriteCommand(0x52); //LCD 1/3 偏压,4个公共口
- delay_ms(10);
- HT1621_WriteCommand(0x30); //系统时钟源,片内RC振荡器
- delay_ms(10);
- HT1621_WriteCommand(0x00); ////关振系统荡器和LCD偏压发生器
- delay_ms(10);
- HT1621_WriteCommand(0x0a); //关闭看门狗
- delay_ms(10);
- HT1621_WriteCommand(0x02); //开系统振荡器
- delay_ms(10);
- HT1621_WriteCommand(0x06); //开LCD偏压
- delay_ms(10);
-
- HT1621Clear();
- //HT1621Fill();
- }
复制代码
。h文件
- #ifndef __HT1621_H
- #define __HT1621_H
- #include "stm8s.h"
- //cs PC3
- //wr PC4
- //da PC5
- #define HT_CS GPIO_PIN_3
- #define HT_WR GPIO_PIN_4
- #define HT_DA GPIO_PIN_5
- #define ht1621_LCDON 0x06 //0000 0110
- #define ht1621_SYSEN 0x02 //0000 0001-x
- #define ht1621_RC256 0X30 //0001-10xx-x
- #define ht1621_SYSDIS 0x00 //0000-0000-x
- #define ht1621_WDTDIS 0x0a //0000-0101-x
- #define ht1621_BIAS 0x52 //0010-abx1-x
- void HT1621_Configuration(void);
- void HT1621_WriteData(u8 Add, u8 Data);
- void HT1621_WriteCommand(u8 Cmd);
- #endif
复制代码
stm8驱动奉上源码 |
|