




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、/*項(xiàng)目名稱(chēng): 紅外編碼發(fā)射程序功能說(shuō)明:按下按鍵則發(fā)出相應(yīng)的紅外編碼。格式為RC5MCU類(lèi)型: ATmega88vMCU時(shí)鐘: 8MHz 內(nèi)部RC振蕩器編譯器: ICC-AVR v7.22寫(xiě)時(shí)間:2012年05月05日編版本: 1.0*/#include<iom88v.h>#include<macros.h>#include<eeprom.h>#define uchar unsigned char#define ulong unsigned long#define uint unsigned int int count,set_count;/中斷計(jì)數(shù),設(shè)定
2、中斷次數(shù) uuchar irflag;/紅外發(fā)送標(biāo)志位uchar irsys=0x44,0x9b;/16位用戶(hù)碼uchar irdata,ircode; /發(fā)送的紅外數(shù)據(jù)/*- 函數(shù)說(shuō)明-*/ /-LCD驅(qū)動(dòng)程序說(shuō)明-void LCD_init(void); /液晶初始化函數(shù)void LCD_en_write(void); /液晶使能函數(shù)void LCD_write_command(unsigned char command) ; /寫(xiě)指令函數(shù)void LCD_write_data(unsigned char data); /寫(xiě)數(shù)據(jù)函數(shù)void LCD_set_xy (unsigned cha
3、r x, unsigned char y); /寫(xiě)地址函數(shù)void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s); /寫(xiě)字符串函數(shù)void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data); /寫(xiě)字符函數(shù)/-/-延時(shí)程序說(shuō)明-void delay_1us(void); /1us延時(shí)函數(shù)void delay_10us(void); /10us延時(shí)函數(shù)void delay_1ms(void); /1ms延時(shí)函數(shù)void dela
4、y_nus(unsigned int n); /n us延時(shí)函數(shù)void delay_nms(unsigned int n); /n ms延時(shí)函數(shù)/-/-鍵盤(pán)程序說(shuō)明-uchar keydown(void); /判斷是否有鍵按下程序(無(wú)鍵按下,返回0;有鍵按下返回1)uchar getkey(void); /取所按下鍵對(duì)應(yīng)的鍵值程序/-MCU端口初始化程序說(shuō)明-void port_init(void);/= void timer0_init(void);/定時(shí)器0初始化/-void ir_sendbyte(void); /紅外發(fā)送一個(gè)字節(jié)數(shù)據(jù)void ir_send(void); /發(fā)送紅外數(shù)
5、據(jù)PDF created with pdfFactory Pro trial versionoid ir_send_repeat(void);/發(fā)送重復(fù)碼v/*子程序體定義*/ *-LCD驅(qū)動(dòng)程序- LCD引腳定義1-GND2-VCC3-VO4-RS5-RW6-EN7 到14-D0-D71 5-背景燈+1 6-背景燈 下面是AVR與LCD連接信息 PB3 ->RSPB1 ->ENPB2 ->RWPB4 ->D4PB5 ->D5PB6 ->D6PB7 ->D7要 使用本LCD驅(qū)動(dòng),改變下面配置信息即可-*/# define LCD_EN_PORT POR
6、TB /以下2個(gè)要設(shè)為同一個(gè)口#define LCD_EN_DDR DDRB# define LCD_RS_PORT PORTB /以下2個(gè)要設(shè)為同一個(gè)口#define LCD_RS_DDR DDRB# define LCD_RW_PORT PORTB /以下2個(gè)要設(shè)為同一個(gè)口#define LCD_RW_DDR DDRB# define LCD_DATA_PORT PORTB /以下3個(gè)要設(shè)為同一個(gè)口# define LCD_DATA_DDR DDRB /一定要用高4位#define LCD_DATA_PIN PINB#define LCD_RS (1<<PB3) /0x08 p
7、ortB3 out#define LCD_EN (1<<PB1) /0x02 portB1 out#define LCD_RW (1<<PB2) /0x04 portB2 out#define LCD_DATA (1<<PB4)|(1<<PB5)|(1<<PB6)|(1<<PB7) /0xf0 portB4/5/6/7 out / /-LCD驅(qū)動(dòng)程序-v oid LCD_init(void) /液晶初始化LCD_RW_DDR|=LCD_RW; /設(shè)置RW方向?yàn)檩敵鯨CD_RW_PORT&=LCD_RW; /RW清零
8、,設(shè)置為寫(xiě)模式LCD_DATA_DDR|=LCD_DATA; /數(shù)據(jù)口方向?yàn)檩敵鯨CD_EN_DDR|=LCD_EN; /設(shè)置EN方向?yàn)檩敵鯨CD_RS_DDR|=LCD_RS; /設(shè)置RS方向?yàn)檩敵鯨CD_write_command(0x28);LCD_en_write();delay_nus(40);LCD_write_command(0x28); /4位顯示LCD_write_command(0x0c); /顯示開(kāi)/LCD_write_command(0x01); /清屏PDF created with pdfFactory Pro trial versiondelay_nms(2);
9、oid LCD_en_write(void) /液晶使能 vLCD_EN_PORT|=LCD_EN;delay_nus(1);LCD_EN_PORT&=LCD_EN; oid LCD_write_command(unsigned char command) /寫(xiě)指令 vdelay_nus(16);LCD_RS_PORT&=LCD_RS; /RS=0 寫(xiě)指令 LCD_DATA_PORT&=0X0f; /清高四位 LCD_DATA_PORT|=command&0xf0; /寫(xiě)高四位 LCD_en_write();command=command<<4; /
10、低四位移到高四位 LCD_DATA_PORT&=0x0f; /清高四位 LCD_DATA_PORT|=command&0xf0; /寫(xiě)低四位 LCD_en_write();oid LCD_write_data(unsigned char data) /寫(xiě)數(shù)據(jù) vdelay_nus(16);LCD_RS_PORT|=LCD_RS; /RS=1 寫(xiě)數(shù)據(jù) LCD_DATA_PORT&=0X0f; /清高四位LCD_DATA_PORT|=data&0xf0; /寫(xiě)高四位LCD_en_write();data=data<<4; /低四位移到高四位 LCD_DA
11、TA_PORT&=0X0f; /清高四位 LCD_DATA_PORT|=data&0xf0; /寫(xiě)低四位 LCD_en_write();oid LCD_set_xy( unsigned char x, unsigned char y ) /寫(xiě)地址函數(shù) vunsigned char address;if (y = 0) address = 0x80 + x;else address = 0xc0 + x;LCD_write_command( address);void LCD_write_string(unsigned char X,unsigned char Y,unsigne
12、d char *s) /列x=019,行y=0,1LCD_set_xy( X, Y ); /寫(xiě)地址while (*s) / 寫(xiě)顯示字符PDF created with pdfFactory Pro trial versionLCD_write_data( *s );s +; oid LCD_write_char(unsigned char X,unsigned char Y,unsigned char data) /列x=019,行y=0,1vLCD_set_xy( X, Y ); /寫(xiě)地址LCD_write_data( data);/= *鍵盤(pán)程序*/uchar keydown(void)
13、/判斷是否有鍵按下程序(無(wú)鍵按下,返回0;有鍵按下返回1)uchar down_flag;PORTD&=(1<<PD3)|(1<<PD4); / PD3,PD4清零delay_10us();if(PIND&0x07)!=0x07)delay_nms(10);if(PIND&0x07)!=0x07) down_flag=1; /有鍵按下返回1else down_flag=0; /無(wú)鍵按下返回0else down_flag=0;return(down_flag);/*取鍵值程序*/uchar getkey(void) /取所按下鍵對(duì)應(yīng)的鍵值程序(Te
14、st:1,左:2,右:3,下:4,Menu:5,上:6,其它:7)uchar value;PORTD&=(1<<PD3); /PD3清零PORTD|=(1<<PD4); /PD4置位delay_10us();if(PIND&0x07)!=0x07)if(PIND&0x01)=0) value=1; / Test鍵按下,value=1 else if(PIND&(1<<PD1)=0) value=2; / 左鍵按下,value=2else if(PIND&(1<<PD2)=0) value=3; / 右鍵按下
15、,value=3 else value=7; / 無(wú)鍵按下,value=7 elsePORTD|=(1<<PD3); /PD3置位PORTD&=(1<<PD4); /PD4清零delay_10us();if(PIND&0b00000111)!=0b00000111)PDF created with pdfFactory Pro trial versionif(PIND&(1<<PD0)=0) value=6; / 上鍵按下,value=6 else if(PIND&(1<<PD1)=0) value=5; / Me
16、nu鍵按下,value=5 else if(PIND&(1<<PD2)=0) value=4; / 下鍵按下,value=4 else value=7; / 無(wú)鍵按下,value=7 else value=7;return(value);*延時(shí)程序*/*1M內(nèi)部RC時(shí)鐘*/1usvoid delay_1us(void) /1us延時(shí)函數(shù)_NOP(); _NOP();_NOP();_NOP();_NOP();_NOP();_NOP();_NOP(); /10usvoid delay_10us(void) /10us延時(shí)函數(shù) delay_1us();delay_1us();de
17、lay_1us();delay_1us();delay_1us();delay_1us();delay_1us();delay_1us();delay_1us();delay_1us();/nusvoid delay_nus(uint n) /N us延時(shí)函數(shù)uint i=0;for (i=0;i<n;i+)delay_1us();/1msvoid delay_1ms(void) /1ms延時(shí)函數(shù)unsigned char i=83;while(i-)delay_10us();/nmsvoid delay_nms(uint n) /N us延時(shí)函數(shù)PDF created with pdf
18、Factory Pro trial versionwhile(n-)delay_1ms(); oid ir_sendbyte(void) /紅外發(fā)送一個(gè)字節(jié)數(shù)據(jù)vunsigned char i;for(i=0;i<8;i+) /發(fā)送8位數(shù)據(jù)set_count=38;/35; /發(fā)送編碼中的0.56ms高電平 (/后為12M晶振下的數(shù)值)irflag=1; /啟動(dòng)紅外發(fā)射二極管發(fā)射count=0; /中斷計(jì)數(shù)先清0TCCR0B=1; /開(kāi)啟定時(shí)器0while(count<set_count); /等待發(fā)送完TCCR0B=0; /關(guān)閉定時(shí)器0if(ircode&0x01) se
19、t_count=132;/130; /判斷紅外編碼最低位,若為1則1.69ms的低電平 (/后為12M晶振下的數(shù)值)else set_count=45;/35; /為0則0.565ms的低電平 (/后為12M晶振下的數(shù)值)irflag=0; /低電平則不發(fā)射count=0; /中斷計(jì)數(shù)清0TCCR0B=1; /開(kāi)啟定時(shí)器0while(count<set_count); /等待發(fā)送完TCCR0B=0; /關(guān)閉定時(shí)器0ircode=ircode>>1; /將數(shù)據(jù)右移,即從低位到高位發(fā)送/-void ir_send(void) /發(fā)送紅外數(shù)據(jù)set_count=684;/672;
20、/發(fā)送編碼中的引導(dǎo)碼(9ms高電平+4.5ms低電平) (/后為12M晶振下的數(shù)值) irflag=1; /啟動(dòng)紅外發(fā)射二極管發(fā)射count=0; /中斷計(jì)數(shù)清0TCCR0B=1;while(count<set_count);TCCR0B=0;set_count=346;/336; /發(fā)送編碼中的4.5ms低電平(/后為12M晶振下的數(shù)值)irflag=0; /低電平則不發(fā)射count=0;TCCR0B=1;while(count<set_count); /等待發(fā)送完TCCR0B=0;ircode=irsys0; /發(fā)送16位用戶(hù)碼的前1-8位ir_sendbyte();ircod
21、e=irsys1; /發(fā)送16位用戶(hù)碼的前9-16位ir_sendbyte();ircode=irdata; /發(fā)送8位數(shù)據(jù)碼ir_sendbyte();ircode=irdata; /發(fā)送8位數(shù)據(jù)反碼ir_sendbyte();set_count=38;/35; /發(fā)送編碼中的0.56ms高電平 (/后為12M晶振下的數(shù)值)PDF created with pdfFactory Pro trial versionirflag=1; count=0;TCCR0B=1; while(count<set_count);TCCR0B=0;PORTB|=(1<<PB0); /發(fā)射完了
22、關(guān)閉紅外發(fā)射二極管/-發(fā)送重復(fù)碼-void ir_send_repeat(void)set_count=684;/672; /發(fā)送9ms高電平irflag=1; /啟動(dòng)紅外發(fā)射二極管發(fā)射count=0; /中斷計(jì)數(shù)清0TCCR0B=1; /開(kāi)T0while(count<set_count); /等待發(fā)送完TCCR0B=0;set_count=173; /發(fā)送2.25ms低電平irflag=0; /低電平則不發(fā)射count=0;TCCR0B=1;while(count<set_count); /等待發(fā)送完TCCR0B=0;set_count=38;/35; /發(fā)送編碼中的0.56ms
23、高電平 (/后為12M晶振下的數(shù)值) irflag=1;count=0;TCCR0B=1;while(count<set_count); /等待發(fā)送完TCCR0B=0;PORTB|=(1<<PB0); /發(fā)射完了關(guān)閉紅外發(fā)射二極管/*端口初始化*/void port_init(void)DDRB= 0xff;PORTB= 0x00;DDRC= 0x2f;PORTC= 0xc0;DDRD= 0xf8;PORTD= 0x1f;/定時(shí)器0初始化void timer0_init(void)TCCR0B = 0x00;/設(shè)置定時(shí)器0預(yù)分頻為1/1系統(tǒng)時(shí)鐘(0x01),先關(guān)閉。TCNT0
24、 = 0xa6;/中斷溢出周期設(shè)定為13uSTIMSK0 = 0x01;/使能定時(shí)器0溢出中斷/定時(shí)器1初始化void timer1_init(void)TCCR1B = 0x00;/設(shè)置定時(shí)器1預(yù)分頻為1/256系統(tǒng)時(shí)鐘(0x04),先關(guān)閉。TCNT1H = 0xf2;/中斷溢出周期設(shè)定為110msTCNT1L = 0x70;/PDF created with pdfFactory Pro trial versionTIMSK1 = 0x01;/使能定時(shí)器1溢出中斷#pragma interrupt_handler timer0_sever:iv_TIMER0_OVFvoid timer0_sever(void)TCNT0 = 0xa6;/中斷溢出周期設(shè)定為13uScount+;if(irfla
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)鐵路物流行業(yè)十三五規(guī)劃與投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)車(chē)燈模具行業(yè)市場(chǎng)前景規(guī)模及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)蓮藕粉行業(yè)運(yùn)行態(tài)勢(shì)及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)花露水市場(chǎng)風(fēng)險(xiǎn)評(píng)估規(guī)劃分析報(bào)告
- 2025-2030年中國(guó)胡麻油市場(chǎng)競(jìng)爭(zhēng)狀況及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)聚碳酸酯板(陽(yáng)光板)行業(yè)發(fā)展趨勢(shì)規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)縫制機(jī)械市場(chǎng)運(yùn)行現(xiàn)狀及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)紙制品市場(chǎng)運(yùn)行現(xiàn)狀及發(fā)展前景預(yù)測(cè)報(bào)告
- 2025-2030年中國(guó)電玩行業(yè)運(yùn)行狀況及發(fā)展前景分析報(bào)告
- 2025-2030年中國(guó)電容筆行業(yè)發(fā)展?fàn)顩r及營(yíng)銷(xiāo)戰(zhàn)略研究報(bào)告
- 代理法人免責(zé)協(xié)議書(shū)版本
- 2024年青島港灣職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)必考題
- 門(mén)診導(dǎo)診課件
- python程序設(shè)計(jì)-說(shuō)課
- 《糖尿病患者血脂管理中國(guó)專(zhuān)家共識(shí)(2024版)》解讀
- 廣州石牌村改造規(guī)劃方案
- 麥克利蘭-海氏-超全的6族21項(xiàng) -勝任特征辭典的起源與發(fā)展
- GB/T 22919.12-2024水產(chǎn)配合飼料第12部分:鯽魚(yú)配合飼料
- IP承載網(wǎng)架構(gòu)規(guī)劃及路由部署N
- (完整word版)現(xiàn)代漢語(yǔ)常用詞表
- 藏藥專(zhuān)業(yè)知識(shí)講座培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論