历史上的今天
今天是:2024年11月06日(星期三)
2019年11月06日 | 7脚12864spi单片机源程序,直接函数调用
2019-11-06 来源:51hei
单片机源程序如下:
#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数字舵机驱动
史海拾趣
|
国际汽车改装展览会在广州国际采购中心隆重举行。作为世界第二大汽车大国,中国的汽车后市场同样缅藏着巨大的商机,在这次展会中,我们看到了中国的汽车后市场的一片欣欣向荣:导航、智能倒车系统、车载DVD等产品玲玲满目,汽车电子、汽车用品等各 ...… 查看全部问答> |
|
内核定制时死在这句话 FMD::FMD_OEMIoControl = 0x71c24? FMD::FMD_OEMIoControl = 0x71c24 用pb向导定制了一个较精简的内核,总是死在这句话上,请问你们遇到过吗?… 查看全部问答> |
|
指令周期是 12/4MHz=3us,电子钟以秒为单位计时。 如何才能做到软件的每天误差小于 1 秒?晶振误差不考虑。 如果定时器以 3ms 中断一次,那么 333.33333 次中断就是一秒, 如果用 333 来近似,那么软件每天大约会快 80 秒。 请问有没有好的办法 ...… 查看全部问答> |
|
小弟菜鸟一个,本科学的通信,工作后一直只管硬件电路,软件从来不碰 现在想学嵌入式开发了,准备买arm的开发板,taobao上的看了半天也不敢买,在网上枪手贴的广告比介绍还多,也不敢随便相信 有没有高手给推荐个?多谢啦… 查看全部问答> |
|
老师叫我这几天做自学习红外遥控器,目前以美的空调遥控器为例。查阅过资料说空调遥控器码和普通电视遥控器 码不同。我用示波器看了下 我的这款美的空调遥控器的码 是 先4MS高电平和4MS低电平引导码,然后是用户码和数据码&n ...… 查看全部问答> |
|
电子工程师/技术员 硬件工程师 岗位职责: 1. 根据产品需求,完成产品的电路及PCB设计; 2. 完成工程样机的装配、调试与改进; 3. 完成产品各 ...… 查看全部问答> |
|
今天在拿到这个芯片的时候迫不及待的拿起我的项目主控ZIGBEE来调通并加入组网实验中来看这个存储效果如何,利用两天天的时间两个个人终于完全整好了,没想到稳定性以及速度都非常乐观。 在zigbee光伏景观灯中,需要用 ...… 查看全部问答> |
|
这是菜鸟我自己写的12864初始化程序RS=P5.5; RW=P5.6;LCDE=P5.7;D7~D0=P4口 程序写的有问题啊 初始化不了。请问大神们问题在哪?? #include #define uc unsigned char void delay(uc x) { uc a; int b; for(a=x;a>0;a--) ...… 查看全部问答> |




