一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
楼主: 桃源客
收起左侧

[C51]再做3264点阵屏万年历,完美功能,加上红外学习遥控,亮度自动调节,快慢校准。

  [复制链接]
发表于 2014-12-14 16:50 | 显示全部楼层
32.768M晶振要怎么改?

点评

309行改为: #define main_fosc 32768000 // 32.768MHz  发表于 2014-12-14 21:08
 楼主| 发表于 2014-12-14 21:05 | 显示全部楼层
以上源程序是没有温度的,晶振要是不是24M的,要在源程序中改下:
第309行改为:
//【 系统主频宏定义 】
//#define  main_fosc    4950000               //      4.95MHz  片内自带RC频率
//#define  main_fosc    6000000               //      6MHz
//#define  main_fosc   11059200               //11.0592MHz
// #define  main_fosc   12000000               //     12MHz
//#define  main_fosc   22118400               //22.1184MHz
#define  main_fosc   24000000               //     24MHz                     

改为以下:
//【 系统主频宏定义 】
//#define  main_fosc    4950000               //      4.95MHz  片内自带RC频率
//#define  main_fosc    6000000               //      6MHz
//#define  main_fosc   11059200               //11.0592MHz
// #define  main_fosc   12000000               //     12MHz
//#define  main_fosc   22118400               //22.1184MHz
#define  main_fosc   12000000               //     12MHz

还要在MAIN函数中的782行和885行和改下,让秒点0.5秒闪一次,不然不好看。还有1.5秒公农历换一次。(红色字部分)
   TC++;
     if(TC==70)  // 具体数据根据时钟频率调整,0.5秒换一次。
    {
    TC=0;
    SHAN=!SHAN;             //闪烁标志取反
}
   TC1++;                //每循环一次TC1加1
if(TC1==180)             //计时设CON值轮换,参数根据时钟频率调整,基本上1.5秒变一次
{                  
   
   TC1=0;          //TC1清零,重新计数
   con++;        //con加1,轮换显公农历,星期



发表于 2014-12-17 16:00 | 显示全部楼层
无私奉献
发表于 2014-12-17 16:24 | 显示全部楼层
//行扫描ABCD分别接P1^0,P1^1,P1^2,P1^3,这个不能改。
//红外接收口为P3.4,这个不能改。

我的板接口不同
发表于 2014-12-18 16:34 | 显示全部楼层
楼主这个不错有空仿做一个,不知为什么那视频看不了
发表于 2014-12-19 20:48 | 显示全部楼层
我的屏接口和楼主的不一样  怎么接 ?
发表于 2014-12-22 15:01 | 显示全部楼层
仿制了,但点阵反显,不知要改哪?
OE=0; //OE为低电平使能用,要是高电平使能,要最反~~不行。
发表于 2014-12-22 15:37 | 显示全部楼层
想改成DS3231  怎么改?谢谢
发表于 2014-12-22 17:24 | 显示全部楼层

好东西必须顶
 楼主| 发表于 2014-12-23 12:34 | 显示全部楼层
本帖最后由 桃源客 于 2014-12-23 12:40 编辑
老蒙 发表于 2014-12-22 15:01
仿制了,但点阵反显,不知要改哪?
OE=0; //OE为低电平使能用,要是高电平使能,要最反~~不行。

改下下面发送函数sendoneline2(void),把红色的~删除就可以了。大约在源码的1151行。
/***************发送上下半屏一线点阵数据*******************/
void sendoneline2(void)
/*char s;                                          //串口方式发送数据,效率高,但只能用上下屏串联方法。
          for(s=0;s<16;s++)
        
        {
        
        SBUF=~BUFF2;
                while(!TI);TI=0;

    }

        //---------------------*/
{                char s;uchar TEMP1,TEMP2,i;                  //IO串模拟串口方法,可以上下屏分开控制,但是时钟要12M以上才不闪。
bit e1,e2;
          for(s=0;s<8;s++)
        
        {
        TEMP2=~BUFF1;
        TEMP1=~BUFF2;
                for(i=0;i<8;i++)
       {
        e1=(TEMP1>>i)&0x01;   //取出最高位。
        e2=(TEMP2>>i)&0x01;   //取出最高位。
       R1=e1;
           R2=e2;             //发送数据
       CLK=1;              //发送时钟
       CLK=0;

      }
        
}        
  }


本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-4-26 13:28 , Processed in 0.049018 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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