实验 mega16 12864串行驱动文档格式.docx
- 文档编号:22817724
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:22
- 大小:18.14KB
实验 mega16 12864串行驱动文档格式.docx
《实验 mega16 12864串行驱动文档格式.docx》由会员分享,可在线阅读,更多相关《实验 mega16 12864串行驱动文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
#definex10x80
#definex20x88
#definey0x80
#definecomm0
#definedat1
#defineCS_ONsetb(PORTD,0)
#defineCS_OFFclr(PORTD,0)
#defineSTD_ONsetb(PORTD,1)
#defineSTD_OFFclr(PORTD,1)
#defineSCLK_ONsetb(PORTD,2)
#defineSCLK_OFFclr(PORTD,2)
//H=并口;
L=串口;
#definePSB_ONsetb(PORTD,3)
#definePSB_OFFclr(PORTD,3)
//ResetSignal低电平有效
#defineRST_ONsetb(PORTD,4)
#defineRST_OFFclr(PORTD,4)
#defineTURE1
externcharbuffer10[7];
voidwr_lcd(uchardat_comm,ucharcontent);
voiddelay(uintus);
#pragmadata:
data
uchartable_1[]={"
锄禾日当午"
"
汗滴禾下土"
"
谁知盘中餐"
粒粒皆辛苦"
};
uchartable_0[]={"
鹅鹅鹅"
曲项向天歌"
"
白毛浮绿水"
红掌拨青波"
ucharconsttable_2[12]={"
0123456789:
};
ucharYear_[]={"
年"
ucharWeek_[]={"
星"
ucharWeek1_[]={"
期"
ucharMonth_[]={"
月"
ucharDay_[]={"
日"
ucharHour_[]={"
时"
ucharMinute_[]={"
分"
ucharSecond_[]={"
秒"
ucharRegulate_[]={"
调"
///调节
ucharding_[]={"
定"
ucharshi_[]={"
ucharkai_[]={"
开"
ucharguan_[]={"
关"
ucharover_[]={"
完"
ucharone_[]={"
一"
uchartwo_[]={"
二"
ucharthree_[]={"
三"
ucharfore_[]={"
四"
ucharfive_[]={"
五"
ucharsix_[]={"
六"
ucharseven_[]={"
ucharwen_[]={"
温"
uchardu_[]={"
度"
uchardian_[]={"
."
ucharshes_[]={"
℃"
ucharmaohao_[]={"
:
"
/*-----------------------------------*/
voiddelay(uintus)//delaytime
{
while(us--);
}
voiddelay1(uintms)
uinti,j;
for(i=0;
i<
ms;
i++)
for(j=0;
j<
15;
j++)
delay
(1);
/*------------------初始化-----------------*/
voidinit_lcd(void)
RST_ON;
//rst=1;
PSB_OFF;
//psb=0;
wr_lcd(comm,0x30);
/*30---基本指令动作*/
wr_lcd(comm,0x01);
/*清屏,地址指针指向00H*/
delay(100);
wr_lcd(comm,0x06);
/*光标的移动方向*/
wr_lcd(comm,0x0c);
/*开显示,关游标*/
/*---------------显示汉字或字符----------------*/
voidchn_disp(uchar*chn)
uchari,j;
wr_lcd(comm,0x80);
for(j=0;
4;
{
for(i=0;
16;
wr_lcd(dat,chn[j*16+i]);
}
/*-----------上半屏显示汉字或字符------------*/
/*
voidchn_disp1(uchar*chn)
j=0;
wr_lcd(comm,0x90);
j=1;
//----------------显示图形-----------------
voidimg_disp(uchar*img)
32;
8;
wr_lcd(comm,0x34);
wr_lcd(comm,y+j);
wr_lcd(comm,x1+i);
wr_lcd(dat,img[j*16+i*2]);
wr_lcd(dat,img[j*16+i*2+1]);
for(j=32;
64;
wr_lcd(comm,y+j-32);
wr_lcd(comm,x2+i);
wr_lcd(comm,0x36);
//-------------下半屏显示图形--------------
voidimg_disp1(uchar*img)
*/
//--------------显示点阵----------------
voidlat_disp(uchardata1,uchardata2)
uchari,j,k,x;
x=x1;
for(k=0;
k<
2;
k++)
wr_lcd(comm,y+j*2);
wr_lcd(comm,x+i);
wr_lcd(dat,data1);
wr_lcd(comm,y+j*2+1);
wr_lcd(dat,data2);
x=x2;
/*-----------------------------------------------*/
//当data1=0xff,data2=0xff时,在x0,y0处反白显示16xl*yl.
voidcon_disp(uchardata1,uchardata2,ucharx0,uchary0,ucharxl,ucharyl)
yl;
xl;
wr_lcd(comm,y0+j);
wr_lcd(comm,x0+i);
//--任意位置显示汉字;
或显示字符(只能在双数列)
//说明:
显示汉字或字符
//入口参数:
*chn——带显示字符数组
//HANG1——显示的位置
//MOUNT1——显示字符的个数
voidchn_disp_RY(char*chn,ucharHANG1,ucharMOUNT1)
wr_lcd(comm,HANG1);
MOUNT1;
//--任意位置显示2位数字(16进制转2位BCD)
显示2位的数据
FH——如果FH=0,则说明显示的位置是16的整数倍
//如果FH不等于0,则说明显示的位置不是16的整数倍,需要在前加入半位的符号,FH代表将要加入符号的编码
//WZ——待显示数据位置
//SZ——待显示的数据
voidsz2_disp(ucharFH,ucharWZ,ucharSZ)
ucharBCD0,BCD1;
//分解后BCD码的高位、低位
//分解成2个BCD码
BCD0=SZ/10+0x30;
BCD1=SZ%10+0x30;
//写入显示数据地址
wr_lcd(comm,WZ);
//如果FH不等于0,先显示前导符号
if(FH!
=0)
wr_lcd(dat,FH);
//显示数据
wr_lcd(dat,BCD0);
wr_lcd(dat,BCD1);
//--任意位置显示2位数字(压缩BCD转2位BCD)
voidbcd2_disp(ucharFH,ucharWZ,ucharSZ)
BCD0=SZ;
BCD1=SZ;
BCD0&
=0xf0;
BCD0>
>
=4;
BCD0=BCD0+0x30;
BCD1&
=0x0f;
BCD1=BCD1+0x30;
//--任意位置显示2位数字、符号或1个汉字
voidfh2_disp(ucharWZ,ucharSZ0,ucharSZ1)
//写入显示数据地址
wr_lcd(comm,0x30);
wr_lcd(comm,WZ);
//显示数据
wr_lcd(dat,SZ0);
wr_lcd(dat,SZ1);
/*--------------清DDRAM------------------*/
voidclrram(void)
delay(180);
/*---------------------------------------*/
voidwr_lcd(uchardat_comm,ucharcontent)
uchara,i,j;
delay(50);
a=content;
CS_ON;
//cs=1;
SCLK_OFF;
//sclk=0;
STD_ON;
//std=1;
5;
SCLK_ON;
//sclk=1;
STD_OFF;
//std=0;
if(dat_comm)
//std=1;
//data
else
//std=0;
//command
if((a&
0x80)==0x80)
a=a<
<
1;
//std=CY;
voidlcdxianshi(void)
{uchari;
while
(1)
lat_disp(0x00,0x00);
chn_disp(table_1);
////
delay1(10000);
delay1(80000);
//clrram();
//lat_disp(0x00,0x00);
//chn_disp(table_0);
/////*-----------上半屏显示汉字或字符------------*/
//delay1(10000);
//delay1(80000);
//lat_disp(0xcc,0xcc);
//delay1(80000);
//lat_disp(0x00,0x00);
//clrram();
//lat_disp(0xff,0x00);
voidLCD_DS1302()/*秒分时日月星期年*/
wr_lcd(comm,0x81);
/////第一行显示
wr_lcd(dat,table_2[buffer10[6]/10]);
wr_lcd(dat,table_2[buffer10[6]%10]);
chn_disp_RY(Year_,0x82,2);
//单独显示汉字年
wr_lcd(dat,table_2[buffer10[4]/10]);
wr_lcd(dat,table_2[buffer10[4]%10]);
chn_disp_RY(Month_,0x84,2);
//单独显示汉字月
wr_lcd(dat,table_2[buffer10[3]/10]);
wr_lcd(dat,table_2[buffer10[3]%10]);
chn_disp_RY(Day_,0x86,2);
//单独显示汉字日
//chn_disp_RY(Week_,0x34,4);
//单独显示汉字
//wr_lcd(dat,table_2[Week]);
//wr_lcd(dat,table_2[10]);
wr_lcd(comm,0x91);
///第二行显示
wr_lcd(dat,table_2[buffer10[2]/10]);
wr_lcd(dat,table_2[buffer10[2]%10]);
chn_disp_RY(Hour_,0x92,2);
//单独显示汉字时
wr_lcd(dat,table_2[buffer10[1]/10]);
wr_lcd(dat,table_2[buffer10[1]%10]);
chn_disp_RY(Minute_,0x94,2);
//单独显示汉字分
wr_lcd(dat,table_2[buffer10[0]/10]);
wr_lcd(dat,table_2[buffer10[0]%10]);
chn_disp_RY(Second_,0x96,2);
//单独显示汉字秒
wr_lcd(comm,0x9d);
///第三行显示
chn_disp_RY(Week_,0x9d,2);
//星期
chn_disp_RY(Week1_,0x9e,2);
switch(buffer10[5]%10)
{case1:
{chn_disp_RY(one_,0x9f,2);
break;
}///一
case2:
{chn_disp_RY(two_,0x9f,2);
}///二
case3:
{chn_disp_RY(three_,0x9f,2);
}//三
case4:
{chn_disp_RY(fore_,0x9f,2);
}//四
case5:
{chn_disp_RY(five_,0x9f,2);
}///五
case6:
{chn_disp_RY(six_,0x9f,2);
}//六
case7:
{chn_disp_RY(seven_,0x9f,2);
}//日
default:
break;
//wr_lcd(dat,table_2[buffer10[5]/10]);
//wr_lcd(dat,table_2[buffer10[5]%10]);
//con_disp(0xff,0xff,0x8c,0x80,2,16);
Week_[]
//wr_lcd(comm,0xA0);
voidLCD_DS18B20(uintp)
{uintq,r;
q=(p>
4)&
0x00ff;
r=(p&
=0x000f)*625;
wr_lcd(comm,0x98);
/////第四行显示
chn_disp_RY(wen_,0x98,2);
chn_disp_RY(du_,0x99,2);
chn_disp_RY(maohao_,0x9a,1);
//wr_lcd(dat,table_2[v/1000]);
//wr_lcd(dat,table_2[v/100]);
wr_lcd(dat,table_2[q/10%10]);
wr_lcd(dat,table_2[q%10]);
//chn_disp_RY(dian_,0x9e,2);
chn_disp_RY(shes_,0x9c,2);
//wr_lcd(dat,table_2[(v/10)%10]);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 mega16 12864串行驱动 12864 串行 驱动