本人萌新,基于STM32的6路PWM控制,并且用矩阵键盘分别去控制六路占空比,并做了48*48的字库在LCD上显示。
单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "lcd.h"
- #include "usart.h"
- #include "timer.h"
- extern void LCD_ShowHZ(u16 x,u16 y,u8 num);
- extern void LCD_ShowHZStr(u16 x,u16 y,u8* pstr);
- extern float A;
- extern float B;
- extern float C;
- extern float D;
- extern float E;
- extern float F;
- int main(void)
- {
- int key;
- delay_init(); //延时函数初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
- uart_init(115200); //串口初始化为115200
- LED_Init(); //LED端口初始化
- LCD_Init();
- Key_Config();
- TIM3_PWM_Init(899,15);
- TIM4_PWM_Init(899,15);
- TIM2_Int_Init(1,7199); //定时器2中断初始化
- POINT_COLOR=RED;
- POINT_COLOR=BLUE;//字体为蓝色
-
- LCD_ShowHZ(0,0,0);//显示速字
- LCD_ShowHZ(48,0,1);//显示度字
- LCD_ShowHZ(96,0,3);
- LCD_ShowHZ(144,0,2);
- POINT_COLOR=RED;//字体为红色
- LCD_ShowHZ(0,48,0);//显示速字
- LCD_ShowHZ(48,48,1);//显示度字
- LCD_ShowHZ(96,48,4);//显示:
- LCD_ShowHZ(144,48,2);
- POINT_COLOR=BROWN;//字体为黄色
- LCD_ShowHZ(0,96,0);//显示速字
- LCD_ShowHZ(48,96,1);//显示度字、
- LCD_ShowHZ(96,96,5);
- LCD_ShowHZ(144,96,2);
- POINT_COLOR=BLACK;//字体为黑色
- LCD_ShowHZ(0,144,0);//显示速字
- LCD_ShowHZ(48,144,1);//显示度字
- LCD_ShowHZ(96,144,6);
- LCD_ShowHZ(144,144,2);
- POINT_COLOR=GREEN;//字体为绿色
- LCD_ShowHZ(0,192,0);//显示速字
- LCD_ShowHZ(48,192,1);//显示度字
- LCD_ShowHZ(96,192,7);
- LCD_ShowHZ(144,192,2);
- POINT_COLOR=BRRED;
- LCD_ShowHZ(0,240,0);//显示速字
- LCD_ShowHZ(48,240,1);//显示度字
- LCD_ShowHZ(96,240,8);
- LCD_ShowHZ(144,240,2);
- POINT_COLOR=MAGENTA;//字体为紫色
- while(1)
- {
- key=KeyScan();
- //LCD_ShowxNum(140,288,5,3,48,0X80);
-
- //LCD_ShowString(140,288+144,200,200,48,":;'/.");
- switch(key)
- {
- case 1:A=A+0.2;break;
- case 2:A=A-0.2;break;
- case 3:B=B+0.2;break;
- case 4:B=B-0.2;break;
- case 5:C=C+0.2;break;
- case 6:C=C-0.2;break;
- case 7:D=D+0.2;break;
- case 8:D=D-0.2;break;
- case 9:E=E+0.2;break;
- case 10:E=E-0.2;break;
- case 11:F=F+0.2;break;
- case 12:F=F-0.2;break;
- }
- LCD_ShowNum(180,0 ,10*(A-5),2,48);
- LCD_ShowNum(180,48 ,10*(B-5),2,48);
- LCD_ShowNum(180,96 ,10*(C-5),2,48);
- LCD_ShowNum(180,144 ,10*(D-5),2,48);
- LCD_ShowNum(180,192 ,10*(E-5),2,48);
- LCD_ShowNum(180,240 ,10*(F-5),2,48);
- //LCD_ShowNum(144,288+96 ,key,2,48);
- if(A<5)//控制占空比在规定范围内
- {A=14;}
- if(A>14)
- {A=5;}
- if(B<5)//控制占空比在规定范围内
- {B=14;}
- if(B>14)
- {B=5;}
- if(C<5)//控制占空比在规定范围内
- {C=14;}
- if(C>14)
- {C=5;}
- if(D<5)//控制占空比在规定范围内
- {D=14;}
- if(D>14)
- {D=5;}
- if(E<5)//控制占空比在规定范围内
- {E=14;}
- if(E>14)
- {E=5;}
- if(F<5)//控制占空比在规定范围内
- {F=14;}
- if(F>14)
- {F=5;}
- }
- }
复制代码
所有资料51hei提供下载:
TFTLCD和4×4矩阵键盘程序.rar
(360.12 KB, 下载次数: 40)
|