找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1840|回复: 9
收起左侧

8*32点阵STC89c51测温代码 改用stc12c5a60s2代态测温显示乱码

[复制链接]
回帖奖励 10 黑币 回复本帖可获得 10 黑币奖励! 每人限 1 次
ID:17109 发表于 2019-6-1 11:04 | 显示全部楼层 |阅读模式
这个是用89c51的测温代码 想改用    stc12c5a60s2代态,不知什么原因  就出现,测温显示乱码   有这放面的师博吗帮忙看看程序有什么问题,修改上传看看谢谢
//单片机晶振12M
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int

#define count 5           //级联个数
//定义Max7219端口
sbit Max7219_pinCLK = P2^2;
sbit Max7219_pinCS  = P2^1;
sbit Max7219_pinDIN = P2^0;
sbit DQ=P3^7;                            // 接DS18B20的数据端
unsigned char AD_CHANNEL;
uchar code disp1[12][8]=
{
//{0x00,0x03,0x03,0x3C,0x7E,0x42,0x42,0x42},/*"未命名文件",度行*/
{0x1E,0x33,0x33,0x33,0x33,0x33,0xB3,0x9E},/*"未命名文件",.0*/
{0x06,0x0E,0x06,0x06,0x06,0x06,0x86,0x8F},/*"未命名文件",.1*/
{0x1E,0x33,0x33,0x06,0x0C,0x18,0xB0,0xBF},/*"未命名文件",.2*/
{0x1E,0x33,0x03,0x0E,0x03,0x03,0xB3,0x9E},/*"未命名文件",.3*/
{0x06,0x0E,0x0E,0x16,0x26,0x3F,0x86,0x8F},/*"未命名文件",.4*/
{0x3F,0x30,0x30,0x3E,0x03,0x03,0xB3,0x9E},/*"未命名文件",.5*/
{0x1E,0x36,0x30,0x3E,0x33,0x33,0xB3,0x9E},/*"未命名文件",.6*/
{0x1F,0x1B,0x03,0x06,0x06,0x06,0x86,0x86},/*"未命名文件",.7*/

{0x1E,0x33,0x33,0x1E,0x33,0x33,0xB3,0x9E},/*"未命名文件",.8*/
{0x1E,0x33,0x33,0x33,0x1F,0x03,0x9B,0x9E},/*"未命名文件",.9*/
{0x00,0x60,0x6F,0x18,0x18,0x18,0x18,0x0F},/*"未命名文件",度列*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"未命名文件", */
};
uchar code disp2[10][8]=
{
{0x78,0xCC,0xCC,0xCC,0xCC,0xCC,0xCD,0x79},/*"未命名文件",0.*/
{0x60,0xE0,0x60,0x60,0x60,0x60,0x61,0xF1},/*"未命名文件",1.*/
{0x78,0xCC,0xCC,0x18,0x30,0x60,0xC1,0xFD},/*"未命名文件",2.*/
{0x78,0xCC,0x0C,0x38,0x0C,0x0C,0xCD,0x79},/*"未命名文件",3.*/
{0x18,0x38,0x38,0x58,0x98,0xFC,0x19,0x3D},/*"未命名文件",4.*/
{0xFC,0xC0,0xC0,0xF8,0x0C,0x0C,0xCD,0x79},/*"未命名文件",5.*/

{0x78,0xD8,0xC0,0xF8,0xCC,0xCC,0xCD,0x79},/*"未命名文件",6.*/

{0xF8,0xD8,0x18,0x30,0x30,0x30,0x31,0x31},/*"未命名文件",7.*/

{0x78,0xCC,0xCC,0x78,0xCC,0xCC,0xCD,0x79},/*"未命名文件",8.*/

{0x78,0xCC,0xCC,0xCC,0x7C,0x0C,0x6D,0x79},/*"未命名文件",9.*/
};
uchar code disp3[10][8]=
{

{0x78,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x78},/*"未命名文件",0*/

{0x60,0xE0,0x60,0x60,0x60,0x60,0x60,0xF0},/*"未命名文件",1*/
{0x78,0xCC,0xCC,0x18,0x30,0x60,0xC0,0xFC},/*"未命名文件",2*/
{0x78,0xCC,0x0C,0x38,0x0C,0x0C,0xCC,0x78},/*"未命名文件",3*/

{0x18,0x38,0x38,0x58,0x98,0xFC,0x18,0x3C},/*"未命名文件",4*/

{0xFC,0xC0,0xC0,0xF8,0x0C,0x0C,0xCC,0x78},/*"未命名文件",5*/
{0x78,0xD8,0xC0,0xF8,0xCC,0xCC,0xCC,0x78},/*"未命名文件",6*/

{0xF8,0xD8,0x18,0x30,0x30,0x30,0x30,0x30},/*"未命名文件",7*/
{0x78,0xCC,0xCC,0x78,0xCC,0xCC,0xCC,0x78},/*"未命名文件",8*/


{0x78,0xCC,0xCC,0xCC,0x7C,0x0C,0x6C,0x78},/*"未命名文件",9*/

};
void Delay_xms(uint x);
void Write_Max7219_byte(uchar DATA);//写入一字节
void Write_Max7219(uchar address1,uchar dat1,uchar address2,uchar dat2);
void Init_MAX7219(void);
                      // 锁存进相应寄存器

