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

📄 cs23-2.lst

📁 《手把手教你学单片机的C程序设计》及实验程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   CS23_2                                                                02/21/2007 15:26:33 PAGE 1   


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

stmt level    source

   1          #include <REG51.H>
   2          #include<math.h>                                
   3          #define uchar unsigned char     
   4          #define uint unsigned int
   5          sbit CS1=P2^4;                  
   6          sbit CS2=P2^3;
   7          sbit RS=P2^7;           
   8          sbit RW=P2^6;                   
   9          sbit EN=P2^5;                           
  10          sbit RST=P2^2;                  
  11          #define DataPort P0
  12          //sbit Dilcm=P2^7;                                      //引脚定义
  13          //sbit Rwlcm=P2^6;                                      //引脚定义
  14          //sbit Elcm=P2^5;                                       //引脚定义
  15          //sbit p_rst=P2^2;                                      //引脚定义
  16          //#define Datalcm P0                                    //端口定义
  17          /**********常用操作命令和参数定义***********/
  18          #define DISPON 0x3f                             //显示屏开
  19          #define DISPOFF 0x3e                            //显示屏关
  20          #define DISPFIRST 0xc0                  //起始行显示定义
  21          #define SETX 0x40                                       //X定位(页)
  22          #define SETY 0xb8                                       //Y定位(列)
  23          #define Lcdbusy 0x80                            //LCM忙判断定义
  24          /***********************************************/
  25          #define MODL 0x00                               //左区
  26          #define MODM 0x40                               //左区与中区分界
  27          //#define MODR 0x80                     //中区与右区分界
  28          #define LCMLIMIT 0x80                   //中区的边界
  29          //#define LCMLIMIT 0xc0                 //右区的边界(这里不用)
  30          /*************************************************/
  31          uchar col,row,cbyte;                            //列、行、数据的变量定义                                        
  32          bit xy;                                                 //画线标志,"1"水平线,"0"垂直线。
  33          /**************************************************/
  34          void Lcminit(void);                                     //液晶模块初始化子函数
  35          void Delay(unsigned long MS);                           //延时子函数
  36          void lcdbusyL(void);                            //左区判忙子函数
  37          void lcdbusyM(void);                            //中区判忙子函数
  38          //void lcdbusyR(void);                          //右区判忙子函数(这里不用)
  39          void Wrdata(uchar X);              //写数据至LCM                               
  40          void Lcmcls(void);                              //LCM清屏
  41          void Lcmclsxx(void);               //LCM全屏置黑                             
  42          void wtcom(void);                  //公用判忙等待子函数                 
  43          void Locatexy(void);                     //光标定义    
  44          void WrcmdL(uchar X);                           //写命令至左区
  45          void WrcmdM(uchar X);                   //写命令至中区
  46          //void WrcmdR(uchar X);                 //写命令至右区(这里不用)
  47          void Rddata(void);                              //读LCM状态子函数
  48          void Linehv(uchar length);                      //水平、垂直画线子函数
  49          void point(void);                                       //画点子函数
  50          void Linexy(uchar endx, uchar endy);            //画斜线子函数
  51          /************************复位子函数*************************/
  52          void reset()                                            //复位子函数
  53          {                                                               //复位子函数开始
  54   1      RST=0;                                                  //复位端置0
  55   1      Delay(20);                                              //延时20ms
C51 COMPILER V7.06   CS23_2                                                                02/21/2007 15:26:33 PAGE 2   

  56   1      RST=1;                                                  //复位端置1
  57   1      Delay(20);                                              //延时20ms
  58   1      }                                                               //复位子函数结束
  59          /*********************主函数**********************/
  60          void main(void)
  61          {                                                               //主函数开始
  62   1      col=0;                                                  //定位0列、0页
  63   1      row=0;
  64   1      Delay(10);                                              //延时一会
  65   1      Lcminit();                                              //液晶模块初始化
  66   1      Delay(1000);                                            //延时一会
  67   1      /***********以下使用画直线与斜线的方法,画出一条小舢舨*********/
  68   1      /****************先画出船上建筑**************/
  69   1      col=0;                                                  //定位x方位0、y方位32
  70   1      row=32;
  71   1      xy=1;                                                   //水平线
  72   1      Linehv(127);                                            //画线,长度127
  73   1      /*----------------------------------------------*/
  74   1      col=33;                                                 //定位x方位33、y方位48
  75   1      row=48;
  76   1      xy=1;                                                   //水平线
  77   1      Linehv(30);                                             //画线,长度30
  78   1      col=36;                                                 //定位x方位36、y方位32
  79   1      row=32;
  80   1      xy=0;                                                   //垂直线
  81   1      Linehv(16);                                             //画线,长度16
  82   1      col=64;                                                 //定位x方位64、y方位48
  83   1      row=48;
  84   1      xy=1;                                                   //水平线
  85   1      Linehv(30);                                             //画线,长度30
  86   1      col=91;                                                 //定位x方位91、y方位32
  87   1      row=32;
  88   1      xy=0;                                                   //垂直线
  89   1      Linehv(16);                                             //画线,长度16
  90   1      /*------------------------------------------------*/
  91   1      col=10;                                                 //定位x方位10、y方位32
  92   1      row=32;
  93   1      xy=0;                                                   //垂直线
  94   1      Linehv(27);                                             //画线,长度27
  95   1      /************以下画出船底的弧形***********/
  96   1      col=0;                                                  //定位x方位0、y方位32
  97   1      row=32;
  98   1      Linexy(10,16);                                  //画斜线,终点为x方位10、y方位16
  99   1      col=10;                                                 //定位x方位10、y方位16
 100   1      row=16;
 101   1      Linexy(30,8);                                           //画斜线,终点为x方位30、y方位8
 102   1      col=30;                                                 //定位x方位30、y方位8
 103   1      row=8;
 104   1      Linexy(64,5);                                           //画斜线,终点为x方位64、y方位5
 105   1      /*-----------------------------------------------------------------*/
 106   1      col=65;                                                 //定位x方位65、y方位5
 107   1      row=5;
 108   1      Linexy(97,8);                                           //画斜线,终点为x方位97、y方位8
 109   1      col=97;                                                 //定位x方位97、y方位8
 110   1      row=8;
 111   1      Linexy(117,16);                                 //画斜线,终点为x方位117、y方位16
 112   1      col=117;                                                        //定位x方位117、y方位16
 113   1      row=16;
 114   1      Linexy(127,32);                                 //画斜线,终点为x方位127、y方位32
 115   1      /*----------------------------------画舢舨结束------------------------------------*/
 116   1      while(1);                                                       //死循环
 117   1      
C51 COMPILER V7.06   CS23_2                                                                02/21/2007 15:26:33 PAGE 3   

 118   1      }                                                               //主函数结束
 119          /*************************画斜线子函数************************/
 120          void Linexy(uchar endx, uchar endy) 
 121          {                               
 122   1      register uchar t;                               
 123   1      char xerr=0,yerr=0,delta_x,delta_y,distance;
 124   1      uchar incx,incy;                                
 125   1      delta_x=endx-col;                               
 126   1      delta_y=endy-row;                       
 127   1      if(delta_x>0)incx=1;                    
 128   1      else if(delta_x==0)incx=0;              
 129   1          else incx=-1;                               
 130   1      if(delta_y>0)incy=1;                    
 131   1      else if(delta_y==0)incy=0;              
 132   1          else incy=-1;                                       
 133   1      delta_x=cabs(delta_x);                  
 134   1      delta_y=cabs(delta_y);                  
 135   1      if(delta_x>delta_y) distance=delta_x;  
 136   1      else distance=delta_y;                  
 137   1      /*-----------开始画线-------------*/
 138   1      for(t=0;t<=distance+1;t++){
 139   2      point();                                                
 140   2      xerr+=delta_x;
 141   2      yerr+=delta_y;
 142   2      if(xerr>distance){
 143   3      xerr-=distance;
 144   3      col+=incx;                                              
 145   3      }
 146   2      if(yerr>distance){
 147   3      yerr-=distance;
 148   3      row+=incy;                                      
 149   3      }
 150   2                                                      }
 151   1      }                                                       
 152          /*********************画水平、垂直线子函数***********************/
 153          void Linehv(uchar length)        /*函数名为Linehv的画水平、垂直线子函数,定义
 154          length 为线段长度的无符号字符型变量。*/
 155          {                                                       //画水平、垂直线子函数开始
 156   1      uchar xs,ys;                   //定义xs、ys 为无符号字符型变量。
 157   1      
 158   1      if(xy){ys=col;                                  //若xy为1,则为水平划线
 159   2              for(xs=0;xs<length;xs++){
 160   3                      col=ys+xs;
 161   3                      point();}
 162   2                      }
 163   1      else {xs=row;                                   //否则为垂直划线
 164   2              for(ys=0;ys<length;ys++)
 165   2                      {
 166   3                      row=xs+ys;
 167   3                      point();}
 168   2                      }
 169   1      }                                                               //画水平、垂直线子函数结束
 170          /**********************画点子函数***************************/
 171          void point(void)                                        //画点子函数
 172          {                                                               //画点子函数开始
 173   1      uchar x1,y1,x,y;                                        //定义x1、y1、x、y 为无符号字符型变量
 174   1      x1=col;                                                 //x方向座标col赋予x1(暂存)
 175   1      y1=row;                                                 //y方向座标row赋予y1(暂存)

⌨️ 快捷键说明

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