1 設計要求
(1) 基于MCS51單片機;
(2) 設計使用彩色液晶屏;
(3) 液晶屏上顯示完成人的名字、學號;
(4) 具有溫度監(jiān)測、鬧鐘、密碼鎖等功能的時鐘設計
2 設計方案
系統(tǒng)主要由彩色液晶屏、矩陣鍵盤、DS1302、DS18B20、串口中斷、外部中斷五部分組成。
彩色液晶屏顯示用戶輸入密碼界面,通過矩陣鍵盤進行密碼輸入,DS1302與DS18B20進行時鐘與溫度的采集,在彩色LCD上顯示。按鍵KEY1進入中斷進行時鐘的調節(jié),時鐘調節(jié)通過串口命令進行調節(jié)。
3 設計內容
一:仿真圖(原理圖)

二:程序流程分析與實現(xiàn)
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() //鍵盤識別函數(shù)。有鍵按下返回鍵值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;
}

電子發(fā)燒友App











評論