×
单片机 > 单片机程序设计 > 详情

12864液晶(ST7920)串并实现

发布时间:2020-08-26 发布时间:
|

注释非常详细单片机驱动的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的数组中输入的所有字符一个个地显示在液晶屏幕上*/ 

   } 

}   



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32单片机的复用端口初始化的步骤及方法