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

📄 miin.lst

📁 很实用的单片机例程
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.06   MIIN                                                                  11/20/2011 16:46:58 PAGE 1   


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

line level    source

   1          //实验平台:HL-1 V6.1+Keil U3
   2          //开发公司:慧净电子WWW.HLMCU.COM
   3          //淘宝店铺:http://shop37031453.taobao.com
   4          
   5          //LCD1602对比度已调试好,可以直接使用。
   6          //操作方法如下:
   7          //1.正确安装液晶1602,请查看使用手册目录下的液晶安装方法。
   8          //2.下载本程序
   9          //该程序使用LCD1602显示
  10          //3.调节液晶对比度致液晶清晰显示字符,若已调节好可跳过此步。
  11          //4.实验板上S3键为功能键,按下后可选择调节哪个部分。
  12          //5.S7为数字增大键。
  13          //6.SB为数字减小键。
  14          #include<reg52.h>
  15          #define uint unsigned int
  16          #define uchar unsigned char
  17          uchar a,miao,shi,fen,ri,yue,nian,week,flag,temp,key1n;
  18          #define yh 0x80  //第一行的初始位置
  19          #define er 0x80+0x40 //第二行初始位置
  20          //sbit cs1=P3^7;
  21          //sbit ledk=P2^5;
  22          sbit dula=P2^6;
  23          sbit wela=P2^7;
  24          sbit wr=P1^1;
  25          sbit rs=P1^0;
  26          sbit en=P2^5;
  27          sbit SCLK=P2^1;  // 6  P1.1
  28          sbit IO=P2^0;    // 7  P1.0
  29          sbit RST=P2^4;   //时钟 5  P1.2
  30          sbit ACC0=ACC^0;
  31          sbit ACC7=ACC^7;
  32          sbit key=P3^7;
  33          sbit key1=P3^0;
  34          sbit key2=P3^1;
  35          sbit key3=P3^2;
  36          uchar code tab1[]={"2009-  -   THU"};
  37          uchar code tab2[]={"  :  :  "};
  38          void delay(uint xms)//延时函数
  39          {
  40   1              uint x,y;
  41   1              for(x=xms;x>0;x--)
  42   1               for(y=110;y>0;y--);
  43   1      }
  44          /******************液晶写入************************/
  45          write_1602com(uchar com)//液晶写入指令函数
  46          {
  47   1              rs=0;//置为写入命令
  48   1              P0=com;//送入数据
  49   1              delay(1);
  50   1              en=1;//拉高使能端
  51   1              delay(1);
  52   1              en=0;//完成高脉冲
  53   1      }
  54          write_1602dat(uchar dat)
  55          {
C51 COMPILER V8.06   MIIN                                                                  11/20/2011 16:46:58 PAGE 2   

  56   1              rs=1;//置为写入数据
  57   1              P0=dat;//送入数据
  58   1              delay(1);
  59   1              en=1;
  60   1              delay(1);
  61   1              en=0;
  62   1      }
  63          /*********************over***********************/
  64          /********************ds1302****************************/
  65          void write_byte(uchar dat)
  66          {
  67   1              ACC=dat;
  68   1              RST=1;
  69   1              for(a=8;a>0;a--)
  70   1              {
  71   2                      IO=ACC0;
  72   2                      SCLK=0;
  73   2                      SCLK=1;
  74   2                      ACC=ACC>>1;
  75   2              }
  76   1      }
  77          uchar read_byte()
  78          {
  79   1              RST=1;
  80   1              for(a=8;a>0;a--)
  81   1              {
  82   2                      ACC7=IO;
  83   2                      SCLK=1;
  84   2                      SCLK=0;
  85   2                      ACC=ACC>>1;
  86   2      
  87   2              }
  88   1              return (ACC);
  89   1      }
  90          void write_1302(uchar add,uchar dat)
  91          {
  92   1      
  93   1              RST=0;
  94   1              SCLK=0;
  95   1              RST=1;
  96   1              write_byte(add);
  97   1              write_byte(dat);
  98   1              SCLK=1;
  99   1              RST=0;
 100   1      }
 101          uchar read_1302(uchar add)
 102          {
 103   1              uchar temp;
 104   1              RST=0;
 105   1              SCLK=0;
 106   1              RST=1;
 107   1              write_byte(add);
 108   1              temp=read_byte();
 109   1              SCLK=1;
 110   1              RST=0;
 111   1              return(temp);
 112   1      }
 113          uchar BCD_Decimal(uchar bcd)
 114          {
 115   1       uchar Decimal;
 116   1       Decimal=bcd>>4;
 117   1       return(Decimal=Decimal*10+(bcd&=0x0F));
C51 COMPILER V8.06   MIIN                                                                  11/20/2011 16:46:58 PAGE 3   

 118   1      }
 119          void ds1302_init()
 120          {
 121   1      RST=0;
 122   1      SCLK=0;
 123   1      write_1302(0x80,miao|0x00);//允许写
 124   1      }
 125          
 126          
 127                  
 128          
 129          void write_sfm(uchar add,uchar dat)//写时分秒
 130          {
 131   1              uchar gw,sw;
 132   1              gw=dat%10;
 133   1              sw=dat/10;
 134   1              write_1602com(er+add);
 135   1              write_1602dat(0x30+sw);
 136   1              write_1602dat(0x30+gw);
 137   1                                      
 138   1      
 139   1      }
 140          void write_nyr(uchar add,uchar dat)
 141          {
 142   1              uchar gw,sw;
 143   1              gw=dat%10;
 144   1              sw=dat/10;
 145   1              write_1602com(yh+add);
 146   1              write_1602dat(0x30+sw);
 147   1              write_1602dat(0x30+gw);
 148   1              
 149   1      
 150   1      }
 151          void write_week(uchar week)//写星期函数
 152          {
 153   1              write_1602com(yh+0x0d);
 154   1              switch(week)
 155   1              {
 156   2                      case 1:write_1602dat('M');//delay(5);
 157   2                                 write_1602dat('O');//delay(5);
 158   2                                 write_1602dat('N');
 159   2                                 break;
 160   2                 
 161   2                      case 2:write_1602dat('T');//delay(5);
 162   2                                 write_1602dat('U');//delay(5);
 163   2                                 write_1602dat('E');
 164   2                                 break;
 165   2                      
 166   2                      case 3:write_1602dat('W');//delay(5);
 167   2                                 write_1602dat('E');//delay(5);
 168   2                                 write_1602dat('D');
 169   2                                 break;
 170   2                      
 171   2                      case 4:write_1602dat('T');//delay(5);
 172   2                                 write_1602dat('H');//delay(5);
 173   2                                 write_1602dat('U');
 174   2                                 break;
 175   2                      
 176   2                      case 5:write_1602dat('F');//delay(5);
 177   2                                 write_1602dat('R');//delay(5);
 178   2                                 write_1602dat('I');
 179   2                                 break;
C51 COMPILER V8.06   MIIN                                                                  11/20/2011 16:46:58 PAGE 4   

 180   2                      
 181   2                      case 6:write_1602dat('S');//delay(5);
 182   2                                 write_1602dat('T');//delay(5);
 183   2                                 write_1602dat('A');
 184   2                                 break;
 185   2                      
 186   2                      case 7:write_1602dat('S');//delay(5);
 187   2                                 write_1602dat('U');//delay(5);
 188   2                                 write_1602dat('N');
 189   2                                 break;
 190   2      
 191   2      
 192   2      }
 193   1      
 194   1      
 195   1      
 196   1      }
 197          lcd_init()//液晶初始化函数
 198          {       wr=0;
 199   1              write_1602com(0x38);//设置液晶工作模式
 200   1              write_1602com(0x0c);//开显示不显示光标
 201   1              write_1602com(0x06);//整屏不移动,指针加一
 202   1              write_1602com(0x01);
 203   1              write_1602com(yh+2);//字符写入的位置
 204   1              for(a=0;a<14;a++)
 205   1              {
 206   2              write_1602dat(tab1[a]);
 207   2              //delay(3);
 208   2              }
 209   1              write_1602com(er+4);
 210   1              for(a=0;a<8;a++)
 211   1              {
 212   2              write_1602dat(tab2[a]);
 213   2              //delay(3);
 214   2              }
 215   1      
 216   1      }
 217          void keyscan()
 218          {
 219   1         key=0;
 220   1              if(key1==0)//key1为功能键
 221   1              {
 222   2              delay(5);
 223   2              if(key1==0)
 224   2              {
 225   3              while(!key1);
 226   3              key1n++;
 227   3              if(key1n==9)
 228   3                      key1n=1;
 229   3              switch(key1n)
 230   3              {
 231   4              
 232   4              case 1: TR0=0;//关闭定时器
 233   4                              //TR1=0;
 234   4                              write_1602com(er+0x0b);//写入光标位置
 235   4                              write_1602com(0x0f);//设置光标为闪烁
 236   4                              temp=(miao)/10*16+(miao)%10;
 237   4                              write_1302(0x8e,0x00);
 238   4                              write_1302(0x80,0x80|temp);//miao
 239   4                              write_1302(0x8e,0x80);
 240   4                              break;
 241   4              case 2:  write_1602com(er+8);//fen
C51 COMPILER V8.06   MIIN                                                                  11/20/2011 16:46:58 PAGE 5   

 242   4                              
 243   4                           //write_1602com(0x0f);
 244   4                              break;
 245   4              case 3: write_1602com(er+5);//shi
 246   4                           //write_1602com(0x0f);
 247   4                              break;
 248   4              case 4: write_1602com(yh+0x0f);//week
 249   4                           //write_1602com(0x0f);
 250   4                              break;
 251   4              case 5: write_1602com(yh+0x0b);//ri
 252   4                           //write_1602com(0x0f);
 253   4                              break;
 254   4              case 6: write_1602com(yh+0x08);//yue
 255   4                           //write_1602com(0x0f);
 256   4                              break;

⌨️ 快捷键说明

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