基于at89s51单片机的电子时钟(带温度显示内容摘要:
置完成后进行确认;/// 按s3进行减;/// 按s4进行加;/// ///////////////////////////////////////////////////////////////////////////////////////////////includedefine uint unsigned intdefine uchar unsigned char/////////////////sbit rw = P2^6。 //sbit rs = P2^5。 // 1602 IO口位定义sbit en = P2^7。 //////////////////////////////////////sbit rst = P3^5。 //sbit sclk = P3^6。 // 1302 IO口位定义sbit io = P3^4。 ////////////////////////////////////////sbit key1 = P1^0。 //sbit key2 = P1^1。 // 独立按键位定义sbit key3 = P1^2。 //sbit key4 = P1^3。 // //////////////////////////////////////sbit DQ = P2^2。 ///////////////////////uchar tempL=0。 //临时变量低位uchar tempH=0。 //临时变量高位uint temperature。 uint hour, minute, second, year, month, day。 uint key = 0。 uchar tab_num[] = {0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x2d}。 //对应字符为: { 0 1 2 3 4 5 6 7 8 9 : }uchar tab_time[] = {1,2,10,3,4,10,5,6}。 uchar tab_date[] = {2,0,1,0,11,0,9,11,2,7}。 // 延时函数,延时z毫秒 ******void delay(uint z) { uint x, y。 for(x=0。 xz。 x++) for(y=0。 y110。 y++)。 }//***************************/****************************************************************************函数功能:延时子程序入口参数:k出口参数:****************************************************************************/void delay18b20(unsigned int k){ unsigned int n。 n=0。 while(n k) {n++。 } return。 } /****************************************************************************函数功能:DS18B20初始化子程序入口参数:出口参数:****************************************************************************/Init_DS18B20(void){ unsigned char x=0。 DQ=1。 //DQ先置高 delay18b20(8)。 //延时 DQ=0。 //发送复位脉冲 delay18b20(85)。 //延时(480ms) DQ=1。 //拉高数据线 delay18b20(14)。 //等待(15~60ms) }/****************************************************************************函数功能:向DS18B20读一字节数据入口参数:出口参数:dat****************************************************************************/ReadOneChar(void) { unsigned char i=0。 unsigned char dat=0。 for (i=8。 i0。 i) { DQ=1。 delay18b20(1)。 DQ=0。 dat=1。 DQ=1。 if(DQ) dat|=0x80。 delay18b20(4)。 } return(dat)。 }/****************************************************************************函数功能:向DS18B20写一字节数据入口参数:dat出口参数:****************************************************************************/WriteOneChar(unsigned char dat){ unsigned char i=0。 for(i=8。 i0。 i) { DQ=0。 DQ=datamp。 0x01。 delay18b20(5)。 DQ=1。 dat=1。 } delay18b20(4)。 }/****************************************************************************函数功能:向DS18B20读温度值入口参数:出口参数:temperature****************************************************************************/uint ReadTemperature(void){ Init_DS18B20()。 //初始化 WriteOneChar(0xcc)。 //跳过读序列号的操作 WriteOneChar(0x44)。 //启动温度转换 delay18b20(125)。 //转换需要一点时间,延时 Init_DS18B20()。 //初始化 WriteOneChar(0xcc)。 //跳过读序列号的操作 WriteOneChar(0xbe)。 //读温度寄存器(头两个值分别为温度的低位和高位) tempL=ReadOneChar()。 //读出温度的低位LSB tempH=ReadOneChar()。 //读出温度的高位MSB //温度转换,把高低位做相应的运算转化为实际温度 temperature=((tempH*256)+tempL)*5/8。 delay18b20(200)。 return(temperature)。 }//========1302写一个字节=========void write_byte(uchar dat){ uchar i, dat_w。 dat_w = dat。 for(i=0。 i8。 i++) { io = 0。 if(dat_w amp。 0x01) io = 1。 else io = 0。 dat_w = dat_w 1。 sclk = 0。 sclk = 1。 } sclk = 0。 }//===============================//========1302读一个字节=========uchar read_byte(){ uchar i, k。 k = 0。 for(i=0。 i8。 i++) { k = k 1。 if(io) k = k|0x80。 sclk = 1。 sclk = 0。 } sclk = 0。 return (k)。 }//===============================//========1302把数据写入地址=====void write_add(uchar add, uchar dat){ rst = 0。 sclk = 0。 rst = 1。 write_byte(add)。 write_byte((dat / 10 4) | (dat % 10))。 sclk = 0。 rst = 0。 }//===============================//========1302从地址读出数据=====uchar read_add(uchar add){ uchar temp, dat1, dat2。 rst = 0。 sclk = 0。 rst = 1。 write_byte(add)。 temp = read_byte()。 sclk = 0。 rst = 0。 dat1 = temp / 16。 dat2 = temp % 16。 temp = dat1 * 10 + dat2。 return (temp)。 }//===============================//=========1302时间初始化========void ds1302_init(){ write_add(0x8e,0x00)。 //打开写保护,写入时间; write_add(0x80,50)。 //初始化秒 50; write_add(0x82,59)。 //初始化分 59; write_add(0x84,23)。 //初始化时 23; write_add(0x86,31)。 //初始化日 31; write_add(0x88,12)。 //初始化月 12; write_add(0x8c,10)。 //初始化年 2010; write_add(0x8e,0x80)。 //关闭写保护,禁止写入。 }//===============================//=========1302读出时间==========void ds1302(){ write_add(0x8e,0x00)。 //打开写保护,读出时间; second = read_add(0x81)。 //从1302读出时间秒; minute = read_add(0x83)。 //从1302读出时间分; hour = read_add(0x85)。 //从1302读出时间时; day = read_add(0x87)。 //从1302读出时间日; month = read_add(0x89)。 //从1302读出时间月; year = read_add(0x8d)。 //从1302读出时间年; write_add(0x8e,0x80)。 //关闭写保护,禁止读出;}//===============================//写命令函数 ****************vo。基于at89s51单片机的电子时钟(带温度显示
相关推荐
C18A01A12A23A34A45A56A67A78GND9IN2+5IN26OUT27VCC8OUT11IN12IN1+3GND4R 4 11KR 4 24 7 KR 4 83 9 KR 4 31 5 0R 4 64 7 KR 4 72 7 KR 5 46 2 0R 4 44 7 KR 4 53 3 0 KR 5 04 . 7 MR 5 1 1 . 2 MR 5 22 0 0 KR 5 3
AT89 单片机内部有一个用于构成振荡器的高增益反相放大器。 引脚 XTAL1 和 XTAL2 分别是此放中国地质大学江城学院毕业设计(论文) 6 大器的输入端和输出端。 这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器 [7]。 外接晶体谐振器以及电容 C1 和 C2 构成并联谐振电路,接在放大器的反馈回路中。 对外接电容的值没有严格的要求,但电容的大小会影响震荡器频率的高低
ontrol of useing easily and having multifunction ,it suffers large users. The motor driver uses the mon wayPWM for the motor controlling speed. the speed of car is displayed by the LCD screen .The
2zVkumamp。 gTXRm6X4NGpP$vSTTamp。 ksv*3t nGK8! z89Am YWpazadNuKNamp。 MuWFA5uxY7JnD6YWRr Wwc^vR9CpbK! zn% Mz849Gx^Gjqv^$UE9wEwZQc@adNuKNamp。 MuWFA5uxY7JnD6YWRr Wwc^vR9CpbK!zn%Mz849Gx^Gj
了许多新型方法。 纳米固体材料具有庞大的界面,提 供了大量气体通道,从而大大提高了灵敏度 ,工作温度大大降低, 大大缩小了传感器的尺寸。 当然,在己获得明显进展的纳米传感领域中尚存在很多问题,从敏感材料到制作技术都很不成熟,其性能也有不尽人意的地方 [5]。 气敏传感器在家用电器中也有相当广泛的应用。 吸油烟机等产品上常用 MQ3 型半导体气敏传感器,它采用旁热式结构,陶瓷管内装有高阻抗加热丝
35% 文题相符 较好地完成论文选题的 目的要求。 5 写作水平 论点鲜明;论据充分;条理清晰;语言流畅。 15 写作规范 符合学术论文的基本要求。 用语、格式、图表、数据、量 和单位、各种资料引用规范化、符合标准。 10 论文篇幅 10000 字左右。 5 实评总分 成绩等级 评阅教师评审意见: 评阅教师签名: 说明:评定成绩分为优秀、良好、中等、及格、不及格五个等级,实评总分 90— 100