59秒自动计数器
//59秒自动计数器
#include #define uchar unsigned char
uchar j,k,i,a,A1,A2,second;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//数字编码
void delay(uchar i) //延时函数 {
for(j=i;j>0;j--)
for(k=125;k>0;k--); }
void display(uchar sh_c,uchar g_c) //显示函数 {
dula=0;
P0=table[sh_c]; //显示十位
dula=1;
dula=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(5); //亮5ms
P0=table[g_c]; //显示个位
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay(5); //亮5ms
}
void main()
{
while(1)
{
second++; //秒加一
if(second==60) //判断是否到60
second=0; //如果到了则清零
A1=second/10; //没到则分离出十位和个位
A2=second%10;
for(a=50;a>0;a--) //显示部分。至于时间大概是多少
{ //请用户用软件仿真看时间约等于1秒 display(A1,A2);};//便可,如果需要精确定时请用定时器
}
}
1602液晶屏
串口通讯
12864点阵液晶显示
[源代码]
//TX-1B实验板12864液晶测试程序
//测试驱动液晶的程序. 在指定的位置显示汉字
#include
#define uchar unsigned char #define uint unsigned int unsigned char code lcd_lattice16_16[]; //几个函数声明 unsigned char code lcd_letter_8_16[];
void display_8_16(uchar,uchar,uchar);
void displaycoslight(uchar); unsigned char code lcd_lattice_coslight[15][320];
sbit CS1=P3^0; //液晶左半屏选择
sbit CS2=P3^1; //液晶右半屏选择
sbit RS=P3^5; //写数据或命令选择
sbit E=P3^4; //液晶使能
bit dot_not; //反白标志
void wrst_le(uchar date) //写左部分状态字 {
CS1=1;
CS2=0;
RS=0;
E=1;
P0=date;
E=0;
}
void wrst_ri(uchar date) //写右部分状态字
{
CS1=0;
CS2=1;
RS=0;
E=1;
P0=date;
E=0;
}
void wrda_le(uchar date) //写左部分数据
{
CS1=1;
CS2=0;
RS=1;
E=1;
P0=date;
E=0;
}
void wrda_ri(uchar date) //写右部分数据
{
CS1=0;
CS2=1;
RS=1;
E=1;
P0=date;
E=0;
}
void lcdinit() //初始化 {
wrst_le(0x3f);
wrst_ri(0x3f); /*display on*/
}
void displaycls(uchar background) //1清白屏,0清成黑屏
{
uchar i;
uchar j;
lcdinit();
wrst_le(0xc0);
wrst_ri(0xc0) ; //设置显示起始行
for(i=0;i<8;i++)
{
wrst_le(0xb8|i); //设置页地址
wrst_le(0x40|0); //设置列地址
for(j=0;j<64;j++)
{
if (background==0)
{
wrda_le(0xff);//清成白屏
}
else
{
wrda_le(0);//清成黑屏
}
}
}
for(i=0;i<8;i++)
{
wrst_ri(0xb8|i);//设置页地址
wrst_ri(0x40|0);//设置列地址
for(j=0;j<64;j++)
{
if (background==0)
{
wrda_ri(0xff);//清成白屏
}
else
{
wrda_ri(0);//清成黑屏
}
}
}
}
void displayword(uchar lcdrow,uchar lcdline,uchar wordnumber)
{ //在指定的列和行显示一个汉字
uchar i;
uint j;
if(lcdline<64)
{
lcdinit();
wrst_le(0xc0);
wrst_le(0xb8|lcdrow); //设置页地址
wrst_le(0x40|lcdline); //设置列地址
j=(wordnumber-1)*32;
for(i=0;i<32;i++)
{
if(dot_not==1) wrda_le(~lcd_lattice16_16[i+j]);
else wrda_le(lcd_lattice16_16[i+j]);
if(i==15)
{
lcdinit();
wrst_le(0xb8|(lcdrow+1)); //设置页地址
wrst_le(0x40|lcdline); //设置列地址
}
}
}
else
{
lcdinit();
wrst_ri(0xc0); //设置显示起始行
wrst_ri(0xb8|lcdrow); //设置页地址
wrst_ri(0x40|(lcdline-64)); //设置列地址
j=(wordnumber-1)*32;
for(i=0;i<32;i++)
{
if(dot_not==1)wrda_ri(~lcd_lattice16_16[i+j]);
else wrda_ri(lcd_lattice16_16[i+j]);
if(i==15)
{
wrst_ri(0xb8|(lcdrow+1)); //设置页地址
wrst_ri(0x40|(lcdline-64));//设置列地址
}
}
}
}
void display_8_16(uchar lcdrow,uchar lcdline,uchar datanumber)
{ //在指定的列和行显示一个字符
uchar i;
uint j;
if(lcdline<64)
{
wrst_ri(0xc0);
wrst_ri(0xb8|lcdrow);//设置页地址
wrst_ri(0x40|lcdline);//设置列地址
j=datanumber;
j=(16*j);
for(i=0;i<16;i++)
{
if(dot_not) {wrda_ri(~lcd_letter_8_16[i+j]);}
else {wrda_ri(lcd_letter_8_16[i+j]);}
if(i==7)
{wrst_ri(0xb8|(lcdrow+1));//设置页地址
wrst_ri(0x40|lcdline);//设置列地址
}
}
}
else if(lcdline<122)
{
wrst_le(0xc0);//设置显示起始行
wrst_le(0xb8|lcdrow);//设置页地址
if(lcdline<121)
{
wrda_le(0x40|(lcdline-64));//设置列地址
}
j=datanumber*16;
for(i=0;i<16;i++)
{
if(dot_not)
{
wrda_le(~lcd_letter_8_16[i+j]);
}
else {wrda_le(lcd_letter_8_16[i+j]);}
if(i==7)
{wrst_le(0xb8|(lcdrow+1));//设置页地址
wrst_le(0x40|(lcdline-64));//设置列地址
}
}
}
}
void displaycoslight(uchar which_bmp) //显示一幅图像函数
{
uchar i;
uchar j;
wrst_le(0xc0);
wrst_ri(0xc0);/*设置显示起始行*/
for(i=1;i<6;i++)
{
wrst_ri(0xb8|i);/*设置页地址*/
wrst_ri(0x40|32);/*设置列地址*/
for(j=0;j<32;j++)
{
wrda_ri(lcd_lattice_coslight[which_bmp][(64*(i-1))+j]);
}
wrst_le(0xb8|i);/*设置页地址*/
wrst_le(0x40|00);/*设置列地址*/
for(j=32;j<64;j++)
{
wrda_le(lcd_lattice_coslight[which_bmp][(64*(i-1))+j]);
}
}
}
/************************************************************************/ unsigned char code lcd_lattice_coslight[15][320]={
/*--调入了一幅图像:
/*-- 宽度x高度=64x40 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xA0,0xA0,0xA0,0xA8,0xA8,0xA8,0xA8,0xA8,0xAA,0x2A,0x2A,0x2A,0x0A,0x0A,0x0A,0x0A,0x2A,0x2A,0x2A,0xAA,0xA8,0xA8,0xA8,0xA8,0xA8,0xA0,0xA0,0xA0,0x80,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x0A,0x2A,0x2A,0x2A,0xAA,0xAA,0xAA,0xAA,0xAA,0xA8,0xA0,0xA0,0xA0,0x80,0x80,0x80,0x80,0xA0,0xA0,0xA0,0xA8,0xAA,0xAA,0xAA,0xAA,0xAA,0x2A,0x2A,0x2A,0x0A,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x10,0x10,0x10,0x10,0x20,0x00,0x00,0xC0,0x20,0x10,0x10,0x10,0x20,0xC0,0x00,0x00,0x60,0x90,0x90,0x90,0x90,0x20,0x00,0x02,0xF2,0x02,0x02,0x02,0x02,0x02,0x02,0x12,0xF2,0x12,0x02,0x00,0xC0,0x20,0x10,0x10,0x90,0xA0,0x80,0x00,0x00,0xF0,0x80,0x80,0x80,0x80,0xF0,0x00,0x00,0x10,0x10,0x10,0xF0,0x10,0x10,0x10,0x00,0x00,0x01,0x02,0x04,0x04,0x04,0x04,0x02,0x00,0x00,0x01,0x02,0x04,0x04,0x04,0x02,0x01,0x00,0x00,0x02,0x04,0x04,0x04,0x04,0x03,0x00,0x00,0x07,0x04,0x04,0x04,0x04,0x00,0x00,0x04,0x07,0x04,0x00,0x00,0x01,0x02,0x04,0x04,0x04,0x02,0x01,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00 };
/////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// unsigned char code lcd_letter_8_16[]=
{
/*-- 文字: 0 -- 0 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00, /*-- 文字: 1 -- 1 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, /*-- 文字: 2 -- 2 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00, /*-- 文字: 3 -- 3 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00, /*-- 文字: 4 -- 4 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00, /*-- 文字: 5 -- 5 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00, /*-- 文字: 6 -- 6 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00, /*-- 文字: 7 -- 7 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00, /*-- 文字: 8 -- 8 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00, /*-- 文字: 9 -- 9 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00, };
//////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////
unsigned char code lcd_lattice16_16[]={
/*-- 文字1: 简 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x08,0xC7,0x12,0x26,0x8A,0x82,0xAA,0xA4,0xA3,0xA2,0x26,0x2A,0xE2,0x02,0x00,0x00,0x00,0xFF,0x00,0x00,0x1F,0x12,0x12,0x12,0x12,0x1F,0x40,0x80,0x7F,0x00,0x00,
/*-- 文字2: 易 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0xBE,0xEA,0xAA,0xAA,0xAA,0xAA,0xAA,0xBE,0x80,0x80,0x00,0x00,0x00,0x52,0x52,0x49,0x28,0x24,0x12,0x11,0x08,0x04,0x03,0x40,0x80,0x7F,0x00,0x00,
/*-- 文字3: 信 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x80,0x40,0x30,0xFC,0x07,0x0A,0xA8,0xA8,0xA9,0xAE,0xAA,0xA8,0xA8,0x08,0x08,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x7E,0x22,0x22,0x22,0x22,0x22,0x7E,0x00,0x00,0x00,
/*-- 文字4: 号 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x40,0x40,0x5F,0xD1,0x51,0x51,0x51,0x51,0x51,0x51,0x5F,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x02,0x07,0x02,0x02,0x22,0x42,0x82,0x42,0x3E,0x00,0x00,0x00,0x00,
/*-- 文字5: 发 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x10,0x3E,0x10,0x10,0xF0,0x9F,0x90,0x90,0x92,0x94,0x1C,0x10,0x10,0x10,0x00,0x40,0x20,0x10,0x88,0x87,0x41,0x46,0x28,0x10,0x28,0x27,0x40,0xC0,0x40,0x00,0x00,
/*-- 文字6: 生 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x60,0x1E,0x10,0x10,0x10,0x10,0xFF,0x12,0x10,0x10,0x98,0x10,0x00,0x00,0x01,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0x61,0x40,0x00,
/*-- 文字7: 器 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x40,0x4F,0x49,0x49,0xC9,0xCF,0x70,0xC0,0xCF,0x49,0x59,0x69,0x4F,0x00,0x00,0x02,0x02,0x7E,0x45,0x45,0x44,0x7C,0x00,0x7C,0x44,0x45,0x45,0x7E,0x06,0x02,0x00,
/*-- 文字8: 我 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x20,0x22,0x22,0xFE,0x21,0x21,0x20,0x20,0xFF,0x20,0x22,0xAC,0x20,0x20,0x00,0x04,0x04,0x42,0x82,0x7F,0x01,0x01,0x10,0x10,0x08,0x07,0x1A,0x21,0x40,0xF0,0x00,
/*-- 文字9: 最 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x40,0xC0,0x5F,0x55,0x55,0xD5,0x55,0x55,0x55,0x55,0x5F,0x40,0x40,0x40,0x00,0x20,0x20,0x3F,0x15,0x15,0x15,0xFF,0x48,0x23,0x15,0x09,0x15,0x23,0x61,0x20,0x00,
/*-- 文字10: 爱 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x40,0xB2,0x96,0x9A,0x92,0xF6,0x9A,0x93,0x91,0x99,0x97,0x91,0x90,0x30,0x00,0x40,0x20,0xA0,0x90,0x4C,0x47,0x2A,0x2A,0x12,0x1A,0x26,0x22,0x40,0xC0,0x40,0x00,
/*-- 文字11: 毕 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xFF,0x88,0x48,0x28,0x08,0x80,0x7F,0x88,0x88,0x88,0x84,0x84,0xE0,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
/*-- 文字12: 业 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x10,0x60,0x80,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x80,0x60,0x38,0x10,0x00,0x20,0x20,0x20,0x23,0x21,0x3F,0x20,0x20,0x20,0x3F,0x22,0x21,0x20,0x30,0x20,0x00,
/*-- 文字13: 设 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x40,0x41,0xCE,0x04,0x00,0x80,0x40,0xBE,0x82,0x82,0x82,0xBE,0xC0,0x40,0x40,0x00,
0x00,0x00,0x7F,0x20,0x90,0x80,0x40,0x43,0x2C,0x10,0x10,0x2C,0x43,0xC0,0x40,0x00,
/*-- 文字14: 计 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ 0x20,0x21,0x2E,0xE4,0x00,0x00,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0x00,
0x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,
};
void main()
{
displaycls (1); //清屏
displayword(2,16*0,1); //简易信号发生器
displayword(2,16*1,2);
displayword(2,16*2,3);
displayword(2,16*3,4);
displayword(2,16*4,5);
displayword(2,16*5,6);
displayword(2,16*6,7);
displayword(4,16*1,8); //我最爱毕业设计
displayword(4,16*2,9);
displayword(4,16*3,10);
displayword(4,16*4,11);
displayword(4,16*5,12);
displayword(4,16*6,13);
displayword(4,16*7,14);
while(1);
}