51单片机ST7565C语言驱动程序

发布者:亚瑟摩根最新更新时间:2015-08-26 来源: eefocus关键字:51单片机  ST7565  驱动程序 手机看文章 扫描二维码
随时随地手机看文章
#include    
#include    
#define  uchar unsigned char   
#define  uint unsigned int     
/////////////////////////////////Serial///////////////////////////////////////////////////  
  
  
sbit    R_S=    P3^5;//指令/数据选择信号   
sbit    RES=    P3^4;//复位信号   
sbit    SCK=    P1^6;  
sbit    SDA=    P1^7;  
sbit    C_S=    P3^7;//片选   
  
//////////////////////////////////////////////////////////////////////////////////////////////  
  
  
uchar Page = 0xb0   ;  
                                ///1     2    3    4    5    6    7    8    9    10  11   12   13   14    15  16                            ///  
unsigned char code Number[][16]= {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,   //0   
                                  0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,   //1   
                                  0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,   //2   
                                  0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,   //3   
                                  0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,   //4   
                                  0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,   //5   
                                  0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,   //6   
                                  0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,   //7   
                                  0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,   //8   
                                  0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,   //9    
                                  0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,   //A 1   
                                  0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,   //B 2   
                                  0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,   //C 3   
                                  0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,   //D 4   
                                  0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,   //E 5   
                                  0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,   //F 6   
                                  0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,   //a 27   
                                  0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,   //b 28   
                                  0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,   //c 29   
                                  0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,   //d 30   
                                  0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,   //e 31   
                                  0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00   //f 32   
                                   };    
 
void delay(uint ms)  
    
    uchar j;  
    while(ms--)  
      for(j=0;j=20;j++); //20us=0.02ms//     
                         
        
  
/////////////////////////Serial///////////////////////////  
  
void WrateC(uchar com)  
  
 
    unsigned char data i,j;  
        C_S=0;  
        R_S=0;    
        SCK=0;  
    for(i=0;i<8;i++)  
        {   
         j=com;  
         SCK=0;  
         SDA=com&0x80;  
         SCK=1;        
         com=j<<1;  
        }  
        C_S=1;  
        R_S=1;  
 
  
void WrateD(uchar dat)     
 
    unsigned char data i,j;  
        C_S=0;  
        R_S=1;    
        SCK=0;  
    for(i=0;i<8;i++)  
        {   
         j=dat;  
         SCK=0;  
         SDA=dat&0x80;  
         SCK=1;        
         dat=j<<1;  
        }  
        C_S=1;  
        R_S=0;  
 
  
void ClearDisplay()  
 
   unsigned char  i,j;  
   for(i=0;i<8;i++)     
    {  
     WrateC(Page+i);               // (Page = 0xB0)//设置位置   
     WrateC(0x10);  
     WrateC(0x00);      
       for(j=0;j<132;j++)            //发送数据   
          {   
            WrateD(0);  
          }  
    }  
   
void LcdInit()  
        
    RES=0;  
    delay(50);//最少2um   
    RES=1;  
    delay(20);  
                              
    WrateC(0xe2);//软件复位        
    WrateC(0xA3);//Bais set     显示偏压   
    WrateC(0xA1);//ADC seg镜像选择 0xa0正常,0xA1左右镜像   
    WrateC(0xc0);//com output scan direction,com镜像选择 0xc0正常,0xC8上下镜像   
/////////Select internal resistor ratio/////////  
    WrateC(0x2c);//内部电源管理,   
    WrateC(0x2e);//三条指令间隔时间2um   
    WrateC(0x2F);//   
//////////////////////////////////////////////////////////////////////////////  
  
    WrateC(0x81);//电压模式选择   
    WrateC(0x16);//电压调整寄存器低位 范围:0x00-0x3f   
    WrateC(0x24);//电压调整寄存器高位 范围:0x21-0x27 ,值越大,显示效果越浓(底影越浓)   
  
    WrateC(0xAF);//显示开            
    WrateC(0x40);//从首行开始显示   
      
    ClearDisplay();  
 
  
void Setadd(uchar xl,uchar yl)  
   uchar i;  
     i=xl&0x0f;  
     xl=(xl>>4)+0x10;  
  
     WrateC(0xb0+yl);       
     WrateC(xl);  
     WrateC(i);   
 
  
void ShowOneDig(uchar col,uchar pag,uchar d)  
 
    uchar i = 0 ;  
    uchar j;  
    if(col>0x7f)          
    {   
       col=0;  
       pag+=2;  
     }  
    Setadd(col,pag);            
    for(j=0;j<8;j++)  
    {   
        WrateD(Number[d][i++]);   
    }            
    pag++;    
    Setadd(col,pag);            
    for(j=0;j<8;j++)  
    {   
        WrateD(Number[d][i++]);   
    }            
    pag++;     
 
  
void main()  
    
    unsigned char a = 0 ;  
    LcdInit();  
    ClearDisplay();  
    ShowOneDig(80,3,10);  
    ShowOneDig(88,3,9);  
    ShowOneDig(72,3,5);  
    while(1);  
  
关键字:51单片机  ST7565  驱动程序 引用地址:51单片机ST7565C语言驱动程序

上一篇:基于51单片机的MODBUS通信C语言程序(从机)
下一篇:基于51单片机的数字音乐盒C语言驱动程序

推荐阅读最新更新时间:2024-03-16 14:30

