標(biāo)題:
7腳12864spi單片機(jī)源程序,直接函數(shù)調(diào)用
[打印本頁]
作者:
jcq000
時間:
2018-4-20 20:46
標(biāo)題:
7腳12864spi單片機(jī)源程序,直接函數(shù)調(diào)用
7腳12864spi程序,直接函數(shù)調(diào)用
0.jpg
(24.36 KB, 下載次數(shù): 57)
下載附件
2018-4-20 23:39 上傳
單片機(jī)源程序如下:
#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; //主機(jī),使能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 設(shè)置坐標(biāo)*********************/
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復(fù)位************************************/
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);//設(shè)置低列地址
lcd_wrByte(0x10,0);//設(shè)置高列地址
lcd_wrByte(0x40,0);//設(shè)置開始行地址設(shè)置映射RAM顯示開始行(0x00 0x3F)
lcd_wrByte(0x81,0);//設(shè)置對比控制寄存器
lcd_wrByte(duibidu,0); // 設(shè)置輸出對比度
lcd_wrByte(0xa1,0);//設(shè)置列映射 0xa0左右反置 0xa1正常
lcd_wrByte(0xc8,0);//掃描方向 0xc0上下反置 0xc8正常
lcd_wrByte(0xa6,0);//設(shè)置正常顯示
lcd_wrByte(0xa8,0);//設(shè)置多種比列(1到64)
lcd_wrByte(0x3f,0);//1/64
lcd_wrByte(0xd3,0);//設(shè)置顯示補(bǔ)償(0x00 0x3F)
lcd_wrByte(0x00,0);//抵消
lcd_wrByte(0xd5,0);//設(shè)置顯示時鐘分頻/振蕩器頻率
lcd_wrByte(0x80,0);//設(shè)置分割比,設(shè)置時鐘為100幀/秒
lcd_wrByte(0xd9,0);//設(shè)置pre-charge時期
lcd_wrByte(0xf1,0);//將預(yù)充電設(shè)置為15個時鐘,放電為1個時鐘
lcd_wrByte(0xda,0);//設(shè)置com pin硬件配置
lcd_wrByte(0x12,0);//
lcd_wrByte(0xdb,0);//設(shè)置vcomh電壓
lcd_wrByte(0x40,0);//取消VCOM等級
lcd_wrByte(0x20,0);//設(shè)置內(nèi)存尋址模式(0x00/0x01/0x02)
lcd_wrByte(0x02,0);//頁面尋址模式
lcd_wrByte(0x8d,0);//設(shè)置充電泵啟用/禁用
lcd_wrByte(0x14,0);//顯示時啟用
lcd_wrByte(0xa4,0);//全部顯示開,恢復(fù)內(nèi)存內(nèi)容顯示,輸出內(nèi)存中的內(nèi)容
lcd_wrByte(0xa6,0);// 禁用反顯示(0xa6/a7)
lcd_wrByte(0xaf,0);//打開lcd面板
lcd_CLS(); //初始清屏
}
/*****************功能描述:顯示16*16點(diǎn)陣 顯示的坐標(biāo)(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 顯示的坐標(biāo)(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圖片起始點(diǎn)坐標(biāo)(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);
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
液晶.zip
(2.26 KB, 下載次數(shù): 245)
2018-4-20 20:45 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1