void ReSet(void)
{
        uint i;
        DQ=0;
        i=100;
        while(i--);
        DQ=1;
        i=4;
        while(i--);
        while(DQ);
        while(~DQ);
        i=4;
        while(i--);
}
uchar ReadByte(void)
{
        uchar i,j,b,dat=0;
        for(j=0;j<8;j++)
        {                                               
                DQ=0;
                i++;
                DQ=1;       
                i=3;                // 延时15us
                while(--i);
                b=DQ;
                i=10;
                while(i--);
                dat=(b<<7)|(dat>>1);
        }
        return(dat);
}
void WriteByte(uchar b)
{
        uint i;
        uchar j;
        bit btmp;
        for(j=0;j<8;j++)
        {
                btmp=b&0x01;
                b=b>>1;                         // 取下一位(由低位向高位)
                if(btmp)
                {
                        DQ=0;
                        i++;
                        i++;
                        DQ=1;
                        i=10;
                        while(i--);                // 整个写1时隙不低于60us
                }
                else
                {
                        DQ=0;
                        i=10;
                        while(i--);         // 保持低在60us到120us之间
                        DQ=1;
                        i++;
                        i++;
                }
        }
}
uint ReadTemp(void)
{
        uchar TempLow,TempHig;         // 温度值低位、高位字节
        float tt;
        uint temp;
        ReSet();                                // 产生复位脉冲,初始化DS18B20
        WriteByte(0xcc);                // skip rom 命令
        WriteByte(0x44);                // convert T 命令
        ReSet();
        WriteByte(0xcc);                // skip rom 命令
        WriteByte(0xbe);                // read 温度命令
        TempLow=ReadByte();                // 温度值低位字节(其中低4位为二进制的"小数"部分)
        TempHig=ReadByte();                // 高位值高位字节(其中高5位为符号位)
        temp=TempHig;
        temp<<=8;
        temp=temp|TempLow;
        tt=temp*0.0625;
        temp=tt*10+0.5;
        return (temp);
}
void Init_MAX7219(void)
{
uchar  i;
  Max7219_pinCS=0;
  for(i=0;i<count;i++)
  {
    Write_Max7219_byte(0x09); //译码方式:BCD码      
    Write_Max7219_byte(0x00);   
  }
  Max7219_pinCS=1;
  _nop_();
  Max7219_pinCS=0;
  for(i=0;i<count;i++)
  {
    Write_Max7219_byte(0x0a); //亮度   
    Write_Max7219_byte(0x03);   
  }
  Max7219_pinCS=1;
_nop_();
   Max7219_pinCS=0;
  for(i=0;i<count;i++)
  {
    Write_Max7219_byte(0x0b); // //扫描界限;8个数码管显示  
    Write_Max7219_byte(0x07);   
  }
  Max7219_pinCS=1;
  _nop_();
  Max7219_pinCS=0;
  for(i=0;i<count;i++)
  {
    Write_Max7219_byte(0x0c); //   //掉电模式:0,普通模式:1
    Write_Max7219_byte(0x01);   
  }
  Max7219_pinCS=1;
  Max7219_pinCS=0;
  for(i=0;i<count;i++)
  {
    Write_Max7219_byte(0x0f); //显示测试:1;测试结束,正常显示:0
    Write_Max7219_byte(0x00);   
  }
  Max7219_pinCS=1;
  _nop_();
}
void main(void)
{
uchar i;
  uint temp;
Delay_xms(50);
Init_MAX7219();  
while(1)
{
temp=ReadTemp();

   for(i=1;i<9;i++)
   {
    Max7219_pinCS=0;
                                Write_Max7219_byte(i);           //写入地址,即数码管编号
        Write_Max7219_byte(disp3[temp%10000/1000][i-1]);              //写入数据,即数码管显示数字
                                Write_Max7219_byte(i);           //写入地址,即数码管编号
        Write_Max7219_byte(disp3[temp%1000/100][i-1]);              //写入数据,即数码管显示数字
                 Write_Max7219_byte(i);           //写入地址,即数码管编号
        Write_Max7219_byte(disp2[temp%100/10][i-1]);              //写入数据,即数码管显示数字
                        Write_Max7219_byte(i);           //写入地址,即数码管编号
        Write_Max7219_byte(disp1[temp%10][i-1]);              //写入数据,即数码管显示数字
                        Write_Max7219_byte(i);           //写入地址,即数码管编号
        Write_Max7219_byte(disp1[10][i-1]);              //写入数据,即数码管显示数字


     Max7219_pinCS=1;   

   }
   Delay_xms(1000);

}
}

