/*****************************************
模块名称:手表段码屏驱动程序
作者:SocialSisterYi
制作时间:2019.3
说明:数字/图标->段码的接口程序
备注:
*****************************************/
#include "uc1671.h"
#include "LCD.h"
unsigned char DRAM[20];//显存
//数字/字符码表 0 1 2 3 4 5 6 7 8 9 A B C D E F 空白
unsigned char code num_code_tab1[]={0x5f,0x50,0x3d,0x79,0x72,0x6b,0x6f,0x51,0x7f,0x7b,0x77,0x6e,0x0f,0x7c,0x2f,0x27,0x00};//用于第一行
unsigned char code num_code_tab2[]={0x5f,0x06,0x3d,0x2f,0x66,0x6b,0x7b,0x0e,0x7f,0x6f,0x7e,0x73,0x59,0x37,0x79,0x78,0x00};//用于第二、三行
//图标码表
struct
{
unsigned char seg;
unsigned char dig;
}code icon_tab[]={
// 图标所在的字节 图标在字节的位置
2 , 0x01,//月
0 , 0x10,//日
0 , 0x80,//笑脸
7 , 0x80,//冒号
11, 0x10,//小菊花
16, 0x01 //步
};
/*********************************
函数名称:Lcd_num
功能:LCD屏幕显示数码
输入:数码序号,显示数字
输出:无
备注:15个数码的编码有些不相同,所以要分情况讨论
*********************************/
void Lcd_num(unsigned char seg,unsigned char num)
{
if(seg>14)
return;
switch(seg)
{
//第一行
case 0:
case 1:
DRAM[4-seg]&=0x80;
DRAM[4-seg]|=num_code_tab1[num];
break;
case 2:
case 3:
DRAM[4-seg]&=0x0f;
DRAM[3-seg]&=0xf8;
DRAM[4-seg]|=num_code_tab1[num]<<4;
DRAM[3-seg]|=num_code_tab1[num]>>4;
break;
//第二行
case 4:
case 5:
case 6:
case 7:
//第三行
case 8:
case 9:
DRAM[seg+1]&=0x80;
DRAM[seg+1]|=num_code_tab2[num];
break;
case 10:
case 11:
case 12:
case 13:
case 14:
DRAM[seg+1]&=0xf8;
DRAM[seg+2]&=0x0f;
DRAM[seg+1]|=num_code_tab2[num]>>4;
DRAM[seg+2]|=num_code_tab2[num]<<4;
break;
}
Lcd_write_DDRAM(0,DRAM,19);//同步显存
}
/*********************************
函数名称:Lcd_icon
功能:LCD屏幕显示图标
输入:图标序号,图标开关
输出:无
备注:
*********************************/
void Lcd_icon(unsigned char icon_num,bit on)
{
if(icon_num>5)
return;
if(on)
DRAM[icon_tab[icon_num].seg]|=icon_tab[icon_num].dig;
else
DRAM[icon_tab[icon_num].seg]&=~icon_tab[icon_num].dig;
Lcd_write_DDRAM(0,DRAM,19);//同步显存
}
网友 @社会易姐 C51 源码下载: watch_LCD_C51.7z
离线
真的6,有点亮后的图没,晕哥
离线
买了10个在吃灰:D
在线
买了10个在吃灰:D
活捉 ^_^
离线
5年前,360儿童卫士2的屏幕
离线
离线
5年前,360儿童卫士2的屏幕
果然是, 这都能找到, 牛叉!
离线
pcf8576主控 iic
离线
pcf8576主控 iic
看来大侠是行内人
离线