武汉理工大学《单片机原理与应用》课程设计说明书
3.4 LCD显示程序流程图
显示流程图如图3.4所示,流程图分析如下:首先对1602显示屏进行初始化(初始化大约持续10ms),然后检查忙信号,若BF=0,则获得显示RAM地址,写入相应的数据显示。若BF=1,则代表模块正在进行内部操作,不接受任何外部指令和数据,直到BF=0为止。
图3.4 LCD显示程序流程图
11
武汉理工大学《单片机原理与应用》课程设计说明书
4 万年历的仿真与调试结果
上电后的显示
秒调节
功能按键,自上而下功能依次为调节按键、加按键、减按键
12
武汉理工大学《单片机原理与应用》课程设计说明书
5 心得体会
本次设计是我们遇到过的较大的设计,所以遇到的问题也比较的多,尤其是以前没有接触过如此复杂的硬件电路以及软件编程,在软、硬件设计和调试中遇到了不少的困难,在同学的帮助才逐一克服了难题,学习到了不少的专业知识。
在整个设计过程之前,我已经在网上找了相关方面的资料,万事开始难,一开始不知道从哪里下手。后来慢慢学会分析系统,将系统模块化,各个模块可以在软件或者硬件上实现。在确保各个模块的硬件电路和与之相搭配的程序能够正常工作后在把它们组成一个系统。在今后的日子里,我会进一步加强自己的动手能力,丰富自己的知识面。
13
武汉理工大学《单片机原理与应用》课程设计说明书
参考文献
[1] 李朝青.单片机原理及接口技术[M],北京:北京航天航空大学出版社,2005 [2] 李广弟.单片机基础[M],北京:北京航空航天大学出版社,2000
[3] 万光毅.单片机实验与实践教程[M],北京:北京航空航天大学出版社,2003 [4] 唐亚平、李移伦.单片机原理实训与学习指导[M],长沙:中南大学出版社,2006 [5] 刘军.单片机原理与接口技术[M],华东理工大学出版社,2006
[6] 谢自美.电子线路设计、实验、测试[M],武汉:华中理工大学出版社,2000
14
武汉理工大学《单片机原理与应用》课程设计说明书
附件
万年历源程序
#include
#include\#define uint unsigned int #define uchar unsigned char
uchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp; //flag用于读取头文件中的温度值,和显示温度值
#define yh 0x80 //LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80) #define er 0x80+0x40 //LCD第二行初始位置(因为第二行第一个字符位置地址是0x40) //液晶屏的与C51之间的引脚连接定义(显示数据线接C51的P0口) sbit rs=P2^6; //寄存器选择 sbit en=P2^7; //下降沿使能 sbit rw=P2^5; //读写信号线
//DS1302时钟芯片与C51之间的引脚连接定义 sbit IO=P3^4;//数据线 sbit SCLK=P3^6; sbit RST=P3^5; sbit ACC0=ACC^0; sbit ACC7=ACC^7; ACC累加器=A ACC.0=E0H
//校时按键与C51的引脚连接定义 sbit key1=P2^0; //设置键 sbit key2=P2^1; //加键 sbit key3=P2^2; //减键
sbit buzzer=P1^5;//蜂鸣器,端口低电平响
uchar code tab1[]={\ - - \年显示的固定字符 uchar code tab2[]={\ : : \时间显示的固定字符 //延时函数,后面经常调用
void delay(uint xms)//延时函数,有参函数 {
uint x,y;
for(x=xms;x>0;x--) for(y=120;y>0;y--); }
void write_1602com(uchar com)//****液晶写入指令函数**** {
rs=0;//数据/指令选择置为指令 rw=0; //读写选择置为写 P0=com;//送入数据 delay(1);
en=1;//拉高使能端,为制造有效的下降沿做准备
15