| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /*
- * File: CH455.c
- * Author: JiangXiaowei
- */
-
- #include "ch455g.h" // 修改该文件以适应硬件环境/单片机型号等
- #include "delay.h"
- #include "iic2.h"
- //#include "includes.h"
- //定义
- //#define CH455H_LED_NUM 16
- //uint32_t ch455h_Time_duty[CH455H_LED_NUM]; //占空比
- //uint8_t ch455h_Time_en[CH455H_LED_NUM]; //使能
- //uint8_t ch455h_Time_en_process; //全局使能
- void CH455_Init(void)
- {
- iic2_init();
- CH455_Write( CH455_7SEG_ON ); //八段式
- CH455_Write( CH455_SYSON_2 ); //2级亮度
- }
-
- void CH455_Write( UINT16 cmd ) //写命令
- {
- IIC2_Start();//启动总线
- IIC2_Send_Byte(((UINT8)(cmd>>7)&CH455_I2C_MASK)|CH455_I2C_ADDR);
- IIC2_NAck();
- IIC2_Send_Byte((UINT8)cmd);//发送数据
- IIC2_NAck();
- IIC2_Stop();//结束总线
- }
-
- UINT8 CH455_Read( void ) //读取按键
- {
- UINT8 keycode;
- IIC2_Start();//启动总线
- IIC2_Send_Byte(((UINT8)(CH455_GET_KEY>>7)&CH455_I2C_MASK)|0x01|CH455_I2C_ADDR);
- IIC2_NAck();
- keycode = IIC2_Read_Byte(0);//发送数据
- IIC2_Stop();//结束总线
- return keycode;
- }
- void CH455H_LED_test(void){
- static uint16_t led=0;
- CH455_Write( CH455_DIG0 | ((led>>0) & 0x0F));
- CH455_Write( CH455_DIG1 | ((led>>4) & 0x0F));
- CH455_Write( CH455_DIG2 | ((led>>8) & 0x0F));
- CH455_Write( CH455_DIG3 | ((led>>12) & 0x0F));
- led++;
- }
- /*-----------------------------------------------------------
- * 16 12 8 4
- * 15 11 7 3
- * 14 10 6 2
- * 13 9 5 1
- *------------------------------------------------------------*/
- void CH455H_LED_set(uint16_t led){
- led = (((led & 0xaaaa) >> 1) | ((led & 0x5555) << 1));
- led = (((led & 0xcccc) >> 2) | ((led & 0x3333) << 2));
- led = (((led & 0xf0f0) >> 4) | ((led & 0x0f0f) << 4));
- led = (((led & 0xff00) >> 8) | ((led & 0x00ff) << 8));
-
- //左边是高位,第二版
- CH455_Write( CH455_DIG0 | ((led>>0) & 0x0F));
- CH455_Write( CH455_DIG1 | ((led>>4) & 0x0F));
- CH455_Write( CH455_DIG2 | ((led>>8) & 0x0F));
- CH455_Write( CH455_DIG3 | ((led>>12) & 0x0F));
-
- //左边是高位,第一版
- // CH455_Write( CH455_DIG0 | ((led>>12) & 0x0F));
- // CH455_Write( CH455_DIG1 | ((led>>0) & 0x0F));
- // CH455_Write( CH455_DIG2 | ((led>>4) & 0x0F));
- // CH455_Write( CH455_DIG3 | ((led>>8) & 0x0F));
- }
- void CH455H_LED_test00(short led){
- led = (((led & 0xaaaa) >> 1) | ((led & 0x5555) << 1));
- led = (((led & 0xcccc) >> 2) | ((led & 0x3333) << 2));
- led = (((led & 0xf0f0) >> 4) | ((led & 0x0f0f) << 4));
- led = (((led & 0xff00) >> 8) | ((led & 0x00ff) << 8));
-
- //左边是高位
- CH455_Write( CH455_DIG0 | ((led>>12) & 0x0F));
- CH455_Write( CH455_DIG1 | ((led>>0) & 0x0F));
- CH455_Write( CH455_DIG2 | ((led>>4) & 0x0F));
- CH455_Write( CH455_DIG3 | ((led>>8) & 0x0F));
-
- //左边是低位
- // CH455_Write( CH455_DIG0 | ((led>>0) & 0x0F));
- // CH455_Write( CH455_DIG1 | ((led>>12) & 0x0F));
- // CH455_Write( CH455_DIG2 | ((led>>8) & 0x0F));
- // CH455_Write( CH455_DIG3 | ((led>>4) & 0x0F));
- }
- void CH455H_LED_test2(void){
- static uint16_t led=0;
- CH455_Write( CH455_DIG0 | ((led>>0) & 0x0F));
- CH455_Write( CH455_DIG1 | ((led>>4) & 0x0F));
- CH455_Write( CH455_DIG2 | ((led>>8) & 0x0F));
- CH455_Write( CH455_DIG3 | ((led>>12) & 0x0F));
- led=~led;
- }
- void CH455H_LED_test3(void){
- static uint16_t led=0;
- CH455_Write( CH455_DIG0 | ((led>>0) & 0x0F));
- led++;
- led&=0x000F;
- }
|