英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 4240|回复: 0
打印 上一主题 下一主题

MICROCHIP 24LC512读写+串口操作程序!

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-25 15:51:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//===================================================================================//
//设计时间:2004.09.06
//===================================================================================//
//===================================================================================//
//                      程序所用到的头文件
//===================================================================================//
#include
#include
//===================================================================================//
//                      宏定义区
//===================================================================================//
#define LCD_SDAT    RD7                                        //LCD SID脚
#define LCD_SCL     RD6                                        //LCD SCL脚
#define LCD_A0      RD5                                        //LCD A0 脚
#define LCD_RES     RD4                                        //LCD RES脚
#define LCD_CS      RC5                                        //LCD CS 脚
#define TrisInOut_24LC64_SDA       TRISC4
#define PinOut_24LC64_SCL     RC3
#define PinInOut_24LC64_SDA        RC4
//===================================================================================//
//                      字库区
//===================================================================================//
const unsigned char caidanh[6][54]={{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x40,0x40,0x40,0x60,0x40,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,0xF8,0x08,0x68,0x98,0x00,0xF8,0xA8,0xA8,0xA8,0xA8,0xF8,0x00,0x00,0x00}, //上限
                                    {0x00,0x00,0x08,0x08,0x08,0x08,0x08,0xF8,0x48,0x88,0x08,0x08,0x0C,0x08,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,0xF8,0x08,0x68,0x98,0x00,0xF8,0xA8,0xA8,0xA8,0xA8,0xF8,0x00,0x00,0x00}, //下限
                                    {0x00,0x00,0x50,0x60,0xFC,0x50,0x40,0x88,0xA8,0xA8,0xFC,0xA8,0xA8,0x88,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,0xF8,0x28,0x28,0xF8,0xAC,0xA8,0xF8,0x28,0x28,0x00,0x00,0x00}, //精度                                    
                                    {0x00,0x00,0x40,0xC4,0x18,0x00,0xF8,0x88,0xA8,0xF8,0xA8,0x88,0xFC,0x08,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,0x20,0x10,0x54,0x54,0x94,0x7C,0x94,0x54,0x54,0x54,0x10,0x30,0x00,0x00}, //调零
                                    {0x00,0x00,0xF0,0x90,0x90,0x90,0xF0,0x20,0xA0,0x20,0x20,0xFC,0x20,0x20,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,0xF0,0x04,0x08,0xE0,0xA8,0xA8,0xE8,0x08,0x08,0xFC,0x08,0x00,0x00}, //时间
                                    {0x00,0x00,0x00,0x08,0x90,0x00,0xE4,0xA4,0xAC,0xF4,0xAC,0xA4,0xE4,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,0x80,0x40,0xF0,0x0C,0x10,0x50,0x54,0x58,0x50,0x50,0x58,0x50,0x00,0x00}  //通信
                                   };
const unsigned char caidanl[6][54]={{0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x20,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,0x3F,0x02,0x04,0x03,0x00,0x3F,0x10,0x0A,0x04,0x0A,0x12,0x20,0x00,0x00}, //上限
                                    {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x01,0x03,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,0x3F,0x02,0x04,0x03,0x00,0x3F,0x10,0x0A,0x04,0x0A,0x12,0x20,0x00,0x00}, //下限
                                    {0x00,0x00,0x06,0x01,0x3F,0x02,0x00,0x00,0x3F,0x0A,0x0A,0x2A,0x3F,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,0x30,0x08,0x27,0x20,0x12,0x16,0x0A,0x16,0x12,0x20,0x20,0x20,0x00,0x00},//精度                                   
                                    {0x00,0x00,0x00,0x0F,0x24,0x12,0x0F,0x00,0x0E,0x0A,0x0E,0x20,0x3F,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,0x04,0x02,0x06,0x05,0x14,0x15,0x36,0x2D,0x05,0x02,0x06,0x02,0x00,0x00}, //调零
                                    {0x00,0x00,0x0F,0x04,0x04,0x04,0x0F,0x00,0x00,0x13,0x20,0x3F,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,0x3F,0x00,0x00,0x0F,0x04,0x04,0x07,0x10,0x20,0x3F,0x00,0x00,0x00}, //时间
                                    {0x00,0x00,0x20,0x10,0x0F,0x10,0x2F,0x22,0x22,0x2F,0x22,0x2A,0x2F,0x20,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,0x3F,0x00,0x00,0x3D,0x15,0x15,0x15,0x15,0x3D,0x00,0x00,0x00}  //通信
                                    };  
