嵌入式简易电子琴系统设计.docx

上传人:b****5 文档编号:3172440 上传时间:2022-11-18 格式:DOCX 页数:30 大小:17.70KB
下载 相关 举报
嵌入式简易电子琴系统设计.docx_第1页
第1页 / 共30页
嵌入式简易电子琴系统设计.docx_第2页
第2页 / 共30页
嵌入式简易电子琴系统设计.docx_第3页
第3页 / 共30页
嵌入式简易电子琴系统设计.docx_第4页
第4页 / 共30页
嵌入式简易电子琴系统设计.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

嵌入式简易电子琴系统设计.docx

《嵌入式简易电子琴系统设计.docx》由会员分享,可在线阅读,更多相关《嵌入式简易电子琴系统设计.docx(30页珍藏版)》请在冰豆网上搜索。

嵌入式简易电子琴系统设计.docx

嵌入式简易电子琴系统设计

嵌入式开发试验

嵌入式简易电子琴系统设计

ARM2110实验开发板,外接矩阵键盘、蜂鸣器、LED显示屏、LED灯模块(带4.7K电阻)

主程序

#include"systemInit.h"

#include"buzzer.h"

#include"music.h"

#include"systemInit.h"

#definelcdenGPIO_PIN_0//PB0;

#definelcdrsGPIO_PIN_2//PB2;

//定义LED

#defineLED1_PERIPHSYSCTL_PERIPH_GPIOA

#defineLED1_PORTGPIO_PORTA_BASE

#defineLED1_PINGPIO_PIN_4

#defineLED2_PERIPHSYSCTL_PERIPH_GPIOA

#defineLED2_PORTGPIO_PORTA_BASE

#defineLED2_PINGPIO_PIN_5

#defineLED3_PERIPHSYSCTL_PERIPH_GPIOA

#defineLED3_PORTGPIO_PORTA_BASE

#defineLED3_PINGPIO_PIN_6

#defineLED4_PERIPHSYSCTL_PERIPH_GPIOG

#defineLED4_PORTGPIO_PORTG_BASE

#defineLED4_PINGPIO_PIN_0

#defineLED5_PERIPHSYSCTL_PERIPH_GPIOF

#defineLED5_PORTGPIO_PORTF_BASE

#defineLED5_PINGPIO_PIN_2

#defineLED6_PERIPHSYSCTL_PERIPH_GPIOG

#defineLED6_PORTGPIO_PORTG_BASE

#defineLED6_PINGPIO_PIN_1

#defineLED7_PERIPHSYSCTL_PERIPH_GPIOE

#defineLED7_PORTGPIO_PORTE_BASE

#defineLED7_PINGPIO_PIN_0

#defineLED8_PERIPHSYSCTL_PERIPH_GPIOE

#defineLED8_PORTGPIO_PORTE_BASE

#defineLED8_PINGPIO_PIN_1

//定义KEY

#defineKEY_PERIPH2SYSCTL_PERIPH_GPIOB

#defineKEY_PORT2GPIO_PORTB_BASE

#defineKEY_PIN2GPIO_PIN_6|GPIO_PIN_5|GPIO_PIN_4

//连接方式矩阵键盘的行线接PC4~7列线接PA0~3

unsignedchardata;//PD0-PD7;

unsignedcharnum;

intguan;

intjian;

intnumm;//lcd显示模块技术

//lcd模块

voidwrite_com(unsignedcharcom)//写命令

{

GPIOPinWrite(GPIO_PORTB_BASE,lcdrs,0x00);//lcdrs=0;

GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|

GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,com);//PD=com;

SysCtlDelay(5*(TheSysClock/4000));//延时5ms

GPIOPinWrite(GPIO_PORTB_BASE,lcden,0xFF);//lcden=1;

SysCtlDelay(5*(TheSysClock/4000));

GPIOPinWrite(GPIO_PORTB_BASE,lcden,0x00);//lcden=0;

}

voidwrite_data(unsignedchardate)

{

GPIOPinWrite(GPIO_PORTB_BASE,lcdrs,0xFF);//lcdrs=1;

GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|

GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,date);//PD=date;

SysCtlDelay(5*(TheSysClock/4000));

GPIOPinWrite(GPIO_PORTB_BASE,lcden,0xFF);//lcden=1;

SysCtlDelay(5*(TheSysClock/4000));

GPIOPinWrite(GPIO_PORTB_BASE,lcden,0x00);//lcden=0;

}

voidinit()

{

SysCtlPeriEnable(SYSCTL_PERIPH_GPIOD);//使能A端口

GPIOPinTypeOut(GPIO_PORTD_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|

GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);

SysCtlPeriEnable(SYSCTL_PERIPH_GPIOB);

GPIOPinTypeOut(GPIO_PORTB_BASE,GPIO_PIN_0|GPIO_PIN_2);

GPIOPinWrite(GPIO_PORTB_BASE,lcden,0x00);//lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);//在开始清屏

write_com(0x80+0x10);//数据指针地址

}

//lcd模块结束,矩阵键盘模块开始

unsignedcharKeyScan(void)

{if(GPIOPinRead(KEY_PORT2,KEY_PIN2)==0x30)//如果按下KEY2

{num=17;

returnnum;

}

elseif(GPIOPinRead(KEY_PORT2,KEY_PIN2)==0x50)//如果按下KEY3

{num=18;

returnnum;

}

elseif(GPIOPinRead(KEY_PORT2,KEY_PIN2)==0x60)//如果按下KEY4

{num=16;

returnnum;

}

GPIOPinTypeOut(GPIO_PORTC_BASE,GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);

GPIOPinTypeOut(GPIO_PORTA_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTC_BASE,GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,0Xf0);

GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,0X00);

GPIOPinTypeIn(GPIO_PORTC_BASE,GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);

guan=GPIOPinRead(GPIO_PORTC_BASE,0xff)&0xf0;

jian=GPIOPinRead(GPIO_PORTA_BASE,0xff)&0x0f;

guan=jian|guan;

if(guan!

=0xf0)

{SysCtlDelay(5*(TheSysClock/4000));

if(guan!

=0xf0)

{GPIOPinTypeOut(GPIO_PORTC_BASE,GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);

GPIOPinTypeOut(GPIO_PORTA_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);

GPIOPinWrite(GPIO_PORTC_BASE,GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,0Xf0);

GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,0X07);

GPIOPinTypeIn(GPIO_PORTC_BASE,GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);

guan=GPIOPinRead(GPIO_PORTC_BASE,GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7)&0xf0;

jian=GPIOPinRead(GPIO_PORTA_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3)&0x0f;

guan=jian|guan;

if(guan==0x77)

{SysCtlDelay(5*(TheSysClock/4000));

if(guan==0x77)

{num=11;

returnnum;

}

}

if(guan==0xb7)

{SysCtlDelay(5*(TheSysClock/4000));

if(guan==0xb7)

{num=7;

returnnum;

}

}

if(guan==0xd7)

{SysCtlDelay(5*(TheSysClock/4000));

if(guan==0xd7)

{num=4;

returnnum;

}

}

if(guan==0xe7)

{SysCtlDelay(5*(TheSysClock/4000));

if(guan==0xe7)

{num=0;

returnnum;

}

}

GPIOPinTypeOut(GPIO_PORTC_BASE,GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);

GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,0X0b);

GPIOPinTypeIn(GPIO_PORTC_BASE,GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1