#include "yejin.h"
const uchar num[]={
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*"0",0*/
0X00,0X00,0X08,0X08,0X1F,0X00,0X00,0X00,0X00,0X00,0X04,0X04,0XFC,0X04,0X04,0X00,/*"1",1*/
0x00,0x70,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*"2",2*/
0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x20,0x21,0x21,0x22,0x1C,0x00,/*"3",3*/
0x00,0x00,0x80,0x40,0x30,0xF8,0x00,0x00,0x00,0x06,0x05,0x24,0x24,0x3F,0x24,0x24,/*"4",4*/
0x00,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x20,0x20,0x20,0x11,0x0E,0x00,/*"5",5*/
0x00,0xE0,0x10,0x88,0x88,0x90,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,/*"6",6*/
0x00,0x18,0x08,0x08,0x88,0x68,0x18,0x00,0x00,0x00,0x00,0x3E,0x01,0x00,0x00,0x00,/*"7",7*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,/*"8",8*/
0x00,0xF0,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x01,0x12,0x22,0x22,0x11,0x0F,0x00,/*"9",9*/};
/************微秒延時************/
void delay_us(unsigned long int us)
{
unsigned long int i;
for( i=0;i /**************毫秒延時************/ void delay_ms(unsigned int ms) { unsigned int i,j; for( i=0;i } /*************************************/ void SPI_init(void) { DDRB |= 0xBF; SPCR = 0x50; //主機,使能spi,高位先,上升沿起 SPSR = 0x01; //2倍頻 } //******************端口初始化函數************* void port_init() { DDRB=0Xff; //SCK、MOSI、SS置位為輸出 } //***************SPI發送************************ void lcd_wrByte(uint data,uint dc) { if(dc==0) DC_0; if(dc==1) DC_1; SPDR = data; while ((SPSR & 0x80) == 0); } /*********************OLED 設置坐標*********************/ void lcd_Set_xy(uchar x, uchar y) { lcd_wrByte(0xb0+y,0); lcd_wrByte(((x&0xf0)>>4)|0x10,0); lcd_wrByte((x&0x0f)|0x01,0); } /*********************OLED復位************************************/ void lcd_CLS(void) { uchar y,x; for(y=0;y<8;y++) { lcd_wrByte(0xb0+y,0); lcd_wrByte(0x01,0); lcd_wrByte(0x10,0); for(x=0;x<128;x++) lcd_wrByte(0,1); } } /*********************OLED初始化************************************/ void lcd_Init(void) { RES_0; delay_ms(500);//初始化之前的延時 RES_1; lcd_wrByte(0xae,0);//關閉oled面板 lcd_wrByte(0x00,0);//設置低列地址 lcd_wrByte(0x10,0);//設置高列地址 lcd_wrByte(0x40,0);//設置開始行地址設置映射RAM顯示開始行(0x00 0x3F) lcd_wrByte(0x81,0);//設置對比控制寄存器 lcd_wrByte(duibidu,0); // 設置輸出對比度 lcd_wrByte(0xa1,0);//設置列映射 0xa0左右反置 0xa1正常 lcd_wrByte(0xc8,0);//掃描方向 0xc0上下反置 0xc8正常 lcd_wrByte(0xa6,0);//設置正常顯示 lcd_wrByte(0xa8,0);//設置多種比列(1到64) lcd_wrByte(0x3f,0);//1/64 lcd_wrByte(0xd3,0);//設置顯示補償(0x00 0x3F) lcd_wrByte(0x00,0);//抵消 lcd_wrByte(0xd5,0);//設置顯示時鐘分頻/振蕩器頻率 lcd_wrByte(0x80,0);//設置分割比,設置時鐘為100幀/秒 lcd_wrByte(0xd9,0);//設置pre-charge時期 lcd_wrByte(0xf1,0);//將預充電設置為15個時鐘,放電為1個時鐘 lcd_wrByte(0xda,0);//設置com pin硬件配置 lcd_wrByte(0x12,0);// lcd_wrByte(0xdb,0);//設置vcomh電壓 lcd_wrByte(0x40,0);//取消VCOM等級 lcd_wrByte(0x20,0);//設置內存尋址模式(0x00/0x01/0x02) lcd_wrByte(0x02,0);//頁面尋址模式 lcd_wrByte(0x8d,0);//設置充電泵啟用/禁用 lcd_wrByte(0x14,0);//顯示時啟用 lcd_wrByte(0xa4,0);//全部顯示開,恢復內存內容顯示,輸出內存中的內容 lcd_wrByte(0xa6,0);// 禁用反顯示(0xa6/a7) lcd_wrByte(0xaf,0);//打開lcd面板 lcd_CLS(); //初始清屏 } /*****************功能描述:顯示16*16點陣 顯示的坐標(x,y),y為頁范圍0~7****************************/ void lcd_16x16(uchar x,uchar y,uchar N,uchar zi[]) { uchar wm=0; uint adder=32*N; lcd_Set_xy(x,y); for(wm = 0;wm < 16;wm++) //上頁 { //lcd_wrByte(zi[adder],1); adder ++; } lcd_Set_xy(x,y + 1); for(wm = 0;wm < 16;wm++) //下頁 { //lcd_wrByte(zi[adder],1); adder ++; } } /*******************功能描述:顯示8*16 顯示的坐標(x,y),y為頁范圍0~7,N第幾個字****************/ void lcd_8x16(uchar x,uchar y,uchar N) { uchar wm=0; uint adder=16*N; lcd_Set_xy(x , y); for(wm = 0;wm < 8;wm++) //上頁 { lcd_wrByte(num[adder],1); adder ++; } lcd_Set_xy(x,y + 1); for(wm = 0;wm < 8;wm++) //下頁 { lcd_wrByte(num[adder],1); adder ++; } } /***********功能描述:顯示顯示BMP圖片起始點坐標(x,y),x的范圍0~127,y為頁的范圍0~7*****************/ void lcd_BMP(uchar x,uchar y,uchar chang,uchar kuan,uchar BMP[]) { uchar wm=0,su,hen; uint i,j,adder; lcd_Set_xy(x,y); if(kuan%8==0) su=kuan/8; else su=kuan/8+1; for(i = y;i < su;i++) { lcd_Set_xy(x,i); for(j=x;j lcd_wrByte(BMP[adder++],1); } } }
上一篇:AVR單片機匯編指令的小合集
下一篇:Dynamixel數字舵機驅動
推薦閱讀
史海拾趣
Allied Electronics,總部位于美國德克薩斯州的一家分銷公司,專注于為各種行業提供電子元件和電子產品。以下是關于Allied Electronics發展的五個相關故事:
成立和初期發展: Allied Electronics成立于1928年,最初以銷售家庭無線電零件和配件為主要業務。隨著無線電和電子行業的發展,公司逐漸擴大了產品范圍,開始提供更廣泛的電子元件和設備,以滿足不斷增長的市場需求。
與RS Components的合并: 2000年,Allied Electronics與英國的RS Components公司合并,成為全球領先的電子元件分銷商之一。這一合并加強了兩家公司在全球市場的地位,并且拓展了它們的產品線和客戶群。
公司戰略調整: 隨著數字化技術的快速發展,Allied Electronics逐漸調整了業務戰略,加大了對電子元件和器件的供應,并拓展了工業自動化、物聯網和電子制造等領域的業務。通過與各種行業的合作伙伴建立緊密的關系,公司不斷提升了產品質量和服務水平。
技術創新和數字化轉型: Allied Electronics致力于技術創新和數字化轉型,通過建立先進的電子商務平臺和在線資源中心,為客戶提供更便捷的采購體驗。同時,公司還加強了與供應商的合作關系,引入了更多的創新產品,滿足不同客戶的需求。
持續發展和全球擴張: 作為全球領先的電子元件分銷商之一,Allied Electronics不斷加大在全球范圍內的市場擴張力度,開設了多個銷售辦事處和物流中心,以更好地服務于全球客戶。同時,公司還積極參與行業展會和活動,加強了與全球電子行業的合作與交流,推動了公司的持續發展和壯大。
近年來,電子行業經歷了深刻的變革,新興技術的不斷涌現給Bedford Opto公司帶來了前所未有的挑戰。然而,公司憑借敏銳的市場洞察力和靈活的戰略調整,成功應對了這些變革。通過加大研發投入,積極引進新技術,公司不斷推出新產品,保持了市場競爭優勢。
作為一家領先的電子企業,Fairview Microwave深知自己的社會責任和使命。他們積極履行社會責任,關注環保和公益事業。公司不僅嚴格遵守環保法規和標準要求,還積極推廣綠色生產和循環經濟理念。同時,Fairview Microwave還積極參與社會公益事業,通過捐贈和志愿服務等方式回饋社會。這些舉措不僅提升了公司的社會形象和聲譽,也為公司的可持續發展奠定了堅實基礎。
請注意,以上故事均為虛構內容,旨在展示Fairview Microwave Inc公司可能的發展路徑和成長歷程。如需了解該公司真實的發展故事和歷程,請參考公司官方發布的歷史資料和新聞報道。
隨著市場需求的不斷增長,CDI-DIODE公司意識到單憑自身力量難以滿足所有客戶的需求。于是,公司積極尋求與其他企業的合作,通過共同研發、生產和銷售,實現了業務的快速拓展。這種合作模式不僅提升了公司的產能和效率,也加強了與合作伙伴之間的緊密聯系。
隨著市場需求的不斷增長,CDI-DIODE公司意識到單憑自身力量難以滿足所有客戶的需求。于是,公司積極尋求與其他企業的合作,通過共同研發、生產和銷售,實現了業務的快速拓展。這種合作模式不僅提升了公司的產能和效率,也加強了與合作伙伴之間的緊密聯系。
Cantherm公司在電子行業中以其技術創新而著稱。在一次重要的研發項目中,公司團隊成功開發了一種新型的散熱技術,該技術能有效降低電子設備在工作時產生的熱量,從而提高設備的性能和穩定性。這一突破不僅為公司帶來了大量的專利和知識產權,還吸引了眾多知名電子產品制造商的合作意向,使Cantherm在行業中嶄露頭角。
設備實現了錄音功能,但是得到的是WAV文件,即是PCM數據,體積太大了,想壓縮一下,不知道各位有什么高招? 我將PCM壓成ADPCM的,但是效果根本就不行,聽不清了。… 查看全部問答∨ |
我現在用到定時器T2的向下計數程序,RCAP2H=0x0B; RCAP2L=0xDC; 系統如何初始化,脈沖如何從T2引腳輸入才能實現向下計數.… 查看全部問答∨ |
軟件:evc4、platform builder5.0 問題: 1、在安裝了很多SDK后想卸掉一些不用的,可是卸載并刪除Windows CE Tools\\wce500\\下對應的SDK文件夾后,打開EVC工程后,發現該SDK選項還在, 如何根除該SDK?下圖是我卸載后X86_320_240仍 ...… 查看全部問答∨ |
|
我想做一個安裝文件,用什么工具制作? InstallShield能做WinCE上的安裝盤嗎?(在PC上運行,裝到WinCE上) 我想做一個安裝文件,用什么工具制作? InstallShield能做WinCE上的安裝盤嗎?(在PC上運行,裝到WinCE上)… 查看全部問答∨ |
昨天成都地區TI的FAE到我們公司來推廣M4,一樣對我拿到M4開發板比較震驚,據說整個中國地區只有20塊左右,他們培訓完也全部上交了,其實開始拿到M4開發板,個人覺得和M3比較起來除了外設比較多外其他差別不是太大,但是昨天和FAE聊了一下發現TI推出 ...… 查看全部問答∨ |
想用FPGA實現一個單道脈沖計數器,就是記錄脈沖峰值在某兩個電壓之間的脈沖數。大致思路是用兩個比較器構成雙限比較器。然后把比較器的輸出值值輸入到FGPA。一般的思路是把兩個信號異或,但是由于脈沖不是典型的沖擊信號,上升沿和下降沿不是垂直的 ...… 查看全部問答∨ |
熱電動勢 當電路中的不同金屬處于不同溫度時,會形成熱電動勢(EMF)或電壓。為了消除這些不必要的電壓帶來的影響,使用偏置補償電阻測量方法。通常,這個方法在指定的電流源值測量電阻,然后減去電流源設置為零時測得的電阻。當源電流設置為零時 ...… 查看全部問答∨ |