12864液晶(ST7920)串并实现

发布者:jingwen最新更新时间:2020-02-25 来源: 51hei关键字:12864液晶  ST7920  串并实现 手机看文章 扫描二维码
随时随地手机看文章

注释非常详细单片机驱动的12864源程序如下:

#include 

#include<12864.h> 

#define uchar unsigned char 

#define uint unsigned int  

uchar dis[110];  

uchar a;  

void delay1ms(uint xms) 

{    

  unsigned int i,j;  

  for(i=xms;i>0;i--)    /*或for(i=xms;i<0;i++)*/

     for(j=110;j>0;j--); /*for(j=110;j<0;j++); 总循环数=xms*110*/

}   

void uart_int(void) 

{   

  SCON=0x50;   // SCON=0x50是SM1=1和REN=1,设置串口方式1且允许串口接收。

             //一般配合TMOD=0x20作串口中断程序初始化。     

  PCON=0x00;   //         是设置波特率不加倍(0x80加倍)

  TMOD=0x20;   //         是设置波特率发生器为定时器2为8位自动重装载模式

  TH1 =0xFD;   

  TL1 =0xFD;   /*SMOD是特殊功能寄存器PCON的第7位,可以控制波特率的,SMOD=1时串口通讯的波特率倍增,   为0时波特率不倍增。

               SMOD=0时:参数=256-fsoc/12/32/波特率;      SMOD=1时:参数=256-fsoc/12/16/波特率:

               12M晶振或11.0592M晶振的情况下,当SMOD=0时,9600波特率的参数是0xfd,当SMOD=1时,9600波特率的参数是0xfa。

                           一个机器周期=12个时钟周期 

                           系统时钟进入串行波特率发生模块后,会进行32分频 ,

                           如果你通过寄存器设置波特率倍增的话,这个32分频就会改为16分频。

                           分频:主要是为了在内核频率与串口波特率之间找一个平衡,同时传统51也要设法降低时钟树上外设部分的工作频率、才能控制住功耗。*/


  TR1 =1;      //         是开启定时器1

  EA=1;              // 是开启总中断。

  ES=1;             //是开启串口中断;

}   


void display(unsigned char *p)//显示

{   

   while(*p!='')  /*''是空格,一般是字符串的结束标志,指针变量不等于‘/0’不会跳出循环*/

  {    

    write_dat(*p++);   /*调用函数:写显示数据到LCD,将数组中的所有字符一个个地显示在液晶屏幕上*/    

    delay1ms(1);  

  } 

}  



   void serve()  interrupt 4    

{      

   dis[a++]=SBUF; /*单片机自动将串行数据接收缓冲器中的数据取走给table[n]*/     

   RI=0;   /*RI字面是接收中断的意思,是串口接收中断标志,当RI=1时表示串口接收完成,

          SBUF中保存好了接收的数据,此时申请中断,如果ES=1,就进入中断服务程序了。*/            

void main() 

{          

   uart_int();  /*调用中断初始化函数*/  

   lcd_init();   /*调用leo初始化函数*/ 


   while(1)  

   {      

   write_cmd(0x98);

        write_cmd(0x90);        /*写指令到第二行地址:串行数据显示的位置*/

            write_cmd(0x88);

                            write_cmd(0x80);

   display(dis);   /*调用dispiay函数:将table的数组中输入的所有字符一个个地显示在液晶屏幕上*/ 

   } 

}   


关键字:12864液晶  ST7920  串并实现 引用地址:12864液晶(ST7920)串并实现

上一篇:51单片机控制八个DS18B20温度传感器显示
下一篇:如何使用keil 5 编写 51单片机 工程

推荐阅读最新更新时间:2024-11-19 11:58

12864点阵液晶显示模块的原理
12864点阵液晶显示模块的原理 12864点阵液晶显示模块(LCM)就是由128*64个液晶显示点组成的一个128列*64行的阵列。每个显示点对应一位二进制数,1表示亮,0表示灭。存储这些点阵信息的RAM称为显示数据存储器。要显示某个图形或汉字就是将相应的点阵信息写入到相应的存储单元中。图形或汉字的点阵信息当然由自己设计,问题的关键就是显示点在液晶屏上的位置(行和列)与其在存储器中的地址之间的关系。 由于多数液晶显示模块的驱动电路是由一片行驱动器和两片列驱动器构成,所以12864液晶屏实际上是由左右两块独立的64*64液晶屏拼接而成,每半屏有一个512*8 bits显示数据RAM。左右半屏驱动电路及存储器分别由片选信号CS1和
[模拟电子]
51单片机三线串行驱动12864液晶
以前写12864的液晶程序都是用的并行的方式,这种方式焊接起来很麻烦,而且占用的IO口比较多。 今天尝试使用串行方式来驱动该模块。 本程序是基于STC89C52的12864串行模式的程序,硬件电路连接只需要5根线,VCC GND RS RW E , 只需要三个个IO 口就可以显示,大大节省了资源。 12864液晶芯片是st7920。自带中文字库。 该程序功能:实现使用12864液晶显示字符、汉字(程序有详细的中文注释)。 已经调试通过,很好用。 下面是电路原理图 其时序图如下: 根据其时序图写出其代码如下: #include reg52.h #include stdlib.h #include intrins.h
[单片机]
51单片机三线串行驱动<font color='red'>12864</font><font color='red'>液晶</font>
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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