const unsigned char zhongh[50]={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,0xE0,0x20,0x20,0x20,0x20,0xFC,0x20,0x20,0x20,0xF0,0x20,
                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
const unsigned char zhongl[50]={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,0x03,0x01,0x01,0x01,0x01,0x3F,0x01,0x01,0x01,0x03,0x00,
                                0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x30,0x30};                                                        //中   
const unsigned char qitih[4][54]={{0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
                                   0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x00,
                                   0x08,0xF8,0x08,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,0x00},    //LEL
                                  {0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,
                                   0x80,0x40,0x40,0x40,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},    //O2
                                  {0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x00,
                                   0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,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,0x00,0x00,0x00,0x00,0x00,0x00},    //CO
                                  {0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,
                                   0x80,0x40,0x40,0x40,0x80,0x00,0x00,0x70,0x88,
                                   0x08,0x08,0x08,0x38,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}    //H2S                              
                                 };
const unsigned char qitil[4][54]={{0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,0x00,
                                   0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,0x00,
                                   0x20,0x3F,0x20,0x20,0x20,0x20,0x30,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},   //LEL
                                  {0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,0x00,
                                   0x31,0x28,0x24,0x22,0x21,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},   //O2
                                  {0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,0x00,
                                   0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,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,0x00,0x00,0x00,0x00,0x00,0x00},   //CO
                                  {0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,0x00,
                                   0x31,0x28,0x24,0x22,0x21,0x00,0x00,0x38,0x20,
                                   0x21,0x21,0x22,0x1C,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}    //H2S                             
                                  };
const unsigned char sanjiaoh[4]={0xF0,0xE0,0xC0,0x80};
const unsigned char sanjiaol[4]={0x07,0x03,0x01,0x00};                              //菜单指示三角                                                                                                              
const unsigned char shijianh[4][54]={{0x00,0x00,0xF0,0x90,0x90,0x90,0xF0,0x20,0xA0,0x20,0x20,0xFC,0x20,0x20,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,0x80,0xC0,0xB0,0x8C,0x80,0x80,0x9C,0xA0,0x40,0x80,0x80,0x00,0x00},//时分
                                     {0x00,0x00,0x00,0x00,0x00,0xFC,0x24,0x24,0x24,0x24,0x24,0xFC,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,0xF8,0x88,0x88,0x88,0x88,0x88,0xFC,0x08,0x00,0x00,0x00},//月日
                                     {0x00,0x00,0x40,0x20,0x10,0xCC,0x48,0x48,0xF8,0x48,0x48,0x4C,0x48,0x08,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,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,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}
                                    };
const unsigned char shijianl[4][54]={{0x00,0x00,0x0F,0x04,0x04,0x04,0x0F,0x00,0x00,0x13,0x20,0x3F,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,0x01,0x20,0x20,0x18,0x07,0x00,0x10,0x20,0x1F,0x00,0x00,0x00,0x00,0x00},//时间
                                     {0x00,0x00,0x20,0x10,0x08,0x07,0x01,0x01,0x11,0x21,0x21,0x1F,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,0x1F,0x08,0x08,0x08,0x08,0x08,0x01F,0x00,0x00,0x00,0x00},//月日
                                     {0x00,0x00,0x02,0x02,0x02,0x03,0x02,0x02,0x3F,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,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,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}
                                    };
const unsigned char lel[19]={0x81,0xFF,0x81,0x80,0x80,0xC0,0x00,0x81,0xFF,0x89,0x9D,0xC3,0x00,0x81,0xFF,0x81,0x80,0x80,0xC0};       //LEL上半脚
const unsigned char o2[19]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x81,0x81,0x81,0x7E,0x00,0x00,0xC6,0xA1,0x91,0x89,0x86};        //O2上半脚
const unsigned char h2s[19]={0x00,0x81,0xFF,0x08,0x08,0xFF,0x81,0x00,0xC6,0xA1,0x91,0x89,0x86,0x00,0xC6,0x89,0x89,0x91,0x63};       //H2S上半脚
const unsigned char co[19]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x81,0x81,0x81,0x43,0x00,0x00,0x7E,0x81,0x81,0x81,0x7E};        //CO上半脚
const unsigned char ppm[14]={0x3E,0x0A,0x0E,0x00,0x3E,0x0A,0x0E,0x00,0x38,0x08,0x38,0x08,0x38,0x00};                                //PPM下半脚
const unsigned char bfh[14]={0x06,0xC9,0x36,0x6C,0x93,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};                                //%下半脚
const unsigned char bjing[14]={0x00,0x00,0x00,0x00,0x60,0x7C,0x7E,0xFF,0x7E,0x7C,0x60,0x00,0x00,0x00};                              //铃上半脚
const unsigned char dch[4][17]={{0x38,0x38,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE},             //没电         
                                {0x38,0x38,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0xFE,0xFE,0x82,0xFE},             //一格
                                {0x38,0x38,0xFE,0x82,0x82,0x82,0x82,0x82,0xFE,0xFE,0xFE,0x82,0xFE,0xFE,0xFE,0x82,0xFE},             //两格
                                {0x38,0x38,0xFE,0x82,0xFE,0xFE,0xFE,0x82,0xFE,0xFE,0xFE,0x82,0xFE,0xFE,0xFE,0x82,0xFE}};            //三格
