CH455G.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #ifndef __CH455_H
  2. #define __CH455_H
  3. #include "sys.h"
  4. #include "../../User/includes.h"
  5. #include "../../User/stm32f10x_it.h"
  6. typedef unsigned char UINT8;
  7. typedef unsigned short UINT16;
  8. #define high 1
  9. #define low 0
  10. /* 2线接口的连接,与实际电路有关 */
  11. #define CH455_SCL PBout(10) //SCL
  12. #define CH455_SDA PBout(11) //SDA
  13. #define READ_SDA PBin(11) //输入SDA
  14. #define CH455_INT_N GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)//读取CH455H INT
  15. #define KEY3 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)//读取按键3
  16. #define KEY4 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6)//读取按键4
  17. /* 2线接口的位操作,与单片机有关 */
  18. #define CH455_SCL_SET {CH455_SCL=1;}
  19. #define CH455_SCL_CLR {CH455_SCL=0;}
  20. //#define CH455_SCL_D_OUT {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<10;} // 设置SCL为输出方向,对于双向I/O需切换为输出
  21. #define CH455_SCL_D_OUT {CH455H_SCL_D_OUT();}
  22. #define CH455_SDA_SET {CH455_SDA=1;}
  23. #define CH455_SDA_CLR {CH455_SDA=0;}
  24. #define CH455_SDA_IN GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11) // 读取SDA输入电平
  25. //#define CH455_SDA_D_OUT {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<11;} // 设置SDA为输出方向,对于双向I/O需切换为输出
  26. #define CH455_SDA_D_OUT {CH455H_SDA_D_OUT();}
  27. //#define CH455_SDA_D_IN {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8<<11;} // 设置SDA为输入方向,对于双向I/O需切换为输入
  28. #define CH455_SDA_D_IN {CH455H_SDA_D_IN();}
  29. /* ********************************************************************************************* */
  30. // 设置系统参数命令
  31. #define CH455_BIT_ENABLE 0x01 // 开启/关闭位
  32. #define CH455_BIT_SLEEP 0x04 // 睡眠控制位
  33. #define CH455_BIT_7SEG 0x08 // 7段控制位
  34. #define CH455_BIT_INTENS1 0x10 // 1级亮度
  35. #define CH455_BIT_INTENS2 0x20 // 2级亮度
  36. #define CH455_BIT_INTENS3 0x30 // 3级亮度
  37. #define CH455_BIT_INTENS4 0x40 // 4级亮度
  38. #define CH455_BIT_INTENS5 0x50 // 5级亮度
  39. #define CH455_BIT_INTENS6 0x60 // 6级亮度
  40. #define CH455_BIT_INTENS7 0x70 // 7级亮度
  41. #define CH455_BIT_INTENS8 0x00 // 8级亮度
  42. #define CH455_SYSOFF 0x0400 // 关闭显示、关闭键盘
  43. #define CH455_SYSON ( CH455_SYSOFF | CH455_BIT_ENABLE ) // 开启显示、键盘
  44. #define CH455_SLEEPOFF CH455_SYSOFF // 关闭睡眠
  45. #define CH455_SLEEPON ( CH455_SYSOFF | CH455_BIT_SLEEP ) // 开启睡眠
  46. #define CH455_7SEG_ON ( CH455_SYSON | CH455_BIT_7SEG ) // 开启七段模式
  47. #define CH455_8SEG_ON ( CH455_SYSON | 0x00 ) // 开启八段模式
  48. #define CH455_SYSON_4 ( CH455_SYSON | CH455_BIT_INTENS4 ) // 开启显示、键盘、4级亮度
  49. #define CH455_SYSON_6 ( CH455_SYSON | CH455_BIT_INTENS6 ) // 开启显示、键盘、6级亮度
  50. #define CH455_SYSON_8 ( CH455_SYSON | CH455_BIT_INTENS8 ) // 开启显示、键盘、8级亮度
  51. // 加载字数据命令
  52. #define CH455_DIG0 0x1400 // 数码管位0显示,需另加8位数据
  53. #define CH455_DIG1 0x1500 // 数码管位1显示,需另加8位数据
  54. #define CH455_DIG2 0x1600 // 数码管位2显示,需另加8位数据
  55. #define CH455_DIG3 0x1700 // 数码管位3显示,需另加8位数据
  56. // 读取按键代码命令
  57. #define CH455_GET_KEY 0x0700 // 获取按键,返回按键代码
  58. // CH455接口定义
  59. #define CH455_I2C_ADDR 0x40 // CH455的地址
  60. #define CH455_I2C_MASK 0x3E // CH455的高字节命令掩码
  61. void CH455H_SCL_D_OUT(void);
  62. void CH455H_SDA_D_OUT(void);
  63. void CH455H_SDA_D_IN(void);
  64. // 对外子程序
  65. extern void CH455_Init(void); //初始化函数
  66. extern UINT8 CH455_Read( void ); // 从CH455读取按键代码
  67. extern void CH455_Write( UINT16 cmd ); // 向CH455发出操作命令
  68. extern volatile UINT8 USER_BUTTON;
  69. UINT8 CH455_I2c_RdByte( void );
  70. void CH455_I2c_WrByte(unsigned char IIC_Byte);
  71. void CH455_I2c_Stop(void);
  72. void CH455_I2c_Start(void);
  73. void EXTI_MY_INIT(void);
  74. extern const UINT8 BCD_decode_tab[0x10];
  75. extern const UINT8 Letter_tab[38];
  76. void CH455H_LED_test(void);
  77. void CH455H_LED_test2(void);
  78. void CH455H_LED_test3(void);
  79. extern void CH455H_LED_test00(short led);
  80. extern void led_display_version(void);
  81. extern void set_led_status(uint8_t index,uint8_t status);
  82. extern void set_led_update_status(uint16_t status);
  83. extern void set_led_no_init_sn(uint16_t status);
  84. #endif /* CH455_H */