51单片机C语言,电子密码的验证输入程序,矩阵键盘用作输入,密码正确时,向串口送1,否则送0

作者&投稿:空尚 (若有异议请与网页底部的电邮联系)
密码键盘不同时使用,有这样的串口三通吗~

软键盘的基本原理就是用软键盘(不是靠键盘输入,而是用鼠标点击网页上的键盘,可以防止木马记录)来设置一个PIN密码,用这个密码来锁定或解锁帐号。
由于软键盘是随机生成的(每次键盘上数字的顺序都不同),除非使用快速截取屏幕或者监听网络数据包的方法,否则很难记录用户输入的密码,所以这样的方法可以保护密码安全。

楼主的题目,规模较大。
在这里,一般难以得到较理想的程序。

可以到百度文库搜一下。

#include<reg51.h>
#define uchar unsigned char
uchar keyval,keynum=0;
void t1isr() interrupt 3
{
uchar sccode,recode;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
P3=0x0f;  //发0扫描,列线输入
if ((P3 & 0x0f) != 0x0f)keynum++;  //有键按下
else keynum=0;
if(keynum>5) //按键保持在5次中断以上
{
keynum=0;
sccode = 0xef;    //逐行扫描初值
while((sccode&0x01)!=0)
{
    P3=sccode;
if((P3&0x0f)!=0x0f)
{
    recode=(P3&0x0f)|0xf0;
getkey((~sccode)+(~recode));
 }
        else
sccode=(sccode<<1)|0x01;
}
}
getkey(0);
}

void getkey(uchar key)
{
if(key==0){keyval=0xff;return;}
switch(key)
{
case 0x11:keyval=7;break;
case 0x12:keyval=4;break;
case 0x14:keyval=1;break;
case 0x18:keyval=10;break;
case 0x21:keyval=8;break;
case 0x22:keyval=5;break;
case 0x24:keyval=2;break;
case 0x28:keyval=0;break;
case 0x41:keyval=9;break;
case 0x42:keyval=6;break;
case 0x44:keyval=3;break;
case 0x48:keyval=11;break;
case 0x81:keyval=12;break;
case 0x82:keyval=13;break;
case 0x84:keyval=14;break;
case 0x88:keyval=15;break;
default:keyval=0xff;break;
}
}
main()
{
    uchar mima[]="12345678";
    uchar mmins[8];
    uchar i,num,sc;
TMOD=0x21;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TR0=1;
ET0=1;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x40;
EA=1;
num=0;
while(1)
{
if(keyval!=0xff){mmins[num]=keyval;num++;}
if(num>=8)
    {
    num=0;
    sc=1;
    for(i=0;i<8;i++)
        {
        if(mmins[i]!=mima[i]){sc=0;break;}
    SBUF=sc;
    while(TI==0);
    TI=0;
        }
    }
}

}


可以用proteus仿真,
懂事电子设计 Vgz


51单片机C语言程序,利用定时器1控制LED灯每隔100ms亮一个,并且数码管上...
include<reg51.h>#include<intrins.h>#define uchar unsigned char;uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; \/\/0到fuchar number,dat,time;void t0isr() interrupt 1{TH0=(65536-5000)\/256;TL0=(65536-...

