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-13 14:09

RT12864M液晶模块单片机驱动程序
/*-----------RT12864M模块-----------*/ /*------外部晶振为 12MHz-------*/ /*--------最后修改2011.02.26-------*/ #include STC12C5620AD.h #include RT12864M.h #include delay.h /**********************自定义字符编码*************************/ unsigned char code CGROM_Code ={0x00,0x00,0x00,0x00,0x7F,0xFE,0x60,0x06,0x33,0xCC,0x19,0x
[单片机]
简单菜单系统 Proteus pg12864 液晶
Mega16单片机 程序 interface.h /* 移植时要实现以下函数: LcdClrScrn(); //清屏 ShowARROW(SysSclt); //在某一行显示箭头 DisShowARROW(SysSclt); //在某一行不显示箭头 ShowLine(0, Copy Right ); //在某一行显示字符串 uchar GetKey(); //按键检测函数。 返回Key_Up Key_Down Key_Right Key_Left */ #ifndef __INTERFACE_H__ #define __INTERFACE_H__ #include K
[单片机]
简单菜单系统 Proteus pg<font color='red'>12864</font> <font color='red'>液晶</font>
12864(st7920控制器)画点、线子程序
/*------------------ 画点子程序 -----------------------------*/ //X Y为预想的坐标系(X:0-127,Y:0-63 按格算),Color 0灭,1亮,2翻转 void DrawPoint(unsigned char X,unsigned char Y,unsigned char Color) { unsigned char Row,Tier,Tier_bit ; unsigned char ReadOldH,ReadOldL ; wr_comm(0x34); // 选扩充指令 并关显示 wr_comm(0x36); // 选扩充指令,开显示 Tier=X
[单片机]
STM32的LCD12864液晶显示源程序
单片机源程序如下: #include config.h int main(void) { // int i=0,j=0; // int count=0; Stm32_Clock_Init(9);//系统时钟设置 delay_init(72); //延时初始化 //LED_Init(); //初始化与LED连接的硬件接口 Init_12864(); //初始化带字库12864液晶 // Display_string(0,0, 单片机综合设计 ); //显示第1行 // Display_st
[单片机]
STM32的LCD<font color='red'>12864</font><font color='red'>液晶</font>显示源程序
51单片机控制液晶12864源代码
/********************************************/ /* AM12864系列测试程序 1.0 */ /* Designed by Andorin LCM R&D Group */ /* 2003.04.23 */ /********************************************/ #include reg51.h #include ctype.h #include string.h #include stdlib.h #include stdio.h #include math.h /**********************************
[单片机]
PIC16F74的12864点阵液晶驱动(不带字库)
驱动程序如下: 此程序用于12864不带字库点阵液晶屏使用 */ #include pic.h #define DATA PORTB //RB端口为8位数据端口 #define Busy RB7 //RB7为忙标志位,数据的高位 #define RS RC1 //控制引脚说明 #define RW RC2 #define E RC3 #define CS1 RD2 #define CS2 RD3 //---------------数据定义---------------- //12867为纵向8点下高位 //每一页的排列是纵向8位下高位,从左到右依次为64列 //下面是16*1
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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