单片机实训内容1602的运用Word文件下载.docx
- 文档编号:17721777
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:12
- 大小:241.70KB
单片机实训内容1602的运用Word文件下载.docx
《单片机实训内容1602的运用Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机实训内容1602的运用Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
三、电路的设计与分析
上图所示为产生五伏电压的电路图。
通过整流滤波所产生的5V电压供给单片机和显示器。
上图所示为单片机控制原理图电路,对单片机89c51写入程序。
进而进行显示时间和通过按钮调节输入的高低电平来调节时间的加减。
程序验证图
四、程序流程图
附录1602的程序:
主函数Main.c
#include<
reg51.h>
#include"
clock.h"
main()
{
lcd_init();
T0_init();
while
(1)
{
CharToAscii();
display();
KeyScan();
}
}
voidT0_ISR()interrupt1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ucCount_ms++;
if(ucCount_ms==10)
flag_flash=0;
if(ucCount_ms>
=20)
ucCount_ms=0;
flag_flash=1;
SecondAdd();
副函数Clock.h
#defineucharunsignedchar
#defineuintunsignedint
sbitRS=P2^0;
sbitRW=P2^1;
sbitE=P2^2;
ucharCanl[16]={"
2011-03-24"
};
ucharTime[16]={"
12:
30:
00"
ucharucHour;
ucharucMinute;
ucharucSecond;
ucharucCount_ms;
ucharucWX=0;
bitflag_flash;
voiddelay(uintx)
while(x--);
voiddelay_ms(ucharx)
uchari;
while(x--)
for(i=0;
i<
125;
i++);
voidwrcommand(uchartemp)
delay(300);
RS=0;
RW=0;
E=1;
P0=temp;
E=0;
voidwrdata(uchartemp)
RS=1;
voidlcd_init()
wrcommand(0x01);
wrcommand(0x38);
wrcommand(0x06);
wrcommand(0x0c);
voidCharToAscii()
if(flag_flash)
Time[4]=ucHour/10+0x30;
Time[5]=ucHour%10+0x30;
Time[7]=ucMinute/10+0x30;
Time[8]=ucMinute%10+0x30;
Time[10]=ucSecond/10+0x30;
Time[11]=ucSecond%10+0x30;
else
switch(ucWX)
case1:
Time[4]='
'
;
Time[5]='
break;
case2:
Time[7]='
Time[8]='
case3:
Time[10]='
Time[11]='
voidlcd_string(uchar*p,ucharflag)
ucharaddr;
if(flag==1)
addr=0x80;
while(*p!
='
\0'
)
wrcommand(addr);
wrdata(*p);
addr++;
p++;
if(flag==2)
addr=0xc0;
}
voiddisplay()
lcd_string(Canl,1);
lcd_string(Time,2);
voidT0_init()
TMOD=0x01;
ET0=1;
EA=1;
TR0=1;
voidHourAdd()
ucHour++;
if(ucHour>
=24)
ucHour=0;
//DayAdd();
//WeekAdd();
voidHourDec()
if(ucHour==0)
ucHour=23;
ucHour--;
voidMinuteAdd()
ucMinute++;
if(ucMinute>
=60)
ucMinute=0;
HourAdd();
voidMinuteDec()
if(ucMinute==0)
ucMinute=59;
ucMinute--;
voidSecondAdd()
ucSecond++;
if(ucSecond>
ucSecond=0;
MinuteAdd();
voidSecondDec()
if(ucSecond==0)
ucSecond=59;
ucSecond--;
voidB_add()
switch(ucWX)
HourAdd();
break;
case2:
MinuteAdd();
case3:
SecondAdd();
voidB_dec()
HourDec();
MinuteDec();
SecondDec();
voidKeyScan()
ucharKeyValue;
P1=0xff;
KeyValue=P1;
if(KeyValue!
=0xff)
delay_ms(20);
switch(KeyValue)
{
case0xfe:
ucWX++;
if(ucWX>
=4)
ucWX=0;
case0xfd:
B_add();
case0xfb:
B_dec();
case0xf7:
TR0=!
TR0;
}
五、课程设计收获:
2周的课程设计快结束了,通过这次对数字电子钟的设计作,让我了解了电路设计的基本步骤,也让我了解了关于电子时钟的原理和设计理念。
电子课程设计是电类专业学生重要基础实践课是工科专业的必修课。
经过查资料、选方案、设计电路、撰写设计报告、使我得到一次较全面的实践训练。
理论联系实际,提高和培养创新能力,为后续课程的学习,打下基础。
并且在此次的单片机设计过程中,更进一步地熟悉了芯片的结构及掌握了芯片的工作原理和具体的使用方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 内容 1602 运用
![提示](https://static.bdocx.com/images/bang_tan.gif)