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

📄 avrstudy.c

📁 AVR学习开发 板
💻 C
字号:
#include <iom8v.h>
#include <macros.h>
#include <stdio.h>
#include "st7920iccavrmega8.c"
#include "ds1302.c"
#include "delay.h"
#include "mega8_spi.c"
#include "24cxx12864.c"
#include "ad.c"
#include "stepmotor.c"
#include "串口测试.c"

#pragma interrupt_handler Int0:2	//外部中断0中断函数声明			  
#pragma interrupt_handler Int1:3	//外部中断1中断函数声明			  
unsigned char  str1[]="AVR 单片机开发板";
unsigned char  str2[]="设计制作:张国旗";
unsigned char  str3[]="→SPI 功能测试  2.I2C 功能测试  3.AD功能测试    4.步进电机测试  ";
unsigned char  str4[]="1.SPI 功能测试  →I2C 功能测试  3.AD功能测试    4.步进电机测试  ";
unsigned char  str5[]="1.SPI 功能测试  2.I2C 功能测试  →AD功能测试    4.步进电机测试  ";
unsigned char  str6[]="1.SPI 功能测试  2.I2C 功能测试  3.AD功能测试    →步进电机测试  ";
unsigned char  str7[]="2.I2C 功能测试  3.AD功能测试    4.步进电机测试  →串口通讯测试  ";
unsigned char  str8[]="3.AD功能测试    4.步进电机测试  5.串口通讯测试  →44键盘功能测试";
unsigned char  str9[]="4.步进电机测试  5.串口通讯测试  6.44键盘功能测试→返回          ";
unsigned char  str10[]="SPI 功能实验中…";
unsigned char  str11[]="步进电机实验中…";
unsigned char  str12[]="  串口实验中…  ";
unsigned char  str13[]="  44键盘使用中…";


uchar exit1=0,exit2=0,number1=1,enter1=0;
//unsigned char  bmp1[];//先声明一下就可以把表放在函数后面啦,呵呵
//=========================
//    毫秒延时函数8M晶振
//=========================
void delay(uint ms)
{
    uint i,j;
	for(i=0;i<ms;i++)
	{
	    for(j=0;j<1141;j++)
		{if(exit1==1){j=1141;i=ms;}}
    }
}

void Int0(void)
{
    SREG&=0x7F;//打开全局中断
 	delay(100);	
	exit1=1;
	enter1=1;
	SREG|=0x80;//打开全局中断
 	
}
void Int1(void)
{
    SREG&=0x7F;//打开全局中断
 	delay(100); 
	
	    if(number1<7){number1++;}
		else{number1=1;}
	
	SREG|=0x80;//打开全局中断
 	
}
void Init_int()
{ 	  

    MCUCR =0x00;       //设置INT0、INT1为下降沿触发中断
 	DDRD&=~BIT(PD2); //配置中断管脚为输入
 	PORTD|=BIT(PD2); //使能中断管脚的上拉
 	DDRD&=~BIT(PD2); //配置键盘数据输入口为输入
 	DDRD&=~BIT(PD3); //配置键盘数据输入口为输入
 	PORTD|=BIT(PD2)|BIT(PD3); //使能数据输入管脚的上拉
 	SREG|=0x80;//打开全局中断
 	GICR|=BIT(INT0)|BIT(INT1);//中断使能

}
void main( void )
{
 	uchar settime[7]={0x50,0x08,0x17,0x12,0x02,0x04,0x09};//设置的秒,分,时,日,月,星期,年
    uchar gettime[7]={0x01,0x01,0x01,0x01,0x01,0x01,0x01};//保存当前时间的数组
	uint i,data=0;
	spi_init();
    Init_int();  //中断初始化
	LcmInit();					//液晶初始化										  
    Delay(10);
    twi_init();						 //TWI初始化
	PORTB=0xff;					//背光口开											  
    LCD_ON;                     //开液晶背光显示 
 	DS1302_portinit();			//初始化DS1302的三根数据线
 	//DS1302_init();			//启动振荡器,DS1302开始工作 
 	//DS1302_setT(settime);		//设置初始时间
 	while(1)
	{
	    PutStr(0,0,"DS1302时钟显示");
 		PutStr(0,0,str1);
		Delay(10); 
		PutStr(3,0,str2);
		Delay(10);
		while(exit1==0)					//以下程序完成显示和设置时间 
 		{
            DS1302_getT(gettime);	//获得当前时间
   		    Disp_time(gettime);		//显示当前时间
			delay(100);
 		}
		exit1=0;
		exit2=0;
		enter1=0;
		number1=1;
		LcmInit();					//液晶初始化	
		delay(10);									  
		while(exit2==0)
		{
		    switch(number1)
			{
			    case 1:{PutStr(0,0,str3);}break;
				case 2:{PutStr(0,0,str4);}break;
				case 3:{PutStr(0,0,str5);}break;
				case 4:{PutStr(0,0,str6);}break;
				case 5:{PutStr(0,0,str7);}break;
				case 6:{PutStr(0,0,str8);}break;
				case 7:{PutStr(0,0,str9);}break;
				
			}
			delay(100); 
			if(enter1==1)
			{   
				exit1=0;
			    LcmInit();					//液晶初始化	
				delay(10); 									  
				while(exit1==0)
			 	{
				 	switch(number1)
					{
			    	    case 1:
						{
						 	PutStr(1,0,str10);
						    for(i=0;i<256;i++)
							{
		    					senddat(i);
		    					delay(100);
							}
							
						}break;
						case 2:
						{
						    for(i=0;i<7;i++)
							{
		    				    Put24c256BMP(i*1024);
	        					delay(500);
								if(exit1==1)i=7;
							}
						LcmInit();					//液晶初始化	
						delay(10);									  
						}break;
						case 3:
						{
						    adchange();
							delay(10);
							
						}break;
						case 4:
						{ 
						    delay(10);
						    PutStr(1,0,str11);
						   
						    motorstar();
						}break;
						case 5:
						{
						    delay(10);
							PutStr(1,0,str12);
						   
						   // uart_main();
						}break;
						case 6:
						{
						   // adchange();
							PutStr(1,0,str13);
							delay(10);
							
						}break;
						case 7:{exit2=1;exit1=1;}break;
				
					}//switch
				}//while
				exit1=0;
			    enter1=0;
			}	
		}
		exit1=0;
		LcmInit();					//液晶初始化										  
		
	}
}

⌨️ 快捷键说明

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