⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 上载/下载日志 实现小车的自动寻迹小车,且速度较快并且很稳定 2. XUNJI.C.rar,1KB,下载 3 次,小车的寻迹程序,根据车两边的灯的亮灭判断来执行电机的动作 3. Programm.z
💻 C
字号:
//============================================================================================================
// 文件名称:main.c
//============================================================================================================
#include "SPCE061.H"
#include "s480.h"
extern unsigned int F_UART_Initial(void);
extern unsigned int F_UART_Read(void);
extern void F_LED_On(unsigned int);
extern	lcda[34];
extern	lcdb[34];
extern	lcdc[34];
extern	lcdd[34];
extern	lcde[34];
extern	lcdf[34];
extern	lcd1[34];
extern	lcd2[34];
extern	lcd3[34];
int page,line;
int flaglcd=1;
int i,j;
//=========================================================================================================
void clearshow(void){
	for(page=0xb8;page<0xbc;page++){
		set_12232_ctrl(page);
		set_12232_ctrl(0x00);		
		for(line=0;line<62;line++)
			write_12232_data(0x00);}
	set_12232_ctrl(0xc0);	
	set_12232_ctrl(0xaf);}
//=========================================================================================================
void delay(int number){
	for(i=0;i<number;i++)
		for(j=0;j<3000;j++)
		 *P_Watchdog_Clear=0x01;}
//==========================================================================================================
void lcdshowbitup(int bit,unsigned int *array){
	if(bit<3){
	set_12232_ctrl(0xba);
	set_12232_ctrl(bit*0x11);		
	for(line=0;line<17;line++)
		write_12232E1_data(array[line]);
	set_12232_ctrl(0xbb);
	set_12232_ctrl(bit*0x11);
	for(line=17;line<34;line++)
		write_12232E1_data(array[line]);}
	else	if(bit>3){
	bit=bit-4;	
	set_12232_ctrl(0xba);
	set_12232_ctrl(bit*0x11+7);		
	for(line=0;line<17;line++)
		write_12232E2_data(array[line]);
	set_12232_ctrl(0xbb);
	set_12232_ctrl(bit*0x11+7);
	for(line=17;line<34;line++)
		write_12232E2_data(array[line]);}
	else {
	set_12232_ctrl(0xba);
	set_12232_ctrl(bit*0x11);		
	for(line=0;line<10;line++)
		write_12232E1_data(array[line]);
	set_12232_ctrl(0xbb);
	set_12232_ctrl(bit*0x11);
	for(line=17;line<27;line++)
		write_12232E1_data(array[line]);
		
	set_12232_ctrl(0xba);
	set_12232_ctrl(0x00);		
	for(line=10;line<17;line++)
		write_12232E2_data(array[line]);
	set_12232_ctrl(0xbb);
	set_12232_ctrl(0x00);
	for(line=27;line<34;line++)
		write_12232E2_data(array[line]);}
			
	set_12232_ctrl(0xc0);	
	set_12232_ctrl(0xaf);}	
//==========================================================================================================
void lcdshowbitchup(int bit,unsigned int *array){
	if(bit<6){
	set_12232_ctrl(0xba);
	set_12232_ctrl(bit*0x09);		
	for(line=0;line<9;line++)
		write_12232E1_data(array[line]);
	set_12232_ctrl(0xbb);
	set_12232_ctrl(bit*0x09);
	for(line=9;line<18;line++)
		write_12232E1_data(array[line]);}
	else	if(bit>6){
	bit=bit-7;	
	set_12232_ctrl(0xba);
	set_12232_ctrl(bit*0x09+1);		
	for(line=0;line<9;line++)
		write_12232E2_data(array[line]);
	set_12232_ctrl(0xbb);
	set_12232_ctrl(bit*0x09+1);
	for(line=9;line<18;line++)
		write_12232E2_data(array[line]);}
	else {
	set_12232_ctrl(0xba);
	set_12232_ctrl(bit*0x09);		
	for(line=0;line<7;line++)
		write_12232E1_data(array[line]);
	set_12232_ctrl(0xbb);
	set_12232_ctrl(bit*0x09);
	for(line=9;line<16;line++)
		write_12232E1_data(array[line]);
		
	set_12232_ctrl(0xba);
	set_12232_ctrl(0x00);		
	for(line=7;line<9;line++)
		write_12232E2_data(array[line]);
	set_12232_ctrl(0xbb);
	set_12232_ctrl(0x00);
	for(line=16;line<18;line++)
		write_12232E2_data(array[line]);}
			
	set_12232_ctrl(0xc0);	
	set_12232_ctrl(0xaf);}	
