1602液晶显示 C语言单片机
更新时间:2024-04-23 20:40:01 阅读量: 综合文库 文档下载
- 1602液晶显示屏推荐度:
- 相关推荐
学习单片机半个月了,学得也差不多了,今天写一个写程序练习练习哈哈
跟电子表的功能一模一样,可以进行设置,准确度非常高哈哈,用的是1602型号的液晶显示器,大家只需要简单的修改一下端口就能应用到你自己的设计上去了.
下面是源代码:
#include
#define uchar unsigned char
#define uint unsigned int
uchar code year_table[]=\
uchar code time_table[]=\
uchar time_count,key_count;
char hour,minute,second,mouth,day,week;
uint year;
sbit rs=P3^5;
sbit lcden=P3^4;
sbit dula=P2^6;
sbit wela=P2^7;
sbit key_set=P3^0;
sbit key_inc=P3^1;
sbit key_dec=P3^2;
sbit rd=P3^7;
void delay(uint delay_time) {
uint x,y;
for(x=delay_time;x>0;x--)
for(y=110;y>0;y--); }
void write_com(uchar com) {
rs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0; }
void write_date(uchar date) {
rs=1;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0; }
void timer_Init() {
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
EA=1;
ET0=1;
TR0=1; }
write_time(uchar addr,uchar time) {
uchar shi,ge;
shi=time/10;
ge=time;
write_com(0x80+0x40+addr);
write_date(0x30+shi);
write_date(0x30+ge); }
write_day(uchar addr,uchar day) {
uchar shi,ge;
shi=day/10;
ge=day;
write_com(0x80+addr);
write_date(0x30+shi);
write_date(0x30+ge); }
write_year(uchar addr,uint year)
{
uchar shi,ge,qian,bei;
qian=year/1000;
bei=year00/100;
shi=year00/10;
ge=year;
write_com(0x80+addr);
write_date(0x30+qian);
write_date(0x30+bei);
write_date(0x30+shi);
write_date(0x30+ge); }
write_week(uchar addr,uchar week)
{
write_com(0x80+addr);
switch(week) {
case 1:
write_date('M');
write_date('O');
write_date('N');
break;
case 2:
write_date('T');
write_date('U');
write_date('E');
break;
case 3:
write_date('W');
write_date('E');
write_date('D');
break;
case 4:
write_date('T');
write_date('H');
write_date('U');
break;
case 5:
write_date('F');
write_date('R');
write_date('I');
break;
case 6:
write_date('S');
write_date('A');
write_date('T');
break;
case 7:
write_date('S');
write_date('U');
write_date('N');
break;
} }
void Init() {
uchar num;
dula=0;
wela=0;
lcden=0;
year=2010;
mouth=4;
day=11;
week=7;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<16;num++) {
write_date(year_table[num]);
delay(5); }
write_com(0x80+0x40);
for(num=0;num<12;num++) {
write_date(time_table[num]);
delay(5); }
timer_Init(); }
void keyscan() {
rd=0;
if(key_set==0)
{
delay(5);
if(key_set==0)
{
key_count++;
while(!key_set);//等待键盘释放
if(key_count==1)
{
TR0=0;
write_com(0x80+0x40+10);
write_com(0x0f);
}
if(key_count==2)
{
write_com(0x80+0x40+7);
}
if(key_count==3)
{
write_com(0x80+0x40+4);
}
if(key_count==4)
{
write_com(0x80+13);
}
if(key_count==5)
{
write_com(0x80+10);
}
if(key_count==6)
{
write_com(0x80+7);
}
if(key_count==7)
{
write_com(0x80+2);
}
if(key_count==8)
{
key_count=0;
write_com(0x0c);
TR0=1;
}
}
}
if(key_count!=0)
{
if(key_inc==0)
{
delay(5);
if(key_inc==0)
{
while(!key_inc);
if(key_count==1)
{
second++;
if(second==60)
{
second=0;
}
write_time(10,second);
write_com(0x80+0x40+10);
}
if(key_count==2)
{
minute++;
if(minute==60)
{
minute=0;
}
write_time(7,minute);
write_com(0x80+0x40+7);
}
if(key_count==3)
{
hour++;
if(hour==24)
{
hour=0;
}
write_time(4,hour);
write_com(0x80+0x40+4);
}
if(key_count==4)
{
week++;
if(week==8)
{
week=1;
}
write_week(13,week);
write_com(0x80+13);
}
if(key_count==5)
{
day++;
if(day==32)
{
day=1;
}
write_day(10,day);
write_com(0x80+10);
}
if(key_count==6)
{
mouth++;
if(mouth==13)
{
mouth=1;
}
write_day(7,mouth);
write_com(0x80+7);
}
if(key_count==7)
{
year++;
write_year(2,year);
write_com(0x80+2);
}
}
}
if(key_dec==0)
{
delay(5);
if(key_dec==0)
{
while(!key_dec);
if(key_count==1)
{
second--;
if(second==-1)
{
second=59;
}
write_time(10,second);
write_com(0x80+0x40+10);
}
if(key_count==2)
{
minute--;
if(minute==-1)
minute=59;
write_time(7,minute);
write_com(0x80+0x40+7);
}
if(key_count==3)
{
hour--;
if(hour==-1)
hour=23;
write_time(4,hour);
write_com(0x80+0x40+4);
}
if(key_count==4)
{
week--;
if(week==0)
{
week=7;
}
write_week(13,week);
write_com(0x80+13);
}
if(key_count==5)
{
day--;
if(day==0)
{
day=31;
}
write_day(10,day);
write_com(0x80+10);
}
if(key_count==6)
{
mouth--;
if(mouth==0)
{
mouth=12;
}
write_day(7,mouth);
write_com(0x80+7);
}
if(key_count==7)
{
year--;
if(year==2009)
{
year=2010;
}
write_year(2,year);
write_com(0x80+2);
}
}
}
} }
void main() {
Init();
while(1) {
keyscan(); } }
void clock_timer() interrupt 1 {
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
time_count++;
if(time_count==18)
{
time_count=0;
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
{
hour=0;
}
write_time(4,hour);
}
write_time(7,minute);
}
write_time(10,second);
} }
正在阅读:
1602液晶显示 C语言单片机04-23
论博学时代02-26
睾丸鞘膜积液直视下翻转临床路径03-24
桥梁工程课程设计09-25
新目标八年级英语上册全册导学案04-14
华师大二附中自主招生化学应试辅导第13讲:有机化合物05-12
半截蜡烛教学设计09-26
听讲座心得体会01-23
人教班三年级上册各单元复习重点03-08
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 单片机
- 液晶显示
- 语言
- 1602
- 材料力学期末考试试题(A卷)
- 一级建造师《建筑》第二章第五节练习题
- 鄂建文 152号 附件 人工挖孔桩(墩)的禁用范围及使用的主
- 刘晶星论文
- 医疗风险防范、控制的管理方法及预防
- 世界各国节日表
- 2010年赤峰市初中毕业语文提
- 转发市国土资源局关于推进旧村改造的实施办法的通知(珠府办[201
- 前轮侧滑的数据分析
- 我眼里的中国名校-衡水一中 - 图文
- 一通三防培训教案
- 《山西省地表水水环境功能区划表》
- 高考120个文言实词测练
- 启动备用变压器施工方案
- 武汉市初中数学总目录(2015新人教版-已排版)
- 2010年高考英语试题分类汇编 - 代词
- 2-2016清产核资审计报告 - 图文
- 辩论:诚信缺失是个人问题还是社会问题的总结陈词
- 入行论第七品思考题答案(095-110课)
- 框构小桥施工方案