这是我的主程序/*****************************************
功能卡
计分模式:20 120
普通模式:20 100
返 回:30
*****************************************/
#include "reg52.h"
#include "Allhead.h"
#include "NRF24L01.c"
#include "led.c"
#include "intrins.h"
#include "lcd.h"
unchar a1,a2,a3,a4,a5,s1,TxDate[4],lei,dui,number;
unint time1,s,time2,time3;
sbit open=P1^6;
sbit led12=P1^0;
sbit led1=P0^2;
sbit led2=P0^1;
sbit led3=P5^0;
sbit led4=P3^5;
sbit bee=P0^0;
sbit keyleft=P3^4;
sbit keyrigt=P3^3;
bit busy,t1;
void Delay10ms() //@22.1184MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 1;
j = 216;
k = 35;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void uart_sendbyte(char dat)//串口发送单个字符
{
while (busy);
busy = 1;
S2BUF = dat;
}
/************************主函数********************/
void INTO() interrupt 0 // 外部中断是0号
{
a1=1;
uart_sendbyte1(1);
}
void show_main()
{
display_graphic_16x16(2,32,1,huan1);
display_graphic_16x16(2,48,1,yin1);
display_graphic_16x16(2,64,1,shi1);
display_graphic_16x16(2,80,1,yong1);
display_graphic_16x16(4,24,1,qi1);
display_graphic_16x16(4,40,1,ti1);
display_graphic_16x16(4,56,1,jian1);
display_graphic_16x16(4,72,1,che1);
display_graphic_16x16(4,88,1,yi2);
}
void main()
{
unint ji21,ji23;
unchar ji2,ji3;
P0M0=0X10;
P0M1=0;
P1M0=1;//0X7F;
P1M1=0;
P2M0=0X0;
P2M1=0;
P3M0=0;
P3M1=0;
P5M0=0;
P5M1=0X10;
open=1;
// AUXR1=0x24;
AUXR=0XB5;
TMOD=0X21; //T1方式2
// ET0 =1; //定时器0中断充许位
TR1 =1; //启动T1
TR0=0;
PT0=1;
IT0=1;//下降沿触发.
IT1=1;
P_SW2=0X00;
t1=1;
bee=0;led12=1;
led1=0;led2=0;led3=0;led4=0;
initial_lcd();
clear_screen();
TxDate[0]=0xaa;TxDate[1]=0xaa;TxDate[2]=0xaa;TxDate[3]=0xab;
uart_init();
SCON=0X50; //0101 0000 方式1,允许接收
EX0 =0; //外中断0中断充许位
show_main();
NRF24L01Int();
TxDate[0]='G';
NRFSetTxMode(TxDate);
while(CheckACK()); //检测是否发送完毕
NRFSetTxMode(TxDate);
while(CheckACK()); //检测是否发送完毕
a2=0;
t1=0;
EA=0;
while(1)
{
ji23+=1;
if(ji23>60000)
{
ji23=0;
ji3+=1;
if(ji3>60)
{
Delay10ms();
ji23=0;
ji2=30;
open=0;
ji2=0;
ji21=0;
}
}
if(keyrigt==0)
{
Delay10ms();
ji23=0;
ji2=0;open=0;
ji21=0;
}
if(keyleft==0)
{
Delay10ms();
if(keyleft==0)
{
ji23=0;
ji2=0;
ji21=0;ji3=0;
clear_screen();
display_graphic_16x16(2,32,1,zhen1);
display_graphic_16x16(2,48,1,zai1);
display_graphic_16x16(2,64,1,jian1);
display_graphic_16x16(2,80,1,che1);
t1=1;
}
}
if(t1==1)
{
ji21+=1;
if(ji21>50000)
{
ji2+=1;
ji21=0;
if(ji2==20)
{
ji23=0;
ji3=0;
TxDate[0]='O';
TxDate[1]='K';
NRFSetTxMode(TxDate);
clear_screen();
display_graphic_16x16(2,32,1,jian1);
display_graphic_16x16(2,48,1,che1);
display_graphic_16x16(2,64,1,wan1);
display_graphic_16x16(2,80,1,bi1);
display_graphic_16x16(4,48,1,he1);
display_graphic_16x16(4,64,1,ge1);
display_graphic_16x16(6,24,1,shu1);
display_graphic_16x16(6,40,1,ju1);
display_graphic_16x16(6,56,1,yi1);
display_graphic_16x16(6,72,1,shan1);
display_graphic_16x16(6,88,1,chuan1);
while(CheckACK()); //检测是否发送完毕
}
if(ji2>80)
{
clear_screen();
show_main();
ji2=0;
t1=0;
}
}
}
}
}
将 display_graphic_16x16(2,32,1,huan1);
display_graphic_16x16(2,48,1,yin1);
display_graphic_16x16(2,64,1,shi1);
display_graphic_16x16(2,80,1,yong1);
display_graphic_16x16(4,24,1,qi1);
display_graphic_16x16(4,40,1,ti1);
display_graphic_16x16(4,56,1,jian1);
display_graphic_16x16(4,72,1,che1);
display_graphic_16x16(4,88,1,yi2); 显示为英文Welcome to use the gas detector display_graphic_16x16(2,32,1,zhen1);
display_graphic_16x16(2,48,1,zai1);
display_graphic_16x16(2,64,1,jian1);
display_graphic_16x16(2,80,1,che1); 显示为Detecting display_graphic_16x16(2,32,1,jian1);
display_graphic_16x16(2,48,1,che1);
display_graphic_16x16(2,64,1,wan1);
display_graphic_16x16(2,80,1,bi1);
display_graphic_16x16(4,48,1,he1);
display_graphic_16x16(4,64,1,ge1);
display_graphic_16x16(6,24,1,shu1);
display_graphic_16x16(6,40,1,ju1);
display_graphic_16x16(6,56,1,yi1);
display_graphic_16x16(6,72,1,shan1);
display_graphic_16x16(6,88,1,chuan1);显示为Testing completed换行显示qualified 换行显示Data uploaded. 请为我修改代码,显示完整代码,这是我led.c代码/* 液晶演示程序JLX12864G-330,串行接口!
驱动IC是:ST7567
晶联讯电子:网址 http://www.jlxlcd.cn;
*/
#include <intrins.h>
#include <Ctype.h>
#include <font.h>
#include "reg52.h"
#include "lcd.h"
sbit cs1=P1^3;
sbit reset=P1^2;//
sbit rs=P1^1;//
sbit sclk=P5^3;//
sbit sid=P5^2;
sbit LEDA=P1^0;//背光控制,低电平点亮
void delay(int i);
void delay_us(int i);
/*写指令到LCD模块*/
void transfer_command(int data1)
{
char i;
cs1=0;
rs=0;
for(i=0;i<8;i++)
{
sclk=0;
// delay_us(2);
if(data1&0x80) sid=1;
else sid=0;
sclk=1;
delay_us(2);
data1=data1<<=1;
}
cs1=1;
}
/*写数据到LCD模块*/
void transfer_data(int data1)
{
char i;
cs1=0;
rs=1;
for(i=0;i<8;i++)
{
sclk=0;
// delay_us(1);
if(data1&0x80) sid=1;
else sid=0;
sclk=1;
// delay_us(1);
data1=data1<<=1;
}
cs1=1;
}
/*延时*/
void delay(int i)
{
int j,k;
for(j=0;j<i;j++)
for(k=0;k<110;k++);
}
/*延时*/
void delay_us(int i)
{
int j,k;
for(j=0;j<i;j++)
for(k=0;k<1;k++);
}
/*LCD模块初始化*/
void initial_lcd()
{
reset=0; /*低电平复位*/
delay(100);
reset=1; /*复位完毕*/
delay(100);
transfer_command(0xe2); /*软复位*/
delay(5);
transfer_command(0xae); /*开显示*/
transfer_command(0x2c); /*升压步聚1*/
delay(5);
transfer_command(0x2e); /*升压步聚2*/
delay(5);
transfer_command(0x2f); /*升压步聚3*/
delay(5);
transfer_command(0x24); /*粗调对比度,可设置范围0x20~0x27*/
transfer_command(0x81); /*微调对比度*/
transfer_command(0x0d); /*微调对比度的值,可设置范围0x00~0x3f*/
transfer_command(0xa2); /*1/9偏压比(bias)*/
transfer_command(0xc8); /*行扫描顺序:从上到下*/
transfer_command(0xa0); /*列扫描顺序:从左到右*/
transfer_command(0x40); /*起始行:第一行开始*/
transfer_command(0xaf); /*开显示*/
}
void lcd_address(unsigned char page,unsigned char column)
{
column=column-1; //我们平常所说的第1列,在LCD驱动IC里是第0列。所以在这里减去1.
page=page-1;
transfer_command(0xb0+page); //设置页地址。每页是8行。一个画面的64行被分成8个页。我们平常所说的第1页,在LCD驱动IC里是第0页,所以在这里减去1*/
transfer_command(((column>>4)&0x0f)+0x10); //设置列地址的高4位
transfer_command(column&0x0f); //设置列地址的低4位
}
/*全屏清屏*/
void clear_screen()
{
unsigned char i,j;
for(i=0;i<9;i++)
{
lcd_address(1+i,1);
for(j=0;j<132;j++)
{
transfer_data(0x00);
}
}
}
/*显示16x16点阵图像、汉字、生僻字或16x16点阵的其他图标*/
void display_graphic_16x16(unsigned char page,unsigned char column,unsigned char reverse,unsigned char *dp)
{
unsigned char i,j;
for(j=0;j<2;j++)
{
lcd_address(page+j,column);
for (i=0;i<16;i++)
{
if(reverse==1)
{
transfer_data(*dp); /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/
}
else
transfer_data(~*dp);
dp++;
}
}
}
这是我font.h代码
unsigned char code zhen1[]={
/*-- 文字: 正 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0xFE,0x82,0x82,0x82,0x82,0x82,0x02,0x00,0x00,
0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00};
unsigned char code zai1[]={
/*-- 文字: 在 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x08,0x08,0x88,0xC8,0x38,0x0C,0x0B,0x08,0x08,0xE8,0x08,0x08,0x08,0x08,0x08,0x00,
0x02,0x01,0x00,0xFF,0x40,0x41,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0x40,0x00};
unsigned char code jian1[]={
/*-- 文字: 检 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x10,0xD0,0xFF,0x90,0x50,0x20,0x50,0x4C,0x43,0x4C,0x50,0x20,0x40,0x40,0x00,
0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x58,0x41,0x4E,0x60,0x58,0x47,0x40,0x40,0x00};
unsigned char code che1[]={
/*-- 文字: 测 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x60,0x02,0x8C,0x00,0xFE,0x02,0xF2,0x02,0xFE,0x00,0xF8,0x00,0xFF,0x00,0x00,
0x04,0x04,0x7E,0x01,0x80,0x47,0x30,0x0F,0x10,0x27,0x00,0x47,0x80,0x7F,0x00,0x00};
unsigned char code wan1[]={
/*-- 文字: 完 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x0C,0x04,0x24,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x24,0x04,0x14,0x0C,0x00,
0x00,0x81,0x81,0x41,0x31,0x0F,0x01,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00,0x00};
unsigned char code bi1[]={
/*-- 文字: 毕 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xFF,0x88,0x88,0x48,0x48,0x00,0x7F,0x88,0x84,0x84,0x82,0xE0,0x00,0x00,
0x04,0x04,0x05,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00};
unsigned char code shu1[]={
/*-- 文字: 数 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x90,0x52,0x34,0x10,0xFF,0x10,0x34,0x52,0x80,0x70,0x8F,0x08,0x08,0xF8,0x08,0x00,
0x82,0x9A,0x56,0x63,0x22,0x52,0x8E,0x00,0x80,0x40,0x33,0x0C,0x33,0x40,0x80,0x00};
unsigned char code ju1[]={
/*-- 文字: 据 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x10,0xFF,0x10,0x90,0x00,0xFE,0x92,0x92,0x92,0xF2,0x92,0x92,0x9E,0x80,0x00,
0x42,0x82,0x7F,0x01,0x80,0x60,0x1F,0x00,0xFC,0x44,0x47,0x44,0x44,0xFC,0x00,0x00};
unsigned char code yi1[]={
/*-- 文字: 已 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0xE2,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x78,0x00,0x00};
unsigned char code shan1[]={
/*-- 文字: 上 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,
0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00};
unsigned char code chuan1[]={
/*-- 文字: 传 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x60,0xF8,0x07,0x40,0x48,0x48,0xE8,0x5F,0x48,0x48,0x48,0x40,0x40,0x00,
0x01,0x00,0x00,0xFF,0x00,0x00,0x02,0x0B,0x12,0x22,0xD2,0x0A,0x06,0x00,0x00,0x00};
unsigned char code tai1[]={
/*-- 文字: 态 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x04,0x04,0x04,0x84,0x44,0x34,0x4F,0x94,0x24,0x44,0x84,0x84,0x04,0x00,0x00,
0x00,0x60,0x39,0x01,0x00,0x3C,0x40,0x42,0x4C,0x40,0x40,0x70,0x04,0x09,0x31,0x00};
unsigned char code shi1[]={
/*-- 文字: 使 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x20,0xF0,0x1C,0x07,0xF2,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xF4,0x04,0x00,
0x00,0x00,0x7F,0x00,0x40,0x41,0x22,0x14,0x0C,0x13,0x10,0x30,0x20,0x61,0x20,0x00};
unsigned char code yong1[]={
/*-- 文字: 用 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,
0x80,0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x42,0x82,0x7F,0x00,0x00};
unsigned char code huan1[]={
/*-- 文字: 欢 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x04,0x24,0x44,0x84,0x64,0x9C,0x40,0x30,0x0F,0xC8,0x08,0x08,0x28,0x18,0x00,0x00,
0x10,0x08,0x06,0x01,0x82,0x4C,0x20,0x18,0x06,0x01,0x06,0x18,0x20,0x40,0x80,0x00};
unsigned char code yin1[]={
/*-- 文字: 迎 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x40,0x42,0xCC,0x00,0x00,0xFC,0x04,0x02,0x00,0xFC,0x04,0x04,0xFC,0x00,0x00,
0x00,0x40,0x20,0x1F,0x20,0x40,0x4F,0x44,0x42,0x40,0x7F,0x42,0x44,0x43,0x40,0x00};
unsigned char code qi1[]={
/*-- 文字: 气 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x10,0x4C,0x47,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0xD4,0x04,0x04,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x30,0x40,0xF0,0x00};
unsigned char code ti1[]={
/*-- 文字: 体 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x60,0xF8,0x07,0x10,0x10,0x10,0xD0,0xFF,0xD0,0x10,0x10,0x10,0x00,0x00,
0x01,0x00,0x00,0xFF,0x10,0x08,0x04,0x0B,0x08,0xFF,0x08,0x0B,0x04,0x08,0x10,0x00};
unsigned char code yi2[]={
/*-- 文字: 仪 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x60,0xF8,0x07,0x00,0x1C,0xE0,0x01,0x06,0x00,0xE0,0x1E,0x00,0x00,0x00,
0x01,0x00,0x00,0xFF,0x00,0x80,0x40,0x20,0x13,0x0C,0x13,0x20,0x40,0x80,0x80,0x00};
unsigned char code he1[]={
/*-- 文字: 合 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x40,0x20,0x20,0x50,0x48,0x44,0x43,0x44,0x48,0x50,0x20,0x20,0x40,0x40,0x00,
0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0x00};
unsigned char code ge1[]={
/*-- 文字: 格 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x10,0xD0,0xFF,0x90,0x20,0x10,0x18,0xA7,0x44,0xA4,0x14,0x0C,0x00,0x00,0x00,
0x04,0x03,0x00,0xFF,0x00,0x05,0x02,0xFD,0x44,0x44,0x44,0x45,0xFD,0x02,0x02,0x00};
unsigned char code mao_hao[]={
/*-- 文字: : (冒号) --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00};
char code num0[]={
/*-- 文字: 0 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00
};
char code num1[]={
/*-- 文字: 1 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00
};
char code num2[]={
/*-- 文字: 2 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00
};
char code num3[]={
/*-- 文字: 3 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00
};
char code num4[]={
/*-- 文字: 4 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00
};
char code num5[]={
/*-- 文字: 5 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00
};
char code num6[]={
/*-- 文字: 6 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00
};
char code num7[]={
/*-- 文字: 7 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00
};
char code num8[]={
/*-- 文字: 8 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00
};
char code num9[]={
/*-- 文字: 9 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00
};