12864多功能数字钟源程序代码调试成功Word格式文档下载.docx
- 文档编号:1126544
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:21
- 大小:19.03KB
12864多功能数字钟源程序代码调试成功Word格式文档下载.docx
《12864多功能数字钟源程序代码调试成功Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《12864多功能数字钟源程序代码调试成功Word格式文档下载.docx(21页珍藏版)》请在冰点文库上搜索。
sbits3=P1^7;
//--
ucharcount,s1_num;
charmiao,shi,fen;
/******************************延时*********************************/
voiddelay(uintk)
{uinti;
for(;
k>
0;
k--)
for(i=0;
i<
124;
i++);
}
voidinit_timer()
{
TMOD=0x01;
TH0=(65536-49950)/256;
//为了消除误差,数值应比50000小
TL0=(65536-49950)%256;
EA=1;
ET0=1;
TR0=1;
}
/////////////////////////////////
//函数名:
写命令到LCD//
//输入:
cmdcode待写入命令//
//输出:
无//
voidwrite_command(ucharcmdcode,ucharcsl,ucharcsr)
{p_csl=csl;
p_csr=csr;
di=0;
rw=0;
Data=cmdcode;
delay(0);
e=1;
e=0;
}
//////////////////////////////////
写数据到LCD//
Dispdata待写入数据//
voidwrite_data(ucharDispdata,ucharcsl,ucharcsr)
di=1;
Data=Dispdata;
//设定起始行
voidset_startline(uchari)
{i=0xc0+i;
write_data(i,1,1);
//定位X(列)方向,Y(页)方向
voidset_xy(ucharrow,ucharpage)
{row=row+0x40;
//定位到第0列//
page=page+0xb8;
//定位到第0页//
write_command(row,1,1);
write_command(page,1,1);
//屏幕开启、关闭
voiddisplay_on_off(ucharon_off)
{on_off=on_off+0x3e;
//on_off:
1为开,0为关
write_command(on_off,1,1);
//复位子函数
voidreset()
{
p_rst=0;
delay(20);
p_rst=1;
//写数据到LCM
voidlcd_write(ucharrow,ucharpage,uchardat)/****列**页***地址******/
{if(row>
=64)
{set_xy(row-64,page);
write_data(dat,0,1);
else
{set_xy(row,page);
write_data(dat,1,0);
//显示汉字子函数
//xx为该行第xx个字,共8字,yy为第几页,共8行。
voiddisp_Hz(ucharrow,ucharpage,ucharn,ucharreverse)
{uchari,dx;
16;
i++)
{dx=Hanzi[2*i+n*32];
//2*i为选择偶数行,因其为列扫描
if(reverse)
dx=255-dx;
//反白显示
lcd_write(row*16+i,page,dx);
dx=Hanzi[(2*i+1)+n*32];
if(reverse)
lcd_write(row*16+i,page+1,dx);
voiddisp_Ez(ucharrow,ucharpage,ucharn,ucharreverse)//显示数字或英语
8;
{dx=English[2*i+n*16];
lcd_write(row*8+i,page,dx);
//
dx=English[(2*i+1)+n*16];
lcd_write(row*8+i,page+1,dx);
//********************LCM初始化***************************/
voidlcd_init(void)
{ucharrow,page;
reset();
display_on_off(0);
for(page=0;
page<
page++)
{for(row=0;
row<
128;
row++)
lcd_write(row,page,0);
display_on_off
(1);
set_startline(0);
/************时间显示程序*****************************/
voidwrite_time(ucharrow,ucharpage,uchardate)
{ucharshi,ge,i,temp;
shi=date/10;
ge=date%10;
{temp=wendu[2*i+shi*16];
lcd_write(row*8+i,page,temp);
temp=wendu[(2*i+1)+shi*16];
lcd_write(row*8+i,page+1,temp);
{temp=wendu[2*i+ge*16];
lcd_write((row+1)*8+i,page,temp);
temp=wendu[(2*i+1)+ge*16];
lcd_write((row+1)*8+i,page+1,temp);
}
voidwrite_time_rs(ucharrow,ucharpage,uchardate)
temp=255-temp;
temp=255-temp;
voidkeyscan()
if(s1==0)
{
delay(50);
//消抖
if(s1==0)//
{
while(s1==1);
//s1==0等待松手
s1_num++;
switch(s1_num)//if(s1_num==1)
case1:
TR0=0;
//时间停止
write_time_rs(12,4,miao);
break;
case2:
write_time_rs(9,4,fen);
write_time(12,4,miao);
//秒恢复反显
case3:
write_time_rs(6,4,shi);
write_time(9,4,fen);
//分恢复反显
break;
case4:
TR0=1;
//开定时器
write_time(6,4,shi);
//时恢复反显
s1_num=0;
default:
break;
}
}
voidtime_adjust()
if(s2==0&
&
s1_num!
=0)
{
delay(50);
if(s2==0)
while(s2==1);
//等待松手
switch(s1_num)
case1:
{miao++;
if(miao==60)miao=0;
write_time_rs(12,4,miao);
//刷新
case2:
fen++;
if(fen==60)fen=0;
write_time_rs(9,4,fen);
//刷新
}
case3:
{shi++;
if(shi==24)shi=0;
//刷新
if(s3==0&
delay(70);
if(s3==0)
{while(s3==1);
switch(s1_num)
{case1:
miao--;
if(miao==-1)
miao=59;
fen--;
if(fen==-1)
fen=59;
shi--;
if(shi==-1)
shi=23;
/**************时间函数模块**********************************/
/******************温度程序模块********************/
voidwrite_temperature(ucharrow,ucharpage,ucharn)
{uchari,temp;
{temp=wendu[2*i+n*16];
temp=wendu[(2*i+1)+n*16];
/*****************************主函数*************************/
/*************示例说明****************************************/
/*disp_Hz(i,6,i+1,0);
***********************/
//第6行第i=0个位置开始显示(共i个),显示从数组第i+1个字开始*/
/*************************************************************/
voidmain()
{uchari;
init_timer();
lcd_init();
Init_DS18B20();
/***************第0页显示"
多功能数字钟"
************************/
for(i=0;
6;
{
disp_Hz(i+1,0,i+6,0);
}
/****************第二页显示“室温:
”**************************/
3;
i++)
disp_Hz(i,2,i,0);
}
/*******************第四页显示"
时间:
00:
00"
***************/
disp_Hz(i,4,i+3,0);
}
disp_Ez(i+6,4,i,0);
}
/*************************第六页*****************************/
7;
disp_Hz(i+1,6,i+12,0);
//
while
(1)
keyscan();
time_adjust();
read_temp();
temp_convert();
/*************************第二页温度显示*********************/
write_temperature(i+6,2,temperature[i]);
//空6格开始写
/******************走时程序模块********************************/
if(count==20)
count=0;
miao++;
//刷新时间
if(miao==60)
{
miao=0;
//刷新时间
fen++;
write_time(9,4,fen);
if(fen==60)
{
fen=0;
write_time(9,4,fen);
shi++;
write_time(6,4,shi);
if(shi==24)
{shi=0;
}
}
}
voidtimer0()interrupt1using0
//为了消除误差,应该比50000小
count++;
/**************************************阴码,逆向,逐列式********************************/
/****************PCtolCD2002************************************************************/
#ifndefziku
#defineziku
unsignedcharcodeHanzi[]={
0x00,0x40,0x10,0x40,0x2C,0x48,0x24,0x49,0xA4,0x49,0x64,0x49,0x25,0x49,0x26,0x7F,
0x24,0x49,0x24,0x49,0xA4,0x49,0x24,0x4B,0x34,0x48,0x2C,0x40,0x04,0x40,0x00,0x00,/*"
室"
0*/
0x10,0x02,0x21,0xFE,0x86,0x01,0x70,0x40,0x00,0x7F,0x7E,0x41,0x4A,0x41,0x4A,0x7F,
0x4A,0x41,0x4A,0x41,0x4A,0x7F,0x7E,0x41,0x00,0x41,0x00,0x7F,0x00,0x40,0x00,0x00,/*"
温"
1*/
0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"
:
"
2*/
0x00,0x00,0xFC,0x07,0x44,0x04,0x44,0x04,0x44,0x04,0xFC,0x07,0x10,0x00,0x90,0x00,
0x10,0x03,0x10,0x40,0x10,0x80,0xFF,0x7F,0x10,0x00,0x10,0x00,0x10,0x00,0x00,0x00,/*"
时"
0x00,0x00,0xF8,0xFF,0x01,0x00,0x06,0x00,0x00,0x00,0xF0,0x07,0x92,0x04,0x92,0x04,
0x92,0x04,0x92,0x04,0xF2,0x07,0x02,0x40,0x02,0x80,0xFE,0x7F,0x00,0x00,0x00,0x00,/*"
间"
0x00,0x00,0x00,0x81,0x00,0x89,0x20,0x89,0x90,0x44,0x88,0x44,0x54,0x42,0x53,0x25,
0xA2,0x29,0x22,0x11,0x12,0x11,0x0A,0x09,0x06,0x05,0x00,0x03,0x00,0x01,0x00,0x00,/*"
多"
0x00,0x04,0x04,0x0C,0x04,0x04,0x04,0x04,0xFC,0x03,0x04,0x42,0x14,0x22,0x14,0x11,
0x10,0x0C,0x90,0x23,0x7F,0x20,0x10,0x60,0x10,0x20,0xF0,0x1F,0x00,0x00,0x00,0x00,/*"
功"
0x10,0x00,0xB8,0xFF,0x97,0x0A,0x92,0x0A,0x90,0x4A,0x94,0x8A,0xB8,0x7F,0x10,0x00,
0x00,0x00,0x7F,0x3F,0x48,0x44,0x48,0x44,0x44,0x42,0x74,0x72,0x20,0x20,0x00,0x00,/*"
能"
0x10,0x42,0x92,0x42,0x54,0x2A,0x38,0x2E,0xFF,0x13,0x38,0x1A,0x54,0x26,0x52,0x02,
0x80,0x40,0xF0,0x20,0x1F,0x13,0x12,0x0C,0x10,0x33,0xF0,0x60,0x10,0x20,0x00,0x00,/*"
数"
3*/
0x00,0x00,0x10,0x02,0x0C,0x02,0x24,0x02,0x24,0x02,0x24,0x42,0x25,0x82,0x26,0x7F,
0xA4,0x02,0x64,0x02,0x24,0x02,0x0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 12864 多功能 数字 源程序 代码 调试 成功