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

📄 main.lst

📁 液晶汉显的Keil C 编程!调试通过!
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.07   MAIN                                                                  11/19/2004 17:55:36 PAGE 1   


C51 COMPILER V7.07, 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          //汉显液晶模块HZ132-64演示程序
   2          //该模块是一款使用简便,功能多样的汉显模块!
   3          //模块的资料请到 http://www.laogu.com/product/wwwlcm/index.htm 查看
   4          //本例仅用了简单的送数据到串口的方法就实现了文字的任意位置显示,作图,显示图片,t9兼容输入法等操作
   5          //本例程由'51单片机世界http://www.mcu51.com'的版主丁丁编写,Email:mcu52@163.com
   6          //2002年11月24日调试成功
   7          
   8          #define  uchar  unsigned char
   9          #define  uint   unsigned int
  10          #define  ulong   unsigned long
  11          
  12          extern char getbyte(void);                              //从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。
  13          extern putbyte(char c);                                 //放入一个字节到发送缓冲区
  14          extern putstring(uchar  *puts);                 //发送一个定义在程序存储区的字符串到串口
  15          extern putbytes(uchar *outplace,uint j);//放一串数据到发送缓冲区,需要定义发送的字节数
  16          extern puthex(uchar c);                                 //发送一个字节的hex码,分成两个字节发。
  17          extern  bit   inbufsign;                                //串口接收到数据标志
  18          #define CR putstring("\r\n")                    //发送一个回车换行
  19          extern void serial_init (void);                 //串口初始化
  20          
  21          //灰度
  22          void lcd_light(uchar ch)
  23          {
  24   1              while(inbufsign)getbyte();
  25   1              if(ch>0x3f) 
  26   1                      return;
  27   1              putbyte(0x1b);
  28   1              putbyte(0x31);
  29   1              putbyte(ch);
  30   1              getbyte();getbyte();
  31   1      }
  32          
  33          //清屏
  34          void lcd_cls(void)
  35          {
  36   1              while(inbufsign)getbyte();
  37   1              putbyte(0x1b);
  38   1              putbyte(0x32);
  39   1              getbyte();getbyte();
  40   1      
  41   1      }
  42          
  43          // 设置光标位置
  44          void lcd_cursor(uchar x, uchar y)      
  45          {
  46   1              while(inbufsign)getbyte();
  47   1              putbyte(0x1b);
  48   1              putbyte(0x33);
  49   1              putbyte(x);
  50   1              putbyte(y);
  51   1              getbyte();getbyte();
  52   1      
  53   1      }
  54          
  55          //闪烁还是关闭光标
C51 COMPILER V7.07   MAIN                                                                  11/19/2004 17:55:36 PAGE 2   

  56          void lcd_showcursor(uchar attr)   
  57          {
  58   1              while(inbufsign)getbyte();
  59   1              putbyte(0x1b);
  60   1              putbyte(0x34);
  61   1              putbyte(attr);
  62   1              getbyte();getbyte();
  63   1      
  64   1      }
  65          
  66          //显示字符串
  67          void lcd_string(uchar attr,uchar *string) 
  68          {
  69   1              while(inbufsign)getbyte();
  70   1              putbyte(0x1b);
  71   1              putbyte(0x37);
  72   1              putbyte(attr);  
  73   1              putstring(string);
  74   1              putbyte(0x00);
  75   1              getbyte();getbyte();
  76   1      
  77   1      }
  78          
  79          //画点
  80          void lcd_dot(uchar attr,uchar x,uchar y)  
  81          {
  82   1              while(inbufsign)getbyte();
  83   1              putbyte(0x1b);
  84   1              putbyte(0x38);
  85   1              putbyte(attr);
  86   1              putbyte(x);
  87   1              putbyte(y);
  88   1              getbyte();getbyte();
  89   1      
  90   1      }
  91          
  92          //画线
  93          void lcd_line(uchar attr,uchar x0,uchar y0,uchar x1,uchar y1)
  94          {
  95   1              while(inbufsign)getbyte();
  96   1              putbyte(0x1b);
  97   1              putbyte(0x39);
  98   1              putbyte(attr);
  99   1              putbyte(x0);
 100   1              putbyte(y0);
 101   1              putbyte(x1);
 102   1              putbyte(y1);
 103   1              getbyte();getbyte();
 104   1                      
 105   1      }
 106          
 107          //画圆
 108          void lcd_circle(uchar attr,uchar ox,uchar oy,uchar rx)
 109          {
 110   1              while(inbufsign)getbyte();
 111   1              putbyte(0x1b);
 112   1              putbyte(0x41);
 113   1              putbyte(attr);
 114   1              putbyte(ox);
 115   1              putbyte(oy);
 116   1              putbyte(rx);
 117   1              getbyte();getbyte();
C51 COMPILER V7.07   MAIN                                                                  11/19/2004 17:55:36 PAGE 3   

 118   1      
 119   1      }
 120          
 121          // 画图片,*picture_data指向图片数据,图片数据的第一二个字节是图片宽度和图片高度
 122          void lcd_picture(uchar attr,uchar x0,uchar y0,uchar *picture_data)
 123          {
 124   1              putbyte(0x1b);
 125   1              putbyte(0x42);
 126   1              putbyte(attr);
 127   1              putbyte(x0);
 128   1              putbyte(y0);
 129   1              putbytes(picture_data,(((*picture_data)+7)/8)*(*(picture_data+1))+2);
 130   1              getbyte();getbyte();
 131   1                      
 132   1      }
 133          
 134          //画ICON
 135          void lcd_icon(uchar attr,uchar ch)
 136          {
 137   1              while(inbufsign)getbyte();
 138   1              putbyte(0x1b);
 139   1              putbyte(0x43);
 140   1              putbyte(attr);
 141   1              putbyte(ch);
 142   1              getbyte();getbyte();
 143   1      
 144   1      }
 145          
 146          
 147          //取数字组合的有效拼音组合,
 148          //*num指向输入的数字,
 149          //返回的有效拼音组合放在pinyin[6][8]
 150          //函数返回返回有效拼音的个数
 151          uchar lcd_num2pinyin(uchar *num, uchar pinyin[6][8])
 152          {
 153   1              ulong n=0;//超时用
 154   1              uchar m,i,j,ch;
 155   1              while(inbufsign)getbyte();      //清空串口缓冲区
 156   1              putbyte(0x1b);
 157   1              putbyte(0x47);
 158   1              putstring(num);
 159   1              putbyte(0x00);
 160   1              while(1)
 161   1              {
 162   2                      if(inbufsign)//串口接收到了数据
 163   2                      {
 164   3                              if(getbyte()==0x1b)
 165   3                              {
 166   4                                      m=getbyte();//查到的总条数
 167   4                                      for(i=0;i<m;i++)
 168   4                                      {
 169   5                                              
 170   5                                              for(j=0;;j++)
 171   5                                              {
 172   6                                                      ch=getbyte();
 173   6                                                      pinyin[i][j]=ch;
 174   6                                                      if(ch==0)break;
 175   6                                              }
 176   5                                      }
 177   4                                      getbyte();getbyte();
 178   4      
 179   4                                      return(m);
C51 COMPILER V7.07   MAIN                                                                  11/19/2004 17:55:36 PAGE 4   

⌨️ 快捷键说明

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