const unsigned char shuzih[10][10]={{0x00,0xF0,0x0C,0x02,0x02,0x02,0x02,0x0C,0xF0,0x00},  //0
                                    {0x00,0x00,0x00,0x04,0x04,0xFE,0x00,0x00,0x00,0x00},  //1                                 
                                    {0x00,0x08,0x04,0x02,0x02,0x02,0x82,0x44,0x38,0x00},  //2
                                    {0x00,0x08,0x04,0x02,0x82,0x82,0x82,0xC4,0x38,0x00},  //3
                                    {0x00,0x00,0xC0,0x30,0x08,0x04,0xFE,0x00,0x00,0x00},  //4                                   
                                    {0x00,0xFE,0x82,0x82,0x42,0x42,0x42,0x82,0x00,0x00},  //5
                                    {0x00,0xE0,0x98,0x44,0x42,0x42,0x42,0x82,0x0C,0x00},  //6
                                    {0x00,0x0E,0x02,0x02,0x02,0xC2,0x32,0x0E,0x02,0x00},  //7
                                    {0x00,0x38,0x44,0x82,0x82,0x82,0x82,0x44,0x38,0x00},  //8
                                    {0x00,0x78,0x84,0x02,0x02,0x02,0x02,0x84,0xF8,0x00}   //9
                                   };
const unsigned char shuzil[10][10]={{0x00,0x07,0x18,0x20,0x20,0x20,0x20,0x18,0x07,0x00},  //0
                                    {0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},  //1
                                    {0x00,0x30,0x28,0x24,0x22,0x21,0x20,0x20,0x30,0x00},  //2
                                    {0x00,0x0C,0x10,0x20,0x20,0x20,0x20,0x11,0x1F,0x00},  //3                              
                                    {0x00,0x03,0x02,0x02,0x22,0x22,0x3F,0x22,0x22,0x00},  //4                                 
                                    {0x00,0x0C,0x10,0x20,0x20,0x20,0x20,0x10,0x0F,0x00},  //5
                                    {0x00,0x0F,0x10,0x20,0x20,0x20,0x20,0x10,0x0F,0x00},  //6
                                    {0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00},  //7
                                    {0x00,0x0E,0x11,0x20,0x20,0x20,0x20,0x11,0x0E,0x00},  //8
                                    {0x00,0x18,0x20,0x21,0x21,0x21,0x11,0x0C,0x03,0x00}   //9
                                   };
