欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    智能仪器及应用实验报告基于51单片机的简易电子表设计与仿真.doc

    • 资源ID:2390780       资源大小:351KB        全文页数:15页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    智能仪器及应用实验报告基于51单片机的简易电子表设计与仿真.doc

    智能仪器及应用实验报告项目名称: 基于51单片机的简易电子表设计与仿真专业名称:测控技术与仪器班 级:测控0901学生姓名:刘景坤18 鲁娣声23 张长轩34指导教师:段海龙 李宏伟一、任务要求使用Keil uVision编程软件以及ISIS 7 Professional仿真软件制作一个简易电子表,要求具备电子表基本功能(时间显示、时间调整等)。二、总体设计方案利用AT89C51作为控制以及1602LCD作为显示,通过6个按键实现出入时间设置状态、出入闹铃设置状态、小时位调整、分钟位调整、开关闹铃等功能。系统的流程图如下:图1-1 系统仿真流程图三、系统硬件1、AT89C51引脚功能说明:AT89C51芯片如图1-2所示图1-2 AT89C51VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 (外部中断0) P3.3 (外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 (外部数据存储器写选通) P3.7 (外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 :外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次有效。但在访问外部数据存储器时,这两次有效的信号将不出现。 :当保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,将内部锁定为RESET;当端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。2、1602LCD液晶显示引脚功能说明:1602LCD显示用来显示当前时钟与闹钟时间。当运行仿真软件时,可以清楚的看到时间。1602LCD芯片如图1-3所示图1-3 1602LCD编号符号引脚说明编号符号引脚说明1VSS电源地8D1数据2VDD电源正极9D2数据3VL液晶显示偏压10D3数据4RS数据/命令选择11D4数据5R/W读/写选择12D5数据6E使能信号13D6数据7D0数据14D7数据四、系统软件设计设计仿真图:图1-4 电子表仿真图设计程序:#include<reg51.h>#define uint unsigned int #define uchar unsigned char#define PORTP0void inc_second();void inc_minute();void inc_hour();void disp_sfm(uchar x,uchar y,uchar dat);void delay(unsigned int ms)unsigned int i,j;for(i=0;i<ms;i+)for(j=0;j<100;j+);sbit setsj=P20;/设置时间sbit setnl=P21;/设置闹铃sbit ts=P22;/调整小时sbit tf=P23;/调整分钟sbit knl=P24;/开闹铃sbit gnl=P25;/关闹铃sbit lcden=P26;/LCD使能端sbit lcdrs=P27;/LCD数据命令选择端sbit lam=P10;/AM指示灯sbit lpm=P11;/PM指示灯sbit lnl=P12;/闹铃就绪指示灯uchar sj,tzflag,nlflag,tznl,wdnum,hwnum;uchar hour,minute,second,tcnt,nlhour,nlminute,nldk;uchar code table1=" 00:00:00"uchar code bmp=0x0e,0x11,0x1f,0x00,0x0a,0x00,0x00,0x00,0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00;/闹铃符号void wcmd(uchar cmd)/lcd1602写指令lcden=0;lcdrs=0;PORT=cmd;delay(5);lcden=1;delay(5);lcden=0;void wdata(uchar dat)/lcd1602写数据lcden=0;lcdrs=1;PORT=dat;delay(5);lcden=1;delay(5);lcden=0;void goxy(uchar x,uchar y)if(x=1)wcmd(0x80+y);elsewcmd(0x80+0x40+y);void disp_str(uchar *str)while(*str)wdata(*str);str+;void disp_bmp(uchar x,uchar y,uchar dat)goxy(x,y);wdata(dat);void lcd_init() uchar i ;wcmd(0x38);/显示模式设置:16*2,5*7,8位数据接口wcmd(0x0c);/开显示,不显光标,光标不闪烁wcmd(0x06);/地址自动加1wcmd(0x01);/清屏wcmd(0x40);/写CGRAM for (i=0;i<16;i+) wdata(bmpi);goxy(2,0);disp_str(table1);void timer0_init()TMOD=0x01;TH0=0x4c;TL0=0;EA=1;ET0=1;TR0=1;void timer0() interrupt 1TH0=0x4c;TL0=0;tcnt+;if(tcnt=20)tcnt=0;inc_second();disp_sfm(2,4,hour);disp_sfm(2,7,minute);disp_sfm(2,10,second);wdata(' ');wdata(' ');wdata(' ');wdata(' ');wdata(' ');inc_minute_nop()minute+;if(minute=60)minute=0;void inc_second()second+;if(second=60) second=0; inc_minute();if(second%2) /隔一秒":"闪一次goxy(2,9);wdata(' ');elsegoxy(2,9);wdata(':');void inc_minute()minute+;if(minute=60)minute=0;inc_hour();void inc_hour()hour+;if(hour=24)hour=0;void inc_nlminute()nlminute+;if(nlminute=60)nlminute=0;void inc_nlhour()nlhour+;if(nlhour=24)nlhour=0;void disp_sfm(uchar x,uchar y,uchar dat)uchar shi,ge;shi=dat/10+'0'ge=dat%10+'0' /加'0'表示算出的数要加上0的ascII码才能显示出想要的数goxy(x,y);wdata(shi);wdata(ge);void disp_apm()if(hour<12)goxy(2,0);wdata('A');wdata('M');elsegoxy(2,0);wdata('P');wdata('M');void tzsjfun()if(nlflag=0)/若闹铃没按下,则可设置时间,否则无效 if(setsj=0)delay(2);while(!setsj);delay(2);if(setsj=1) /表示按下了设置时间,且已经消抖 sj+;if(sj=1)TR0=0;/按下1次停止计时if(sj=2) /第2次按下表示设置完毕TR0=1;sj=0; if(sj)/要调整时间goxy(2,9);wdata(':');if(ts=0)delay(2);while(!ts);delay(2);if(ts=1)tzflag=1;if(tf=0)delay(2);while(!tf);delay(2);if(tf=1)tzflag=2;if(tzflag)if(tzflag=1)tzflag=0;inc_hour();disp_sfm(2,4,hour);if(tzflag=2)tzflag=0;inc_minute_nop();disp_sfm(2,7,minute);void nl0()nlhour=0;nlminute=0;disp_sfm(1,4,nlhour);wdata(':');disp_sfm(1,7,nlminute);void nldisappear()uchar i;goxy(1,0);for(i=0;i<9;i+)wdata(' ');delay(2);void tznlfun()if(sj=0)/若设置时间没按下,则可设置闹铃,否则无效 if(wdnum=0)if(setnl=0)while(!setnl);delay(5);if(setnl=1)nlflag+;if(nlflag=1)nl0();if(nlflag=2)/按下1次闹铃键,设置闹铃;按下2次,设置完毕;nlflag=0;nldisappear();if(nlflag)/要设置闹铃if(nlhour<12)goxy(1,0);wdata('A');wdata('M');elsegoxy(1,0);wdata('P');wdata('M');if(ts=0)while(!ts);delay(5);if(ts=1)tznl=1;if(tf=0)while(!tf);delay(5);if(tf=1)tznl=2;if(tznl)if(tznl=1)tznl=0;inc_nlhour();disp_sfm(1,4,nlhour);if(tznl=2)tznl=0;inc_nlminute();disp_sfm(1,7,nlminute);void kgnlfun()if(knl=0)while(!knl);delay(5);if(knl=1)nldk=1;disp_bmp(1,15,0x00);if(gnl=0)while(!gnl);delay(5);if(gnl=1) nldk=2; goxy(1,15); wdata(' ');void nljx()if(nldk=1)goxy(1,15);wdata(0x00); if(nlhour=hour)&&(nlminute=minute) lnl=0;beep(); elselnl=1;elsegoxy(1,15);wdata(' ');nldk=0;lnl=1;void keyscan()tzsjfun();tznlfun();kgnlfun();nljx();void delay2()uint x;for(x=65;x>0;x-);void wbzd_init()EA=1;EX0=1;ET0=1;/下降沿触发void wbzd0() interrupt 0hwnum+;if(hwnum=1)nldk=0;elsehwnum=0;nldk=1;void main()hour=0;minute=0;second=0;timer0_init();lcd_init();wbzd_init();while(1)disp_apm();keyscan();

    注意事项

    本文(智能仪器及应用实验报告基于51单片机的简易电子表设计与仿真.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开