亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 功能: 6個數碼管從右至左依次顯示:秒
?? C
字號:
/********************************************************************
 *  主    頁 :  HTTP://WWW.QLMCU.COM             				
 *                                                              
 *  程序功能 :  時鐘演示程序、蜂鳴器、發光二極管測試、LCD1602測試
 *                                                                         
 *  應用軟件 :  WinAVR                                               
 *                                                                      
 *  版    本 :  WinAVR-20050214-install
 *                                                         
 *  硬    件 :  WS9500 (工作頻率: 6MHz)
 *                                                               
 *  創建時間 :  2005-11-10
 *              
 *  編    寫:   benladn911           
 *              
 *  注:為了有更多實用的實驗程序供大家學習,部分程序參考網上的資源,
 *      在此謝謝這些無私奉獻的朋友!!!       
 *                        
 ********************************************************************/  


#include"avr/io.h"          //頭文件
#include <avr/delay.h>      //延時函數       
#include"avr/interrupt.h"   //中斷處理函數
#include"avr/signal.h"      //中斷處理函數       

#define uchar unsigned char
#define uint  unsigned int

//內部函數_delay_ms() 最高延時  262.144mS@1MHz 即 32.768ms@8MHz
void delay_ms(unsigned int ms);//----ms級延時

//內部函數_delay_us() 最高延時  768 us@1MHz 即 96 us@8MHz
void delay_us(unsigned int us);//----us級延時

void BEEP(void);//----蜂鳴器子程序

//-----------位操作定義------------------------
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))

#define BEEP_ON  cbi(PORTD,2)//在程序用BEEP_ON代替cbi(PORTD,2)
#define BEEP_OFF  sbi(PORTD,2)//在程序用BEEP_OFF代替sbi(PORTD,2)

#define LED_ON  cbi(PORTD,7)//在程序用LED_ON代替cbi(PORTD,7)
#define LED_OFF  sbi(PORTD,7)//在程序用BEEP_ON代替sbi(PORTD,7)

//數碼管字型表,對應0,1,2,3,4,5,6,7,8,9//
uchar Table[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};
uchar Data[6]={0,0,0,0,0,0};             //顯示初始值:0 0 0 0 0 0
uchar CNT=0;                                      //初始計數值:0
uchar Timer[3]={0x00,0x00,0x00};    //初始時間00:00:00
//--------------------------------------------------------------------------
//定義MCU與LCD的接口 
#define LCD_RS_PORT    PORTC 
#define LCD_EN_PORT    PORTC 
#define LCD_RW_PORT    PORTC 

#define LCD_DATA_PORT  PORTA 
#define LCD_DATA_DDR   DDRA 
#define LCD_DATA_PIN   PINA 

#define LCD_RS         (1<<5)   //PORTC5         out 
#define LCD_EN         (1<<7)   //PORTC7         out 
#define LCD_RW         (1<<6)   //PORTC6         out/in 
#define LCD_DATA        0xf0    //PORTA4/5/6/7   out 

//-------函數聲明------------------------------------------------------------
void LCD_init         (void); 
void LCD_en_write     (void); 
void LCD_write_char   (unsigned command,unsigned data); 
void LCD_wait_Ready   (void); 
void LCD_set_xy       (unsigned char x, unsigned char y); 
void LCD_write_string (unsigned char X,unsigned char Y,unsigned char *s); 
//--------------------------------------------------------------------------
/*----------------------------------------------------
光標命令 
LCD_write_char(0x0e,0);    //光標開 
LCD_write_char(0x0d,0);    //光標所在字符閃爍   
LCD_write_char(0x0c,0);    //光標關   
-------------------------------------------------------*/ 


//----------------ms級延時---------------
void delay_ms(unsigned int ms)
{
    unsigned int i;
    for(i=0;i<ms;i++) _delay_ms(1); //延時 i*ms=   毫秒,可自行調節
}

//----------------us級延時---------------
void delay_us(unsigned int us)
{
    unsigned int i;
    for(i=0;i<us;i++) _delay_us(1); //延時 i*us=   毫秒,可自行調節
}