const unsigned char shjshzh[10][8]={{0x00,0x7C,0x82,0x01,0x01,0x82,0x7C,0x00},            //0
                                    {0x00,0x02,0x02,0xFF,0x00,0x00,0x00,0x00},  //1                                 
                                    {0x00,0x86,0x41,0x21,0x11,0x09,0x86,0x00},  //2
                                    {0x00,0xC6,0x01,0x01,0x11,0x11,0xFE,0x00},  //3
                                    {0x00,0x38,0x24,0x22,0xFF,0x20,0x20,0x00},  //4                                   
                                    {0x00,0xDF,0x09,0x09,0x09,0x09,0xF1,0x00},  //5
                                    {0x00,0xFC,0x12,0x09,0x09,0x09,0xF3,0x00},  //6
                                    {0x00,0x07,0x01,0xF1,0x0D,0x03,0x01,0x00},  //7
                                    {0x00,0xE6,0x19,0x11,0x11,0x19,0xE6,0x00},  //8
                                    {0x00,0x9E,0x21,0x21,0x21,0x91,0x7E,0x00}   //9
                                   };
const unsigned char shjshzl[10][8]={{0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00},  //0
                                    {0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00},  //1
                                    {0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00},  //2
                                    {0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00},  //3                              
                                    {0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00},  //4                                 
                                    {0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00},  //5
                                    {0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00},  //6
                                    {0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00},  //7
                                    {0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00},  //8
                                    {0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00}   //9
                                   };  