void Write_Max7219(uchar address1,uchar dat1,uchar address2,uchar dat2)
{

     Max7219_pinCS=0;
     Write_Max7219_byte(address1);           //写入地址,即数码管编号
     Write_Max7219_byte(dat1);              //写入数据,即数码管显示数字
     Write_Max7219_byte(address2);           //写入地址,即数码管编号
     Write_Max7219_byte(dat2);      //写入数据,即数码管显示数字
              _nop_();

     Max7219_pinCS=1;                        
}
//--------------------------------------------
//功能:向MAX7219(U3)写入字节
//入口参数:DATA
//出口参数:无
//说明:
void Write_Max7219_byte(uchar DATA)         
{
            uchar i;   
            for(i=8;i>=1;i--)
          {                  
            Max7219_pinCLK=0;
            Max7219_pinDIN=DATA&0x80;
            DATA=DATA<<1;
            Max7219_pinCLK=1;
           }                                 
}
void Delay_xms(uint x)
{
uint i,j;
for(i=0;i<x;i++)
  for(j=0;j<112;j++);
}


8x32点阵STC89c51温代码.rar

34.44 KB, 下载次数: 15

回复

使用道具 举报

ID:96682 发表于 2019-6-1 13:11 | 显示全部楼层
查看芯片参数修改相关程序
回复

使用道具 举报

ID:511890 发表于 2019-6-1 16:04 | 显示全部楼层
应该是延时程序的问题。89系列一个机器周期等于12个时钟周期(RD+的是6个时钟周期)。而12系列的单片机一个机器周期等于1个时钟周期。换一个延时函数试试。这个延时你可以在ISP烧录工具中选择相应的芯片生成。
回复

使用道具 举报

ID:552667 发表于 2019-6-1 20:26 | 显示全部楼层
芯片不一样 定时器中断也不一样  12的速度好像是51的1200倍吧
回复

使用道具 举报

ID:155507 发表于 2019-6-1 20:58 | 显示全部楼层
换一个延时函数试试。

void delay_ms(uint16 x)
{  
        uint16 j,i;   
        for(j=0;j<x;j++)   
        {   
                for(i=0;i<1100;i++);   
        }  
}       
回复

使用道具 举报

ID:17109 发表于 2019-6-2 10:35 | 显示全部楼层
angmall 发表于 2019-6-1 20:58
换一个延时函数试试。

void delay_ms(uint16 x)

师傅能上传上面这条代码的,打包好的源程序吗谢谢!
回复

使用道具 举报

ID:307020 发表于 2019-6-2 16:45 | 显示全部楼层
要仔细研读生产商提供的Data Sheet,清楚二者的软硬件差别,并将程序作对应的调整;从最简单处着眼,应比对二者脚位PIN OUT的差别。可从STC网站获得Data Sheet文件
回复

使用道具 举报