//===========================================================================================================
void lcdshowbitdw(int bit,unsigned int *array){
	if(bit<3){
	set_12232_ctrl(0xb8);
	set_12232_ctrl(bit*0x11);		
	for(line=0;line<17;line++)
		write_12232E1_data(array[line]);
	set_12232_ctrl(0xb9);
	set_12232_ctrl(bit*0x11);
	for(line=17;line<34;line++)
		write_12232E1_data(array[line]);}
	else	if(bit>3){
	bit=bit-4;	
	set_12232_ctrl(0xb8);
	set_12232_ctrl(bit*0x11+7);		
	for(line=0;line<17;line++)
		write_12232E2_data(array[line]);
	set_12232_ctrl(0xb9);
	set_12232_ctrl(bit*0x11+7);
	for(line=17;line<34;line++)
		write_12232E2_data(array[line]);}
	else {
	set_12232_ctrl(0xb8);
	set_12232_ctrl(bit*0x11);		
	for(line=0;line<10;line++)
		write_12232E1_data(array[line]);
	set_12232_ctrl(0xb9);
	set_12232_ctrl(bit*0x11);
	for(line=17;line<27;line++)
		write_12232E1_data(array[line]);
		
	set_12232_ctrl(0xb8);
	set_12232_ctrl(0x00);		
	for(line=10;line<17;line++)
		write_12232E2_data(array[line]);
	set_12232_ctrl(0xb9);
	set_12232_ctrl(0x00);
	for(line=27;line<34;line++)
		write_12232E2_data(array[line]);}
			
	set_12232_ctrl(0xc0);	
	set_12232_ctrl(0xaf);}	
//============================================================================================================
void voice_play(int iSpeechIndex){
	SACM_S480_Initial(1);	                         //自动方式播放初始化
	SACM_S480_Play(iSpeechIndex,3,3); //定义语音索引号、播放通道、允许音量增/减调节			
    while(SACM_S480_Status()&0x01){           
	   SACM_S480_ServiceLoop();                      //获取语音数据并将其填入解码队列
	   *P_Watchdog_Clear=0x0001;} 
	   SACM_S480_Stop();
	   *P_SystemClock=0x0013;
 		*P_INT_Ctrl=0x04;
		*P_INT_Mask=0x04;
		__asm("IRQ ON");
	  }  
//============================================================================================================	    	   
main()
{
	unsigned int uiUARTCommand=0;
	int	numdw=0,numup=0,i=0,j;
	*P_INT_Ctrl=0x04;
	*P_INT_Mask=0x04;
	__asm("IRQ ON");	
	system_IO_init();
	set_12232_ctrl(0xe2);
	set_12232_ctrl(0xae);
	set_12232_ctrl(0xa9);
	set_12232_ctrl(0xa0);
	set_12232_ctrl(0xee);
	F_System_Initial();
	F_UART_Initial();
	voice_play(9);
	clearshow();
	
	while(1)
	{
		uiUARTCommand = F_UART_Read();
		switch(uiUARTCommand)
		{	 
			case 0x0000:
				break;
			case 0x0001:
				voice_play(6);
				voice_play(1);
				flaglcd=0;
			lcdshowbitdw(0,lcda);	
			lcdshowbitdw(1,lcdb);
			lcdshowbitdw(2,lcdc);
			lcdshowbitdw(3,lcdd);
			lcdshowbitdw(4,lcde);
			lcdshowbitdw(5,lcdf);
			lcdshowbitdw(6,lcd1);
			for(i=0;i<3;i++){
				Set_IOA_Bit(0,1,1,1,1);
				for(j=0;j<2000;j++)	*P_Watchdog_Clear=0x01;
				Set_IOA_Bit(0,1,1,0,0);
				for(j=0;j<2000;j++)	*P_Watchdog_Clear=0x01;}
				
				
				break;
			case 0x0002:
				voice_play(6);
				voice_play(2);
				flaglcd=0;
			lcdshowbitdw(0,lcda);	
			lcdshowbitdw(1,lcdb);
			lcdshowbitdw(2,lcdc);
			lcdshowbitdw(3,lcdd);
			lcdshowbitdw(4,lcde);
			lcdshowbitdw(5,lcdf);
			lcdshowbitdw(6,lcd2);
			for(i=0;i<3;i++){
				Set_IOA_Bit(0,1,1,1,1);
				for(j=0;j<2000;j++)	*P_Watchdog_Clear=0x01;
				Set_IOA_Bit(0,1,1,0,0);
				for(j=0;j<2000;j++)	*P_Watchdog_Clear=0x01;}
				
				break;
			case 0x0003:
				voice_play(6);
				voice_play(3);
				flaglcd=0;
			lcdshowbitdw(0,lcda);	
			lcdshowbitdw(1,lcdb);
			lcdshowbitdw(2,lcdc);
			lcdshowbitdw(3,lcdd);
			lcdshowbitdw(4,lcde);
			lcdshowbitdw(5,lcdf);
			lcdshowbitdw(6,lcd3);
			for(i=0;i<3;i++){
				Set_IOA_Bit(0,1,1,1,1);
				for(j=0;j<2000;j++)	*P_Watchdog_Clear=0x01;
				Set_IOA_Bit(0,1,1,0,0);
				for(j=0;j<2000;j++)	*P_Watchdog_Clear=0x01;}
				break;	
			case 0x00ff:
				voice_play(7);
				voice_play(8);
				for(i=0;i<50;i++){
				Set_IOA_Bit(0,1,1,1,1);
				for(j=0;j<2000;j++)	*P_Watchdog_Clear=0x01;
				Set_IOA_Bit(0,1,1,0,0);
				for(j=0;j<2000;j++)	*P_Watchdog_Clear=0x01;}
				break;
			case 0x0005:
				voice_play(4);
				break;
			case 0x0006:
				voice_play(5);
				break;
			case 0x0007:
				voice_play(6);
				break;
			case 0x0008:
				voice_play(7);
				break;			
			default:
				break;
		}	
	}		
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -