文档介绍:单片机原理及应用课程设计
设计题目:1602数字万年历
姓名:
班级: 电气102班
学号:
指导教师:
成绩评定:
2013年01月17日
目录
一设计目的
通过单片机课程设计,熟练掌握c51语言的编程方法和keil2的运用方法,将理论联系到实践中去,提高我们的动脑和动手的能力。
通过数字秒表系统的设计,掌握外围器件如1602液晶的编程思想,独立键盘的编程思想及它们和单片机I/O口的使用方法,还有简单程序的编写,最终提高我们的逻辑抽象能力。
二设计任务和要求
任务:设计一个能够在1602液晶上跑动的以独立键盘调整年月日时分秒的数字万年历
要求:利用单片机实现上述任务即可
三设计原理分析
基本组成:89c52芯片,时钟系统电路,复位电路,串口通信电路,电源电路。
时钟系统是一个由振荡器产生的89c52系统工作所需的时钟信号;复位电路产生系统复位功能;串口通信电路通过电脑与单片机连接通信作用,在此用到了max232芯片,一般作为pc机向单片机烧程序的作用;电源电路为89c52系统提供稳定的电源。下面介绍以上电路原理图:
80C51信号引脚图
时钟系统电路复位电路
串口通讯电路和MX232芯片图
液晶1602原理
电路图
通过最小系统与1602液晶各个端口的连接,确保1602液晶正常工作,再根据1602液晶时序图在keil2中写出相关程序,即可通过80c51来控制液晶显示。
四硬件资源及其分配
主要用到的硬件:80c51的P3端口,P2端口,1602液晶,独立键盘
硬件分配:P2口全部作为1602液晶的数据传输口,P3口的0,1,2作为1602的控制端口,(3,4,5)口作为独立键盘的接口
五硬件图
六程序清单
#include<>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P3^0;
sbit rs=P3^2;
sbit rw=P3^1;
sbit k1=P3^4;
sbit k3=P3^3;
sbit k2=P3^5;
uchar count,nian=13,yue=1,ri=17,day=4,shi=8,fen,miao,k1num;
uchar code table[]="2013-01-17 THU";
uchar code table1[]=" 08:00:00"; //预设时间
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=6;y>0;y--);
}
void ()
{
rs=0;
lcden=0;
;
delay(50);
lcden=1;
delay(5);
lcden=0;
}
void write_date(uchar date)
{
rs=1;
lcden=0;
P2=date;
delay(50);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
uchar num;
rw=0;
lcden=0;
(0x38);
(0x0c);
(0x01);
(0x06);
(0x80);
for(num=0;num<15;num++)
{
write_date(table[num]);
delay(2);
}
(0x80+0x40);
for(num=0;num<12;num++)
{
write_date(table1[num]);
delay(2);
}
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
}
void write_sfm(uchar add,uchar date)
{
uchar shi,ge;
shi=date/10;
ge=date%10;
(0x80+0x40+add);
write_date(0x30+shi); //详细见码表
write_date(