控制/MCU
1 设计要求
(1) 基于MCS51单片机;
(2) 设计使用彩色液晶屏;
(3) 液晶屏上显示完成人的名字、学号;
(4) 具有温度监测、闹钟、密码锁等功能的时钟设计
2 设计方案
系统主要由彩色液晶屏、矩阵键盘、DS1302、DS18B20、串口中断、外部中断五部分组成。
彩色液晶屏显示用户输入密码界面,通过矩阵键盘进行密码输入,DS1302与DS18B20进行时钟与温度的采集,在彩色LCD上显示。按键KEY1进入中断进行时钟的调节,时钟调节通过串口命令进行调节。
3 设计内容
一:仿真图(原理图)
二:程序流程分析与实现
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;
}
全部0条评论
快来发表一下你的评论吧 !