单片机+CH375+VS1003制作MP3原理图+程序(5)

1970-01-01 08:00

#include \ lcd.c delay(unsigned char time) {

while(--time); }

//LCD状态检测,根据最高位判断LCD是否忙 unsigned char LCD_BUSY(void) {

delay(20);//Protues仿真环境下必须延时 if((bit)(LCD_CR & 0x80)) return (1); else return (0); }

//将要显示的字符写入LCD

void Print(unsigned char *str,unsigned char n){

unsigned char i;

for(i=0;i

//LCD初始化 void LCD_Init(void) {

while(LCD_BUSY()); LCD_CW = LCD_SET_7; while(LCD_BUSY()); LCD_CW = LCD_AC_UP; while(LCD_BUSY()); LCD_CW = LCD_SHOW; }

while(LCD_BUSY());

LCD_DW = *str;//直接针对外部地址些 movx指令 str++;

//光标位置设定,由行列参数确定(1,16)(2,1)

void LCD_SET_CURSOR(unsigned char line, unsigned char column) {

while(LCD_BUSY());

switch(line){

case 1: LCD_CW = 0x80 + column-1;//光标定位

break;

case 2: LCD_CW = 0xc0 + column-1;//光标定位 break; default: break; }

//显示光标设定 /*

void LCD_CURSOR_ONOFF(unsigned char cursor_flag) {

while(LCD_BUSY()); switch(cursor_flag) {

case 1: LCD_CW = LCD_NO_CURSOR;//无光标 break;

case 2: LCD_CW = LCD_CURSOR_NO_FLASH;//有光标不闪烁 break;

case 3: LCD_CW = LCD_CURSOR_FLASH;//有光标闪烁 break; default: break; } } */

}

#include \ keyboard.h

unsigned char key,key_old,key_new,key_pressed_time; sbit BEGIN_KEY =P3^0; sbit UP_KEY =P3^1; sbit DOWN_KEY =P3^3; sbit VOL UP_KEY =P3^4; sbit VOL DOWN_KEY=P3^5;

void scan_keyboard(void) //键盘扫描 {

if(key)return;

if((KEY_INPUT & KEY_PIN)==KEY_PIN) //按键释放 {

if(!key_old) //如果上次无按键按下 {

return; //返回 }

else //如果上次有按键按下 {

if(key_pressed_time>100) //按键时间超过一秒,长按键码 {

// key=key_old+0x80; //长按键码等于普通按键码加0x80 }

else if(key_pressed_time>1) {

key=key_old; //按键值 }

key_old=0; }

return; }

else //按键按下 {

key_new=0;

if(BEGIN_KEY)key_new=KEY_BEGIN; if(DOWN_KEY)key_new=KEY_DOWN; if(UP_KEY)key_new=KEY_UP; if(VOL DOWN_KEY)key_new=KEY_DOWN; 下

if(VOL UP_KEY)key_new=KEY_UP;

if(key_new==key_old) 10ms {

if(key_pressed_time>80) {

key_pressed_time-=5; 隔50ms按一次 key=key_new; return; } else {

key_pressed_time++; } } else {

key_pressed_time=0; //BEGIN键按下 //DOWN键按下 //UP键按下 //VOL DOWN键按 //VOL UP键按下 //如果按键按下长于//如果按键按下超过1s //则自动按键。相当于每 //按键按下计时加一 //如果本次按下跟上次按

下不一样,则按键按下时间清零 }

key_old=key_new; //保存本次按键值 } }

#include \ unsigned long int DosBootSector; //操作系统引导扇区

unsigned char SectorPerClus; //每簇扇区数(一般很小,2-64) unsigned long int FatStartSector; //FAT表开始扇区 unsigned long int DataStartSector; //数据开始扇区

/*读主引导记录******master boot record********/ void RdMBR (unsigned char *buf) { READ_SECTOR(0, buf); DosBootSector = buf[454] + buf[455]*256 + buf[456]*65536

+ buf[457]*65536*256;

}

/****读操作系统引导记录扇区***dos boot recode************/ void RdDBR (unsigned char *buf) {

idata unsigned long int fat_size ; //文件分配表的大小 idata unsigned long int reserved_sector ;

READ_SECTOR(DosBootSector,buf);

fat.c


单片机+CH375+VS1003制作MP3原理图+程序(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2013年获部级及以上科技奖励汇总表-河海大学科技处

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: