赞
踩
#include <STC15F2K60S2.H> #include "OneWire.h" #include "absacc.h" void Displaytemp(); void Delays(unsigned int t); void Readtemp(); unsigned int temp; unsigned char SMGNoDot_CA[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char SMGDot_CA[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; void Delay(unsigned int t) { while(t--); } void CLOSEled() { P2=(P2&0X1F)|0X80; P0=0XFF; } void closebz() { P2=(P2&0X1F)|0Xa0; P0=0X00; } void DidplaySMG(unsigned char pos,unsigned char dat) { P2=(P2&0X1F)|0XC0; P0=0X01<<pos; P2=(P2&0X1F)|0XE0; P0=dat; // XBYTE[0XE000]=0xff; // XBYTE[0XC000]=0X01<<pos; // XBYTE[0XE000]=dat; // } // if((temp&0xf800)==0x0000) // { // temp>>=4; // temp=temp*10; // temp=temp+(LT&0xf0)*0.625; // // } //void Display_all(unsigned char dat) //{ // XBYTE[0XC000]=0Xff; // XBYTE[0XE000]=dat; //} void Displaytemp() { DidplaySMG(7,SMGNoDot_CA[temp%10]); Delay(100); DidplaySMG(6,SMGDot_CA[(temp%100)/10]); Delay(100); DidplaySMG(5,SMGNoDot_CA[temp/100]); Delay(100); DidplaySMG(4,0xff); Delay(100); DidplaySMG(3,0xff); Delay(100); DidplaySMG(2,0xff); Delay(100); DidplaySMG(1,0xff); Delay(100); DidplaySMG(0,0xff); Delay(100); } void Readtemp() { unsigned char LT,HT; init_ds18b20(); Write_DS18B20(0xcc); Write_DS18B20(0x44); Delay(1000); init_ds18b20(); Write_DS18B20(0xcc); Write_DS18B20(0xbe); LT=Read_DS18B20(); HT=Read_DS18B20(); temp = HT ; temp = temp << 8 ; //左移8位,使MSB中的数据变为temp的高八位,低八位补零 temp = temp | LT; if((temp & 0xf800) == 0x0000) //正温度的处理办法 { temp >>= 4; //取出温度结果的整数部分 temp = temp*10; //放大10倍 temp = temp + (LT&0x0f)*0.625; //加上小数部分 } } void main() { closebz(); CLOSEled(); // XBYTE[0x8000] = 0XFF; while(1) { Readtemp(); Displaytemp(); } }
#include <STC15F2K60S2.H> unsigned char zhankongbi=0; unsigned int i=0; unsigned int count=0; void closeled() { P2=(P2&0X1F)|0X80; P0=0xff; } void closeBUZ() { P2=(P2&0X1F)|0Xa0; P0=0x00; } void InitT0() { //璁剧疆瀹氭椂鍣ㄦā寮? TMOD |= 0x01; //璁剧疆瀹氭椂鍣ㄦā寮? TH0=(65535-100)/256; TL0=(65535-100)%256; EA=1; ET0=1; } void Delay(unsigned int t) { while(t--); } void Keycont() { if(P30==0) { Delay(100); if(P30==0) { switch(i) { case 0: P00=0; zhankongbi=10; TR0=1; i=1; count = 0; break; case 1: zhankongbi=50; i=2; count = 0; break; case 2: zhankongbi=90; i=3; count = 0; break; case 3: P00=1; TR0=0; i=0; count = 0; break; } while(P30== 0); } } } void ServeT0() interrupt 1 { TH0=(65535-100)/256; TL0=(65535-100)%256; count++; if(count==zhankongbi) { P00=1; } else if(count>100) { P00=0; count=0; } } void main() { closeBUZ(); closeled(); //led放后面 p2锁定在Y4 InitT0(); while(1) { Keycont(); } }
#include <STC15F2K60S2.H> #include "DS1302.h" unsigned char writeadrr[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; unsigned char readadrr[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}; unsigned char time[7]={0x50,0x59,0x10,0x05,0x04,0x02,0x22}; unsigned char SMGNoDot_CA[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void set1302() { unsigned int n; DS1302_Init(); DS1302_WriteByte(0x8e,0x00); for(n=0;n<7;n++) { DS1302_WriteByte(writeadrr[n],time[n]); } DS1302_WriteByte(0x8e,0x80); } void read1302() { unsigned char n; for(n=0;n<7;n++) { time[n] = DS1302_ReadByte(readadrr[n]); } } void Delay(unsigned char t) { while(t--); } void smgplay(unsigned char pos,unsigned dat) { P2=(P2&0X1F)|0XC0; P0=0X01<<pos; P2=(P2&0x1f)|0xE0; P0=dat; } void smgplaytime() { smgplay(0,SMGNoDot_CA[time[2]/16]); Delay(100); smgplay(1,SMGNoDot_CA[time[2]%16]); Delay(100); smgplay(2,0xbf); Delay(100); smgplay(3,SMGNoDot_CA[time[1]/16]); Delay(100); smgplay(4,SMGNoDot_CA[time[1]%16]); Delay(100); smgplay(5,0xbf); Delay(100); smgplay(6,SMGNoDot_CA[time[0]/16]); Delay(100); smgplay(7,SMGNoDot_CA[time[0]%16]); Delay(100); } void closeledbizz() { P2=(P2&0X1F)|0X80; P0=0XFF; P2=(P2&0x1f)|0xa0; P0=0X00; } void main() { closeledbizz(); set1302(); while(1) { read1302(); smgplaytime(); } }
#include <STC15F2K60S2.H> #include "iic.h" void Displaytemp(); void Delays(unsigned int t); void Readtemp(); unsigned int temp; unsigned int dat; unsigned char SMGNoDot_CA[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char SMGDot_CA[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; void Delay(unsigned int t) { while(t--); } void closebz() { P2=(P2&0X1F)|0Xa0; P0=0X00; P2=(P2&0X1F)|0X80; P0=0XFF; } void DidplaySMG(unsigned char pos,unsigned char dat) { P2=(P2&0X1F)|0XC0; P0=0X01<<pos; P2=(P2&0X1F)|0XE0; P0=dat; // XBYTE[0XE000]=0xff; } void initv() { IIC_Start(); //总线起始信号 IIC_SendByte(0x90); //字节写地址 IIC_WaitAck(); //等待应答 IIC_SendByte(0x03); //发送控制字 IIC_WaitAck(); IIC_Start(); IIC_SendByte(0x91); //字节读地址 IIC_WaitAck(); dat=IIC_RecByte(); IIC_WaitAck(); //不要乱去省略等待指令,单片机要扯拐 IIC_Ack(0); IIC_Stop(); } void readv() { dat=dat*10/51; DidplaySMG(0,SMGDot_CA[dat/10]); Delay(100); DidplaySMG(1,SMGNoDot_CA[dat%10]); Delay(100); DidplaySMG(2,SMGNoDot_CA[dat%10]); Delay(100); } //******D/A转换 写进去的数字 函数 iic通讯****** void main() { closebz(); // XBYTE[0x8000] = 0XFF; while(1) { initv(); readv(); // Readtemp(); // Displaytemp(); } }
#include <STC15F2K60S2.H> unsigned int count_t0,count_t1; unsigned int num; unsigned char smg_nodot[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 }; void Delay(unsigned char t) { while(t--); } void clsledbz() { P2=(P2&0X1F)|0XA0; P0=0X00; P2=(P2&0X1F)|0X80; P0=0XFF; } void smgplay(unsigned char pos,unsigned char dat) { P2=0xE0;P0=0xff; P2=(P2&0X1F)|0Xc0; P0=0X01<<pos; P2=(P2&0X1F)|0Xe0; P0=dat; } void InitT01() { TMOD=0X16; TH0=0xff; TL0=0xff; TH1=(65535-50000)/256; TL1=(65535-50000)%256; EA=1; ET0=1; ET1=1; TR0=1; TR1=1; } void servieT0() interrupt 1 { count_t0++; } void servieT1() interrupt 3 { count_t1++; if(count_t1==20) { num=count_t0; count_t0=0; count_t1=0; } } void smgplayhz() { if(num>9999) { smgplay(3,smg_nodot[num/10000]); Delay(100); } if(num>999) { smgplay(4,smg_nodot[(num/1000)%10]); Delay(100); } if(num>99) { smgplay(5,smg_nodot[(num/100)%10]); Delay(100); } if(num>9) { smgplay(6,smg_nodot[(num/10)%10]); Delay(100); } smgplay(7,smg_nodot[num%10]); Delay(100); P2=0xC0;P0=0xff;//消隐 P2=0xE0;P0=0xff; } void main() { clsledbz(); InitT01(); while(1) { smgplayhz(); } }
当然除了这些之外,LED灯,数码管,继电器和蜂鸣器也要会运用,毕竟这届我们考了继电器和LED灯。可惜最后继电器会干扰蜂鸣器,使蜂鸣器不正常工作。搞的头晕(下次努力!!!)。有什么问题可以评论说,我把经验分享给大家。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。