- #include "STC8H.H"
- #define uint8_t unsigned char
- #define uint16_t unsigned int
- unsigned int count=0;
- unsiged int dat=0;
- unsigned char sendBuf[5];
- uint8_t code zk[]=
- {
- /* "0" Gulim12 8x16 -0-*/
- 0x00,0xF0,0x08,0x04,0x04,0x04,0x08,0xF0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,
- /* "1" Gulim12 8x16 -15-*/
- 0x00,0x00,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,
- /* "2" Gulim12 8x16 -31-*/
- 0x00,0x30,0x08,0x04,0x04,0x04,0x88,0x70,0x00,0x30,0x28,0x24,0x22,0x21,0x20,0x20,
- /* "3" Gulim12 8x16 -47-*/
- 0x00,0x10,0x08,0x84,0x84,0x84,0x48,0x30,0x00,0x08,0x10,0x20,0x20,0x20,0x11,0x0E,
- /* "4" Gulim12 8x16 -63-*/
- 0x00,0x80,0x60,0x18,0x04,0xFC,0x00,0x00,0x06,0x05,0x04,0x04,0x04,0x3F,0x04,0x04,
- /* "5" Gulim12 8x16 -79-*/
- 0x00,0xFC,0x84,0x44,0x44,0x44,0x84,0x04,0x00,0x09,0x10,0x20,0x20,0x20,0x10,0x0F,
- /* "6" Gulim12 8x16 -95-*/
- 0x00,0xF0,0x88,0x44,0x44,0x44,0x88,0x10,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,
- /* "7" Gulim12 8x16 -111-*/
- 0x00,0x04,0x04,0x04,0x84,0x64,0x14,0x0C,0x00,0x00,0x00,0x3C,0x03,0x00,0x00,0x00,
- /* "8" Gulim12 8x16 -127-*/
- 0x00,0x30,0x48,0x84,0x84,0x84,0x48,0x30,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x0E,
- /* "9" Gulim12 8x16 -143-*/
- 0x00,0xF0,0x08,0x04,0x04,0x04,0x08,0xF0,0x00,0x08,0x11,0x22,0x22,0x22,0x11,0x0F,
- /* "." Gulim12 8x16 -159-*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,
- /* ":" Gulim12 8x16 -175-*/
- 0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,
- /* "%" Gulim12 8x16 -191-*/
- 0x00,0x18,0x24,0x24,0x98,0x40,0x20,0x00,0x00,0x04,0x02,0x19,0x24,0x24,0x18,0x00,
- /* "A" Gulim12 8x16 -207-*/
- 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33
- /* "B" Gulim12 8x16 -223-*/
- 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34
- /* "C" Gulim12 8x16 -239-*/
- 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35
- /* "D" Gulim12 8x16 -255-*/
- 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36
- /* "E" Gulim12 8x16 -271-*/
- 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37
- /* "F" Gulim12 8x16 -287-*/
- 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38
- /* "G" Gulim12 8x16 -303-*/
- 0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39
- /* "H" Gulim12 8x16 -319-*/
- 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40
- /* "I" Gulim12 8x16 -335-*/
- 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41
- /* "J" Gulim12 8x16 -351-*/
- 0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42
- /* "K" Gulim12 8x16 -367-*/
- 0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43
- /* "L" Gulim12 8x16 -383-*/
- 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44
- /* "M" Gulim12 8x16 -399-*/
- 0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45
- /* "N" Gulim12 8x16 -415-*/
- 0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46
- /* "O" Gulim12 8x16 -431-*/
- 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47
- /* "P" Gulim12 8x16 -447-*/
- 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48
- /* "Q" Gulim12 8x16 -463-*/
- 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49
- /* "R" Gulim12 8x16 -479-*/
- 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50
- /* "S" Gulim12 8x16 -495-*/
- 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51
- /* "T" Gulim12 8x16 -511-*/
- 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52
- /* "U" Gulim12 8x16 -527-*/
- 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53
- /* "V" Gulim12 8x16 -543-*/
- 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54
- /* "W" Gulim12 8x16 -559-*/
- 0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55
- /* "X" Gulim12 8x16 -575-*/
- 0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56
- /* "Y" Gulim12 8x16 -591-*/
- 0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57
- /* "Z" Gulim12 8x16 -607-*/
- 0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58
- /* "sui" song12 16x16 623--*/
- 0x00,0xFE,0x22,0x5A,0x86,0x08,0x10,0x44,0x24,0xF4,0x2C,0x27,0x24,0xE4,0x04,0x00,
- 0x00,0xFF,0x04,0x08,0x87,0x41,0x3F,0x40,0x80,0xBF,0x85,0x95,0xA5,0x9F,0x80,0x00,
- /* "yuan" song12 16x16 -655-*/
- 0x20,0x30,0xAC,0x63,0x30,0x00,0x20,0x2C,0xAB,0x6A,0xAA,0x2A,0x3A,0x26,0xA0,0x00,
- 0x22,0x67,0x22,0x12,0x12,0x00,0x49,0x49,0x24,0x52,0x89,0x7F,0x02,0x0D,0x10,0x00,
- /* "zhai" song12 16x16 -687-*/
- 0x80,0x84,0x84,0x44,0x4C,0x54,0x25,0x26,0x24,0x54,0x4C,0x44,0x84,0x84,0x80,0x00,
- 0x00,0x00,0xF8,0x09,0x09,0x7D,0x0B,0x09,0x79,0x09,0x49,0x89,0x78,0x00,0x00,0x00,
- /* "ju" song12 16x16 -719-*/
- 0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xF2,0x92,0x92,0x92,0x9E,0x80,0x80,0x00,
- 0x40,0x30,0x0F,0x00,0xFC,0x44,0x44,0x44,0x47,0x44,0x44,0x44,0xFC,0x00,0x00,0x00,
- /* "shi" song12 16x16 -751-*/
- 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,
- 0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,
- /* "℃" 16X16 -783-*/
- 0x00,0x0C,0x12,0x12,0x0C,0xC0,0x20,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x0F,0x10,0x20,0x20,0x20,0x20,0x20,0x10,0x08,0x00,0x00,
- /* "%" 16X16 -815-*/
- 0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x10,0x08,0x04,0x02,0x01,0x00,0x1C,0x22,0x22,0x22,0x1C,0x00,0x00,
- /* " " 8x16 -847-*/
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- };
- sbit DQ=P3^2;
- sbit SDA=P1^0;
- sbit SCL=P1^1;
- //**********函数声明********//
- void chushihua();
- void Delay1000ms(void);
- void delay1us();
- void i2c_Start();
- void i2c_Stop();
- void Write_i2c_Byte(uint8_t i2c_Byte);
- void Write_i2c_Cmd(uint8_t i2c_Cmd);
- void Write_i2c_Data(uint8_t i2c_Data);
- void Init_ssd1306_32();
- void Clear_top();
- void Clear_buttom();
- void Write_8X16(uint8_t c0,uint8_t aa,uint16_t add);
- void Write_16X16(uint8_t c0,uint8_t aa,uint16_t add);
- //**************************//
- void chushihua()
- {
- AUXR &= 0x7F; //定时器时钟12T模式
- TMOD &= 0xF0; //设置定时器模式
- TL0 = 0x00; //设置定时初始值//35毫秒@11.0592MHz
- TH0 = 0x82; //设置定时初始值
- TF0 = 0; //清除TF0标志
- TR0 = 0; //定时器0开始计时
- ET0 = 1; //使能定时器0中断
-
- IT1=1;
- EX0=1;
- EA=1;
-
- SCON = 0x50; //8位数据,可变波特率/9600@11.0592MHz
- AUXR &= 0xBF; //定时器时钟12T模式
- AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
- TMOD &= 0x0F; //设置定时器模式
- TL1 = 0xE8; //设置定时初始值
- TH1 = 0xFF; //设置定时初始值
- ET1 = 0; //禁止定时器中断
- TR1 = 1; //定时器1开始计时
-
- P0M0 = 0x00;
- P0M1 = 0x00;
- P1M0 = 0x00;
- P1M1 = 0x00;
- P2M0 = 0x00;
- P2M1 = 0x00;
- P3M0 = 0x00;
- P3M1 = 0x00;
- }
- void Timer0_Isr(void) interrupt 1 //35ms采集周期
- {
- EX0=0; //关闭外中断0
- TR0=0; //关闭定时器0
- dat=count;//转存计数值
- count=0;
- EX0=1; //开外中断0
- }
- void int0_isr()interrupt 0
- {
- if(DQ==0)
- {
- count++;
- TR0=1;
- }
- }
- void Delay1000ms(void) //@11.0592MHz
- {
- unsigned char data i, j, k;
- i = 57;
- j = 27;
- k = 112;
- do
- {
- do
- {
- while (--k);
- } while (--j);
- } while (--i);
- }
- void delay1us()//1us@11.0592MHz
- {
- unsigned char i;
- _nop_();
- _nop_();
- i = 1;
- while (--i);
- }
- void i2c_Start()
- {
- SCL=1;
- delay1us();
- SDA=1;
- delay1us();
- SDA=0;
- delay1us();
- SCL=0;
- }
- void i2c_Stop()
- {
- SCL=0;
- delay1us();
- SDA=0;
- delay1us();
- SCL=1;
- delay1us();
- SDA=1;
- }
- void Write_i2c_Byte(uint8_t i2c_Byte)
- {
- uint8_t i;
- for(i=0;i<8;i++)
- {
- if(i2c_Byte & 0x80)
- SDA=1;
- else
- SDA=0;
- delay1us();
- SCL=1;
- delay1us();
- SCL=0;
- delay1us();
- i2c_Byte<<=1;
- }
- SDA=1;
- delay1us();
- SCL=1;
- delay1us();
- SCL=0;
- }
- void Write_i2c_Cmd(uint8_t i2c_Cmd)
- {
- i2c_Start();
- Write_i2c_Byte(0x78);
- Write_i2c_Byte(0x00);
- Write_i2c_Byte(i2c_Cmd);
- i2c_Stop();
- }
- void Write_i2c_Data(uint8_t i2c_Data)
- {
- i2c_Start();
- Write_i2c_Byte(0x78);
- Write_i2c_Byte(0x40);
- Write_i2c_Byte(i2c_Data);
- i2c_Stop();
- }
- void Init_ssd1306_32()
- {
- Write_i2c_Cmd(0xAE);
- Write_i2c_Cmd(0x20);
- Write_i2c_Cmd(0x00);
- Write_i2c_Cmd(0xb0);
- Write_i2c_Cmd(0xc8);
- Write_i2c_Cmd(0x00);
- Write_i2c_Cmd(0x10);
- Write_i2c_Cmd(0x40);
- Write_i2c_Cmd(0x81);
- Write_i2c_Cmd(0xdf);
- Write_i2c_Cmd(0xa1);
- Write_i2c_Cmd(0xa6);
- Write_i2c_Cmd(0xa8);
- Write_i2c_Cmd(0x1F);
- Write_i2c_Cmd(0xa4);
- Write_i2c_Cmd(0xd3);
- Write_i2c_Cmd(0x00);
- Write_i2c_Cmd(0xd5);
- Write_i2c_Cmd(0xf0);
- Write_i2c_Cmd(0xd9);
- Write_i2c_Cmd(0x22);
- Write_i2c_Cmd(0xda);
- Write_i2c_Cmd(0x12);
- Write_i2c_Cmd(0xdb);
- Write_i2c_Cmd(0x20);
- Write_i2c_Cmd(0x8d);
- Write_i2c_Cmd(0x14);
- Write_i2c_Cmd(0xDA);
- Write_i2c_Cmd(0x02);
- Write_i2c_Cmd(0xaf);
- }
- void Clear_top()
- {
- uint16_t i;
- Write_i2c_Cmd(0x22);
- Write_i2c_Cmd(0xb0);
- Write_i2c_Cmd(0xb1);
- Write_i2c_Cmd(0x21);
- Write_i2c_Cmd(0);
- Write_i2c_Cmd(127);
- for(i=0;i<512;i++) Write_i2c_Data(0x00);
- }
- void Clear_buttom()
- {
- uint16_t i;
- Write_i2c_Cmd(0x22);
- Write_i2c_Cmd(0xb2);
- Write_i2c_Cmd(0xb3);
- Write_i2c_Cmd(0x21);
- Write_i2c_Cmd(0);
- Write_i2c_Cmd(127);
- for(i=0;i<512;i++) Write_i2c_Data(0x00);
- }
- void Write_8X16(uint8_t c0,uint8_t aa,uint16_t add)
- {
- uint8_t m;
- Write_i2c_Cmd(0x22);
- Write_i2c_Cmd(c0);
- Write_i2c_Cmd(c0+1);
- Write_i2c_Cmd(0x21);
- Write_i2c_Cmd(aa);
- Write_i2c_Cmd(aa+7);
- for(m=0;m<16;m++) Write_i2c_Data(zk[add++]);
- }
- void Write_16X16(uint8_t c0,uint8_t aa,uint16_t add)
- {
- uint8_t m;
- Write_i2c_Cmd(0x22);
- Write_i2c_Cmd(c0);
- Write_i2c_Cmd(c0+1);
- Write_i2c_Cmd(0x21);
- Write_i2c_Cmd(aa);
- Write_i2c_Cmd(aa+15);
- for(m=0;m<32;m++) Write_i2c_Data(zk[add++]);
- }
- //*******************************//
- void main()
- {
- float wendu;
- unsigned int temp;
- unsigned char i;
-
- chushihua();
- Init_ssd1306_32();
- Clear_top();
- Clear_buttom();
-
- Write_8X16(0xb0,8,511);//T温度
- Write_8X16(0xb0,16,271);//E
- Write_8X16(0xb0,24,399);//M
- Write_8X16(0xb0,32,447);//P
- Write_8X16(0xb0,40,175);//:
-
- while(1)
- {
- if(dat>=801)//正温度/801对应0度
- {
- wendu=(dat-801)*0.0625;
- }
- else //负温度/801对应0度
- {
- wendu=(801-dat)*0.0625;
- }
- temp=wendu*100;//扩大100倍
-
- sendBuf[0]=temp/10000%10;
- sendBuf[1]=temp/1000%10;
- sendBuf[2]=temp/100%10;
- sendBuf[3]=temp/10%10;
- sendBuf[4]=temp%10;
-
- Delay1000ms();
- P35=~P35;
-
- for(i=0;i<5;i++)
- {
- SBUF=sendBuf[i];//串口发送
- while(TI==0);
- TI=0;
- }
- if(sendBuf[0]>0)
- {
- Write_8X16(0xb2,0*8,sendBuf[0]*16);
- }
- else
- {
- Write_8X16(0xb2,0*8,847);//显示" "消零
- }
- Write_8X16(0xb2,1*8,sendBuf[1]*16);
- Write_8X16(0xb2,2*8,sendBuf[2]*16);
- Write_8X16(0xb2,3*8,10*16);//"."
- Write_8X16(0xb2,4*8,sendBuf[3]*16);
- Write_8X16(0xb2,5*8,sendBuf[4]*16);
- Write_16X16(0xb2,6*8,783);//℃
- }
- }
复制代码 |