发布时间 : 星期二 文章基于单片机c51的简单万年历设计本科毕设论文更新完毕开始阅读554300c6f021dd36a32d7375a417866fb84ac0b0
福建工程学院软件学院 软件工程物联网工程
八、程序设计
8.1. 流程图
开始 显示“SHOWTIME”界面 WELCOME N
设置键按下? Y Y
显示当前时间
键盘数字进键盘自增、自 Y 行时间设置 减进行时间
设置
按键开始按下?
开始计时
第 11 页 共 26 页
福建工程学院软件学院 软件工程物联网工程
8.2. 源代码
#include
#define uchar unsigned char #define uint unsigned int
uchar code Buffer[4]={0xfe,0xfd,0xfb,0xf7};
uchar code table[]={'0','1','2','3','4','5','6','7','8','9','<','>','+','-','!','@'}; uchar
w[14]={0x83,0x84,0x85,0x86,0x88,0x89,0x8b,0x8c,0xc4,0xc5,0xc7,0xc8,0xca,0xcb}; uchar a[14];
sbit E=P2^7; //1602使能引脚 sbit RW=P2^6; //1602读写引脚 sbit RS=P2^5; //1602数据/命令选择引脚
void Delay(uint xms); //延时 void Time0_Init(); //中断请求 void timer1_int(void); //中断 void charge(); //判断秒分时日月等是否大于额外值,若大于向上一位加一void ftime(); //初始时间 void timeon(); //计时 void add(); //自加 void sub(); //自减 void wcmd(uchar del); //1602写指令 void write(uchar del); //1602写数据 void L1602_init(void); //1602初始化 void second(); //秒显示 void minute(); //分显示 void hours(); //时显示 void days(); //日显示 void month(); //月显示 void years(); //年显示 void other(); //符号显示 void number(); //键盘输入数字
uint count,t; //中断执行次数,光标位置参数 uchar sec=0; //初始秒 uchar min=0; //初始分 uchar hour=0; //初始时 uchar day=0; //初始日 uchar mon=0; //初始月
第 12 页 共 26 页
code
福建工程学院软件学院 软件工程物联网工程
uchar yearh=0; //初始年前两位 uchar yearl=0; //初始年后两位
//1602命令函数
void wcmd(uchar del) { P0 = del; RS = 0; RW = 0; E = 1; Delay(1); E = 0; Delay(1); }
// 1602写数据函数 void write(uchar del) { P0 = del; RS = 1; RW = 0; E = 1; Delay(1); E = 0; Delay(1); } // 1602初始化 void L1602_init(void) { wcmd(0x38); wcmd(0x38); wcmd(0x38); wcmd(0x0e); wcmd(0x06); wcmd(0x01); }
//显示秒 void second()
第 13 页 共 26 页
福建工程学院软件学院 软件工程物联网工程
{
uchar i,j; i=sec/10; j=sec; wcmd(0xca); write(table[i]); write(table[j]); }
//显示分 void minute() {
uchar i,j; i=min/10; j=min; wcmd(0xc7); write(table[i]); write(table[j]); }
//显示时 void hours() {
uchar i,j; i=hour/10; j=hour; wcmd(0xc4); write(table[i]); write(table[j]); }
//显示日 void days() {
uchar i,j; i=day/10; j=day; wcmd(0x8b); write(table[i]); write(table[j]); }
第 14 页 共 26 页