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

📄 51

📁 51单片机大量源码
💻
📖 第 1 页 / 共 2 页
字号:
 123   1              delay(5);
 124   1              WriteInstruction(0x01);  //清屏幕指令,将以前的显示内容清除
 125   1              delay(5);
 126   1      
 127   1       }
 128           /******************************************************************************
 129           函数功能:显示小时                          
 130          ******************************************************************************/
 131          void DisplayHour()
 132          {
 133   1         unsigned char i,j;
 134   1              i=h/10;                //取整运算,求得十位数字
 135   1              j=h%10;                //取余运算,求得各位数字
 136   1         WriteAddress(0x44);   //写显示地址,将十位数字显示在第2行第5列
 137   1              WriteData(digit[i]);  //将十位数字的字符常量写入LCD
 138   1              WriteData(digit[j]);  //将个位数字的字符常量写入LCD
 139   1           
 140   1       }
 141          /******************************************************************************
 142           函数功能:显示分钟                          
 143           ******************************************************************************/
 144          void DisplayMinute()
 145          {
 146   1        unsigned char i,j;
 147   1         i=m/10;                //取整运算,求得十位数字
 148   1              j=m%10;                //取余运算,求得各位数字
 149   1         WriteAddress(0x47);   //写显示地址,将十位数字显示在第2行第8列
 150   1              WriteData(digit[i]);  //将十位数字的字符常量写入LCD
 151   1              WriteData(digit[j]);  //将个位数字的字符常量写入LCD
 152   1           
 153   1       }
 154           /******************************************************************************
 155           函数功能:显示秒                        
 156            ******************************************************************************/
 157          void DisplaySecond()
 158          {
 159   1         unsigned char i,j;
 160   1              i=s/10;                //取整运算,求得十位数字
 161   1              j=s%10;                //取余运算,求得各位数字
 162   1         WriteAddress(0x4a);   //写显示地址,将十位数字显示在第2行第11列
 163   1              WriteData(digit[i]);  //将十位数字的字符常量写入LCD
 164   1              WriteData(digit[j]);  //将个位数字的字符常量写入LCD
 165   1       }
 166          
 167          /*********************************************************************
 168                         main function
 169          ***********************************************************************/
 170           void main(void)
 171           {
 172   1        unsigned char i;
 173   1          LcdInitiate();  //调用LCD初始化函数
 174   1      
 175   1         TMOD=0x01;                //使用定时器T0的模式1
 176   1              TH0=(65536-46083)/256;    //定时器T0的高8位设置初值
 177   1              TL0=(65536-46083)%256;    //定时器T0的低8位设置初值
 178   1              EA=1;                     //开总中断
 179   1              ET0=1;                    //定时器T0中断允许
C51 COMPILER V8.09   EX84                                                                  07/12/2010 14:33:30 PAGE 4   

 180   1              TR0=1;                    //启动定时器T0
 181   1      
 182   1              count=0;              //中断次数初始化为0
 183   1              s=0;                  //秒初始化为0
 184   1              m=0;                  //分钟初始化为0
 185   1              h=0;                  //小时初始化为0
 186   1      
 187   1         WriteAddress(0x03);   //写地址,从第1行第4列开始显示
 188   1               i=0;              //从字符数组的第1个元素开始显示
 189   1               while(string[i]!='\0')   //只要没有显示到字符串的结束标志'\0',就继续
 190   1               {
 191   2                       WriteData(string[i]); //将第i个字符数组元素写入LCD
 192   2                       i++;                 //指向下一个数组元素
 193   2               }
 194   1              WriteAddress(0x46);     //写地址,将第二个分号显示在第2行第7列
 195   1              WriteData(':');         //将分号的字符常量写入LCD
 196   1              WriteAddress(0x49);     //写地址,将第二个分号显示在第2行第10列
 197   1              WriteData(':');         //将分号的字符常量写入LCD  
 198   1          while(1)            //无限循环
 199   1            {
 200   2                      DisplayHour();      //显示小时
 201   2                               delay(5);         //给硬件一点反应时间
 202   2                              DisplayMinute();   //显示分钟
 203   2                               delay(5);         //给硬件一点反应时间
 204   2                              DisplaySecond();   //显示秒     
 205   2                  delay(5);       //给硬件一点反应时间
 206   2                 }
 207   1      }
 208          /*******************************************************
 209          函数功能:定时器T0的中断服务函数
 210          ********************************************************/
 211           void Time0(void ) interrupt 1 using 1 //定时器T0的中断编号为1,使用第1组工作寄存器
 212            {
 213   1           count++;  //每产生1次中断,中断累计次数加1
 214   1                       if(count==20)  //如果中断次数计满20次
 215   1                          {
 216   2                    count=0;  //中断累计次数清0
 217   2                              s++;      //秒加1                                
 218   2                              }
 219   1                        if(s==60)   //如果计满60秒
 220   1                               {
 221   2                                s=0;     //秒清0
 222   2                                m++;     //分钟加1
 223   2                          }
 224   1                      if(m==60)    //如果计满60分
 225   1                         {
 226   2                                 m=0;   //分钟清0 
 227   2                                 h++;    //小时加1
 228   2                          }
 229   1                   if(h==24)  //如果计满24小时
 230   1                         {
 231   2                                 h=0;   //小时清0
 232   2                         }
 233   1                 TH0=(65536-46083)/256;   //定时器T0高8位重新赋初值
 234   1                      TL0=(65536-46083)%256;   //定时器T0低8位重新赋初值              
 235   1        }  
 236          
 237          
 238                       


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V8.09   EX84                                                                  07/12/2010 14:33:30 PAGE 5   

   CODE SIZE        =    411    ----
   CONSTANT SIZE    =     24    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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