unsigned char wreerom[14]={0,0,0,0,0,0,0,0,0,0,0,0,0,0};   
unsigned char ack_flag=0;
unsigned int lel_counter=0,o2_counter=0x7FFF,co_counter=0,h2s_counter=0x7FFF,ee_flag=0;
union  dycj
{
       unsigned char  adre[2];
    unsigned int   dy;
}dy_cj;                                                               
//===================================================================================//
//                      系统初始化子程序
//===================================================================================//     
void initport(void)
{
    IPEN=0;
    INTCON=0x00;
    INTCON2=0x90;
    INTCON3=0x00;
    PIE1=0x00;
    PIE2=0x00;
    TMR0IF=0;
    T0CON=0x07;
    TRISB=0x3F;                                                                                                                                                   
    TRISC=0xD0;                                                  //设置相应口的输出方式                                                
    TRISD=0x02;                                                  //设置相应口的输入方式  
    PORTB=0x39;
    PORTC=0xD9;
    PORTD=0x00;
    ADCON0=0x41;                                        //选择A/D通道为RA0,打开A/D转换器0100,0001                                                              //在工作状态,且使A/D转换时钟为8Tos
    ADCON1=0X8A;                                        //转换结果右移,及ADRESH寄存器的高6位为"0"      
    TRISE1=0;
    TRISE2=0;
    RE1=1;
    RE2=0;                                                                                                                        
}
//===================================================================================//
//                      系统初始化子程序
//===================================================================================//     
void sciint(void)
{                                                                                               
   TRISC6=1;
   TRISC7=1;                                            //将RC6,RC7设置为输入方式,对外部呈高阻状态         
   SPBRG=0x0B;                                          //将传输的波特率设为19200bps
   TXSTA=0x04;                                          //选择异步高速方式传输8 bit数据                                       
   RCSTA=0x80;                                          //允许串行口工作                                                                              
}  
//===================================================================================//
//                每一个单位延时为1ms(晶振频率为3.6864MHz)
//===================================================================================//
void delayms(unsigned int dloop1)         
{
  unsigned char dloop2;
  do{dloop2=226;
     asm("nop");  
     do{;}while(--dloop2);
    }while(--dloop1);            
}
//===================================================================================//
//                      LCD初始化写数据子程序
//===================================================================================//
void initlceserve(unsigned char lcdmm)
{ unsigned char loop;
  LCD_A0=0;                              
  for(loop=8;loop>0;loop--)
     {CARRY=0;
      lcdmm=lcdmm<<1;      
      LCD_SDAT=CARRY;         
      LCD_SCL=1;   
      LCD_SCL=0;     
     }
}
//===================================================================================//
//                      LCD初始化子程序
//===================================================================================//
void initlcd(void)
{
  LCD_RES=0;
  delayms(1);
  LCD_RES=1;
  LCD_CS=0;
  LCD_SDAT=0;     
  LCD_SCL=0;                                                
  initlceserve(0xA3);           //LCD BIAS SET ( A2 1/8;A3 1/65DUTY)                                                                       
  initlceserve(0xA0);           //ADC SELECT                                                                                                
  initlceserve(0x2F);           //POWER CONTROL                                                
  initlceserve(0x23);           //VOLT REGULATOR RADIO SET                                                
  initlceserve(0x81);           //REFERENCE VOLT MODE set                                                
  initlceserve(0x2C);           //REFERENCE VOLT REG  set                                                
  initlceserve(0xC0);           //SHL SELECT                                                                                             
  initlceserve(0x40);           //DISPLAY START LINE SET
  initlceserve(0xAF);           //DISPLAY ON/OFF
}
//===================================================================================//
//                      写显示数据子程序
//===================================================================================//
void writedata(unsigned char lcddat)
{ unsigned char loop;
  LCD_A0=1;                              
  for(loop=8;loop>0;loop--)
     {CARRY=0;
      lcddat=lcddat<<1;      
      LCD_SDAT=CARRY;         
      LCD_SCL=1;   
      LCD_SCL=0;     
     }
}
//===================================================================================//
//                     写数字上半部
//===================================================================================//
void serveshzh(unsigned char shzval)
{unsigned char lcddat,loop;
for(loop=0;loop<10;loop++)
     {lcddat=shuzih[shzval][loop];
      writedata(lcddat);
     }
}
//===================================================================================//
//                     写数字下半部
//===================================================================================//
void serveshzl(unsigned char shzval)
{unsigned char lcddat,loop;
for(loop=0;loop<10;loop++)
     {lcddat=shuzil[shzval][loop];
      writedata(lcddat);
     }
}
//===================================================================================//
//                     写时间数字上半部
//===================================================================================//
void shjshzsvh(unsigned char shzval)
{unsigned char lcddat,loop;
for(loop=0;loop<8;loop++)
     {lcddat=shjshzh[shzval][loop];
      writedata(lcddat);
     }
}
//===================================================================================//
//                     写时间数字下半部
//===================================================================================//
void shjshzsvl(unsigned char shzval)
{unsigned char lcddat,loop;
for(loop=0;loop<8;loop++)
     {lcddat=shjshzl[shzval][loop];
      writedata(lcddat);
     }
}
//===================================================================================//
//                     灭数字位
//===================================================================================//
void mieshzserve(void)
{unsigned char loop;
for(loop=0;loop<10;loop++)
      writedata(0x00);
}
//===================================================================================//
//                      清零子程序
//===================================================================================//
void clearlcd()
{ unsigned char lcdpage=0x00;
  unsigned char loop1,loop2;
  lcdpage=lcdpage|0xB0;
  for(loop1=8;loop1>0;loop1--)
      {initlceserve(lcdpage);
       initlceserve(0x10);
       initlceserve(0x00);
       for(loop2=128;loop2>0;loop2--)
          writedata(0x00);
       lcdpage++;
      }
}
//===================================================================================//
//     lochflag=1显示LEL值;lochflag=2显示O2值;lochflag=3显示C0值;lochflag=4显示H2S值;
//                       bjflag=1显示报警图形;bjflag=0不显示报警图形;
//===================================================================================//
void disloch(unsigned int data,unsigned char lochflag,unsigned char bjflag)
{ unsigned char lcdpage,lcdcolh,lcdcoll;
  unsigned char loop,gewei,shiwei,baiwei,mfshgflag=0;
  data=data%1000;
  if(data<10) mfshgflag=1;
  else if((data>=10)&&(data<100))
       mfshgflag=2;
  else mfshgflag=3;  
  baiwei=(unsigned char)(data/100);
  loop=(unsigned char)(data%100);
  shiwei=loop/10;
  gewei=loop%10;                             
  if((lochflag==1)||(lochflag==2))    lcdpage=0x02;
  else                                lcdpage=0x05;   if((lochflag==1)||(lochflag==3))
     {lcdcolh=0x10;lcdcoll=0x00;}
  else
     {lcdcolh=0x13;lcdcoll=0x0E;}         
  lcdpage=lcdpage|0xB0;
  initlceserve(lcdpage);
  initlceserve(lcdcolh);
  initlceserve(lcdcoll);
  for(loop=0;loop<19;loop++)
      if(lochflag==1)       writedata(lel[loop]);
      else if(lochflag==2)  writedata(o2[loop]);
      else if(lochflag==3)  writedata(co[loop]);
      else                  writedata(h2s[loop]);
  if(mfshgflag!=3)                       mieshzserve();
  else                                   serveshzh(baiwei);
  if((mfshgflag==1)&&(lochflag!=2))      mieshzserve();
  else serveshzh(shiwei);
  if(lochflag==2)
     {writedata(0x00);
      writedata(0x00);
     }  
  serveshzh(gewei);  
  for(loop=0;loop<14;loop++)
      if(bjflag) writedata(bjing[loop]);
      else       writedata(0x00);
  lcdpage++;
  initlceserve(lcdpage);
  initlceserve(lcdcolh);
  initlceserve(lcdcoll);
  for(loop=0;loop<19;loop++)
      writedata(0x00);
  if(mfshgflag!=3)                       mieshzserve();
  else                                   serveshzl(baiwei);
  if((mfshgflag==1)&&(lochflag!=2))      mieshzserve();
  else                                   serveshzl(shiwei);
  if(lochflag==2)
     {writedata(0x30);
      writedata(0x30);
     }
  serveshzl(gewei);
  for(loop=0;loop<14;loop++)
     if((lochflag==1)||(lochflag==2))    writedata(bfh[loop]);
     else                                writedata(ppm[loop]);
}
//===================================================================================//
//               24LC64 初始化子程序
//===================================================================================//
void Initial_EEPROM(void)
{
TrisInOut_24LC64_SDA=0;
PinOut_24LC64_SCL=1;
    asm("nop");
    asm("nop");
PinInOut_24LC64_SDA=1;
    asm("nop");
    asm("nop");
PinOut_24LC64_SCL=0;
    asm("nop");
    asm("nop");
PinInOut_24LC64_SDA=0;
    asm("nop");
    asm("nop");
PinOut_24LC64_SCL=1;
    asm("nop");
    asm("nop");
PinInOut_24LC64_SDA=1;
    asm("nop");
asm("nop");
}
//===================================================================================//
//               24LC64 开始子程序
//===================================================================================//
void START24(void)
{
TrisInOut_24LC64_SDA=0;
PinOut_24LC64_SCL=0;
asm("nop");
asm("nop");
PinInOut_24LC64_SDA=1;
asm("nop");
asm("nop");
PinOut_24LC64_SCL=1;
asm("nop");
asm("nop");
PinInOut_24LC64_SDA=0;
asm("nop");
asm("nop");
PinOut_24LC64_SCL=0;
asm("nop");
asm("nop");
}
//===================================================================================//
//               24LC64 停止子程序
//===================================================================================//
void STOP24(void)
{   TrisInOut_24LC64_SDA=0;
PinOut_24LC64_SCL=0;
asm("nop");
asm("nop");
PinInOut_24LC64_SDA=0;
asm("nop");
asm("nop");
PinOut_24LC64_SCL=1;
asm("nop");
asm("nop");
PinInOut_24LC64_SDA=1;
asm("nop");
asm("nop");
    PinOut_24LC64_SCL=0;
asm("nop");
asm("nop");  
}
//===================================================================================//
//               24LC64 单字节读子程序
//===================================================================================//
unsigned char RBYTE(void)
{
unsigned char loop=0x8;
unsigned char eedata=0;
    TrisInOut_24LC64_SDA=1;
while(loop--)
       {
  eedata<<=1;
     PinOut_24LC64_SCL=0;
  asm("nop");
  asm("nop");
     PinOut_24LC64_SCL=1;
  asm("nop");
  asm("nop");
     if(PinInOut_24LC64_SDA)
      {
       eedata|=0x01;
      }
     }
PinOut_24LC64_SCL=0;
asm("nop");
asm("nop");
TrisInOut_24LC64_SDA=0;
    PinInOut_24LC64_SDA=1;  
asm("nop");
asm("nop");
    PinOut_24LC64_SCL=1;     
    return(eedata);
}
//===================================================================================//
//               24LC64 单字节写子程序      
//===================================================================================//
void WBYTE(unsigned char eedata)
{
unsigned char loop=0x8;
    TrisInOut_24LC64_SDA=0;
while(loop--)
    {
        PinOut_24LC64_SCL=0;  
        asm("nop");
  asm("nop");
        CARRY=0;
        eedata=eedata<<1;      
        PinInOut_24LC64_SDA=CARRY;  
  asm("nop");
     asm("nop");
  PinOut_24LC64_SCL=1;
        }  
asm("nop");
asm("nop");
PinOut_24LC64_SCL=0;
    TrisInOut_24LC64_SDA=1;
    PinOut_24LC64_SCL=1;   
    loop=200;
    while(loop)
       {
     if(!PinInOut_24LC64_SDA)
      {
       break;
      }
        loop--;
     }   
    PinOut_24LC64_SCL=0;
   asm("nop");
asm("nop");   
TrisInOut_24LC64_SDA=0;
if(!loop)
{
  STOP24();
        ack_flag=1;
  return;     //写EE出错
}
}
//===================================================================================//
//        EEPROM  24LC64  (1024*8bit) 8K  
//               写16位数据子程序         
//===================================================================================//
unsigned int Write_EEPROM(unsigned char gas_class)
{   unsigned char lc512addr;
    unsigned int  gas_counter;
    if(gas_class==1)
        {gas_counter=lel_counter;lc512addr=0xA0;}
    else if(gas_class==2)
        {gas_counter=o2_counter;lc512addr=0xA0;}
    else if(gas_class==3)
        {gas_counter=co_counter;lc512addr=0xA2;}   
    else if(gas_class==4)
        {gas_counter=h2s_counter;lc512addr=0xA2;}
    dy_cj.dy=gas_counter;  
START24();                 //START 24
WBYTE(lc512addr);           //写设备地址0xA0
    WBYTE(dy_cj.adre[1]);
WBYTE(dy_cj.adre[0]);
    WBYTE(wreerom[4]);
    WBYTE(wreerom[5]);
    WBYTE(wreerom[6]);
    WBYTE(wreerom[7]);
    WBYTE(wreerom[8]);
    WBYTE(wreerom[9]);
    WBYTE(wreerom[10]);
    WBYTE(wreerom[11]);   
STOP24();
delayms(5);
    gas_counter+=8;
    return(gas_counter);
}
//===================================================================================//
//       读16位数据子程序
//===================================================================================//
unsigned int Read_EEPROM(unsigned char lc512addr)
{   unsigned char rdeedata;   
    rdeedata=lc512addr|0x01;
dy_cj.dy=ee_flag;
START24();                  //START 24
WBYTE(lc512addr);             //写设备地址0xA0
    WBYTE(dy_cj.adre[1]);
WBYTE(dy_cj.adre[0]);
START24();                  //START 24
WBYTE(rdeedata);             //写读命令0xA1
    rdeedata=RBYTE();
STOP24();
    ee_flag+=1;
return(rdeedata);
}
//***********************************************************************************//
//                      主程序
//***********************************************************************************//
void main(void)
{ unsigned char loop,loop1,rdeedata;
  unsigned int value=0,mid=0;
  unsigned char rcdata;
  initport();   
  initlcd();
  Initial_EEPROM();                                         //初始化EE                                                                             
  delayms(5);
  clearlcd();
  sciint();
  CREN=1;
  TXEN=1;
  while(1)
      {for(loop=10;loop>0;loop--)
          {
            for(loop1=0;loop1<8;loop1++)
                {rdeedata=Read_EEPROM(0xA2);
                 value=(unsigned int)rdeedata;  
                 disloch(value,1,0);
                 delayms(800);
                 while(1)
                    {if(RCIF==1) break;
                    }         
                 rcdata=RCREG;
                 disloch(rcdata,3,0);         
                 }                       
             if(ee_flag==0x7FFF)
                 ee_flag=0;
           }        
        if(loop==0)
              mid=0;                                                                    
       }

}
//连续读24LC512成功,24LC512地址0xA0,A0脚被拉为低电平
//eerom程序已完成,可直接移植,通信子程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-4-30 22:56 , Processed in 0.053539 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表