换屏幕驱动芯片,按钮驱动都要连带一起改

This commit is contained in:
2021-10-13 10:16:41 +08:00
parent 0dbc76aad1
commit 3ff28bd9a6
13 changed files with 4280 additions and 3789 deletions
+18 -150
View File
@@ -6,21 +6,13 @@
*/
#include "my_code.h"
#include "button.h"
#define HC595_DCK(x) HAL_GPIO_WritePin(HC595_DLK_GPIO_Port, HC595_DLK_Pin, x);
#define HC595_RCK(x) HAL_GPIO_WritePin(HC595_RLK_GPIO_Port, HC595_RLK_Pin, x);
#define HC595_SCK(x) HAL_GPIO_WritePin(HC595_SLK_GPIO_Port, HC595_SLK_Pin, x);
#define HC595_SCK2(x) HAL_GPIO_WritePin(HC595_SLK2_GPIO_Port, HC595_SLK2_Pin, x);
#define READ_HC595_DCK HAL_GPIO_ReadPin(HC595_DLK_GPIO_Port,HC595_DLK_Pin)
#include "ht1621.h"
extern ADC_HandleTypeDef hadc;
struct button key1,key2,key3,key4,overload;
const char d_num_data[10]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
#define set_filtering_times 50
struct
@@ -32,24 +24,6 @@ struct
}ADCC;
struct
{
char d_num[4];
char button_flag[4];
char dot1:1;
char dot2:1;
char dot3:1;
char dot4:1;
char led_run:1;
char moto1a:1;
char moto1b:1;
char moto2a:1;
char moto2b:1;
}dis_buff;
struct
{
uint32_t moto_run;
@@ -92,39 +66,7 @@ uint8_t Read_Ds()
if(READ_HC595_DCK){return 0;}else{return 1;}
//return READ_HC595_DCK;
}
void Sand_Byte_to_595(uint8_t h,uint8_t l)
{
ds_in_or_out(1);
HC595_DCK(0);
HC595_SCK(0);
HC595_RCK(0);
for(char a=0;a<8;a++)
{
if((h<<a)&0x80)
{
HC595_DCK(1);
}else
{
HC595_DCK(0);
}
HC595_SCK(1);
HC595_SCK(0);
}
for(char a=0;a<8;a++)
{
if((l<<a)&0x80)
{
HC595_DCK(1);
}else
{
HC595_DCK(0);
}
HC595_SCK(1);
HC595_SCK(0);
}
HC595_RCK(1);
HC595_RCK(0);
}
void Sand_Byte_to_595_2(uint8_t h)
{
ds_in_or_out(1);
@@ -146,84 +88,8 @@ void Sand_Byte_to_595_2(uint8_t h)
HC595_RCK(1);
HC595_RCK(0);
}
#define A 0x80
#define B 0x40
#define C 0x20
#define D 0x10
#define E 0x08
#define F 0x04
#define G 0x02
#define H 0x01
const char num_com[4]={0x1,0x2,0x4,0x8};
const char d_com[4]={0x80,0x40,0x20,0x10};
void display_and_button_loop()
{
//Sand_Byte_to_595(0x00,0xff);
//Sand_Byte_to_595(0xff,0x00);
char lcd_buff[4];
char change_buff;
char h,l;
//fast time change 1
for(int a=0;a<4;a++)
{
change_buff=d_num_data[dis_buff.d_num[a]];//num to data model
if(change_buff&&A)
{
lcd_buff[0]|=0x80>>(a*2);
}
if(change_buff&&B)
{
lcd_buff[0]|=0x40>>(a*2);
}
if(change_buff&&C)
{
lcd_buff[2]|=0x40>>(a*2);
}
if(change_buff&&D)
{
lcd_buff[3]|=0x40>>(a*2);
}
if(change_buff&&E)
{
lcd_buff[2]|=0x80>>(a*2);
}
if(change_buff&&F)
{
lcd_buff[1]|=0x80>>(a*2);
}
if(change_buff&&G)
{
lcd_buff[1]|=0x40>>(a*2);
}
}
//Sand_Byte_to_595(0xff,0xff);
//Sand_Byte_to_595(~h,~l);
//Sand_Byte_to_595(0,0);
//Sand_Byte_to_595(0xff,0xff);
for(int a=0;a<4;a++)
{
l=lcd_buff[a];
//h=((~num_com[a])&0x0F);
h=(~d_com[a]&0xf0)|((~num_com[a])&0x0F);
Sand_Byte_to_595(h,l);
dis_buff.button_flag[a]=Read_Ds();
//Sand_Byte_to_595(~h,~l);
}
}
void hc2_sever()
{
char h=0;
@@ -346,8 +212,7 @@ void my_code()
{
uint32_t runtime=0,move=0;
uint8_t mode=0,overload_mode=0;
uint16_t adc,adc_times=0;
uint32_t adc_l;
uint16_t overload_times=0;
long countdown=0;
long countdown_set=15000;
@@ -361,17 +226,19 @@ void my_code()
dis_buff.moto2a=0;
dis_buff.moto2b=0;
moto.moto_run=0;
moto.pwm_run=0;
moto.moto1a=0;
moto.moto1b=0;
moto.moto2a=0;
moto.moto2b=0;
moto.moto_run=0;
moto.pwm_run=0;
moto.moto1a=0;
moto.moto1b=0;
moto.moto2a=0;
moto.moto2b=0;
moto.moto1a_=0;
moto.moto1b_=0;
moto.moto2a_=0;
moto.moto2b_=0;
moto.moto1a_=0;
moto.moto1b_=0;
moto.moto2a_=0;
moto.moto2b_=0;
HT1621_Init();
while(1)
{
//*adc读取 并计滤波 并计算温度*/
@@ -651,7 +518,8 @@ moto.moto2b_=0;
GEI_BUTTON_CODE(&key2,dis_buff.button_flag[1]);
GEI_BUTTON_CODE(&key3,dis_buff.button_flag[2]);
GEI_BUTTON_CODE(&key4,dis_buff.button_flag[3]);
display_and_button_loop();
//display_and_button_loop();
HT1621_Display();
hc2_sever();
moto_server();
}