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

📄 +

📁 51单片机配套C程序
💻
字号:
C51 COMPILER V7.50   综合显蔩                                                              05/27/2010 15:09:11 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 综合显蔩
OBJECT MODULE PLACED IN 综合显示.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 综合显示.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          /*1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK*/
   3          
   4          /*-----------------------------------------------
   5            名称:LCD1602和数码管同时显示
   6            内容:通过标准程序静态显示2行字符和数码管显示
   7          ------------------------------------------------*/
   8          
   9          #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
  10          #include<stdio.h> //标准输入输出
  11          #include<intrins.h>
  12          
  13          
  14          sbit RS = P2^4; //Pin4
  15          sbit RW = P2^5; //Pin5
  16          sbit E  = P2^6; //Pin6
  17          
  18          
  19          unsigned char const EL[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值01234567
  20          unsigned char code seg[]={0,1,2,3,4,5,6,7};//分别对应相应的数码管点亮
  21          
  22          #define Data  P0//数据端口
  23          
  24          char data TimeNum[]="                ";
  25          char data Test1[]="                  ";
  26          
  27          /******************************************************************/
  28          /*                    微秒延时函数                                */
  29          /******************************************************************/
  30          void DelayUs(unsigned char us)//delay us
  31          {
  32   1       unsigned char uscnt;
  33   1       uscnt=us>>1;        /*12MHz频率*/
  34   1       while(--uscnt);
  35   1      }
  36          /******************************************************************/
  37          /*                    毫秒函数声明                                */
  38          /******************************************************************/
  39          void DelayMs(unsigned char ms)
  40          {
  41   1       while(--ms)
  42   1         {
  43   2           DelayUs(250);
  44   2           DelayUs(250);
  45   2               DelayUs(250);
  46   2               DelayUs(250);
  47   2         }
  48   1      }
  49          /******************************************************************/
  50          /*                   写入命令函数                                 */
  51          /******************************************************************/
  52          void WriteCommand(unsigned char c)
  53          {
  54   1       DelayMs(5);//操作前短暂延时,保证信号稳定
  55   1       E=0;
C51 COMPILER V7.50   综合显蔩                                                              05/27/2010 15:09:11 PAGE 2   

  56   1       RS=0;
  57   1       RW=0;
  58   1       _nop_();
  59   1       E=1;
  60   1       Data=c;
  61   1       E=0;
  62   1      }
  63          /******************************************************************/
  64          /*                   写入数据函数                                 */
  65          /******************************************************************/
  66          void WriteData(unsigned char c)
  67          {
  68   1       DelayMs(5);  //操作前短暂延时,保证信号稳定
  69   1       E=0;
  70   1       RS=1;
  71   1       RW=0;
  72   1       _nop_();
  73   1       E=1;
  74   1       Data=c;
  75   1       E=0;
  76   1       RS=0;
  77   1      }
  78          /******************************************************************/
  79          /*                   写入字节函数                                 */
  80          /******************************************************************/
  81          void ShowChar(unsigned char pos,unsigned char c)
  82          {
  83   1       unsigned char p;
  84   1       if (pos>=0x10)
  85   1          p=pos+0xb0; //是第二行则命令代码高4位为0xc
  86   1       else 
  87   1          p=pos+0x80; //是第二行则命令代码高4位为0x8
  88   1       WriteCommand (p);//写命令
  89   1       WriteData (c);   //写数据
  90   1      }
  91          /******************************************************************/
  92          /*                   写入字符串函数                               */
  93          /******************************************************************/
  94          void ShowString (unsigned char line,char *ptr)
  95          {
  96   1       unsigned char l,i;
  97   1       l=line<<4;
  98   1       for (i=0;i<16;i++)
  99   1        ShowChar (l++,*(ptr+i));//循环显示16个字符
 100   1      }
 101          /******************************************************************/
 102          /*                   初始化函数                                   */
 103          /******************************************************************/
 104          void InitLcd()
 105          {
 106   1       DelayMs(15);
 107   1       WriteCommand(0x38); //display mode
 108   1       WriteCommand(0x38); //display mode
 109   1       WriteCommand(0x38); //display mode
 110   1       WriteCommand(0x06); //显示光标移动位置
 111   1       WriteCommand(0x0c); //显示开及光标设置
 112   1       WriteCommand(0x01); //显示清屏
 113   1      
 114   1      }
 115          /******************************************************************/
 116          /*                   延时子程序                                   */
 117          /******************************************************************/
C51 COMPILER V7.50   综合显蔩                                                              05/27/2010 15:09:11 PAGE 3   

 118          void delay(unsigned int cnt)
 119          {
 120   1       while(--cnt);
 121   1      }
 122          /******************************************************************/
 123          /*                   主函数                                       */
 124          /******************************************************************/
 125          void main(void)
 126          
 127          {
 128   1      unsigned char i;
 129   1      InitLcd();                         //初始化LCD
 130   1      DelayMs(15);                       //延时可以使操作更稳定
 131   1      
 132   1      sprintf(Test1,"ABCDEF1234567890");//第一行
 133   1      ShowString(0,Test1);
 134   1      
 135   1      sprintf(TimeNum,"LCM1602 Test ok!");//第二行
 136   1      ShowString(1,TimeNum);
 137   1      
 138   1      while(1)
 139   1      {
 140   2             P0=EL[i];               //取显示数据
 141   2                 P2 =seg[i];                //取位码
 142   2                 delay(200);                //扫描间隙延时
 143   2                 i++;
 144   2                 if(8==i)                   //检测8位扫描完全?
 145   2                   i=0;
 146   2      }
 147   1      
 148   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    296    ----
   CONSTANT SIZE    =     42    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     46       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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