描述:
运动控制卡,c语言
小弟想了解下运动控制卡的程序如何用C去编写,在编写时都需要用到什么知识。解决方案1:
这个里面没办法用单片机控制。要靠嵌入式控制。这个程序有嵌入式程序,主要代码如下:
#include "stm32l4xx.h"
#include "delay.h"
#include "led.h"
#include "usart.h"
#include "exti_pc13.h"
#include "tim_int.h"
#include "tft24.h"
#include "font.h"
//#include "pic.h"
#include "ds3231.h"
#include "lcd1602.h"
#include "hmc5883l.h"
void LCD1602_Time_Temp_Disp()
{
LCD1602_Write_char(0,0,year/10+'0');
LCD1602_Write_char(1,0,year%10+'0');
LCD1602_Write_char(2,0,'/');
LCD1602_Write_char(3,0,month/10+'0');
LCD1602_Write_char(4,0,month%10+'0');
LCD1602_Write_char(5,0,'/');
LCD1602_Write_char(6,0,date/10+'0');
LCD1602_Write_char(7,0,date%10+'0');
LCD1602_Write_char(8,0,' ');
LCD1602_Write_char(9,0,day+'0');
LCD1602_Write_char(10,0,' ');
if(ampmflag==0)LCD1602_Write_str(11,0,"DAY ");
else LCD1602_Write_str(11,0,"NIGHT");
LCD1602_Write_char(0,1,hour/10+'0');
LCD1602_Write_char(1,1,hour%10+'0');
LCD1602_Write_char(2,1,':');
LCD1602_Write_char(3,1,min/10+'0');
LCD1602_Write_char(4,1,min%10+'0');
LCD1602_Write_char(5,1,':');
LCD1602_Write_char(6,1,sec/10+'0');
LCD1602_Write_char(7,1,sec%10+'0');
LCD1602_Write_char(8,1,' ');
LCD1602_Write_char(9,1,disp_int/10+'0');
LCD1602_Write_char(10,1,disp_int%10+'0');
LCD1602_Write_char(11,1,'.');
LCD1602_Write_char(12,1,disp_flo+'0');
LCD1602_Write_char(13,1,0xdf);
LCD1602_Write_char(14,1,'C');
TFT24_Write_Char4896(5,0,hour/10,WHITE,BLUE,Char4896);
TFT24_Write_Char4896(60,5,hour%10,WHITE,BLUE,Char4896);
TFT24_Write_Char4896(5,86,min/10,WHITE,BLUE,Char4896);
TFT24_Write_Char4896(60,91,min%10,WHITE,BLUE,Char4896);
TFT24_Write_Char1632(5,187,sec/10,WHITE,BLUE,Char1632);
TFT24_Write_Char1632(21,187,sec%10,WHITE,BLUE,Char1632);
TFT24_Write_Char1632(50,187,month/10,WHITE,BLUE,Char1632);
TFT24_Write_Char1632(66,187,month%10,WHITE,BLUE,Char1632);
TFT24_Write_Char1632(82,187,10,WHITE,BLUE,Char1632);
TFT24_Write_Char1632(98,187,date/10,WHITE,BLUE,Char1632);
TFT24_Write_Char1632(114,187,date%10,WHITE,BLUE,Char1632);
TFT24_Write_CnChar3232(142,187,day-1,WHITE,BLUE,CnChar3232);
if(disp_int>0&&disp_int<40)
{
TFT24_Line(150,120,150,120-disp_int*3,RED);
TFT24_Line(152,120,152,120-disp_int*3,RED);
TFT24_Line(154,120,154,120-disp_int*3,RED);
TFT24_Line(150,4,150,119-disp_int*3,BLUE);
TFT24_Line(152,4,152,119-disp_int*3,BLUE);
TFT24_Line(154,4 ,154,119-disp_int*3,BLUE);
TFT24_DrawCircle(152,122,3,1,RED);
TFT24_Line(148,120,148,3,WHITE);
TFT24_Line(156,120,156,3,WHITE);
TFT24_Line(148,3,156,3,WHITE);
GUI_Dot(146,122,WHITE);
GUI_Dot(148,124,WHITE);
GUI_Dot(150,126,WHITE);
GUI_Dot(152,128,WHITE);
GUI_Dot(150,128,WHITE);
GUI_Dot(154,128,WHITE);
GUI_Dot(154,126,WHITE);
GUI_Dot(156,124,WHITE);
GUI_Dot(158,122,WHITE);
TFT24_Write_Char1632(108,130,disp_int/10,WHITE,BLUE,Char1632);
TFT24_Write_Char1632(124,130,disp_int%10,WHITE,BLUE,Char1632);
TFT24_Write_Char1632(140,130,12,WHITE,BLUE,Char1632);
TFT24_Write_Char1632(156,130,disp_flo,WHITE,BLUE,Char1632);
TFT24_Write_CnChar3232(140,158,7,WHITE,BLUE,CnChar3232);
}
}
void LCD_1602_Acc_Disp()
{
LCD1602_Write_char(0,0,disp[0]);
LCD1602_Write_char(1,0,disp[1]);
LCD1602_Write_char(2,0,disp[2]);
LCD1602_Write_char(3,0,disp[3]+'0');
LCD1602_Write_char(4,0,disp[4]);
LCD1602_Write_char(5,0,disp[5]+'0');
LCD1602_Write_char(6,0,disp[6]+'0');
LCD1602_Write_char(7,0,disp[7]+'0');
LCD1602_Write_char(8,0,disp[8]);
LCD1602_Write_char(9,0,disp[9]);
LCD1602_Write_char(10,0,disp[10]);
LCD1602_Write_char(11,0,disp[11]+'0');
LCD1602_Write_char(12,0,disp[12]);
LCD1602_Write_char(13,0,disp[13]+'0');
LCD1602_Write_char(14,0,disp[14]+'0');
LCD1602_Write_char(15,0,disp[15]+'0');
LCD1602_Write_char(0,1,disp[16]);
LCD1602_Write_char(1,1,disp[17]);
LCD1602_Write_char(2,1,disp[18]);
LCD1602_Write_char(3,1,disp[19]+'0');
LCD1602_Write_char(4,1,disp[20]);
LCD1602_Write_char(5,1,disp[21]+'0');
LCD1602_Write_char(6,1,disp[22]+'0');
LCD1602_Write_char(7,1,disp[23]+'0');
LCD1602_Write_str(8,1," ");
TFT24_Write_CnChar3232(10,0,16,WHITE,BLUE,CnChar3232);
TFT24_Write_CnChar3232(42,0,17,WHITE,BLUE,CnChar3232);
TFT24_Write_CnChar3232(74,0,18,WHITE,BLUE,CnChar3232);
TFT24_Write_CnChar3232(106,0,19,WHITE,BLUE,CnChar3232);
if(disp[3]==0&&disp[11]==0&&disp[19]==0||disp[19]==1)
{
TFT24_Write_CnChar6464(10,32,7,WHITE,BLUE,CnChar6464);
TFT24_Write_CnChar6464(74,32,8,WHITE,BLUE,CnChar6464);
}
else
{
TFT24_Write_CnChar6464(10,32,9,WHITE,BLUE,CnChar6464);
TFT24_Write_CnChar6464(74,32,10,WHITE,BLUE,CnChar6464);
}
}
void LCD1602_Pa_Disp()
{
if(zpaflag==1)
{
LCD1602_Write_char(0,0,psb/100000+'0');
LCD1602_Write_char(1,0,psb/10000%10+'0');
LCD1602_Write_char(2,0,psb/1000%10+'0');
LCD1602_Write_char(3,0,psb/100%10+'0');
LCD1602_Write_char(4,0,psb/10%10+'0');
LCD1602_Write_char(5,0,psb%10+'0');
LCD1602_Write_str(6,0,"Pa ");
TFT24_Write_CnChar6464(10,32,0,WHITE,BLUE,CnChar6464);
TFT24_Write_CnChar6464(74,32,1,WHITE,BLUE,CnChar6464);
TFT24_Write_Char1632(10,0,psb/100000,WHITE,BLUE,Char1632);
TFT24_Write_Char1632(26,0,psb/10000%10,WHITE,BLUE,Char1632);
TFT24_Write_Char1632(42,0,psb/1000%10,WHITE,BLUE,Char1632);
TFT24_Write_Char1632(58,0,psb/100%10,WHITE,BLUE,Char1632);
TFT24_Write_Char1632(74,0,psb/10%10,WHITE,BLUE,Char1632);
TFT24_Write_Char1632(90,0,psb%10,WHITE,BLUE,Char1632);
TFT24_Write_CnChar3232(106,0,15,WHITE,BLUE,CnChar3232);
if(psb>=100000&&psb<=102000)
{
TFT24_Write_CnChar6464(10,96,5,GREEN,BLUE,CnChar6464);
TFT24_Write_CnChar6464(74,96,6,GREEN,BLUE,CnChar6464);
}
else if(psb<100000)
{
TFT24_Write_CnChar6464(10,96,2,YELLOW,BLUE,CnChar6464);
TFT24_Write_CnChar6464(74,96,4,YELLOW,BLUE,CnChar6464);
}
else if(psb>102000)
{
TFT24_Write_CnChar6464(10,96,2,RED,BLUE,CnChar6464);
TFT24_Write_CnChar6464(74,96,3,RED,BLUE,CnChar6464);
}
}
else LCD1602_Write_str(0,0,"ZPA2326 ERROR! ");
LCD1602_Write_str(0,1,"Angle:");
LCD1602_Write_char(6,1,intang/100+'0');
LCD1602_Write_char(7,1,intang/10%10+'0');
LCD1602_Write_char(8,1,intang%10+'0');
if(intang>=70&&intang<=88)
{
LCD1602_Write_str(10,1,"NORTH");
TFT24_Write_CnChar3232(106,160,14,WHITE,BLUE,CnChar3232);
}
else if(intang==45)
{
LCD1602_Write_str(10,1,"EAST ");
TFT24_Write_CnChar3232(106,160,11,WHITE,BLUE,CnChar3232);