51单片机控制LCD12864液晶屏显示图形菜单
想了很久,每次做菜单都受限于12864字符模式的各种限制,比如字体大小,不能显示图标等等,没有任何效果,这次就来个彻底的解脱,写一个单函数就能完成所有功能的函数,只需要2个图片就能完成任意菜单内容的菜单,可以有2的8次方=256个选择结果,应该能满足所有的要求了吧?菜单的内容就是图片的内容,因此可以显示任意大小的图形文字混合的菜单条目,比如使用字符模式,一屏只能显示4行菜单(64/16=4),且只能显示汉字和字符等,显示位置等等的都受限,而这个方法可以显示比如12*12(64/12=5行)的字符,8*8(64/8=8行)的字符,甚至不是字符,可以是图标+文字+任意其他的图像,只要是图片能显示的,都可以。。哈哈,比较复杂,现在只写了一
[单片机]
51单片机光电控制计算机通讯系统
最近项目需要,制作了一个基于STC89C52RC单片机的光电控制计算机通讯系统。其基本外观如图一所示。 虽然照片显示我的东东做得比较粗糙,但是基本能够使用。或许如果老板(老师)再提供些RMB,我可以做得更好! 整个系统以STC89C52RC单片机为数字信号采集、与计算机通讯为核心的处理芯片。其中包括5个部分:第一部分是基于Max232A的单片机计算机通讯电路模块,主要通过电平转换,将数字量输入转换为串口通讯输出的字节信号位至计算机,从而实现单片机采集得到数据后与计算机通讯。第二部分是ADC0804单片机A/D转换模块,主要利用ADC0804的特定功能,实现对光照度传感器的模拟量的量化。第三部分是基于PO18
[单片机]
基于AT89C2051单片机的数字电容表设计
设计任务 设计并制作一个数字电容表,系统实现的功能及要求如下: (1)设计的电容表可测量容量小于2μF的电容。 (2)设计的电容表采用3位半数字显示,最大显示值为1 999。 (3)设计的电容表读数单位统一采用nF,量程分4档,实际电容值为读数乘以相应的倍率。 2 方案论证 2.1 电路方案 (1)方案一:基本电路搭建 用基本电路来实现数字显示的电容表,电路结构复杂,故障系数大,不易调试,误差也较大。 (2)方案二:单片机编程 用单片机设计电路,由于使用软硬件结合的方式,所以电路结构简单、调试也相对方便。与第一种方案比较优点是非常明显的。 2.2 显示方案 (1)
[单片机]
基于51单片机的新型节能日光灯系统的设计
随着社会的发展和人口的增长,节能已成为一个重要的社会课题。日光灯是目前使用最为广泛的一种灯具,但同大多数灯具一样,一旦开启,无论外界光强多大,它们都只能发出单一光强的光,这造成了能源的浪费。针对这一现象,本文提出了基于单片机的新型日光灯系统,通过采集外界光强信息,采用AT89C51单片机控制日光灯输出光强的方式,使日光灯随外界光强的变化而自动调整照射光强,在满足使用者的用光要求的前提下,达到节约能源的目的。系统具有结构简单、可靠性高、成本低等特点,可广泛用于学校学习和家庭生活。 1 硬件电路组成及工作原理 1.1 系统硬件结构 系统构成如图1所示。系统分为光线采集、单片机控制和日光灯自动调整3部分。光线采集部分主要由光
[单片机]
基于<font color='red'>51单片机</font>的新型节能日光灯系统的设计
51单片机设计方案TOP10(四)
基于MCS-51单片机的实时在线环境监测系统    1 引言   基于GPRS和MCS-51单片机的数据采集器是一种实时在线 环境监测 系统,它采用分组无线业务GPRS将实时在线检测到的环境状况通过Internet传到环保部门监测信息处理中心,监测信息实时处理软件通过对采集来的数据进行整理分析,使环保机关足不出户即能掌握辖区监测点和污染源的监测指标信息,从而使环保机关的管理在机制上实现从人工化向信息化的转变,克服了过去对各项环境指标的检测主要靠环保人员到现场手工取样,带回实验室分析后再作出结论的周期长、效率低的问题;还可以提高对环境的监测频次,克服过去由于监测频次低,总结出来的环境质量和污染源监测信息可信度较低的问题。   
[模拟电子]
<font color='red'>51单片机</font>设计方案TOP10(四)
单片机入门:新手如何学习单片机?
作为一个初学者,如何单片机入门? 知识上,其实不需要多少东西,会简单的C语言,知道51单片机的基本结构就可以了。一般的大学毕业生都可以了,自学过这2门课程的高中生也够条件。设备上,一般是建议购买一个仿真器,例如,目前的“双功能下载线”就具有良好的稳定性和较快的下载速度,上位机可扩展,可以下载更多的单片机及嵌入式芯片。通过实验,这样才可以进行实际的,全面的学习。日后在工作上,仿真器也大有用处。还有,一般光有仿真器是不行,还得有一个实际的电路,即学习板,如图,即为,单片机最小系统。 学习板以强大的接口为主,单片机的学习分两方面,一方面是单片机的原理及内部结构,另一方面是单片机的接口技术。这些都是需要平时多积累,多动手,多思考,这样
[单片机]
51单片机简单的驱动LCD1602
【LCD1602】 什么是LCD1602 LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符。LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,即可以显示出图形。 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字
[单片机]
<font color='red'>51单片机</font>简单的驱动LCD1602
51单片机 双机通信(汇编)
;用方式一双机通信:定时器采用定时器1(8位自动重装),波特率采用9600bit/s ;此程序实现双机同时发送(数码管0-9),并能同时接受,并显示出来,真正实现异步全双工 org 0000h ljmp reset org 0003h reti org 000bh reti org 001bh reti org 0023h ljmp tans_int ;串口中断入口 reset: mov r0,#0 ;先进行系统准备(可以不要) djnz r0,$ init: mov r1,#4 ;各个寄存器初始化 mo
[单片机]
<font color='red'>51单片机</font> 双机通信(汇编)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved