⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 PC机通过串口向单片机传输数据
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   MAIN                                                                  11/17/2006 10:44:48 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*--------------------------------------------------------------------------------------------------------
             -----
   2          液晶模块OCM4X8C DB0-DB7连接至实验板DP0-DP7(4/8位并行接口方式)
   3            E(sclk)连接至实验板DL7;
   4            RS连接到DL6;
   5            R/W(SID)固定接地;
   6            外加一条连线:DK6,DK7接到VCC(+5V);
   7            本程序功能:PC机通过串口向单片机传输数据,单片机经过处理后再送到液晶上显示
   8                                    液晶能自动换行,汉字不能正常显示的位置自动补空,及无乱码显示(单字节于双字节字符混合)
   9            实现方式:检测汉字前的字母(单字节)个数,若为奇数,字母后一位补以空字符,以后的字符全部往后退一个字符位
  10            
  11            变量说明:
  12                                  LCD_cn 字符写入地址或液晶要显示的数据
  13                                  line   对应于液晶的显示行数,从的0行开始                                                                                                                                        
  14                                                                                                                                                                          3G1C embedded studio design
  15          ----------------------------------------------------------------------------------------------------------
             ---*/
  16          #include <reg52.h> 
  17          #include <absacc.h>                             //片外地址定义
  18          
  19          #define uchar unsigned char
  20          
  21          #define led_data XBYTE[0xe000]    /*端口地址,对应实验板的DP0-DP7,数据*/
  22          #define led_sel XBYTE[0xc000]   /*端口地址,对应实验板的DL*/
  23          
  24          void changeAddr(uchar lin);                     //地址转换子程序
  25          void insert(uchar p);                   //插入空字符子程序
  26          void changeArr(void);                   //数组调整子程序
  27          void show(void);                                //液晶显示子程序
  28          void wcom(void);                                //液晶写指令子程序
  29          void wdat(void);                                //液晶写数据子程序
  30          void delayms(uchar ms);                 //ms级延时子程序
  31          void init(void);                                //初始化子程序
  32          void init_serial(void);
  33          
  34          uchar LCD_cn;
  35          uchar data buffer[100];                 //直接访问的内部数据存储器,访问速度最快
  36          uchar i=0;
  37          uchar k;
  38          uchar flag;
  39          sbit LED=P1^0;
  40          /*---------------------------------------------------------------------------------------------
  41                                                                                          主函数
  42          ---------------------------------------------------------------------------------------------*/
  43          main(void)
  44          {
  45   1              init();                         //液晶模块初始化
  46   1              init_serial();
  47   1              
  48   1              led_data=0;  
  49   1              led_sel=0xff; 
  50   1              
  51   1              TR1=1;
  52   1              
  53   1      
C51 COMPILER V7.06   MAIN                                                                  11/17/2006 10:44:48 PAGE 2   

  54   1      
  55   1              while(1)
  56   1              {
  57   2                              if(flag==1)
  58   2                              {
  59   3                                      flag=0;
  60   3                                      LCD_cn=0x01;    //清除显示
  61   3                                      wcom();
  62   3                                      delayms(2);
  63   3                                      changeArr();            //调用字符数组排列子程序
  64   3                                      LED=0;
  65   3                                      show();                         //调用液晶显示子程序
  66   3                              }       
  67   2              }
  68   1                      
  69   1      }
  70          /*-----------------------------------------------------------------------------------------------
  71                                                                                          液晶初始化子程序
  72          -----------------------------------------------------------------------------------------------*/
  73          void init(void)
  74          { 
  75   1              LCD_cn=0x30;    //功能设定
  76   1              wcom();
  77   1                                      //delayms(2);
  78   1      
  79   1              LCD_cn=0x01;    //清除显示
  80   1              wcom();
  81   1                                      //delayms(2);
  82   1      
  83   1              LCD_cn=0x06;    //光标右移
  84   1              wcom();
  85   1                                      //delayms(2);
  86   1      
  87   1              LCD_cn=0x0c;    //开显示器
  88   1              wcom();
  89   1                                      //delayms(2);
  90   1      
  91   1              LCD_cn=0x01;    //清除显示
  92   1              wcom();
  93   1                                      //delayms(2);
  94   1              
  95   1      }
  96          /*----------------------------------------------------------------------------------------------
  97                                                                                          延时子程序
  98          确保上一指令/数据已经接受、处理完。
  99          ----------------------------------------------------------------------------------------------*/
 100          void delayms(uchar ms)                  
 101          {
 102   1          uchar i;
 103   1          while(ms--)
 104   1          {
 105   2              for(i=0; i<125; i++);
 106   2          }
 107   1      }
 108          /*----------------------------------------------------------------------------------------------
 109                                                                                          串口初始化
 110          ----------------------------------------------------------------------------------------------*/
 111          void init_serial(void)
 112          {
 113   1              TMOD=0x20;                                      //设置波特率9600bps
 114   1              TL1=0xfd;
 115   1              TH1=0xfd;
C51 COMPILER V7.06   MAIN                                                                  11/17/2006 10:44:48 PAGE 3   

 116   1              SCON=0x50;
 117   1      
 118   1              EA=1;
 119   1              ES=1;
 120   1       }
 121          
 122          
 123          /*----------------------------------------------------------------------------------------------
 124                                                                                          液晶写指令子程序                                                                                
 125          ----------------------------------------------------------------------------------------------*/
 126          void wcom(void)         //写指令
 127          { 
 128   1              led_sel=0xbf;   //RW=0,RS=0,E=1 指令写
 129   1                                              //delayms(2);
 130   1              led_data=LCD_cn;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -