基于51单片机的密码保护的串口可调节时钟设计案例

控制/MCU

1883人已加入

描述

1 设计要求

(1) 基于MCS51单片机;

(2) 设计使用彩色液晶屏;

(3) 液晶屏上显示完成人的名字、学号;

(4) 具有温度监测、闹钟、密码锁等功能的时钟设计

2 设计方案

系统主要由彩色液晶屏、矩阵键盘、DS1302、DS18B20、串口中断、外部中断五部分组成。

彩色液晶屏显示用户输入密码界面,通过矩阵键盘进行密码输入,DS1302与DS18B20进行时钟与温度的采集,在彩色LCD上显示。按键KEY1进入中断进行时钟的调节,时钟调节通过串口命令进行调节。

3 设计内容

一:仿真图(原理图)

GPIO

二:程序流程分析与实现

1.基本信息在LCD上显示(包括图片、账号密码与学生的信息)

LCD_DrawPic(10,110,120,120,gImage_color);

//个人信息显示

for(i=0;i<6;i++)

dischinese2(160+i*24,120,i,YELLOW);

for(i=0;i<3;i++)

dischinese2(160+i*24,150,i+6,PINK);

LCD_ASCII16x24(160,180,xuehao, RED);

for(i=0;i<8;i++)

dischinese2(5+i*24,0,i+15,GREEN);

//用户信息显示

for(i=0;i<3;i++)

dischinese2(5+i*24,30,i+9,GREEN);

LCD_ASCII16x24(5+i*24,30,dat,ORANGE);

for(i=0;i<3;i++)

dischinese2(5+i*24,60,i+12,GREEN);

2.密码输入

l

采用矩阵键盘进行输入

unsigned char Keydown() //键盘识别函数。有键按下返回键值0~15,无键按下返回0xff

{

uchar row,col=0,k=0xff; //定义行、列、返回值变量

GPIO_KEY=0xf0;

if((GPIO_KEY&0xf0)==0xf0)

return k; //无键按下,返回

delay(20); //延时去抖

if((GPIO_KEY&0xf0)==0xf0)

return k; //抖动引起,返回

for(row=0;row<4;row++) //行扫描

{

GPIO_KEY=~(0x01<

k=GPIO_KEY&0xf0;

l

密码识别与处理

----密码输入正确时进入用户界面,密码错误时显示密码错误并消除上次输入的密码,进行重新输入

int password = 456;//密码定义

//密码判断

while(goflage == 0)

{

KeyValue = Keydown();

if(flage == 1)

{

inword = inword + KeyValue*pow(10,j);

j --;

if(j==-1)

{

j = 2;

}

LCD_ASCII16x24(72+px 24, 60," ", GREEN);

px ++;

if((inword+1) == password)

{

goflage = 1;

}

GPIO

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分