//-------------------- 數碼管動態掃描程序------------------------
void Display(uchar *p) //動態顯示函數,參數p為待顯示的數組名
{
//-----------------第一種動態掃描方式-----------------
    uchar i,sel=0b11111110;
    for(i=0;i<6;i++)
     {
      PORTB=sel;                           //選通最右邊的數碼管
      PORTA=Table[p[ i ]];             //送字型碼
      delay_ms(2);                          //顯示延時    
      sel=(sel<<1)|0b00000001;              //移位以顯示前一位
     }

	/*//-------------第二種動態掃描方式-----------------
	uchar i=0,sel=0b11111110;
	PORTB=sel;
	PORTA=Table[p[ i ]];             //送字型碼
	delay_ms(2);                          //顯示延時 
   
	i++;
	sel=0b11111101;
	PORTB=sel;
	PORTA=Table[p[ i ]];             //送字型碼
	delay_ms(2);                          //顯示延時 
	
    i++;
	sel=0b11111011;
	PORTB=sel;
	PORTA=Table[p[ i ]];             //送字型碼
	delay_ms(2);                          //顯示延時 
	
    i++;
	sel=0b11110111;
	PORTB=sel;
	PORTA=Table[p[ i ]];             //送字型碼
	delay_ms(2);                          //顯示延時
	
    i++;
	sel=0b11101111;
	PORTB=sel;
	PORTA=Table[p[ i ]];             //送字型碼
	delay_ms(2);                          //顯示延時

    i++;
	sel=0b11011111;
	PORTB=sel;
	PORTA=Table[p[ i ]];             //送字型碼
	delay_ms(2);                          //顯示延時
	*/
}

//計數值處理函數。參數p1:時間數組名;參數p2:顯示數組名//
//功能:此函數用于將計數值拆分為BCD碼的10時,時,10分,分,10秒,秒//
void Process(uchar *p1,uchar *p2) 
{
    p2[0]=p1[0]/10;
    p2[1]=p1[0]-p2[0]*10;
    p2[2]=p1[1]/10;
    p2[3]=p1[1]-p2[2]*10;
    p2[4]=p1[2]/10;
    p2[5]=p1[2]-p2[4]*10;
}

//--------------初始化I/O口------------------
void Init_IO(void)                   //初始化I/O口
{ 
   DDRA=0xff;                           //設置A口為推挽1輸出
   PORTA=0xff;
   DDRB=0xff;  //DDRC=0xff;                           //設置C口為推挽1輸出;             
   PORTB=0xff; //PORTC=0xff;
      
}

//-------------------主程序--------------------
int main(void)
{
    
	 delay_ms(1000);
	 DDRA = 0XFF;
     //DDRA |= LCD_DATA ;//
	 DDRC = 0XFF;
     //DDRC |= LCD_RS  | LCD_EN | LCD_RW ; //
      
     LCD_init();//初始化 
     	 
	 delay_ms(100);
	 
	 LCD_init();//初始化 
	 delay_ms(100);
	 
     LCD_write_char(0x01,0);      //顯示清屏 
	 
	 delay_ms(200);
	 LCD_write_char(0x01,0);      //顯示清屏
 
	 delay_ms(500);
	 
     LCD_write_string(1,0,"WWW.QLMCU.COM"); 
	 delay_ms(200);
     LCD_write_string(1,1,"0595-22313231"); 
	 delay_ms(1000);

	
	Init_IO();//初始化I/O口
	PORTA=0X00;//測試發光二極管
	sbi(DDRD,7);
	LED_ON;
	
	BEEP();//測試蜂鳴器
	delay_ms(500);
	BEEP();
	delay_ms(500);
	BEEP();                  
    delay_ms(2000);//延時
	PORTB=0xff;  //熄滅所有的數碼管
	
	LED_OFF;//關閉發光二極管
	PORTA=0XFF;
	
    TCCR0=0x04;//T/C0工作于定時方式,系統時鐘256分頻
    TCNT0=0x06;//計數初始值6 
    TIMSK=0x02;//開放TOV0中斷
    SREG=SREG|0x80;//開放總中斷

  while(1)
   {
     Process(Timer,Data);           //計數值處理
     Display(Data);                     //動態掃描顯示
   } 
}


//---------------------T/C0中斷服務函數-------------------------
SIGNAL(SIG_OVERFLOW0)

