1、LCD12862+DS12C887万年历/*项目:DS12C887时钟芯片可调+温度+闹钟+方波万年历*创建人:小彬*时间:2014年7月25日22:52:25*完成:2014年8月11日17:08:09*说明:K4:菜单选择 K3:光标选择*初级版本* K2:上调 K1:下调*背光随光线可调 */#include#include #include #define uchar unsigned char#define uint unsigned int #define LCD_ON 0x0d#define LCD_OFF 0x0c#define DSAPOWER_ON 0x20 #define
2、 DSASWQ_ON 0x30 /开启方波输出#define DS_year 0x09#define DS_month 0x08 #define DS_day 0x07#define DS_zhou 0x06#define DS_hour 0x04#define DS_minute 0x02#define DS_second 0x00#define DSCLK_hour 0x05#define DSCLK_minute 0x03#define DSCLK_second 0x01uchar code Photo1 =/图片数字0 高电平有效 PCtoLCD2002取模:顺向,逐行式 32*160
3、x00,0x00,0x3F,0xFC,0x5F,0xFA,0x6F,0xF6,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x60,0x06,0x40,0x02,0x00,0x00,0x40,0x02,0x60,0x06,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x6F,0xF6,0x5F,0xFA,0x3F,0xFC,0
4、x00,0x00,0x00,0x00,/ 图片数字10x00,0x00,0x00,0x20,0x00,0x60,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0x60,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x60,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00
5、,0x60,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,/ 图片数字20x00,0x00,0x3F,0xFC,0x1F,0xFA,0x0F,0xF6,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x06,0x1F,0xFA,0x3F,0xFC,0x5F,0xF8,0x60,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x
6、00,0x70,0x00,0x70,0x00,0x6F,0xF8,0x5F,0xFC,0x3F,0xFE,0x00,0x00,0x00,0x00, / 图片数字30x00,0x00,0x3F,0xFC,0x1F,0xFA,0x0F,0xF6,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x06,0x1F,0xFA,0x3F,0xFC,0x1F,0xFA,0x00,0x06,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E
7、,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x0F,0xF6,0x1F,0xFA,0x3F,0xFC,0x00,0x00,0x00,0x00, / 图片数字40x00,0x00,0x40,0x02,0x60,0x06,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x60,0x06,0x5F,0xFA,0x3F,0xFC,0x1F,0xFA,0x00,0x06,0x00,0x0E,0
8、x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x06,0x00,0x02,0x00,0x00,0x00,0x00, / 图片数字50x00,0x00,0x3F,0xFC,0x5F,0xF8,0x6F,0xF0,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x60,0x00,0x5F,0xF8,0x3F,0xFC,0x1
9、F,0xFA,0x00,0x06,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x0F,0xF6,0x1F,0xFA,0x3F,0xFC,0x00,0x00,0x00,0x00, / 图片数字60x00,0x00,0x3F,0xFC,0x5F,0xF8,0x6F,0xF0,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x60,
10、0x00,0x5F,0xF8,0x3F,0xFC,0x5F,0xFA,0x60,0x06,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x6F,0xF6,0x5F,0xFA,0x3F,0xFC,0x00,0x00,0x00,0x00, / 图片数字70x00,0x00,0x3F,0xFC,0x1F,0xFA,0x0F,0xF6,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x
11、0E,0x00,0x0E,0x00,0x0E,0x00,0x06,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x06,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,/ 图片数字80x00,0x00,0x3F,0xFC,0x5F,0xFA,0x6F,0xF6,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,
12、0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x60,0x06,0x5F,0xFA,0x3F,0xFC,0x5F,0xFA,0x60,0x06,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x6F,0xF6,0x5F,0xFA,0x3F,0xFC,0x00,0x00,0x00,0x00, / 图片数字90x00,0x00,0x3F,0xFC,0x5F,0xFA,0x6F,0xF6,0x70,0x0E,0x
13、70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x60,0x06,0x5F,0xFA,0x3F,0xFC,0x1F,0xFA,0x00,0x06,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x1F,0xF6,0x3F,0xFA,0x7F,0xFC,0x00,0x00,0x00,0x00;uchar nian,yue,ri,shi,fen,miao,z
14、hou,clkshi,clkfen,clkmiao,flg1=0,flg2=0,flg3=0,clk=1;int up=0;void ds_write(uchar add,uchar date);uchar ds_read(uchar add);void disply_clock(void);void led1(void);void search_time(void);void DS18b20_reset(void);void write_byte(uint val);uint read_byte(void);bit match_rom(uchar *rom);void start_temp_
15、sensor(void);void get1_ds18b20(void);/*/* */* 延时函数 */* */*/void delay_ds18b20(uint n) while (n-);void delay(int ms) while(ms-) uchar i; for(i=0;i150;i+) _nop_(); _nop_(); _nop_(); _nop_(); void beep() BEEP= 1; delay(30); BEEP=0; /*/* */*检查LCD忙状态 */*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */* */*/bit
16、 lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; NOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result); /*/* */*写指令数据到LCD */*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */* */*/void lcd_wcmd(uchar cmd) while(lcd_busy(); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; NOP(); LCD_EN = 1
17、; NOP(); LCD_EN = 0; void lcd_wdat(uchar dat) while(lcd_busy(); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; NOP(); LCD_EN = 1; NOP(); LCD_EN = 0; void lcd_init() LCD_PSB = 1; /并口方式 / LCD_RST = 0; /液晶复位 / delay(3); / LCD_RST = 1; / delay(3); lcd_wcmd(0x34); /扩充指令操作 delay(5); lcd_wcmd(0x30); /基本指令操作
18、 delay(5); lcd_wcmd(0x0C); /显示开,关光标 delay(5); lcd_wcmd(0x01); /清除LCD的显示内容 delay(5);void lcd_pos(uchar X,uchar Y) uchar pos; if (X=1) X=0x80; else if (X=2) X=0x90; else if (X=3) X=0x88; else if (X=4) X=0x98; pos = X+Y ; lcd_wcmd(pos); /显示地址void lcd_posdat(uchar posx,uchar posy,uchar sfm) uchar shi,ge
19、; shi=sfm/10; ge=sfm%10; lcd_pos(posx, posy); lcd_wdat(0x30+shi); lcd_wdat(0x30+ge);/* 调入图像函数*/void photodisplay(uchar x,y,uchar *bmp) uchar i,j; lcd_wcmd(0x34); /写数据时,关闭图形显示 for(i=0;i32;i+) lcd_wcmd(0x80+y+i); /先写入水平坐标值 lcd_wcmd(0x80+x); /写入垂直坐标值 for(j=0;j16;j+) /再写入两个8位元的数据 lcd_wdat(*bmp+); delay(
20、1); for(i=0;i32;i+) lcd_wcmd(0x80+i); lcd_wcmd(0x88); for(j=0;j12) lcd_pos(2,0); lcd_wdat(0x50); lcd_wdat(0x4d); /显示PM else lcd_pos(2,0); lcd_wdat(0x41); lcd_wdat(0x4d); /显示AM get1_ds18b20(); void display_mode() uchar i; i=0; lcd_pos(1,0); while(DIS9i!=0) lcd_wdat(DIS9i); i+; i=0; lcd_pos(2,0); while(DIS10i!=0) lcd_wdat(DIS10i); i+; i=0; lcd_pos(3,0); while(DIS11i!=0) lcd_wdat(DIS11i); i+; i=0; lcd_pos(4,0); while(DIS12i!=0) lcd_wdat(DIS12i); i+; i=0;void display_settime() uchar i; i=0; lcd_pos(1,0); while(DIS13i!=0) lcd_wdat(DIS13i); i+; i=0; lcd_pos(2,0); while(DIS
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1