求单片机程序(C语言),新手不会写
\/ 把P0.0定义K1,P0.1定义K2, P0.3定义K4,P1.0定义Y0,P1.1定义Y1,单片机低电平有效。K1光电开关(为触发开关)检测到物体时输出低电平,K2(检测开关)检测到物体时高电平,K4(检测开关)检测到物体时是低电平,Y0外接电机,Y1外接继电器。1、 在开机状态下,K1没有检测到物体(没有...

如何用开关控制LED闪烁快与慢两种效果单片机c语言程序及电路_百度知 ...
include<reg51.h> sbit a=P1^0;sbit b=P1^1;int i,k;void delay(int z){ for(i=z;i>0;i--)for(k=100;k>0;k--);} void main(){ while(1){ a=1,b=0;delay(随便写个数,大于0的,小于30000,用来控制灯闪烁的快慢);a=0,b=0;delay(和上面那个括号里的数一样);} ...

急求简单51单片机控制电路C语言程序
【2011-3-8已更新,有结果吱一下】砖头如下:inlcude <reg51.h> sbit OUT=P2^0;sbit Key=P3^3;define DELAYCONST 50000\/\/ define DELAYCONST2 20\/\/简单的定时参数设定。void Delay(char j){ unsigned int k,l;for(j=0;j<60;j++)for(k=0;k<DELAYCONST2;k++)for(l=0;l<DELAYCO...

需要一个C语言程序。51单片机控制:按键按一下,延迟1分钟后开灯,灯亮半...
如果对时间要求不精确,用软延时即可。include<reg52.h> define uchar unsigned char define uint unsigned int sbit s=P1^0;sbit led=P1^1;void delayms(uint i) \/\/1ms延时程序 { uchar j;for(;i>0;i--){ for(j=0;j<125;j++)\/\/如果延时时间误差较大,可按比例改变125这个数 \/\/取值...

用C语言编写一段程序,使用查表的方式使单片机控制DAC0832产生一个电压...
用C语言编写一段程序,使用查表的方式使单片机控制DAC0832产生一个电压值在0~5V之间的方波。#include<reg52.h> //包含头文件#include<intrins.h>#define uchar unsigned char /

...叫我学单片机.我想问一下,学单片机,除了要会c语言还要有什么基础吗...
C语言需要掌握的知识就那么3个条件判断语句、3个循环语句、3个跳转语句和1个开关语句。别小看这10个语句,用他们组合形成的逻辑要多复杂有多复杂。学习时要一条语句一条语句的学,学一条活用一条,全部学过用过这些关键语句后,相信你的C基础建立了。当基础打好以后,你会感觉到单片机不再难学了,...

怎么用单片机C语言编写驱动蜂鸣器发出7个音的电路图和程序代码(最好有...
0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, \/\/1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,} ;\/\/ 音阶频率表 定时器低八位 code unsigned char FREQL[]={ 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,0x21,0xE1,0x8C,...

单片机c语言编程100个实例
51单片机C语言编程实例 基础知识:51单片机编程基础 单片机的外部结构: 1. DIP40双列直插; 2. P0,P1,P2,P3四个8位准双向I\/O引脚;(作为I\/O输入时,要先输出高电平) 3. 电源VCC(PIN40)和地线GND(PIN20); 4. 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位) 5. 内置振荡电路,外部只要...

请问 有关用C语言描述单片机引脚高低电平语句,除了如P1_0表示p1.0口外...
用P1_0表示p1.0是要声明 sbit P1_0 = p1.0是吧?这样多一步变量的声明而已,用起来其实很方便呀。要是想用另外个方法的话,那就直接对p1整体赋值吧,但是这里有一点就是,对p1整体赋值但是又只想改变p1.0的值就要用与和或运算了 具体做法是:p1 = p1 | 0X80; 设置1 p1 = p1 & 0...

平鲁区15811814011: 怎么用c语言写一个51单片机的密码锁程序 -
况和倍他: 这是一个你这样的键盘扫描程序,你直接在最下面的switch case里面改一下,改成你要的功能就行了,然后再自己稍微添一下自己要的功能就ok了.做这些自己一定要亲自上手,不然真的没有意思.我只能提供这么点帮助了,希望能帮到你....

平鲁区15811814011: 51单片机4*3矩阵键盘6位密码锁c语言程序 -
况和倍他: #include<stdio.h> #include<reg51.h> #define uchar unsigned charuchar key; int i=0; char b[4]={'0','0','0','0'};//输入的密码放这里和初始的比较来判断是否密码正确 void keyscan() //扫描按键是否按下 { uchar temp; P3=0xfe; //扫描第一行 temp=...

平鲁区15811814011: 求51单片机C语言编的简易密码锁程序 -
况和倍他: 假设晶振为12M,数码管共阴,且由P1口控制器;LED高电平点亮. #includevoid delay(int); /*延时程序*/ sbit P3_0=P3^0; int main() { P3_0=0; /*发光二极管的初始状态为灭,即:未解锁*/ while(1) /*等待解锁*/ { P0=0x0FF; /*P0初始化,先全...

平鲁区15811814011: 基于51单片机的4位电子密码锁设计 -
况和倍他: 可以用C语言编程,同时用proteus仿真, 懂事电子设计 Vgz

平鲁区15811814011: (80C51单片机)设计4*4键盘及8位数码管显示构成的电子密码锁.的C语言程序. -
况和倍他: 4*4矩阵键盘检测程序(新手用),本程序用于检测4*4矩阵按键,先检测是否有按 键按下,如果有按键按下,由P1口读出相应的编码值,由P0经两片74HC573输出给8位数码管,P2^0位选,P2^1段选,P1接4*4矩阵按键#include #include //头文...

平鲁区15811814011: 51单片机四个按键输入四个密码一个按确认的c程序 -
况和倍他: 不是的,前面的判断加上for(j=0;j<4;j++) { in[j]=0; }的处理是,如果用户对密码的错误输入次数超过3次,就对密码数组(4个字符的串)置零,也就是恢复初始值的4个零状态. 呵呵,这个Keil C程序做得很简洁.

平鲁区15811814011: 51单片机C语言编程的密码锁程序,怎么实现对初始密码的修改并保存新密码?
况和倍他: 放数组里 ,如果要断电的话就存eeprom

平鲁区15811814011: 求单片机电子密码锁源程序 -
况和倍他:#include "REG51.H" #define LED P1 //宏定义 unsigned char Tx_buffer[4]; //全局变量,存放PC机输出的数据 void delaynms(unsigned int...

平鲁区15811814011: 求基于AT89C52的电子密码锁C语言程序,最好有原理图. -
况和倍他: 我在网上看到过一份基于单片机的电子密码锁,有电路原理图,protues仿真,源程序,你可到“谷歌”上搜索一下“基于51单片机的电子密码锁系统设计制作”,这款基于51单片机的电子密码锁系统,支持密码掉电保存功能!外置AT24C01保...

平鲁区15811814011: 求51单片机C语言编的密码锁程序 -
况和倍他: #include <reg52.h> #define uint unsigned int #define uchar unsigned char #define BIN(a,b,c,d,e,f,g,h) ((a<<7)+(b<<6)+(c<<5)+(d<<4)+(e<<3)+(f<<2)+(g<<1)+(h<<0)) //下面的code表示数组存放在ROM中,因为这个数组的值不需要改写 uchar code ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网