历史上的今天
返回首页

历史上的今天

今天是: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;ifor(j=0;j<1141;j++); 

}

/*************************************/

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);

                }

        }

                 

}



推荐阅读

史海拾趣

岑科(CENKER)公司的发展小趣事

在过去,国内企业在车载信号传输领域的共模电感选择有限,主要依赖进口品牌。岑科意识到这一市场的巨大空缺后,决定借助自主研发设备的优势进行研发工作。经过两三年的攻关,岑科成功研发出了ACML系列共模电感。这一系列产品在温度特性上表现优异,可在-40℃到150℃的范围内正常工作,并适用于CAN-BUS、CAN-FD、A2B及以太网等多种场景。岑科的这一研发成果不仅填补了国内市场空白,还实现了国产替代,为汽车电子行业的发展做出了重要贡献。

EDI [Electronic devices inc.]公司的发展小趣事

近年来,Eclipse Magnetics公司在电火花加工领域取得了显著的成就。他们推出的Micromag磁过滤器产品在电火花加工过程中实现了巨大的成本节约。通过与ADM精密工具和Sodi-tech EDM有限公司的合作,Eclipse Magnetics成功提高了Sodick AQ600L线蚀机的效率,减少了停机时间,为客户带来了显著的经济效益。

GigPeak公司的发展小趣事

为了进一步增强市场地位和扩大产品线,GigPeak在2010年实施了一项重要的并购战略。公司成功收购了另一家在光纤通信领域具有深厚技术积累的企业,这次并购不仅为GigPeak带来了先进的产品线和研发资源,还显著提升了其在全球市场的份额。通过整合双方的优势资源,GigPeak在光纤通信领域的技术实力和市场份额均实现了质的飞跃。

南京中科微公司的发展小趣事

CSM成立以来,一直致力于研发具有自主知识产权的射频/模拟关键芯片。经过数年的辛勤耕耘,团队成功开发出了多款高性能的集成电路芯片与模块,其中不乏在功耗、成本、性能等方面达到国际先进水平的产品。这些技术突破不仅为公司赢得了市场的认可,也为国内电子行业的发展注入了新的活力。

爱普特半导体(APTSEMI)公司的发展小趣事

在全球供应链受到冲击、芯片告急的背景下,爱普特半导体始终坚持纯国产化发展理念。公司从管理层到核心研发人员,都具有深厚的半导体从业经验,无需借助任何海外团队支持,就能实现技术攻关和市场把控。这种全国产化的优势使得爱普特在面对外部风险时能够保持稳健的发展态势,也为公司的长远发展奠定了坚实基础。

Connor-Winfield公司的发展小趣事

进入20世纪90年代,电子行业的技术革新日新月异。Connor-Winfield敏锐地捕捉到了市场的变化,开始将产品线扩展到其他领域,以满足更多客户的需求。除了石英计时电路和振荡器,公司还开始研发和生产一系列与电子应用紧密相关的产品。这些新产品的推出,不仅进一步巩固了公司在行业内的地位,也为其开拓了更广阔的市场空间。

问答坊 | AI 解惑

GPS硬件商暴选图“潜规则”

国际汽车改装展览会在广州国际采购中心隆重举行。作为世界第二大汽车大国,中国的汽车后市场同样缅藏着巨大的商机,在这次展会中,我们看到了中国的汽车后市场的一片欣欣向荣:导航、智能倒车系统、车载DVD等产品玲玲满目,汽车电子、汽车用品等各 ...…

查看全部问答>

内核定制时死在这句话 FMD::FMD_OEMIoControl = 0x71c24?

FMD::FMD_OEMIoControl = 0x71c24 用pb向导定制了一个较精简的内核,总是死在这句话上,请问你们遇到过吗?…

查看全部问答>

关于驱动开发环境

驱动开发,调试的时候不想用真实设备,有时甚至没有真实设备 不知道有没有什么模拟硬件设备的软件? (好像VMWare只模拟固定的硬件,比如声卡好像默认就是es1371) 或者问一下大家调试驱动都用什么方法?…

查看全部问答>

问一个 4MHz 51 单片机作电子钟的问题

指令周期是 12/4MHz=3us,电子钟以秒为单位计时。 如何才能做到软件的每天误差小于 1 秒?晶振误差不考虑。 如果定时器以 3ms 中断一次,那么 333.33333 次中断就是一秒, 如果用 333 来近似,那么软件每天大约会快 80 秒。 请问有没有好的办法 ...…

查看全部问答>

想买arm开发板,跪求高人指点

小弟菜鸟一个,本科学的通信,工作后一直只管硬件电路,软件从来不碰 现在想学嵌入式开发了,准备买arm的开发板,taobao上的看了半天也不敢买,在网上枪手贴的广告比介绍还多,也不敢随便相信 有没有高手给推荐个?多谢啦…

查看全部问答>

C51 做自学习红外空调遥控器 解码发射问题。

老师叫我这几天做自学习红外遥控器,目前以美的空调遥控器为例。查阅过资料说空调遥控器码和普通电视遥控器 码不同。我用示波器看了下 我的这款美的空调遥控器的码 是  先4MS高电平和4MS低电平引导码,然后是用户码和数据码&n ...…

查看全部问答>

高薪聘请电子工程师/技术员 硬件工程师

电子工程师/技术员  硬件工程师 岗位职责: 1.        根据产品需求,完成产品的电路及PCB设计; 2.        完成工程样机的装配、调试与改进; 3.        完成产品各 ...…

查看全部问答>

PWM周期计算

请问各位大侠,在用LM3S配置一个pwm信号时,pwm的信号的周期是确定的,怎么能得到我想要的pwm频率的信号,假如时钟周期为50MHZ…

查看全部问答>

zigbee光伏景观灯

今天在拿到这个芯片的时候迫不及待的拿起我的项目主控ZIGBEE来调通并加入组网实验中来看这个存储效果如何,利用两天天的时间两个个人终于完全整好了,没想到稳定性以及速度都非常乐观。       在zigbee光伏景观灯中,需要用 ...…

查看全部问答>

msp430初始化12864液晶屏程序问题

这是菜鸟我自己写的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--)    ...…

查看全部问答>