ID:155507 发表于 2019-6-3 00:41 | 显示全部楼层
给你改了一下试试。

  1. //单片机晶振12M
  2. #include <reg52.h>
  3. #include <intrins.h>
  4. #define uchar unsigned char
  5. #define uint  unsigned int

  6. #define count 5           //级联个数
  7. //定义Max7219端口
  8. sbit Max7219_pinCLK = P2^2;
  9. sbit Max7219_pinCS  = P2^1;
  10. sbit Max7219_pinDIN = P2^0;

  11. sbit DQ=P3^7;                            // 接DS18B20的数据端
  12. unsigned char AD_CHANNEL;
  13. uchar code disp1[12][8]=
  14. {
  15.   //{0x00,0x03,0x03,0x3C,0x7E,0x42,0x42,0x42},/*"未命名文件",度行*/
  16.   {0x1E,0x33,0x33,0x33,0x33,0x33,0xB3,0x9E},/*"未命名文件",.0*/
  17.   {0x06,0x0E,0x06,0x06,0x06,0x06,0x86,0x8F},/*"未命名文件",.1*/
  18.   {0x1E,0x33,0x33,0x06,0x0C,0x18,0xB0,0xBF},/*"未命名文件",.2*/
  19.   {0x1E,0x33,0x03,0x0E,0x03,0x03,0xB3,0x9E},/*"未命名文件",.3*/
  20.   {0x06,0x0E,0x0E,0x16,0x26,0x3F,0x86,0x8F},/*"未命名文件",.4*/
  21.   {0x3F,0x30,0x30,0x3E,0x03,0x03,0xB3,0x9E},/*"未命名文件",.5*/
  22.   {0x1E,0x36,0x30,0x3E,0x33,0x33,0xB3,0x9E},/*"未命名文件",.6*/
  23.   {0x1F,0x1B,0x03,0x06,0x06,0x06,0x86,0x86},/*"未命名文件",.7*/
  24.   {0x1E,0x33,0x33,0x1E,0x33,0x33,0xB3,0x9E},/*"未命名文件",.8*/
  25.   {0x1E,0x33,0x33,0x33,0x1F,0x03,0x9B,0x9E},/*"未命名文件",.9*/
  26.   {0x00,0x60,0x6F,0x18,0x18,0x18,0x18,0x0F},/*"未命名文件",度列*/
  27.   {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"未命名文件", */
  28. };
  29. uchar code disp2[10][8]=
  30. {
  31.   {0x78,0xCC,0xCC,0xCC,0xCC,0xCC,0xCD,0x79},/*"未命名文件",0.*/
  32.   {0x60,0xE0,0x60,0x60,0x60,0x60,0x61,0xF1},/*"未命名文件",1.*/
  33.   {0x78,0xCC,0xCC,0x18,0x30,0x60,0xC1,0xFD},/*"未命名文件",2.*/
  34.   {0x78,0xCC,0x0C,0x38,0x0C,0x0C,0xCD,0x79},/*"未命名文件",3.*/
  35.   {0x18,0x38,0x38,0x58,0x98,0xFC,0x19,0x3D},/*"未命名文件",4.*/
  36.   {0xFC,0xC0,0xC0,0xF8,0x0C,0x0C,0xCD,0x79},/*"未命名文件",5.*/
  37.   {0x78,0xD8,0xC0,0xF8,0xCC,0xCC,0xCD,0x79},/*"未命名文件",6.*/
  38.   {0xF8,0xD8,0x18,0x30,0x30,0x30,0x31,0x31},/*"未命名文件",7.*/
  39.   {0x78,0xCC,0xCC,0x78,0xCC,0xCC,0xCD,0x79},/*"未命名文件",8.*/
  40.   {0x78,0xCC,0xCC,0xCC,0x7C,0x0C,0x6D,0x79},/*"未命名文件",9.*/
  41. };
  42. uchar code disp3[10][8]=
  43. {
  44.   {0x78,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x78},/*"未命名文件",0*/
  45.   {0x60,0xE0,0x60,0x60,0x60,0x60,0x60,0xF0},/*"未命名文件",1*/
  46.   {0x78,0xCC,0xCC,0x18,0x30,0x60,0xC0,0xFC},/*"未命名文件",2*/
  47.   {0x78,0xCC,0x0C,0x38,0x0C,0x0C,0xCC,0x78},/*"未命名文件",3*/
  48.   {0x18,0x38,0x38,0x58,0x98,0xFC,0x18,0x3C},/*"未命名文件",4*/
  49.   {0xFC,0xC0,0xC0,0xF8,0x0C,0x0C,0xCC,0x78},/*"未命名文件",5*/
  50.   {0x78,0xD8,0xC0,0xF8,0xCC,0xCC,0xCC,0x78},/*"未命名文件",6*/
  51.   {0xF8,0xD8,0x18,0x30,0x30,0x30,0x30,0x30},/*"未命名文件",7*/
  52.   {0x78,0xCC,0xCC,0x78,0xCC,0xCC,0xCC,0x78},/*"未命名文件",8*/
  53.   {0x78,0xCC,0xCC,0xCC,0x7C,0x0C,0x6C,0x78},/*"未命名文件",9*/
  54. };
  55. void Delay_xms(uint x);
  56. void Write_Max7219_byte(uchar DATA);//写入一字节
  57. void Write_Max7219(uchar address1,uchar dat1,uchar address2,uchar dat2);
  58. void Init_MAX7219(void);
  59. // 锁存进相应寄存器

  60. /**************************************
  61. 延时X微秒(STC12C5A60S2@12M)
  62. 不同的工作环境,需要调整此函数
  63. 此延时函数是使用1T的指令周期进行计算,与传统的12T的MCU不同
  64. **************************************/
  65. void DelayXus(uchar n)
  66. {
  67.     while (n--)
  68.     {
  69.         _nop_();
  70.         _nop_();
  71.     }
  72. }

  73. void ReSet(void)
  74. {
  75.     CY = 1;
  76.     while (CY)
  77.     {
  78.         DQ = 0;                     //送出低电平复位信号
  79.         DelayXus(240);              //延时至少480us
  80.         DelayXus(240);
  81.         DQ = 1;                     //释放数据线
  82.         DelayXus(60);               //等待60us
  83.         CY = DQ;                    //检测存在脉冲
  84.         DelayXus(240);              //等待设备释放数据线
  85.         DelayXus(180);
  86.     }

  87. }
  88. uchar ReadByte(void)
  89. {
  90.     uchar i;
  91.     uchar dat = 0;

  92.     for (i=0; i<8; i++)             //8位计数器
  93.     {
  94.         dat >>= 1;
  95.         DQ = 0;                     //开始时间片
  96.         DelayXus(1);                //延时等待
  97.         DQ = 1;                     //准备接收
  98.         DelayXus(1);                //接收延时
  99.         if (DQ) dat |= 0x80;        //读取数据
  100.         DelayXus(60);               //等待时间片结束
  101.     }

  102.     return dat;
  103. }

  104. void WriteByte(uchar dat)
  105. {
  106.     char i;

  107.     for (i=0; i<8; i++)             //8位计数器
  108.     {
  109.         DQ = 0;                     //开始时间片
  110.         DelayXus(1);                //延时等待
  111.         dat >>= 1;                  //送出数据
  112.         DQ = CY;
  113.         DelayXus(60);               //等待时间片结束
  114.         DQ = 1;                     //恢复数据线
  115.         DelayXus(1);                //恢复延时
  116.     }
  117. }
  118. uint ReadTemp(void)
  119. {
  120.   uchar TempLow,TempHig;         // 温度值低位、高位字节
  121.   float tt;
  122.   uint temp;
  123.   ReSet();                                // 产生复位脉冲,初始化DS18B20
  124.   WriteByte(0xcc);                // skip rom 命令
  125.   WriteByte(0x44);                // convert T 命令
  126.   while (!DQ);  
  127.   ReSet();
  128.   WriteByte(0xcc);                // skip rom 命令
  129.   WriteByte(0xbe);                // read 温度命令
  130.   TempLow=ReadByte();                // 温度值低位字节(其中低4位为二进制的"小数"部分)
  131.   TempHig=ReadByte();                // 高位值高位字节(其中高5位为符号位)
  132.   temp=TempHig;
  133.   temp<<=8;
  134.   temp=temp|TempLow;
  135.   tt=temp*0.0625;
  136.   temp=tt*10+0.5;
  137.   return (temp);
  138. }
  139. void Init_MAX7219(void)
  140. {
  141.   uchar  i;
  142.   Max7219_pinCS=0;
  143.   for(i=0;i<count;i++)
  144.   {
  145.     Write_Max7219_byte(0x09); //译码方式:BCD码      
  146.     Write_Max7219_byte(0x00);   
  147.   }
  148.   Max7219_pinCS=1;
  149.   _nop_();

  150.   Max7219_pinCS=0;
  151.   for(i=0;i<count;i++)
  152.   {
  153.     Write_Max7219_byte(0x0a); //亮度   
  154.     Write_Max7219_byte(0x03);   
  155.   }
  156.   Max7219_pinCS=1;
  157.   _nop_();

  158.   Max7219_pinCS=0;
  159.   for(i=0;i<count;i++)
  160.   {
  161.     Write_Max7219_byte(0x0b); // //扫描界限;8个数码管显示  
  162.     Write_Max7219_byte(0x07);   
  163.   }
  164.   Max7219_pinCS=1;
  165.   _nop_();

  166.   Max7219_pinCS=0;
  167.   for(i=0;i<count;i++)
  168.   {
  169.     Write_Max7219_byte(0x0c); //   //掉电模式:0,普通模式:1
  170.     Write_Max7219_byte(0x01);   
  171.   }
  172.   Max7219_pinCS=1;
  173.   _nop_();
  174.   Max7219_pinCS=0;
  175.   for(i=0;i<count;i++)
  176.   {
  177.     Write_Max7219_byte(0x0f); //显示测试:1;测试结束,正常显示:0
  178.     Write_Max7219_byte(0x00);   
  179.   }
  180.   Max7219_pinCS=1;
  181.   _nop_();

  182. }
  183. void main(void)
  184. {
  185.   uchar i;
  186.   uint temp=0;
  187.   Delay_xms(50);
  188.   Init_MAX7219();
  189.   Delay_xms(2000);       
  190.   while(1)
  191.   {
  192.     temp = ReadTemp();

  193.     for(i=1;i<9;i++)
  194.     {
  195.       Max7219_pinCS=0;
  196.       Write_Max7219_byte(i);           //写入地址,即数码管编号
  197.       Write_Max7219_byte(disp3[temp/1000%10][i-1]);              //写入数据,即数码管显示数字
  198.                           _nop_();
  199.                           _nop_();
  200.       Write_Max7219_byte(i);           //写入地址,即数码管编号
  201.       Write_Max7219_byte(disp3[temp/100%10][i-1]);              //写入数据,即数码管显示数字
  202.                           _nop_();
  203.                           _nop_();
  204.       Write_Max7219_byte(i);           //写入地址,即数码管编号
  205.       Write_Max7219_byte(disp2[temp/10%10][i-1]);              //写入数据,即数码管显示数字
  206.                           _nop_();
  207.                           _nop_();
  208.       Write_Max7219_byte(i);           //写入地址,即数码管编号
  209.       Write_Max7219_byte(disp1[temp%10][i-1]);              //写入数据,即数码管显示数字
  210.                           _nop_();
  211.                           _nop_();
  212.       Write_Max7219_byte(i);           //写入地址,即数码管编号
  213.       Write_Max7219_byte(disp1[10][i-1]);              //写入数据,即数码管显示数字
  214.                           _nop_();
  215.                           _nop_();

  216.       
  217.       Max7219_pinCS=1;   

  218.     }
  219.     Delay_xms(1000);
  220.    
  221.   }
  222. }
  223. /*
  224. void Write_Max7219(uchar address1,uchar dat1,uchar address2,uchar dat2)
  225. {
  226.   
  227.   Max7219_pinCS=0;
  228.   Write_Max7219_byte(address1);           //写入地址,即数码管编号
  229.   Write_Max7219_byte(dat1);              //写入数据,即数码管显示数字
  230.   Write_Max7219_byte(address2);           //写入地址,即数码管编号
  231.   Write_Max7219_byte(dat2);      //写入数据,即数码管显示数字
  232.   _nop_();

  233.   
  234.   Max7219_pinCS=1;                        
  235. }
  236. */
  237. //--------------------------------------------
  238. //功能:向MAX7219(U3)写入字节
  239. //入口参数:DATA
  240. //出口参数:无
  241. //说明:
  242. void Write_Max7219_byte(uchar DATA)         
  243. {
  244.   uchar i;   
  245.   for(i=8;i>=1;i--)
  246.   {                  
  247.     Max7219_pinCLK=0;
  248.     Max7219_pinDIN=DATA&0x80;
  249.     DATA=DATA<<1;
  250.     Max7219_pinCLK=1;
  251.   }                                 
  252. }

  253. void Delay_xms(uint x)
  254. {
  255.   uint i,j;
  256.   for(i=0;i<x;i++)
  257.      for(j=0;j<1100;j++);
  258. }
复制代码



LED8x32点阵STC89c51温代码.zip

49.67 KB, 下载次数: 13

回复

使用道具 举报

ID:93224 发表于 2019-6-3 13:17 | 显示全部楼层
二者的运行速度不一样延时时间需要转换
回复

使用道具 举报

ID:517060 发表于 2019-8-5 11:46 | 显示全部楼层
牛叉 支持了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表