版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 选题一:具有整点报时带闹钟时间可调的数字钟1、目的及意义 掌握单片机开发流程,能够独立完成单片机小系统的开发。学会查找资料,设计硬件电路,编写相应软件,电路调试,撰写设计报告,提高分析问题、解决问题的能力,为以后就业打下坚实的专业基础。2、任务要求1. 数字时钟显示:小时(两位)分钟(两位)秒钟(两位)2. 时间可调,要求时、分、秒都可调3. 可以设定闹铃,当闹铃时间到,蜂鸣器发出闹铃声音。4. 具有整点报时功能。3、设计思路 用内部定时器中断计时,三个两位数码管分别显示秒、分、时,stc89c52芯片p2口控制数码管选通,p0口输出数值显示。p3.5口输出高低电平驱动蜂鸣器做闹钟用。4、实
2、现功能主要通过单片机的内部定时器产生秒时基信号,实现电子时钟功能。主要功能有:时钟功能,闹钟功能,整点报时,闹钟报警,调时,调闹钟等。5、硬件电路图(protel99软件绘制)和仿真图(proteus软件与keil软件联调) 硬件电路图仿真图6、软件设计#include#define tl 0xba;#define th 0x3c;sbit time=p10;/时间设置sbit timer=p11;/闹钟设置sbit add=p12;/加sbit dec=p13;/减sbit speaker=p37;/闹钟输出bit disp_sd;/数码管闪动显示标志位bit disp_ms;/数码管显示时
3、间/闹钟标志位bit disp_sdt;/数码管闪动间隔反转标志位unsigned char code led=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /数字0-9的编码unsigned char time_cc,timer_cc;/调时计数器unsigned char count0,count1,second,minit,hour;/时间时分秒unsigned char second1,minit1,hour1;/闹钟时分秒void delay(void)unsigned int i;for(i=0;i100;i+);void d
4、isplay(void)if(disp_ms=0)if(disp_sd=0)p0=ledhour/10;p2=0x7f;delay();p2=0xff;p0=ledhour%10;p2=0xbf;delay();p2=0xff;p0=0x40;p2=0xdf;delay();p2=0xff;p0=ledminit/10;p2=0xef;delay();p2=0xff;p0=ledminit%10;p2=0xf7;delay();p2=0xff;p0=0x40;p2=0xfb;delay();p2=0xff;p0=ledsecond/10;p2=0xfd;delay();p2=0xff;p0=l
5、edsecond%10;p2=0xfe;delay();p2=0xff;elseif(time_cc=0x01)if(disp_sdt=1)p0=ledhour/10;elsep0=0x00;p2=0x7f;delay();p2=0xff;if(disp_sdt=1)p0=ledhour%10;elsep0=0x00;p2=0xbf;delay();p2=0xff;elsep0=ledhour/10;p2=0x7f;delay();p2=0xff;p0=ledhour%10;p2=0xbf;delay();p2=0xff;p0=0x40;p2=0xdf;delay();p2=0xff;if(t
6、ime_cc=0x02)if(disp_sdt=1)p0=ledminit/10;elsep0=0x00;p2=0xef;delay();p2=0xff;if(disp_sdt=1)p0=ledminit%10;elsep0=0x00;p2=0xf7;delay();p2=0xff;elsep0=ledminit/10;p2=0xef;delay();p2=0xff;p0=ledminit%10;p2=0xf7;delay();p2=0xff;p0=0x40;p2=0xfb;delay();p2=0xff;if(time_cc=0x03)if(disp_sdt=1)p0=ledsecond/1
7、0;elsep0=0x00;p2=0xfd;delay();p2=0xff;if(disp_sdt=1)p0=ledsecond%10;elsep0=0x00;p2=0xfe;delay();p2=0xff;elsep0=ledsecond/10;p2=0xfd;delay();p2=0xff;p0=ledsecond%10;p2=0xfe;delay();p2=0xff;elseif(disp_sd=0)p0=ledhour1/10;p2=0x7f;delay();p2=0xff;p0=ledhour1%10;p2=0xbf;delay();p2=0xff;p0=0x40;p2=0xdf;d
8、elay();p2=0xff;p0=ledminit1/10;p2=0xef;delay();p2=0xff;p0=ledminit1%10;p2=0xf7;delay();p2=0xff;p0=0x40;p2=0xfb;delay();p2=0xff;p0=ledsecond1/10;p2=0xfd;delay();p2=0xff;p0=ledsecond1%10;p2=0xfe;delay();p2=0xff;elseif(timer_cc=0x01)if(disp_sdt=1)p0=ledhour1/10;elsep0=0x00;p2=0x7f;delay();p2=0xff;if(di
9、sp_sdt=1)p0=ledhour1%10;elsep0=0x00;p2=0xbf;delay();p2=0xff;elsep0=ledhour1/10;p2=0x7f;delay();p2=0xff;p0=ledhour1%10;p2=0xbf;delay();p2=0xff;p0=0x40;p2=0xdf;delay();p2=0xff;if(timer_cc=0x02)if(disp_sdt=1)p0=ledminit1/10;elsep0=0x00;p2=0xef;delay();p2=0xff;if(disp_sdt=1)p0=ledminit1%10;elsep0=0x00;p
10、2=0xf7;delay();p2=0xff;elsep0=ledminit1/10;p2=0xef;delay();p2=0xff;p0=ledminit1%10;p2=0xf7;delay();p2=0xff;p0=0x40;p2=0xfb;delay();p2=0xff;if(timer_cc=0x03)if(disp_sdt=1)p0=ledsecond1/10;elsep0=0x00;p2=0xfd;delay();p2=0xff;if(disp_sdt=1)p0=ledsecond1%10;elsep0=0x00;p2=0xfe;delay();p2=0xff;elsep0=led
11、second1/10;p2=0xfd;delay();p2=0xff;p0=ledsecond1%10;p2=0xfe;delay();p2=0xff; void key_scan(void)unsigned int i;if(time=0)for(i=0;i10;i+)display();if(time=0)tr0=0;do display();while(time=0);disp_sd=1;disp_ms=0;time_cc+;if(time_cc=4)tr0=1;time_cc=0;disp_sd=0;if(timer=0)for(i=0;i10;i+)display();if(time
12、r=0)do display();while(timer=0);disp_sd=1;/数码管闪动显示disp_ms=1;/显示模式为闹钟时间timer_cc+;if(timer_cc=4)timer_cc=0;disp_sd=0;/闪动关闭disp_ms=0;/切换到时间模式if(add=0)for(i=0;i23) hour=23; break;case (0x02): minit+; if(minit59) minit=59; break;case (0x03): second+;if(second59) second=59; break; default: break;elseswitc
13、h(timer_cc)case (0x01): if(hour1=23) hour1=23; else hour1+; break;case (0x02): if(minit1=59) minit1=59; else minit1+; break;case (0x03): if(second1=59) second1=59; else second1+; break; default:break;if(dec=0)for(i=0;i10;i+)display();if(dec=0)do display(); while(dec=0);if(disp_ms=0)switch(time_cc)ca
14、se (0x01): if(hour=0) hour=0; else hour-; break;case (0x02): if(minit=0) minit=0; else minit-; break;case (0x03): if(second=0) second=0; else second-; break; default: break;elseswitch(timer_cc)case (0x01): if(hour1=0) hour1=0; else hour1-; break;case (0x02): if(minit1=0) minit1=0; else minit1-; brea
15、k;case (0x03): if(second1=0) second1=0; else second1-; break; default: break;void timer_alam(void)if(disp_ms=0)&(disp_sd=0) /正常运行时间的状态下if(hour1=hour)&(minit1=minit)speaker=disp_sdt;/*主函数* void main(void) second=0x00; /时间初始化为12:00:00 minit=0x00; hour=12; count0=0x00; count1=0x00; p1=0xff; tmod=0x11;
16、tl0=tl; th0=th; tl1=tl; th1=th; ea=1; et0=1;et1=1; tr0=1;tr1=1; while(1) key_scan(); display();timer_alam(); /*中断服务函数*void time0_int(void) interrupt 1 tl0=tl; th0=th; tr0=1; count0+; if(count0=20) count0=0; second+; if(second=60) second=0; minit+; if(minit=60) minit=0; hour+;if(hour=24) hour=0; /*中断
17、服务函数*void time1_int(void) interrupt 3 tl1=tl; th1=th; tr1=1; count1+; if(count1=10) count1=0;disp_sdt=disp_sdt;7、硬件实现选题二:温度控制器的设计1、目的及意义 掌握单片机开发流程,能够独立完成单片机小系统的开发。学会查找资料,设计硬件电路,编写相应软件,电路调试,撰写设计报告,提高分析问题、解决问题的能力,为以后就业打下坚实的专业基础。2、任务要求主要实现功能:通过温度传感器采集温度,与设定的上限和下限温度进行比较,当超出上下限时则报警并对应的指示灯亮,否则不报警,灯全灭。具体要求
18、:1.报警器显示部分:当前温度显示(1位小数),温度上限显示,温度下限显示(整数),通过按键三者切换显示2.用ds16b20采集温度3.温度上限和下限可以通过按键调整4.当温度超过上限或者下限时报警器鸣叫,对应的超上限或下限灯点亮。3、设计思路 用ds16b20采集温度,stc89c52芯片p2.0p2.3口控制数码管选通,p0口输出数值显示。p3.5口输出电平驱动蜂鸣器做报警用,p2.4口和p2.7口控制两个发光二极管,代表温度超上限和查下限。4、硬件电路图(protel99软件绘制)和仿真图(proteus软件与keil软件联调)protues图protel图5. 软件设计#include
19、#define uchar unsigned char#define uint unsigned int sbit s2=p11;sbit s3=p12;sbit s4=p13;sbit led1=p20; sbit led2=p21;sbit led3=p22;sbit led4=p23;sbit dot=p07;sbit bebe=p35;sbit baowen=p24;sbit jiawen=p27;#define time 0x8euchar code dis=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40, 0x
20、63,0x39, 0x01,0x08;/共阴数码管0-9,灭,-编码uchar sav1,fav1,bai,qin,f2,tval,tge,tshi,tbai,mak,htemp,ltemp,va1,mge,mshi,fge,fshi,temp_high,temp_low,set1,set2;uint final_temp;uint tvalue; uchar tflag;/温度正负标志sbit dq=p34;void delayms(uint a); void timeset();void setdsplay2();void delayus(uchar x)while(x-);void de
21、lay_long(uint x)uint i;while(x-)for(i=0;i0;z-)for(y=80;y0;y-);/*/*ds1820程序*/ void delay_18b20(unsigned int i)/延时1微秒 while(i-);void ds1820rst()/*ds1820复位*/ unsigned char x=0; dq = 1; /dq复位 delay_18b20(4); /延时 dq = 0; /dq拉低 delay_18b20(70); /精确延时大于480us dq = 1; /拉高 delay_18b20(40); uchar ds1820rd()/*读
22、数据*/ unsigned char i=0; unsigned char dat = 0; for (i=8;i0;i-) dq = 0; /给脉冲信号 dat=1; dq = 1; /给脉冲信号 if(dq) dat|=0x80; delay_18b20(10); return(dat); void ds1820wr(uchar wdata)/*写数据*/ unsigned char i=0; for (i=8; i0; i-) dq = 0; dq = wdata&0x01; delay_18b20(10); dq = 1; wdata=1; read_temp()/*读取温度值并转换*
23、/ uchar a,b; ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0x44);/*启动温度转换*/ ds1820rst(); ds1820wr(0xcc);/*跳过读序列号*/ ds1820wr(0xbe);/*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue=8; tvalue=tvalue|a; if(tvaluehtemp)jiawen=1;baowen=0;bebe=0;elseif(final_temp/10ltemp)jiawen=0;baowen=1;bebe=1;/*温
24、度设置*void timeset()if(s4=0)while(!s4);待添加的隐藏文字内容3f2+;if(f2=1) mak=0;led4=0;p0=dis14;delay_long(2);led4=1;tval=set1;setdsplay2();if(s2=0)while(!s2);set1+;if(tval=120)set1=0;if(s3=0)while(!s3);set1-;if(set1=0)set1=120;if(f2=2) htemp=set1;mak=0;led4=0;p0=dis15;delay_long(5);led4=1;tval=set2;setdsplay2()
25、;if(s2=0)while(!s2);set2+;if(set2=120)set2=0;if(s3=0)while(!s3);set2-;if(set2=0)set2=120;if(f2=3)ltemp=set2;f2=0;mak=1;void setdsplay2()tge=tval%10; /显示ge位 tshi=tval%100/10; /显示shi位tbai=tval%1000/100;/显示百位led3=0;p0=distge;delay(2);led3=1;delay(2);led2=0;p0=distshi;delay(2);led2=1;delay(2);led1=0;p0=
26、distbai;delay(2);led1=1;delay(2);5、硬件实现选题三:步进电机控制1、目的及意义 掌握单片机开发流程,能够独立完成单片机小系统的开发。学会查找资料,设计硬件电路,编写相应软件,电路调试,撰写设计报告,提高分析问题、解决问题的能力,为以后就业打下坚实的专业基础。2、任务要求主要实现功能及任务要求:单片机的p0口通过驱动器件uln2003驱动五线四相制微型步进电机,当接在p3口的按键s1按下时,步进电机正转;按键s2按下时,步进电机反转;s3按下时,加速;s4按下时,减速;s5按下时,步进电机停止工作。3、设计思路 用五线四相制微型步进电机,通过驱动芯片uln2003与stc89c52单片机的p0.0p0.3相连,p0口要有上拉电阻,单片机p3.0p3.4分别接独立式按键s1s5,用于控制步进电机的运行状态。4、硬件电路图(protel99软件绘制)和仿真图(proteus软件与keil软件联调)5、软件设计#include#define uchar unsigned char#define uint unsigned int uchar code ccw8=0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年天津商务职业学院单招职业技能测试题库含答案详解(培优b卷)
- 2026年宁波卫生职业技术学院单招职业技能考试题库及答案详解(易错题)
- 2026年安徽工商职业学院单招综合素质考试题库附答案详解(基础题)
- 2026年安徽工商职业学院单招职业倾向性考试题库及答案详解(新)
- 2026年安徽工商职业学院单招职业技能测试题库带答案详解(培优b卷)
- 2026年安徽工商职业学院单招职业技能考试题库带答案详解(黄金题型)
- 2026年安徽工商职业学院单招职业适应性测试题库附答案详解(培优a卷)
- 2026年安徽工贸职业技术学院单招综合素质考试题库及一套参考答案详解
- 2026年安徽工贸职业技术学院单招职业倾向性测试题库及答案详解(夺冠)
- 2026年安徽工贸职业技术学院单招职业倾向性考试题库含答案详解(a卷)
- 2026年江苏农牧科技职业学院单招职业适应性测试题库附答案解析
- 2026年江西电力职业技术学院单招职业适应性测试题库附答案解析
- 初级中学学生考核制度
- 2026年南京铁道职业技术学院单招职业适应性测试题库及答案详解1套
- 2025年中邮资管春季校园招聘精彩来袭笔试参考题库附带答案详解
- 小学语文课程标准解读
- 幕墙分包施工三方合作协议范本
- 2026年常德职业技术学院单招综合素质考试参考题库含详细答案解析
- 投入车辆承诺书
- 技能大赛高职组(智能网联汽车技术)参考试题及答案
- 儿童核科普教学课件
评论
0/150
提交评论