7、ARM嵌入式系统:LCD/数码管/OLED初始化
一、LCD/數碼管模塊在板子上的位置
LCD和數碼管在板子上都分別有一個插槽。
二、LCD/數碼管初始化代碼
//SMG init
void SMG_Init()
{
? ? ? ? /* PORTB and PORTD clock have already enabled*/
? ? ? ? SIM_SCGC5|=SIM_SCGC5_PORTB_MASK+SIM_SCGC5_PORTD_MASK; ? ? ? ? ?
? ? ? ?
? ? ? ? /*portB ?set to GPIO*/ ? ? ?
? ? ? ? PORTB_PCR0=PORT_PCR_MUX(0X1);
? ? ? ? PORTB_PCR1=PORT_PCR_MUX(0X1);
? ? ? ? PORTB_PCR2=PORT_PCR_MUX(0X1);
? ? ? ? PORTB_PCR8=PORT_PCR_MUX(0X1);
? ? ? ? PORTB_PCR9=PORT_PCR_MUX(0X1);
? ? ? ? PORTB_PCR10=PORT_PCR_MUX(0X1);
? ? ? ?
? ? ? ? /*portD ?set to GPIO*/ ? ? ?
? ? ? ? PORTD_PCR0=PORT_PCR_MUX(0X1);
? ? ? ? PORTD_PCR1=PORT_PCR_MUX(0X1);
? ? ? ? PORTD_PCR2=PORT_PCR_MUX(0X1);
? ? ? ? PORTD_PCR3=PORT_PCR_MUX(0X1);
? ? ? ? PORTD_PCR4=PORT_PCR_MUX(0X1);
? ? ? ? PORTD_PCR5=PORT_PCR_MUX(0X1);
? ? ? ? PORTD_PCR6=PORT_PCR_MUX(0X1);
? ? ? ? PORTD_PCR7=PORT_PCR_MUX(0X1);
? ? ? ?
? ? ? ? /*LED control pin set to out*/ ? ? ?
? ? ? ? GPIOB_PDDR|=GPIO_PDDR_PDD(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(2)|GPIO_PIN(8)|GPIO_PIN(9)|GPIO_PIN(10));
? ? ? ?
? ? ? ? /*LED bit pin set to out*/ ? ?
? ? ? ? // 1 ?Pin is configured as general-purpose output, for the GPIO function.
? ? ? ? // PDDR配置輸入或者輸出,PDOR配置值
? ? ? ? GPIOD_PDDR|=0x000000FF; ? ?
? ? ? ?
? ? ? ? /*LED control pin set to high ,LEDs are closed*/
? ? ? ? GPIOB_PDOR|=GPIO_PDDR_PDD(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(2)|GPIO_PIN(8)|GPIO_PIN(9)|GPIO_PIN(10)); ? ? ? ?
? ? ? ?
? ? ? ? /*LED bit pin set to low ,LED bit are all lighted,change GPIOC_PDOR register can change the number it shows*/
? ? ? ? GPIOD_PDOR=0xAA; ? ? ? ?
? ? ? ?
// ? ? ?/*LED control pin set to low ,LEDs are all open*/
? ? ? ? GPIOB_PDOR&=~GPIO_PDDR_PDD(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(2)|GPIO_PIN(8)|GPIO_PIN(9)|GPIO_PIN(10));
}
三、初始化過程
LCD/數碼管在板子上涉及PORTB和PORTD兩個管腳。
?step1:使能PORTB和PORTD這兩個引腳的時鐘
SIM_SCGC5|=SIM_SCGC5_PORTB_MASK+SIM_SCGC5_PORTD_MASK;
step2:PORTB管腳配置給GPIO用
?? ? ? ? PORTB_PCR0=PORT_PCR_MUX(0X1);
? ? ? ? PORTB_PCR1=PORT_PCR_MUX(0X1);
? ? ? ? PORTB_PCR2=PORT_PCR_MUX(0X1);
? ? ? ? PORTB_PCR8=PORT_PCR_MUX(0X1);
? ? ? ? PORTB_PCR9=PORT_PCR_MUX(0X1);
? ? ? ? PORTB_PCR10=PORT_PCR_MUX(0X1);
step3:PORTD管腳配置給GPIO用
? ? ? ? /*portD ?set to GPIO*/ ? ? ?
? ? ? ? PORTD_PCR0=PORT_PCR_MUX(0X1);
? ? ? ? PORTD_PCR1=PORT_PCR_MUX(0X1);
? ? ? ? PORTD_PCR2=PORT_PCR_MUX(0X1);
? ? ? ? PORTD_PCR3=PORT_PCR_MUX(0X1);
? ? ? ? PORTD_PCR4=PORT_PCR_MUX(0X1);
? ? ? ? PORTD_PCR5=PORT_PCR_MUX(0X1);
? ? ? ? PORTD_PCR6=PORT_PCR_MUX(0X1);
? ? ? ? PORTD_PCR7=PORT_PCR_MUX(0X1);
?
step4:PORTB的6個管腳GPIO配置為輸出模式
GPIOB_PDDR|=GPIO_PDDR_PDD(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(2)|GPIO_PIN(8)|GPIO_PIN(9)|GPIO_PIN(10));
?step5:PORTD的8個管腳GPIO配置為輸出模式,即低8個bit設置為1
GPIOD_PDDR|=0x000000FF;
step6:配置PORTB 6個管腳的電平值為1,即關閉LED燈
該寄存器配置每個通用輸出管腳上驅動的邏輯電平,將6個管腳的電平值配置為1,即關閉這6個LED燈。
GPIOB_PDOR|=GPIO_PDDR_PDD(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(2)|GPIO_PIN(8)|GPIO_PIN(9)|GPIO_PIN(10));
?step7:配置PORTD 8個管腳的電平值
GPIOD_PDOR=0xAA;
0xAA的二進制值為10101010,即引腳0,2,4,6引腳為0,打開這4個引腳的LED燈;1,3,5,7引腳的為1,關閉這4個引腳的LED燈。
step8:配置PORTB的6個引腳,打開6個LED燈
GPIOB_PDOR&=~GPIO_PDDR_PDD(GPIO_PIN(0)|GPIO_PIN(1)|GPIO_PIN(2)|GPIO_PIN(8)|GPIO_PIN(9)|GPIO_PIN(10));
即設置這6個引腳的值為0.
8、ARM嵌入式系統:UART初始化_cyf31的專欄-CSDN博客
總結
以上是生活随笔為你收集整理的7、ARM嵌入式系统:LCD/数码管/OLED初始化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 颜色混合器link
- 下一篇: GPS警用车辆3G视频监控系统方案