基于STM32F103的LED顯示屏驅動程序,很實用。之前調試的時候下載的。
單片機源程序如下:
- #include"stm32f10x.h"
- #include"delay.h"
- //#include"usart_own.h"
- #define AL() GPIO_ResetBits(GPIOE, GPIO_Pin_15)
- #define AH() GPIO_SetBits(GPIOE, GPIO_Pin_15)
- #define BL() GPIO_ResetBits(GPIOE, GPIO_Pin_14)
- #define BH() GPIO_SetBits(GPIOE, GPIO_Pin_14)
- #define CL() GPIO_ResetBits(GPIOE, GPIO_Pin_13)
- #define CH() GPIO_SetBits(GPIOE, GPIO_Pin_13)
- #define DL() GPIO_ResetBits(GPIOE, GPIO_Pin_12)
- #define DH() GPIO_SetBits(GPIOE, GPIO_Pin_12)
- #define STBL() GPIO_ResetBits(GPIOE, GPIO_Pin_11)
- #define STBH() GPIO_SetBits(GPIOE, GPIO_Pin_11)
- #define CLKL() GPIO_ResetBits(GPIOE, GPIO_Pin_10)
- #define CLKH() GPIO_SetBits(GPIOE, GPIO_Pin_10)
- #define R1L() GPIO_ResetBits(GPIOE, GPIO_Pin_9)
- #define R1H() GPIO_SetBits(GPIOE, GPIO_Pin_9)
- #define OEL() GPIO_ResetBits(GPIOE, GPIO_Pin_8)
- #define OEH() GPIO_SetBits(GPIOE, GPIO_Pin_8)
- vu8 yid;
- uc8 line_[]={0x03,0x02,0x01,0x00,0x07,0x06,0x05,0x04,0x0b,0x0a,0x09,0x08,0x0f,0x0e,0x0d,0x0c};
- uc8 table[]={
- 0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x03,0xE0,
- 0x7B,0xEF,0x7B,0xEF,0x03,0xE0,0x7B,0xEF,
- 0x7B,0xEF,0x7B,0xEF,0x03,0xE0,0x7B,0xEF,
- 0x7F,0xBF,0x7F,0xBF,0xFF,0x80,0xFF,0xFF,//電0
- /* (16 X 16 , 宋體 )*/
- 0xEF,0xFE,0xCF,0xF9,0xE7,0xFD,0x17,0x80,
- 0xF3,0xFF,0x33,0xE0,0xF5,0xFF,0x36,0xE0,
- 0xF7,0xFF,0x37,0xE0,0xB7,0xEF,0xB7,0xEF,
- 0xB7,0xEF,0x37,0xE0,0xB7,0xEF,0xFF,0xFF,//信1
- /* (16 X 16 , 宋體 )*/
- 0x7F,0xEF,0xF7,0xCE,0xCF,0xEC,0xEF,0xF6,
- 0x01,0x80,0xFD,0xDF,0x0E,0xE8,0xFF,0xFD,
- 0xFF,0xFE,0x01,0x80,0xFF,0xFE,0xFF,0xFE,
- 0xFF,0xFE,0xFF,0xFE,0xBF,0xFE,0x7F,0xFF,//學2
- /* (16 X 16 , 宋體 )*/
- 0xFF,0xFE,0xE0,0xFD,0x0E,0x80,0xD6,0xDF,
- 0xFA,0xFF,0x3A,0xE0,0xF6,0xFF,0xEE,0xFF,
- 0x0E,0x80,0x6A,0xFB,0x76,0xFB,0x7E,0xFB,
- 0xBE,0xBB,0xBE,0xBB,0xDE,0xBB,0xEE,0x87,//院3
- /* (16 X 16 , 宋體 )*/
- };
- void LED_Port_Init(void);
- void output(vu8);
- void Line_Scan(void);
- void LED_Port_Init()
- {
- GPIO_InitTypeDef GPIO_LED;
- GPIO_InitTypeDef GPIO_TX;
- SystemInit();
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO
- | RCC_APB2Periph_GPIOE ,ENABLE);
- GPIO_LED.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
- GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 |
- GPIO_Pin_14 | GPIO_Pin_15;
- GPIO_LED.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_LED.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_Init(GPIOE,&GPIO_LED);
- GPIO_TX.GPIO_Pin = GPIO_Pin_9;
- GPIO_TX.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_TX.GPIO_Mode = GPIO_Mode_AF_PP;
- GPIO_Init(GPIOA, &GPIO_TX);
- }
- void output(vu8 dat)
- {
- vu8 i,t_dat;
- t_dat = dat;
- dat = (t_dat<<4) | (dat>>4);
- for(i=0x80;i!=0;i=i>>1)
- {
- if(dat&i)
- {
- R1H();
- }
- else
- {
- R1L();
- }
- CLKH();
- CLKL();
- }
- }
- void Line_Scan() //行掃描函數
- {
- //行掃描
- switch(line_[yid])
- {
- case 0x00:{DL();CL();BL();AL();break;}
- case 0x01:{DL();CL();BL();AH();break;}
- case 0x02:{DL();CL();BH();AL();break;}
- case 0x03:{DL();CL();BH();AH();break;}
- case 0x04:{DL();CH();BL();AL();break;}
- case 0x05:{DL();CH();BL();AH();break;}
- case 0x06:{DL();CH();BH();AL();break;}
- case 0x07:{DL();CH();BH();AH();break;}
- case 0x08:{DH();CL();BL();AL();break;}
- case 0x09:{DH();CL();BL();AH();break;}
- case 0x0a:{DH();CL();BH();AL();break;}
- case 0x0b:{DH();CL();BH();AH();break;}
- case 0x0c:{DH();CH();BL();AL();break;}
- case 0x0d:{DH();CH();BL();AH();break;}
- case 0x0e:{DH();CH();BH();AL();break;}
- case 0x0f:{DH();CH();BH();AH();break;}
- default:break;
- //default:{DH();CH();BH();AH();break;}
- }
- }
- int main()
- {
- LED_Port_Init();
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
LED_Screen(base-on-STM32F103).rar
(2.09 MB, 下載次數: 161)
2018-4-23 16:50 上傳
點擊文件名下載附件
|