{
    TCNT0=0x06;                     //重裝計數初始值6
    CNT++;                               //中斷次數累加
  if(CNT==125)           
    {CNT=0;                          //計數到125次,計數值復位
     Timer[2]++;                    //秒加1
     if(Timer[2]==60)
        {Timer[2]=0;
         Timer[1]++;
		}              //分進位
       if(Timer[1]==60)
          {Timer[1]=0;
           Timer[0]++;
		  }             //時進位
         if(Timer[0]==24)
            {Timer[0]=0;
			}
    }                                     //計數到達最高位,計數復位
}


//---------------蜂鳴器子程序-------------
void BEEP(void)
{
    unsigned int j;
	sbi(DDRD,2);//把PB2設置為輸出(蜂鳴器)

	
	  for(j=200;j>0;j--)
		{
		BEEP_ON;delay_us(500);
		BEEP_OFF;delay_us(40);//2.5KHz
		}
delay_us(10);
	
	  for(j=200;j>0;j--)
		{
		BEEP_ON;delay_us(600);
		BEEP_OFF;delay_us(40);//1.25KHz
		}
delay_us(5);		
	  for(j=200;j>0;j--)
		{
		BEEP_ON;delay_us(600);
		BEEP_OFF;delay_us(40);//1.25KHz
		}
}


/*---------------LCD初始化----------------*/
void LCD_init(void) 
  { 
	delay_ms(1000);

    LCD_write_char(0x28,0);      //4bit Display 
	delay_ms(30);

    LCD_write_char(0x28,0);      //4bit Display 
	delay_ms(30);	

    LCD_write_char(0x28,0);      //4bit Display 
	delay_ms(30);

    LCD_write_char(0x28,0);      //4bit Display 
	delay_ms(30);
	

	
	LCD_write_char(0x0c,0);      //顯示開 
	delay_ms(30);

	LCD_write_char(0x0c,0);      //顯示開 
	delay_ms(30);
	
    LCD_write_char(0x01,0);      //顯示清屏 
	delay_ms(30);	
	
    LCD_write_char(0x01,0);      //顯示清屏 
	delay_ms(30);		
	
    LCD_write_char(0x06,0);      //顯示光標移動設置 
	delay_ms(30);


	
  } 


/*---------------寫入使能---------------*/
void LCD_en_write(void)        //EN端產生一個高電平脈沖,寫LCD 
  { 
    LCD_EN_PORT |= LCD_EN; 
    delay_us(20); 
		
    LCD_EN_PORT &= ~LCD_EN; 
	delay_us(20);
  } 


/*----------------------------------------------------------------------- 
LCD_write_char    : 英文字符串顯示函數 

輸入參數:*s      :英文字符串指針; 
          X、Y    : 顯示字符串的位置,X:0-15,Y:0-1 
                    LCD第一行顯示寄存器地址:0X80-0X8F 
                    LCD第一行顯示寄存器地址:0XC0-0XCF 

編寫日期          :2005-10-7  
最后修改日期      :        
-----------------------------------------------------------------------*/ 
void LCD_write_char(unsigned command,unsigned data) 
    { 
		unsigned command_temp,data_temp;         
		
		command_temp = command; 
		data_temp = data; 
		 
		LCD_wait_Ready(); 
	  
		LCD_RW_PORT &= ~LCD_RW;                 //RW=0 
		LCD_DATA_PORT &= 0X0f; 
		if (command == 0) 
		{ 
		   LCD_RS_PORT |= LCD_RS;             //RS=1  
		   LCD_DATA_PORT |= data_temp&0xf0;   //send high 4bit 
		} 
		else  
		{ 
		   LCD_RS_PORT &= ~LCD_RS;            //RS=0 
		   LCD_DATA_PORT |= command_temp&0xf0;//send high 4bit 
		} 
		LCD_en_write(); 
		
		LCD_DATA_PORT &= 0X0f; 
		command_temp=command_temp << 4;         //send low 4bit 
		data_temp=data_temp << 4; 
	  
		if (command==0) 
			LCD_DATA_PORT |= data_temp&0xf0; 
		else 
			LCD_DATA_PORT |= command_temp&0xf0; 
			LCD_en_write(); 
	
		LCD_RW_PORT |= LCD_RW; 
		LCD_RS_PORT ^= LCD_RS;     
    } 

