发新帖本帖赏金 10.00元(功能说明)我要提问
返回列表
打印
[开源硬件]

DIY多功能12864液晶显示电子台历(STM8S207+DS3231+SHT31)-V1.0版

[复制链接]
楼主: henangongda123
手机看帖
扫描二维码
随时随地手机跟帖
21
加油!!

使用特权

评论回复
22
henangongda123|  楼主 | 2018-7-15 23:44 | 只看该作者

使用特权

评论回复
23
henangongda123|  楼主 | 2018-7-15 23:44 | 只看该作者

使用特权

评论回复
24
henangongda123|  楼主 | 2018-7-16 08:43 | 只看该作者
今天准备实现EEPROM掉电保存背光亮度设置,免得每次掉电重新上电后都要重新设置背光亮度,那样很麻烦!

使用特权

评论回复
25
second_chan| | 2018-7-16 17:54 | 只看该作者
感谢楼主分享

使用特权

评论回复
26
henangongda123|  楼主 | 2018-7-16 17:56 | 只看该作者

嗯 嗯 后面V2.0版快出来, 等下继续分享!特别是背光亮度可以调节,好多了

使用特权

评论回复
27
henangongda123|  楼主 | 2018-7-16 22:33 | 只看该作者
EEPROM调试OK:
#define EEP_BASE 0x4000       //STM8S大容量Data EEPROM起始地址
#define EEPROM_Lock() FLASH_IAPSR&=(~0x08)  
#define EEPROM_Wait_Read_Over() while(!(FLASH_IAPSR&0x04))
#define EEPROM_Wrover_Clear() FLASH_IAPSR&=(~0x04)

/********** EEPROM操作 **********/
/***********************************************************
函数名:EEPROM_Unclock()
功  能:EEPROM解锁
参  数:无
返回值:无
/**********************************************************/
void EEPROM_Unclock(void)
{
        FLASH_CR1 |= 0x00;
        FLASH_DUKR = 0xAE;
        FLASH_DUKR = 0x56;          // 解锁写保护
        while(!(FLASH_IAPSR&0x08)); // 等待解锁
}
/***********************************************************
函数名:EEPROM_Write_Char
功  能:向EEPROM写一字节数据操作
参  数:addr --- 地址;
                         data --- 数据;
返回值:无
/**********************************************************/
void EEPROM_Write_Char(uchar addr,uchar data)
{
        *((uchar*)(addr + EEP_BASE)) = data;
}
/***********************************************************
函数名:EEPROM_Write
功  能:EEPROM写操作(一字节完整操作)
参  数:addr --- 地址;
                         data --- 数据;
返回值:无
/**********************************************************/
void EEPROM_Write(uchar addr,uchar data)
{
        EEPROM_Unclock();           //解锁EEPROM
   
        EEPROM_Write_Char(addr,data);//EEPROM写入一字节
        EEPROM_Wait_Read_Over();    //等待写完成
  EEPROM_Wrover_Clear();      //清除标志       

        EEPROM_Lock();              //锁住EEPROM
}

EEPROM_Write(0x08,brightness_set);//EEPROM保存背光亮度值

Clk_Init();                 //系统时钟初始化
        brightness_set = EEPROM_Read(0x08);//读取液晶显示器背光亮度值
        Brightness_Set();           //执行背光亮度值调节

使用特权

评论回复
28
henangongda123|  楼主 | 2018-7-17 00:00 | 只看该作者
ON9658简易照度传感器硬件电路搭建好了,测了一下,最大电压值是2.6V!

ON9658照度传感器硬件电路-1.jpg (421.98 KB )

ON9658照度传感器硬件电路-1.jpg

ON9658照度传感器硬件电路-2.jpg (451.1 KB )

ON9658照度传感器硬件电路-2.jpg

使用特权

评论回复
29
henangongda123|  楼主 | 2018-7-17 00:08 | 只看该作者
根据ON9658规格书提供的测试电路和特性曲线可以看出,当环境光照度为300LUX(正常办公室亮度)时候,电压对应值为1.2V左右,可以通过软件ADC设置,在300LUX时12864液晶达到100%亮度!

ON9658测试电路参考.png (61.9 KB )

ON9658测试电路参考.png

ON9658特性曲线.png (33.77 KB )

ON9658特性曲线.png

ON9658中文规格书.pdf

190.72 KB

使用特权

评论回复
30
springvirus| | 2018-7-17 08:24 | 只看该作者
不错,到时出个套件吧

使用特权

评论回复
31
henangongda123|  楼主 | 2018-7-17 11:29 | 只看该作者
springvirus 发表于 2018-7-17 08:24
不错,到时出个套件吧

呵呵 出PCB图 大家想搞的可以自己去打样就行了,几十块钱

使用特权

评论回复
32
henangongda123|  楼主 | 2018-7-17 14:55 | 只看该作者
今天早晨调试ADC,一直存在跳变问题,搞了半天,现在才发现问题:原来STM8S207 ADC转换结果默认是左对齐的!我一直以为是右对齐。。。

