7腳12864spi程序,直接函數(shù)調(diào)用
0.jpg (24.36 KB, 下載次數(shù): 57)
下載附件
2018-4-20 23:39 上傳
單片機源程序如下:
- #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<us;i++);
- }
- /**************毫秒延時************/
- void delay_ms(unsigned int ms)
- {
- unsigned int i,j;
- for( i=0;i<ms;i++)
- for(j=0;j<1141;j++);
- }
- /*************************************/
- void SPI_init(void)
- {
- DDRB |= 0xBF;
- SPCR = 0x50; //主機,使能spi,高位先,上升沿起
- SPSR = 0x01; //2倍頻
- }
- //******************端口初始化函數(shù)*************
- void port_init()
- {
- DDRB=0Xff; //SCK、MOSI、SS置位為輸出
- }
- //***************SPI發(fā)送************************
- 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);//關(guān)閉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);//設置內(nèi)存尋址模式(0x00/0x01/0x02)
- lcd_wrByte(0x02,0);//頁面尋址模式
- lcd_wrByte(0x8d,0);//設置充電泵啟用/禁用
- lcd_wrByte(0x14,0);//顯示時啟用
- lcd_wrByte(0xa4,0);//全部顯示開,恢復內(nèi)存內(nèi)容顯示,輸出內(nèi)存中的內(nèi)容
- 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<chang;j++)
- {
- lcd_wrByte(BMP[adder++],1);
- }
- }
-
- }
復制代碼
所有資料51hei提供下載:
液晶.zip
(2.26 KB, 下載次數(shù): 245)
2018-4-20 20:45 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|