本节无非是对上节的拓展以及实操展示,主要包含了按键控制LED流水灯和定时器时钟两个部分
1、为了简洁方便,我们可以在侧边栏中的Templates区设置某些较长的模板,省的费时费力
例如,main函数模板
2、独立按键K1控制LED流水灯
(这部分项目代码被我手贱删掉了,纯属不小心qaq,想来也容易,看实操理解下)
独立按键控制LED流水灯
3、定时器时钟
#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "Timer0.h"
unsigned char Sec=55,Min=59,Hour=23;
void main()
{
LCD_Init();
Timer0_Init();
LCD_ShowString(1,1,"Clock:");
LCD_ShowString(2,1," : :");
while(1)
{
LCD_ShowNum(2,1,Hour,2);
LCD_ShowNum(2,4,Min,2);
LCD_ShowNum(2,7,Sec,2);
}
}
void Timer0_Routine() interrupt 1
{
static unsigned int T0Count;
TL0 = 0x18; //设置定时初始值
TH0 = 0xFC; //设置定时初始值
T0Count++;
if(T0Count>=1000)
{
T0Count=0;
Sec++;
if(Sec>=60)
{
Sec=0;
Min++;
if(Min>=60)
{
Min=0;
Hour++;
if(Hour>=24)
{
Hour=0;
}
}
}
}
}
定时器时钟
附 矩阵键盘密码锁实操视频(就在这补上一条代码吧)
#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"
unsigned char KeyNum;
unsigned int Password,Count;
void main(){
LCD_Init();
LCD_ShowString(1, 1, "Password:");
while(1){
KeyNum = MatrixKey();
if(KeyNum)
{
if(KeyNum<=10) //如果S1~S10按下,输入密码
{
if(Count<4)//如果次数小于4才判断
{
Password*=10;//密码左移
Password += KeyNum%10; //获取一位密码
}
Count++;//计数输入的个数
}
LCD_ShowNum(2,1,Password,4);//更新显示
}
if(KeyNum == 11)//如果11按下,确定
{
if(Password == 2345)
{
LCD_ShowString(1, 14,"OK ");
Password = 0;//密码清零
Count = 0;//计次清零
LCD_ShowNum(2,1,Password,4);//更新显示
}else
{
LCD_ShowString(1, 14,"ERR");
Password = 0;//密码清零
Count = 0;//计次清零
LCD_ShowNum(2,1,Password,4);//更新显示
}
}
if(KeyNum == 12)//如果12按下,取消
{
Password = 0;//密码清零
Count = 0;//计次清零
LCD_ShowNum(2,1,Password,4);//更新显示
}
}
}
51单片机实操--矩阵键盘密码锁