STM8S 10位ADC数据对齐格式.png (78.02 KB )

STM8S 10位ADC数据对齐格式.png

使用特权

评论回复
33
henangongda123|  楼主 | 2018-7-17 15:02 | 只看该作者
晚上把这个错误修改一下再试试效果如何!

使用特权

评论回复
34
henangongda123|  楼主 | 2018-7-17 20:36 | 只看该作者
ADC跳变问题确实是数据对齐方式错了,默认是左对齐,不是右对齐,呵呵  修改过来就OK了
/********* ADC模数转换操作 **********/
/***********************************************************
函数名:ADC_Init()
功  能:AD转换初始化
参  数:无
返回值:无
/**********************************************************/
void ADC_Init(void)
{
        PE_DDR &= (~0x08);          //PE7(AIN8)端口为输入方式
        PE_CR1 &= (~0x08);          //浮空输入,中断禁止
        ADC_CR1 |= 0x10;            //ADC时钟为主时钟/3
        ADC_CSR |= 0x08;            //选择通道8(AIN8)
        ADC_CR2 |= 0x08;            //ADC转换结果右对齐
        _asm("nop");
        ADC_CR1 |= 0x11;            //使能ADC1并开始转换
        delay_us(20);               //延时等待转换完毕
}

/***********************************************************
函数名: Brightness_Set()
功  能: 液晶背光亮度调节操作
参  数: 无
返回值: 无
***********************************************************/
void Brightness_Set(void)
{
        uchar a,b;
        if(brightness_set==0)       //背光亮度选择"关闭"
        {
                TIM1_CCR2H = 0x00;
          TIM1_CCR2L = 0x00;        //配置OC2REF占空比为0
        }
        else if(brightness_set==1)  //背光亮度选择"20%"
        {
                TIM1_CCR2H = 0x00;
          TIM1_CCR2L = 0xCC;        //配置OC2REF占空比为20%
        }
        else if(brightness_set==2)  //背光亮度选择"40%"
        {
                TIM1_CCR2H = 0x01;
          TIM1_CCR2L = 0x98;        //配置OC2REF占空比为40%
        }
        else if(brightness_set==3)  //背光亮度选择"60%"
        {
                TIM1_CCR2H = 0x02;
          TIM1_CCR2L = 0x64;        //配置OC2REF占空比为60%
        }
        else if(brightness_set==4)  //背光亮度选择"80%"
        {
                TIM1_CCR2H = 0x03;
          TIM1_CCR2L = 0x30;        //配置OC2REF占空比为80%
        }
        else if(brightness_set==5)  //背光亮度选择"最亮"
        {
                TIM1_CCR2H = 0x03;
          TIM1_CCR2L = 0xFF;        //配置OC2REF占空比为100%
        }
        else if(brightness_set==6)  //背光亮度选择"自动亮度"
        {
                ADC_CR1 |= 0x01;          //启动一次AD转换
          while(!(ADC_CSR&0x80));   //等待转换完成
          ADC_CSR &= 0x7F;          //清除转换完毕中断标志
                b = ADC_DRL;              //先读取ADC转换低8位值
    a = ADC_DRH;              //再读取ADC转换高8位值
                a &= 0x03;                //取最高2位
                TIM1_CCR2H = a;           
          TIM1_CCR2L = b;           //配置OC2REF占空比
        }
}

使用特权

评论回复
35
740071911| | 2018-7-18 10:28 | 只看该作者
设计有点问题,按键根本摸不到吧,把他露出来又不好看,所以红外,用遥控器控制

使用特权

评论回复
36
hetangyuesehou| | 2018-7-18 13:48 | 只看该作者
hao

使用特权

评论回复
37
henangongda123|  楼主 | 2018-7-18 14:10 | 只看该作者
740071911 发表于 2018-7-18 10:28
设计有点问题,按键根本摸不到吧,把他露出来又不好看,所以红外,用遥控器控制 ...

哈哈 这个要V3.0版以上才能去做了,后面想规划这个功能,你说的对,按键确实不方便,不过能用,一般设置一次不用再去设置,所以做的比较隐藏。

使用特权

评论回复
38
henangongda123|  楼主 | 2018-7-18 14:10 | 只看该作者

使用特权

评论回复
39
henangongda123|  楼主 | 2018-7-18 14:14 | 只看该作者
这两天在重新画PCB,准备发布V2.0版的电路原图和源代码,至于坛友们说的其他功能,要等有时间了再搞V3.0版了,呵呵
目前还缺的功能不少,比如闹铃、音乐播放、无线或者蓝牙遥控等等。

使用特权

评论回复
40
muxb| | 2018-7-18 14:19 | 只看该作者
支持楼主,加油!

使用特权

评论回复
发新帖 本帖赏金 10.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则