云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于单片机控制的新型智能台灯 - 图文

基于单片机控制的新型智能台灯 - 图文

  • 62 次阅读
  • 3 次下载
  • 2026/1/27 17:06:21

哈尔滨理工大学学士学位论文

附录A

系统整体电路图

- 32 -

哈尔滨理工大学学士学位论文

附录B

/*头文件*/

#include #include

#define uint unsigned int #define uchar unsigned char #define nop() _nop_()

sbit lcd_rs_port = P3^5; /*定义LCD控制端口*/ sbit lcd_rw_port = P3^6; sbit lcd_en_port = P3^4; #define lcd_data_port P0 #define LED P2

sbit guang1=P1^5;//感光检测端口1 sbit guang2=P1^6;//感光检测端口2 sbit hongwai=P1^7;//红外检测端口 sbit beep=P3^0;//蜂鸣器控制端口 sbit rest=P3^1;//休息电路控制端口

sbit T_CLK = P3^2; /*实时时钟时钟线引脚 */ sbit T_IO = P3^7; /*实时时钟数据线引脚 */ sbit T_RST = P3^3; /*实时时钟复位线引脚 */ sbit ACC0 = ACC^0; sbit ACC7 = ACC^7;

sbit s1=P1^0;//功能选择键 sbit s2=P1^1;//加一键 sbit s3=P1^2;//减一键 sbit s4=P1^3;//确认键 sbit s5=P1^4;//调整光强键

bit flag;//标志位flag,表示是否进入调时状态 uint snum;//s1键按下的次数 uint snum1;//s5键按下的次数

uchar miao,fen,shi,ri,yue,nian,zhou,temp;

uchar code mun_to_char[] = {\/*定义数字跟ASCII码的关系*/ uchar data time_data_buff[7]={0x45,0x59,0x21,0x20,0x06,0x04,0x13};/*格式为:

- 33 -

哈尔滨理工大学学士学位论文

秒 分 时 日 月 星期 年 */ uchar data lcd1602_line1[]={%uchar data lcd1602_line2[]={%uchar code Weeks[][3]={{\T\

uchar code REST1[]={%uchar code REST2[]={\

/************************按键扫描***********************/ void keyscan() {

if(s1==0) //按键1按下,时间停止,显示光标,移动 {

delay(60);//延时去抖 if(s1==0) { flag=1;//标志置1,进入调试为 lcd_command_write(0x0f);//显示光标 lcd_command_write(0x80+0x40+7); miao=time_data_buff[0]; //把读取的值保存到秒 fen=time_data_buff[1]; shi=time_data_buff[2]; ri=time_data_buff[3]; yue=time_data_buff[4]; zhou=time_data_buff[5]; nian=time_data_buff[6]; snum++;//s1键按下的次数 while(!s1);//等待键释放 if(snum==1)//按下s1的次数为1,光标在秒处 { lcd_command_write(0x80+0x40+7); }//光标移动到“秒”处 if(snum==2)//按下s1的次数为2,光标移动到分处 { lcd_command_write(0x80+0x40+4); } if(snum==3)//按下s1的次数为1,光标在小时处 { lcd_command_write(0x80+0x40+1); } if(snum==4)//按下s1的次数为1,光标在日期处 { lcd_command_write(0x80+9); } if(snum==5)//按下s1的次数为1,光标在月份处 { lcd_command_write(0x80+6); }

- 34 -

哈尔滨理工大学学士学位论文

if(snum==6)//按下s1的次数为1,光标在年份处 { lcd_command_write(0x80+3); } if(snum==7)//按下s1的次数为1,光标在星期处 { lcd_command_write(0x80+13); } if(snum==8)snum=0;//snum清零回到秒处 } } if(s2==0) //s2键按下,说明光标处加一 { delay(60);//延时去抖 if(s2==0) { while(!s2); if(snum==1) //秒 60秒 { int x1,x2,i; lcd_command_write(0x80+0x40+7); x1=miao%0x10;//秒的个位 把秒16进制转换为十进制 x2=miao/0x10;//秒的十位 x1++; //秒的个位自加一 if(x1>=10) {x1=0;x2++;if(x2>=6)x2=0;}//个位加满10后,清零,向十位进一,十位加到6后,清零 miao=x1+x2*16; //把十进制转换为十六进制 time_data_buff[0]=miao; //把秒送到time_data_buff保存 lcd1602_line2[6]=mun_to_char[miao/0x10]; lcd1602_line2[7]=mun_to_char[miao%0x10];

for(i=6;i<8;i++)lcd_char_write(i,1,lcd1602_line2[i]);//显示秒 } if(snum==2) //分 60分 { int x1,x2,i; lcd_command_write(0x80+0x40+4); x1=fen%0x10;//分的个位 x2=fen/0x10;//分得十位 x1++; if(x1>=10)

- 35 -

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

哈尔滨理工大学学士学位论文 附录A 系统整体电路图 - 32 - 哈尔滨理工大学学士学位论文 附录B /*头文件*/ #include #include #define uint unsigned int #define uchar unsigned char #define nop() _nop_() sbit lcd_rs_port = P3^5; /*定义LCD控制端口*/ sbit lcd_rw_port = P3^6; sbit lcd_en_port = P3^4; #define lcd_data_port P0 #define LED P2 <

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com