void LCD_wait_Ready(void)                  //等待LCD空閑 
    { 
		LCD_DATA_DDR &= ~0x80;                 //PD7 I/O口方向設置為輸入   
		LCD_RW_PORT |= LCD_RW;                 //RW=1 
		LCD_RS_PORT &= ~LCD_RS;                //RS=0 
		LCD_EN_PORT |= LCD_EN;                 //EN=1 
		while (!( LCD_DATA_PIN&0x80 ) == 0);   //RW=1,讀PD7,為0表示空閑; 
		LCD_EN_PORT &= ~LCD_EN;                //EN=0 
		LCD_DATA_DDR |= 0xf0; 
    } 


/*----------------------------------------------------------------------- 
LCD_set_xy        : 設置LCD顯示的起始位置 
輸入參數:x、y    : 顯示字符串的位置,X:0-15,Y:0-1 
                    LCD第一行顯示寄存器地址:0X80-0X8F 
                    LCD第一行顯示寄存器地址:0XC0-0XCF 
編寫日期          :2005-10-7 
最后修改日期      :       
-----------------------------------------------------------------------*/ 
void LCD_set_xy( unsigned char x, unsigned char y ) 
    { 
	   unsigned char address; 
	   if (y == 0) address = 0x80 + x; 
	   else  
	   address = 0xc0 + x; 
	   LCD_write_char( address, 0 ); 
    } 

