專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

128*64代碼進(jìn)化版顯示時(shí),分,秒

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年11月01日   【字體:

顯示結(jié)果:

芯片晶振11.0592

 

#include <reg51.h>

#define uchar unsigned char
#define uint unsigned int

#define dataport P0   //數(shù)據(jù)口
sbit CS1=P2^4;    //左顯引腳
sbit CS2=P2^3;    //右顯引腳
sbit RST=P2^2;    //復(fù)位引腳
sbit rs=P2^7;    //數(shù)據(jù)或指令寄存器引腳
sbit rw=P2^6;    //讀或?qū)懖僮饕_
sbit en=P2^5;    //讀寫時(shí)能引腳
void delay(unsigned long v); //延時(shí)
void wcode(uchar c,uchar csl,uchar csr);  //寫指令
void wdata(uchar c,uchar csl,uchar csr);  //寫數(shù)據(jù)
void set_startline(uchar i);    //設(shè)置起始行
void set_xy(uchar x,uchar y);    //設(shè)置X,Y方向
void dison_off(uchar k);     //顯示器開或關(guān)
void reset();       //復(fù)位
void lcd_init();       //顯示器初始化
void lw(uchar x,uchar y,uchar dd);   //將數(shù)據(jù)寫入左右半屏
void display_hz(uchar xx,uchar yy,uchar n,uchar fb); //顯示漢字函數(shù)
uchar code hz[]; //漢字字摸
uchar code asc[];//數(shù)字字摸
uchar hour1,hour0;
uchar minute1,minute0;
uchar sec1,sec0;
uchar hour=0,minute=0,sec=0;
uchar osc=0;

void Timer0(void) //設(shè)定定時(shí)器0 50ms
{
    TMOD = 0x01;
    TH0 = 0x3C;
    TL0 = 0x0B0;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}
void time0init()interrupt 1   //定時(shí)器中斷執(zhí)行,時(shí),分,秒計(jì)算
{
 TR0=0;
 osc++;
 if(osc==20){sec++;osc=0;}
 if(sec==60){minute++; sec=0;}
 if(minute==60){hour++;minute=0;}
 if(hour==24){hour=0;}
 hour1=hour/10;
 hour0=hour%10;
 minute1=minute/10;
 minute0=minute%10;
 sec1=sec/10;
 sec0=sec%10;
 TH0=0x3c;
 TL0=0x0B0;
 EA=1;
 ET0=1;
 TF0=0;
 TR0=1;
}

 

#include "12864hh.h"

void main(void)
{
 lcd_init();
 delay(1000);
 Timer0();
 while(1)
 {

display_hz(2,0,0,0);
display_hz(4,0,1,0);
display_hz(6,0,2,0);
display_hz(8,0,3,0);
display_hz(10,0,4,0);
display_hz(0,4,5,0);
display_hz(6,4,6,0);
display_hz(12,4,7,0);
display_asc(2,4,hour1,0);
display_asc(3,4,hour0,0);
display_asc(8,4,minute1,0);
display_asc(9,4,minute0,0);
display_asc(14,4,sec1,0);
display_asc(15,4,sec0,0);

}
delay(60000);
}
//-------------------------中文字字模------------------------------
uchar code hz[]={
0x20,0x04,0x20,0x04,0x22,0x42,0x22,0x82,0xFE,0x7F,0x21,0x01,0x21,0x01,0x20,0x10,
0x20,0x10,0xFF,0x08,0x20,0x07,0x22,0x1A,0xAC,0x21,0x20,0x40,0x20,0xF0,0x00,0x00,/*"我",0*/

0x00,0x40,0x40,0x20,0xB2,0xA0,0x96,0x90,0x9A,0x4C,0x92,0x47,0xF6,0x2A,0x9A,0x2A,
0x93,0x12,0x91,0x1A,0x99,0x26,0x97,0x22,0x91,0x40,0x90,0xC0,0x30,0x40,0x00,0x00,/*"愛",1*/

0x00,0x08,0x00,0x08,0xF8,0x0B,0x28,0x09,0x29,0x09,0x2E,0x09,0x2A,0x09,0xF8,0xFF,
0x28,0x09,0x2C,0x09,0x2B,0x09,0x2A,0x09,0xF8,0x0B,0x00,0x08,0x00,0x08,0x00,0x00,/*"單",2*/

0x00,0x80,0x00,0x40,0x00,0x30,0xFE,0x0F,0x10,0x01,0x10,0x01,0x10,0x01,0x10,0x01,
0x10,0x01,0x1F,0x01,0x10,0x01,0x10,0xFF,0x10,0x00,0x18,0x00,0x10,0x00,0x00,0x00,/*"片",3*/

0x08,0x04,0x08,0x03,0xC8,0x00,0xFF,0xFF,0x48,0x00,0x88,0x41,0x08,0x30,0x00,0x0C,
0xFE,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xFE,0x3F,0x00,0x40,0x00,0x78,0x00,0x00, /*機(jī)",4*/


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,/*"時(shí)",0*/

0x80,0x00,0x40,0x80,0x20,0x40,0x98,0x20,0x87,0x10,0x82,0x0F,0x80,0x00,0x80,0x00,
0x83,0x20,0x84,0x40,0x98,0x3F,0x30,0x00,0x60,0x00,0xC0,0x00,0x40,0x00,0x00,0x00,/*"分",1*/

0x12,0x04,0x12,0x03,0xD2,0x00,0xFE,0xFF,0x91,0x00,0x11,0x83,0xC0,0x80,0x38,0x40,
0x10,0x40,0x00,0x20,0xFF,0x23,0x00,0x10,0x08,0x08,0x10,0x04,0x60,0x03,0x00,0x00};/*"秒",2*/
//------------------------------數(shù)字字摸----------------------------------
uchar code asc[]={
0x00,0x00,0xE0,0x0F,0x10,0x10,0x08,0x20,0x08,0x20,0x10,0x10,0xE0,0x0F,0x00,0x00,/*"0",0*/

0x00,0x00,0x10,0x20,0x10,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,/*"1",1*/

0x00,0x00,0x70,0x30,0x08,0x28,0x08,0x24,0x08,0x22,0x88,0x21,0x70,0x30,0x00,0x00,/*"2",2*/

0x00,0x00,0x30,0x18,0x08,0x20,0x88,0x20,0x88,0x20,0x48,0x11,0x30,0x0E,0x00,0x00,/*"3",3*/

0x00,0x00,0x00,0x07,0xC0,0x04,0x20,0x24,0x10,0x24,0xF8,0x3F,0x00,0x24,0x00,0x00,/*"4",4*/

0x00,0x00,0xF8,0x19,0x08,0x21,0x88,0x20,0x88,0x20,0x08,0x11,0x08,0x0E,0x00,0x00,/*"5",5*/

0x00,0x00,0xE0,0x0F,0x10,0x11,0x88,0x20,0x88,0x20,0x18,0x11,0x00,0x0E,0x00,0x00,/*"6",6*/

0x00,0x00,0x38,0x00,0x08,0x00,0x08,0x3F,0xC8,0x00,0x38,0x00,0x08,0x00,0x00,0x00,/*"7",7*/

0x00,0x00,0x70,0x1C,0x88,0x22,0x08,0x21,0x08,0x21,0x88,0x22,0x70,0x1C,0x00,0x00,/*"8",8*/

0x00,0x00,0xE0,0x00,0x10,0x31,0x08,0x22,0x08,0x22,0x10,0x11,0xE0,0x0F,0x00,0x00,/*"9",9*/

0x00,0x00,0xE0,0x0F,0x10,0x10,0x08,0x20,0x08,0x20,0x10,0x10,0xE0,0x0F,0x00,0x00};/*"0",10*/

 

