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

📄 1602时钟.lst

📁 本程序 实现用 单片机 与计算机的串口通讯
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   1602蔩钟                                                              12/29/2008 20:43:40 PAGE 1   


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

stmt level    source

   1          #include<reg52.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          uchar code table[]="ME-400-A clock";
   5          uchar code table1[]="    --:--:--    ";
   6          uchar clk_time[3];  //秒,分,时寄存器初始值
   7          sbit T_RST=P2^2;//ds1302-5
   8          sbit T_IO=P2^3;//ds1302-6
   9          sbit T_CLK=P2^4;//ds1302-7
  10          sbit en=P2^5;
  11          sbit rw=P2^6;
  12          sbit rs=P2^7;
  13          sbit led=P1^0;
  14          sbit dula=P1^1;
  15          sbit wela=P1^2;
  16          sbit ACC0=ACC^0;
  17          sbit ACC7=ACC^7;
  18          sbit up=P3^3;
  19          sbit down=P3^4;
  20          sbit set=P3^2;
  21          sbit did=P1^4;
  22          uchar num,clock_ss,clock_sg,clock_fs,clock_fg,clock_ms,clock_mg,b;
  23          char hour,mie,sei,c;
  24          /******************DS1302:写入操作(上升沿)*********************/ 
  25          void write_byte(uchar da)
  26          {
  27   1         uchar i;
  28   1         ACC=da;
  29   1         for(i=8;i>0;i--)
  30   1         { 
  31   2            T_IO=ACC0;
  32   2                T_CLK=0;     
  33   2            T_CLK=1;
  34   2            ACC=ACC>>1;
  35   2         }
  36   1      }
  37          
  38          /******************DS1302:读取操作(下降沿)*****************/
  39          uchar read_byte(void)
  40          {
  41   1         uchar i;
  42   1         for(i=0;i<8;i++)
  43   1         {
  44   2            ACC=ACC>>1;
  45   2                T_CLK = 1;
  46   2                T_CLK = 0;
  47   2            ACC7 = T_IO;
  48   2         }
  49   1         return(ACC);
  50   1      
  51   1      }
  52          
  53          /******************DS1302:写入数据(先送地址,再写数据)***************************/ 
  54          void write_1302(uchar addr,uchar da)
  55          {
C51 COMPILER V7.06   1602蔩钟                                                              12/29/2008 20:43:40 PAGE 2   

  56   1         T_RST=0;    //停止工作
  57   1         T_CLK=0;                                 
  58   1         T_RST=1;   //重新工作
  59   1         write_byte(addr);    //写入地址
  60   1         
  61   1         write_byte(da);
  62   1         T_RST=0;
  63   1         T_CLK=1;
  64   1      }
  65          
  66          /******************DS1302:读取数据(先送地址,再读数据)**************************/
  67          uchar read_1302(uchar addr)
  68          {
  69   1         uchar temp;
  70   1         T_RST=0;                                   //停止工作
  71   1         T_CLK=0;  
  72   1         T_RST=1;                         //重新工作
  73   1         write_byte(addr);   //写入地址
  74   1         temp=read_byte();
  75   1         T_RST=0;
  76   1         T_CLK=1;     //停止工作
  77   1         return(temp);
  78   1      }
  79          
  80          
  81          
  82          
  83          
  84          /***********************延时程序=a*1ms**************************************/
  85          void delay(uint z)
  86          {
  87   1              uint x,y;
  88   1              for(x=z;x>0;x--)
  89   1                      for(y=110;y>0;y--);
  90   1      }
  91          void write_com(uchar com)
  92          {
  93   1          led=1;
  94   1              wela=1;
  95   1          P0=0xff;
  96   1          delay(1);
  97   1          led=0;
  98   1           wela=0;
  99   1          P0=0x00;
 100   1           dula=1;
 101   1           delay(1);
 102   1           dula=0;
 103   1          rs=0; 
 104   1              P0=com;
 105   1              delay(5);
 106   1              en=1;
 107   1              delay(5);
 108   1              en=0;
 109   1      }
 110          
 111          void write_data(uchar date)
 112          {
 113   1              led=1;
 114   1              wela=1;
 115   1          P0=0xff;
 116   1          delay(1);
 117   1          led=0;
C51 COMPILER V7.06   1602蔩钟                                                              12/29/2008 20:43:40 PAGE 3   

 118   1           wela=0;
 119   1          P0=0x00;
 120   1           dula=1;
 121   1           delay(1);
 122   1           dula=0;
 123   1          rs=1; 
 124   1              P0=date;
 125   1              delay(5);
 126   1              en=1;
 127   1              delay(5);
 128   1              en=0;
 129   1      }
 130          void init()
 131          {   
 132   1          b=0;
 133   1          P0=0xff;
 134   1          delay(5);
 135   1          led=1;
 136   1          delay(5);
 137   1          P0=0xff;
 138   1          led=0;
 139   1              dula=0;
 140   1              wela=1;
 141   1           delay(5);
 142   1          wela=0;//关ME-400开发板数码管
 143   1          rw=0;
 144   1              en=0;
 145   1              write_com(0x38);//设置液晶
 146   1              write_com(0x0c);//设光标等
 147   1              write_com(0x06);//写一个字符地址指针加1且光标加1
 148   1              write_com(0x01);//清屏
 149   1              write_com(0x80);//设置s地址指针
 150   1      }
 151          void display(uchar add,date)
 152          {       
 153   1         if(b==0)
 154   1           {
 155   2              clock_ms=clk_time[0]/ 16;  clock_mg=clk_time[0]%16;
 156   2              led=0;
 157   2              clock_fs=clk_time[1]/ 16;  clock_fg=clk_time[1]%16;
 158   2              led=0;
 159   2              clock_ss=clk_time[2]/ 16;   clock_sg=clk_time[2]%16;
 160   2                           write_com(0x80+0x44);
 161   2                           write_data(0x30+clock_ss);
 162   2                           write_com(0x80+0x45);
 163   2                           write_data(0x30+clock_sg);
 164   2                           write_com(0x80+0x47);
 165   2                           write_data(0x30+clock_fs);
 166   2                           write_com(0x80+0x48);
 167   2                           write_data(0x30+clock_fg);
 168   2                           write_com(0x80+0x4a);
 169   2                           write_data(0x30+clock_ms);
 170   2                           write_com(0x80+0x4b);
 171   2                           write_data(0x30+clock_mg);
 172   2              
 173   2                      }
 174   1         if(b!=0)
 175   1                  {
 176   2                      clock_ss=date/ 10;  clock_sg=date%10;
 177   2              write_com(0x80+0x40+add);
 178   2              write_data(0x30+clock_ss);
 179   2              write_data(0x30+clock_sg);
C51 COMPILER V7.06   1602蔩钟                                                              12/29/2008 20:43:40 PAGE 4   

 180   2             
 181   2                 
 182   2                      }
 183   1        
 184   1      }

⌨️ 快捷键说明

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