/*----------------------------------------------------------------------- 
LCD_write_string  : 英文字符串顯示函數 
輸入參數:*s      :英文字符串指針; 
          X、Y    : 顯示字符串的位置 
編寫日期          :2005-10-7  
最后修改日期      :        
-----------------------------------------------------------------------*/ 
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) 
    { 
		LCD_set_xy( X, Y ); 
		while (*s)  
        { 
         LCD_write_char( 0, *s ); 
		 s ++; 
        } 
    } 


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区无线| 欧美日本韩国一区二区三区视频| 99免费精品在线| 91精品在线一区二区| ...xxx性欧美| 成人综合在线观看| 欧美tickle裸体挠脚心vk| 亚洲韩国一区二区三区| 99热99精品| 欧美激情中文字幕| 国产精品影视在线| 日韩一区二区视频在线观看| 亚洲影视在线观看| 成人黄色小视频在线观看| 日韩视频在线观看一区二区| 一区二区三区在线视频观看58| 国产成人免费视频网站高清观看视频| 91精品麻豆日日躁夜夜躁| 亚洲欧美一区二区三区孕妇| 国产精品99久久久久| 久久影视一区二区| 麻豆91在线播放免费| 欧美精品 国产精品| 亚洲大片免费看| 欧美日韩一区二区在线观看视频| 中文字幕日韩av资源站| 国产a区久久久| 国产精品污污网站在线观看| 国产精品自产自拍| 国产亚洲一区二区三区在线观看 | 91福利精品第一导航| 国产精品女同一区二区三区| 国产精品综合av一区二区国产馆| 2017欧美狠狠色| 国产成人综合在线| 国产精品美女久久久久久2018| 国产精品1区2区3区| 国产精品免费丝袜| 91在线观看地址| 一区二区三区精品视频在线| 91极品视觉盛宴| 亚洲国产精品欧美一二99| 欧美日韩在线电影| 免费在线视频一区| 久久久久国产免费免费 | 国产日韩欧美不卡| 国产成人高清在线| 亚洲精品国产无天堂网2021| 99精品一区二区三区| 亚洲一区二区三区自拍| 在线不卡中文字幕播放| 奇米精品一区二区三区在线观看一| 欧美日韩第一区日日骚| 狠狠色丁香久久婷婷综合丁香| 国产欧美日本一区视频| 色哟哟欧美精品| 日本视频免费一区| 国产嫩草影院久久久久| 欧美无砖砖区免费| 久久精品噜噜噜成人av农村| 精品国产乱码久久久久久久| eeuss影院一区二区三区| 亚洲综合无码一区二区| 日韩精品中午字幕| 成人av免费在线| 五月天激情小说综合| 国产日韩欧美a| 欧美午夜宅男影院| 国产一区二区中文字幕| 一区av在线播放| 久久久久久久网| 欧美影院一区二区| 国产曰批免费观看久久久| 亚洲欧美日韩久久精品| 日韩欧美亚洲国产精品字幕久久久| 国产69精品久久777的优势| 亚洲综合色丁香婷婷六月图片| 欧美zozozo| 欧美性色综合网| 成人一级黄色片| 毛片av一区二区| 一区二区三区免费网站| 国产日韩av一区二区| 欧美视频第二页| a亚洲天堂av| 国产麻豆9l精品三级站| 亚洲电影第三页| 亚洲欧美日本韩国| 久久久国产精品午夜一区ai换脸| 欧美三片在线视频观看 | 欧美日高清视频| zzijzzij亚洲日本少妇熟睡| 美女一区二区在线观看| 亚洲精选在线视频| 国产精品欧美久久久久无广告| 欧美mv和日韩mv的网站| 91精品麻豆日日躁夜夜躁| 欧美性猛交xxxxxxxx| av在线播放一区二区三区| 国产精品亚洲第一| 狠狠色丁香九九婷婷综合五月| 日本一道高清亚洲日美韩| 一区二区三区产品免费精品久久75| 欧美高清在线精品一区| 国产亚洲一本大道中文在线| 精品少妇一区二区三区| 日韩欧美国产一区二区在线播放| 欧日韩精品视频| 在线免费观看成人短视频| 欧美亚洲综合一区| 色欲综合视频天天天| 色婷婷激情久久| 91国产丝袜在线播放| 欧美中文字幕不卡| 色哟哟欧美精品| 欧美天天综合网| 欧美熟乱第一页| 在线综合+亚洲+欧美中文字幕| 欧美久久婷婷综合色| 在线91免费看| 欧美成人免费网站| 精品国产一区二区三区久久影院| 欧美一卡二卡在线观看| 精品国产伦一区二区三区观看方式 | 久久伊人蜜桃av一区二区| 欧美精品一区二区在线观看| 欧美mv日韩mv国产网站| 国产欧美日韩在线观看| 亚洲欧美一区二区久久| 一区二区三区在线看| 亚洲国产精品一区二区久久 | 国产一区二区0| 成人激情综合网站| 色狠狠色狠狠综合| 欧美日韩国产另类一区| 日韩视频永久免费| 中文字幕第一区| 亚洲国产wwwccc36天堂| 日韩影视精彩在线| 国产一区二区三区免费在线观看| 福利视频网站一区二区三区| 99国产欧美另类久久久精品 | 秋霞av亚洲一区二区三| 国产呦萝稀缺另类资源| www.亚洲免费av| 欧美日韩国产高清一区| 久久综合色鬼综合色| 中文字幕五月欧美| 日本成人超碰在线观看| 成人一区在线观看| 欧美电影在线免费观看| 久久精品夜色噜噜亚洲a∨| 一区二区三区在线影院| 精品无码三级在线观看视频| 99麻豆久久久国产精品免费| 欧美一区午夜视频在线观看| 久久免费视频一区| 亚洲成人一区二区| 国产v综合v亚洲欧| 欧美一级欧美三级| 亚洲精品一二三| 国产精品自拍一区| 欧美一区二区视频网站| 亚洲欧美综合网| 久久精品二区亚洲w码| 色猫猫国产区一区二在线视频| 精品久久一二三区| 亚洲成人av一区二区三区| 高清不卡一区二区在线| 欧美一区二区三区白人| 亚洲精品精品亚洲| 国产精品1024久久| 精品国产a毛片| 天天免费综合色| 91亚洲国产成人精品一区二三 | 欧美人牲a欧美精品| 中文字幕av一区二区三区| 久久99在线观看| 欧美精品免费视频| 亚洲一区欧美一区| 91色九色蝌蚪| 国产精品理论片| 高清久久久久久| 亚洲精品一区二区三区精华液 | eeuss影院一区二区三区| 久久网站最新地址| 久久不见久久见免费视频7| 欧美日韩亚州综合| 亚洲高清三级视频| 欧美体内she精高潮| 亚洲已满18点击进入久久| 99免费精品在线观看| 中文字幕免费在线观看视频一区| 国内外精品视频| 久久久欧美精品sm网站| 免费不卡在线观看| 日韩一卡二卡三卡| 久久精品国产秦先生| 欧美sm极限捆绑bd| 国产成人午夜99999|