//------------------------------庫函數(shù)---------------------------

void delay(unsigned long  v) //延時(shí)子函數(shù)
{
while(v--);
}

void lcd_busy()  //繁忙標(biāo)志
{
rs=0;
rw=1;
dataport=0xff;
while(1)
{
 en=1;
 if(dataport<0x80)break;
 en=0;
}
en=0;
}

void wcode(uchar c,uchar csl,uchar csr)  //寫指令
{
CS1=csl;
CS2=csr;
lcd_busy();
rs=0;
rw=0;
dataport=c;
en=1;
en=0;
}

void wdata(uchar c,uchar csl,uchar csr)   //寫數(shù)據(jù)
{
CS1=csl;
CS2=csr;
lcd_busy();
rs=1;
rw=0;
dataport=c;
en=1;
en=0;
}

void lw(uchar x,uchar y,uchar dd)   //寫一個(gè)字節(jié)進(jìn)芯片
{
 if(x>=64)
 {
  set_xy(x-64,y);
  wdata(dd,0,1);
 }
 else
 {
 set_xy(x,y);
 wdata(dd,1,0);
 }
}
void set_startline(uchar i)    //設(shè)定起始行
{       
i=0xc0+i;      
wcode(i,1,1);     

void set_xy(uchar x,uchar y)    //定位x,y位置
{    
x=x+0x40;                     
y=y+0xb8;                   
wcode(x,1,1);                   
wcode(y,1,1);                   

void dison_off(uchar k)   //開,關(guān)顯示
{
k=k+0x3e;
wcode(k,1,1);
}

void reset()
{
 RST=0;
 delay(40);
 RST=1;
 delay(40);
}

void lcd_init(void)   //芯片初始化
{uchar x,y;             
reset();    
set_startline(0);   
dison_off(0);     
for(y=0;y<8;y++)    
 {
 for(x=0;x<128;x++)lw(x,y,0);
 }
dison_off(1);     

void display_hz(uchar xx, uchar yy, uchar n, uchar fb)     //顯示漢字逐列式
{     
uchar i,dx;                       
for(i=0;i<16;i++)    
{dx=hz[2*i+n*32];    
if(fb)dx=255-dx;    
lw(xx*8+i,yy,dx);    
dx=hz[(2*i+1)+n*32];    
if(fb)dx=255-dx;    
lw(xx*8+i,yy+1,dx);   
}       
}

void display_asc(uchar xx,uchar yy,uchar n,uchar fb)   //顯示數(shù)字逐列式
{
uchar i,dx;
for(i=0;i<8;i++)
{
dx=asc[2*i+n*16];
if(fb)dx=255-dx;
lw(xx*8+i,yy,dx);
dx=asc[2*i+1+n*16];
if(fb)dx=255-dx;
lw(xx*8+i,yy+1,dx);
}
}

 


 

關(guān)閉窗口

相關(guān)文章