资源简介

基于单片机(89S52)的多功能时钟 用单片机定时器做的时钟 第一个单片机作品 具有测温 时钟 闹钟 整点报时 功能 有源码 开发板原理图 程序流程图(在总结报告中) 总结报告部分抄袭别人的 只有实物图和程序流程图是自己做的 总之 报告很烂 由于时间仓促 规范化程度不高 功能在不断完善过程中 出现了很多冗余 暑期回家 没有做进一步处理 现在心情很糟 以后有时间会完善的! 仅供参考!

资源截图

代码片段和文件信息

/***********************************************************************************
学校:东北石油大学
院系:电子科学学院
专业:电子科学与技术
班级:电子**班
学号:***********
姓名:小菜
*************************************************************************************/
#include                          //52 单品机头文件
#include 
#define uchar unsigned char                 //宏定义
#define uint unsigned int
void delay(uint z);
sbit key1=P3^4;                             //设置按键
sbit key2=P3^5;
sbit key3=P3^0;
sbit key4=P3^1;
sbit key5=P3^2;
sbit key6=P3^3;
sbit BEEP=P2^1;
sbit led=P2^7;
sbit DQ = P2^0;
void beepopen(uchar times);                     //声明函数
void onit();
void clockset();
void display(hms);
void alarmset();
void distribute();
void zd_clock();
void clock();
void delay1(unsigned char t);
void song();
void alarmbeep();
unsigned char Init_DS18B20(void);
unsigned int ReadTemperature(void);
uchar code disp_code[] =
{
  0xC0 0xF9 0xA4 0xB0 0x99 0x92 0x82 0xF8 0x80 0x90
  // 0-9      0 1 2 3 4 5 6 7 8 9
  0x88 0x83 0xc6 0xa1 0x86 0x8e 
  // 10-15    a b c d e f
  0x7F 0xBF 0x9C 0xFF
  // 16-19    . - 。null
};    //数码管显示值列表
uchar code disp_code1[]=
{
0x400x790x240x300x190x120x020x780x000x10  //带小数点的0-9
};
//设置变量
uint numtempalarmljtemp1ttemp;
uchar chcmcsxsh1h2m1m2s1s2tfhhmmsshmsahamastimer0h timer0lktimeshiftflagtemp0z;
void proc_18b20(uint t)  //18b20温度显示函数--由于一开始没想加测温功能,另外时间仓促,函数利用率不高
{
    uint t_temp1 t_temp2t_temp3t_temp4;
t_temp1 = (int)(t / 100);
    t_temp2 = (int)(t % 100);
t_temp3=(int)(t_temp2%10);
t_temp4=(int)(t_temp2/10);
P1=0xfe;
P0=0xf6;
delay(2);
P1=0xfd;
P0=disp_code[12];
delay(2);
P1=0xfb;
P0=disp_code[18];
delay(2);
P1=0xf7;
P0=disp_code[0];
delay(2);
P1=0xef;
P0=disp_code[t_temp3];
delay(2);
P1=0xdf;
P0=disp_code1[t_temp4];
delay(2);
P1=0xbf;
P0=disp_code[t_temp1];
delay(2);
P1=0x7f;
P0=0xf6;
delay(2);
}
void main()
{
onit(); 
while(1)
{
zd_clock(); //整点报时
if(key5==0&&key6!=0&&key1!=0&&key2!=0)
{
     Init_DS18B20();
ttemp = ReadTemperature();
if(ttemp>30)
beepopen(1);
ttemp = (unsigned int)(ttemp * 10 + 0.5); //放大10倍输出并四舍五入
proc_18b20(ttemp);
}
else
{
if(key6==0)               //当k2按下时  设置闹钟时间
alarmset();
else
{
if(key1==0||key2==0)          //当k4或k3按下时 进行时钟设置
clockset();             //调用时钟设置程序
else
{
clock();             //调用时钟程序
if(ah==h&&am==m&&as==s)
{
  ET1= 1;            //打开定时器1中断
alarmbeep();
}
}
}

}
}
}
void timer0() interrupt 1        //定时器0的中断处理程序
{
TH0=(65536-9216)/256;    // 每10ms产生一次中断   因为晶振频率为11.0592MHz,所以定时器装入初值应为,65536-10000/12*11.0592
TL0=(65536-9216)%256;
num++;                     //定时器0每产生一次中断 num++
}


void delay(uint z)       //延时子函数
{
uint xy;
for(x=z;x>0;x--)
for(y=11

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      95744  2010-07-14 08:42  多功能时钟\开发板原理图.doc

     文件      22207  2010-08-29 19:31  多功能时钟\时钟--成品\finalclock

     文件      10676  2010-08-29 19:48  多功能时钟\时钟--成品\finalclock.c

     文件       7728  2010-08-29 19:31  多功能时钟\时钟--成品\finalclock.hex

     文件         52  2010-08-29 19:31  多功能时钟\时钟--成品\finalclock.lnp

     文件      19390  2010-08-29 19:31  多功能时钟\时钟--成品\finalclock.LST

     文件      32238  2010-08-29 19:31  多功能时钟\时钟--成品\finalclock.M51

     文件      25625  2010-08-29 19:31  多功能时钟\时钟--成品\finalclock.OBJ

     文件        957  2010-08-29 19:48  多功能时钟\时钟--成品\finalclock.Opt

     文件       1226  2010-08-29 19:31  多功能时钟\时钟--成品\finalclock.plg

     文件       1661  2010-08-29 14:40  多功能时钟\时钟--成品\finalclock.Uv2

     文件        828  2010-08-29 14:40  多功能时钟\时钟--成品\finalclock_Opt.Bak

     文件       1657  2010-07-26 17:12  多功能时钟\时钟--成品\finalclock_Uv2.Bak

     文件    8269312  2010-08-29 19:55  多功能时钟\电子  小菜作品.doc

     目录          0  2010-08-29 19:49  多功能时钟\时钟--成品

     目录          0  2010-08-29 19:57  多功能时钟

----------- ---------  ---------- -----  ----

              8489301                    16


评论

共有 条评论