#include #define uchar unsigned char #define uint unsigned int #define set_bit(a,b) a|=(1<#define clr_bit(a,b) a&=(1<#define get_bit(a,b) a&(1<uchar TXEND; uchar send_tab0_pc=0;//發(fā)送TAB0數(shù)據(jù)標志位 uchar send_tab1_pc=0;//發(fā)送tab1數(shù)據(jù)標志位 uchar i,j; uchar TAB0[128]; uchar TAB1[128]; unsigned long v;//一幀的數(shù)據(jù)量 #pragma interrupt_handler TX_end:14 void TX_end() { SREG=0X80;//開啟全局中斷 TXEND=0;//發(fā)送完畢標志 } void USART_INT()//初始化串口 { //UCSRA默認 UCSRB=0x48;//使能發(fā)送完畢中斷,禁能數(shù)據(jù)寄存器空中斷,使能發(fā)送模式,關閉接收,關閉接收中斷 UCSRC=0x86;//禁止奇偶效驗,數(shù)據(jù)位8,停止位1,工作在異步模式 UBRRH=0x00;// UBRRL=51;//波特率9600,8MHZ, SREG=0x80;//開啟全局中斷 } void send_byte(uchar buffer)//向PC發(fā)送數(shù)據(jù) { while(0==get_bit(UCSRA,5));//數(shù)據(jù)寄存器里的數(shù)據(jù)是不是為空如果是就寫數(shù)據(jù) UDR=buffer; while(TXEND);//是否發(fā)送完畢? TXEND=1;//上一幀已經(jīng)發(fā)送準備下一幀的發(fā)送 } /*void ov7670_int()//7670初始化函數(shù) { }*/ ////***********SCCB-----OX7670************************////////// void delay1ms(uint z) { uint j,k; for(k=z;k;k--) { for(j=2666;j;j--) ; //此處j不得小于27否則讀不出數(shù)據(jù) } } void int_twi_sccb() { TWBR=50;/*設置SCL的時鐘頻率在19。230根據(jù)公式SCL FREQUENCY=CPU Clock frequency/16+2(TWBR)*4的TWPS次方 */ } //////以上是寫寄存器程序///////////////////////////////// /**************************************************/ //本函數(shù)為設置7670寄存器的最底層操作函數(shù), //無返回值 //ADD是要寫的寄存器地址,DATE是向里面寫入的數(shù)據(jù) // /*************************************************/ void write_ov7670_sccb_twi(uchar add,uchar date)//向add指定的地址內寫入指定的數(shù)據(jù) { //主發(fā)送模式程序///////////////////////// TWCR=0xa4;//插入開始新號使能總線,使能START delay1ms(1); while(0==get_bit(TWCR,7));//檢測起始信號是否發(fā)送? while((TWSR&0xf8)!=0x08) { while(1); //出錯 } //START信號的正確響應碼 TWDR=0x42;//寫操作SCCB的器件地址0X42 TWCR=0x84;//重啟啟動數(shù)據(jù)的發(fā)送 delay1ms(1); while(0==get_bit(TWCR,7));//檢測數(shù)據(jù)信號是否發(fā)送? while((TWSR&0XF8)!=0x18) { while(1); //出錯 } //發(fā)送完畢有ACK應答響應碼 TWDR=add;//寫操作SCCB的寄存器子地址 TWCR=0x84;//重啟啟動數(shù)據(jù)的發(fā)送 delay1ms(1); while(0==get_bit(TWCR,7));//檢測數(shù)據(jù)信號是否發(fā)送? while((TWSR&0XF8)!=0x28) { while(1); //出錯 } //發(fā)送完畢有ACK應答響應碼 TWDR=date;//寫操作SCCB的寄存器數(shù)據(jù) TWCR=0x84;//重啟啟動數(shù)據(jù)的發(fā)送 delay1ms(1); while(0==get_bit(TWCR,7));//檢測數(shù)據(jù)信號是否發(fā)送? while((TWSR&0XF8)!=0x28) { while(1); //出錯 } //發(fā)送完畢有ACK應答響應碼 TWCR=0x94;//STOP信號 } //////以上是寫寄存器程序////////////////////////////////////////////////////////////// init_OV7670_POWER_UP()//0V7670的初始化寄存器設置 { delay1ms(5);//準備寫入軟件初始化 write_ov7670_sccb_twi(0x12,0x83);//RGB格式,初始化,彩條輸出 delay1ms(5);//初始化完畢 write_ov7670_sccb_twi(0x0d,0x30);//1/4窗口,160*120 delay1ms(5);//初始化完畢 write_ov7670_sccb_twi(0x11,0x0f);//f(內部時鐘)=12mhz/(15+1)=12000/16=750hz delay1ms(5);//初始化完畢 write_ov7670_sccb_twi(0x15,0x20);//PCLK在行同步時沒輸出 delay1ms(5);//初始化完畢 write_ov7670_sccb_twi(0x3c,0x68);//默認 delay1ms(5);//初始化完畢 write_ov7670_sccb_twi(0x3e,0x00);//PCLK無分頻 delay1ms(5);//初始化完畢 write_ov7670_sccb_twi(0x40,0xd0);//數(shù)據(jù)范圍是00~ff。輸出RGB565 delay1ms(5);//初始化完畢 write_ov7670_sccb_twi(0x42,0xc8);//1/4窗口,DSP彩色條輸出允許 delay1ms(5);//初始化完畢 write_ov7670_sccb_twi(0x6b,0xc0);//PLL8分頻 delay1ms(5);//初始化完畢 write_ov7670_sccb_twi(0x70,0x80);//八色圖 delay1ms(5);//初始化完畢 write_ov7670_sccb_twi(0x71,0x00);//八色圖 delay1ms(5);//設置完畢 } void init_external_interrupt()//外部中斷的初始化程序 { MCUCR=0x0f;//外部中斷0和1都是低電平觸發(fā) GICR=0x80;//使能外部中斷1; SREG=0X80;//開啟全局中斷 } //外部中斷0作為PCLK像素時鐘 #pragma interrupt_handler int0_isr:2 void int0_isr(void)//外部中斷0的服務程序 { if(38400==v) { SREG=0X80; } else v++; if(128!=i) { TAB0[i]=PINA; i++; j=0; } else send_tab0_pc=1; //向PC發(fā)送數(shù)據(jù)標志 send_tab1_pc=0;//不向PC發(fā)送數(shù)據(jù)標志 if(128!=j) { TAB1[j]=PINA; j++; } else i=0; send_tab1_pc=1;//向PC發(fā)送數(shù)據(jù)標志 send_tab0_pc=0;//不向PC發(fā)送數(shù)據(jù)標志 } //外部中斷1作為HREF行同步信號 #pragma interrupt_handler int1_isr:3 void int1_isr(void)//外部中斷1的服務程序 { MCUCR=0x0f;//外部中斷0和1都是上升沿觸發(fā) GICR=0xc0;//使能外部中斷1,0; SREG=0x80;//開啟全局中斷 } void main() { uchar num; delay1ms(20);//上電延時20ms DDRA=0x00; DDRD=0xff; PORTD=0xff; DDRC=0xff;//pc口設為輸出 PORTC=0xff;//pc口初始化 USART_INT();//串口初始化 int_twi_sccb();//sccb初始化 init_OV7670_POWER_UP();//軟件初始化 init_external_interrupt();//外部中斷初始化 delay1ms(10);//無論讀完還是寫完都要等等 while(1) { if(send_tab0_pc) { for(num=0;num<128;num++) {send_byte((TAB0[num]));} } if(send_tab1_pc) { for(num=0;num<128;num++) {send_byte((TAB1[num]));} } } }
上一篇:基于AVR的SCCB讀寫程序
下一篇:LCD12864液晶顯示程序
推薦閱讀
史海拾趣
隨著公司規(guī)模的擴大和市場份額的提升,DCCOM開始注重品牌建設和市場推廣。公司投入大量資金進行品牌宣傳和市場推廣,通過參加各種行業(yè)展會、舉辦技術研討會等方式提高品牌知名度和影響力。這些舉措使得DCCOM的品牌價值得到了顯著提升。
BERGQUIST公司的故事始于上世紀,當時創(chuàng)始人敏銳地洞察到電子設備熱管理的重要性。公司從研發(fā)高效熱傳導材料開始,逐漸在熱管理技術領域建立起自己的聲譽。初創(chuàng)時期,BERGQUIST面臨著資金和技術雙重挑戰(zhàn),但團隊憑借對技術的執(zhí)著追求和對市場的深刻洞察,成功開發(fā)出了一系列具有創(chuàng)新性的熱管理產(chǎn)品,為公司的長遠發(fā)展奠定了堅實基礎。
隨著產(chǎn)品技術的不斷成熟和市場的逐步認可,BERGQUIST公司開始積極拓展市場。公司不僅在國內市場取得了顯著成績,還積極開拓國際市場,與眾多知名電子企業(yè)建立了長期合作關系。通過不斷提升產(chǎn)品質量和服務水平,BERGQUIST成功樹立起了自己的品牌形象,成為熱管理領域的佼佼者。
隨著市場競爭的加劇,Brite-Led意識到單憑自身力量難以持續(xù)保持領先。于是,公司積極尋求與其他企業(yè)和研究機構的合作研發(fā)機會。通過與一家知名高校的合作,Brite-Led成功開發(fā)出一種新型的LED封裝技術,大幅提高了產(chǎn)品的可靠性和耐用性。這一合作不僅加強了Brite-Led的技術實力,也為其帶來了更多的商業(yè)機會和合作伙伴。
品質是電子行業(yè)的生命線。Adamant Co Ltd深知這一點,因此在品質管理方面下足了功夫。公司建立了嚴格的品質管理體系,從原材料采購到產(chǎn)品生產(chǎn)、檢測、出廠等各個環(huán)節(jié)都嚴格把關。同時,公司還注重品牌建設,通過提升產(chǎn)品形象和服務質量,贏得了客戶的信任和口碑。這些努力使得Adamant Co Ltd在行業(yè)中樹立了良好的品牌形象。
在5G浪潮的推動下,國博電子憑借其在射頻集成電路領域的深厚技術積累,成功研制出5G毫米波段Massive MIMO毫米波有源相控陣組件等一系列典型產(chǎn)品。這些產(chǎn)品不僅在國內市場得到了廣泛應用,還贏得了國際市場的認可。國博電子的技術領先不僅推動了國內5G通信產(chǎn)業(yè)的發(fā)展,也為全球5G通信技術的進步做出了重要貢獻。
頭戴式顯示器有什么稀奇的,入眼式才厲害呢!華盛頓大學的研究小組將燈管與電路整合進了隱形眼鏡。這種入眼式顯示器與普通隱形眼鏡一般大,可惜現(xiàn)在還點不亮。不過在能點亮之前,相信大家都很關心一個問題--佩戴舒適度。因此他們在兔子的紅眼睛 ...… 查看全部問答∨ |
1 nRF24L01概述 nRF24.L01是一款新型單片射頻收發(fā)器件,工作于2.4 GHz~2.5 GHz ISM頻段。內置頻率合成器、功率放大器、晶體振蕩器、調制器等功能模塊,并融合了增強型ShockBurst技術,其中輸出功率和通信頻道可通過程序進行配置。nRF24L01功耗低,在 ...… 查看全部問答∨ |
1.串口通信的基本原理: 一般計算機與外部設備通訊有兩種方式: 并行傳送(Parallel ):一次的傳輸量為8個位(1字節(jié)),通過并行端口,如打印機 串行傳送(Serial ):一次只傳輸1個位,通過串行端口,如RS-232 位與字節(jié)的概念: &n ...… 查看全部問答∨ |
|
我手上有一個讀卡器設備,支持usb和串口,我只有它的windows驅動程序。 我用串口調試工具配合它的協(xié)議可以完全操作這個讀卡器, 也就是說如果我用串口通信的話,在wince下,不需要驅動也能搞定。 問題是如果我要用wince下的usb host來操作讀卡器 ...… 查看全部問答∨ |
南華大學黃智偉系列--電子設計競賽作品制作過程中故障檢測的一般方法 本帖最后由 paulhyde 于 2014-9-15 09:31 編輯 競賽作品在制作過程中出現(xiàn)故障是不可避免的,故障檢測和檢修是調試工作的一部分。掌握一定的故障檢測和檢修方法,可以較快地找到產(chǎn)生故障的原因,使檢修過程大大縮短。故障檢測和 ...… 查看全部問答∨ |
【低功耗】Altera低功耗Cyclone III FPGA實現(xiàn)了便攜式應用的高度集成 Altera公司(NASDAQ: ALTR)近日宣布,65-nm Cyclone® III FPGA系列推出新的8x8 mm2封裝(M164),為設計人員提供單位電路板上容量最大的FPGA。設計人員現(xiàn)在可以充分利用Cyclone III器件的低功耗和大容量領先優(yōu)勢,設計實現(xiàn)消 ...… 查看全部問答∨ |
設計資源 培訓 開發(fā)板 精華推薦
- 生成式 AI 重塑自動駕駛仿真:4D 場景生成技術的突破與實踐
- 51Sim 3D 高斯混合仿真引擎 | 申報2025第七屆金輯獎最佳技術實踐應用獎
- 智協(xié)慧同VDM(Vehicle Diagnosis Management System)車輛智能診斷系統(tǒng) | 申報2025第七屆金輯獎最佳技術實踐應用獎
- 麻省理工學院發(fā)明新型光子AI芯片 將使電動汽車的續(xù)航里程增加50英里
- 受肌肉啟發(fā) 浦項科技大學發(fā)明片狀機器人以在最狹窄的空間中導航
- 我們?yōu)槭裁聪矚g看機器人互毆?
- 浩亭與阿爾斯通通力合作,共筑綠色鐵路交通的未來
- 智能樓宇邊緣設備的平臺集成發(fā)展方向——更智能、更快速、更互聯(lián)
- 全新MG4,真能改寫10萬級純電市場競爭格局?
- 固態(tài)電池或成主流,2028年成關鍵成敗之年
- 將低功耗設計進行到底——評論、轉發(fā)贏大禮!
- 芯幣競拍:感恩教師節(jié)專場
- Keysight示波器主題月有獎系列活動之 注冊大獎天天抽 搶樓踩中亦有獎
- Microchip有獎直播:VectorBlox™ SDK 報名中
- 有獎直播|ADI 慣性MEMS應用那些事
- 借助 Microchip 生態(tài)系統(tǒng)中的 PIC® 和 AVR® 單片機開啟嵌入式到云端之旅 系列在線研討會
- 帶你零起點入門STM32(專為嵌入式應用而開發(fā)的內核)
- 福祿克首款熱成像萬用表Fluke-279FC 即將上市!填寫問卷贏好禮嘍!
- EEWorld Datasheet 伴你同行!快來領取200芯積分福利啦~
- 泰克福袋:示伴功倍,萬能福袋派送中