⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 miam.c

📁 C语言编写的密码锁,能实现三次输入,如果三次不对就锁定,有万能密码.
💻 C
📖 第 1 页 / 共 2 页
字号:
//用于MCS51的C语言例子程序
//这是用于7279A评估板的C51子程序
#include<reg51.h>
#include <intrins.h>
#include <absacc.h>
 #define  uint  unsigned int
#define  uchar unsigned char
static unsigned int count;  //计数
static int step_index;  //步进索引数,值为0-7

static bit turn;  //步进电机转动方向
static bit stop_flag;  //步进电机停止标志
static int speedlevel; //步进电机转速参数,数值越大速度越慢,最小值为1,速度最快
static int spcount;    //步进电机转速参数计数
void delay(unsigned int endcount);  //延时函数,延时为endcount*0.5毫秒
void gorun();          //步进电机控制步进函数

//***函数定义***
sbit AA=P3^7;
  sbit BB=P3^6;
 sbit CC=P3^5;
 sbit DD=P3^4;
  sbit zz=P3^3;
 sbit fz=P3^2;
unsigned char mk;

static unsigned int count;
static int step_index;

void delay1(unsigned int endcount);


void long_delay(void); //***长延时***
void short_delay(void); //***短延时***
void delay10ms(unsigned char); //延时10MS
void write7279(unsigned char, unsigned char);// 写入到HD7279
unsigned char read7279(unsigned char);// 从HD7279读出
void send_byte(unsigned char); //发送一个字节
unsigned char receive_byte(void); //接收一个字节
unsigned char WCKEY(void);
unsigned char pand(void);
 void lcdwshu(unsigned char)  ;
unsigned char key_number, j,i,k,m,n,equ;
unsigned int tmr;
unsigned long wait_cnter;
sbit cs=P1^0; // cs at P1.0
sbit clk=P1^1; // clk 连接于P1.1
sbit dat=P1^2; // data 连接于P1.2
sbit key=P1^3; // key 连接于P1.3
 sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P2^2;
sbit PSB = P2^3;          //串并口选择
sbit RES = P2^5;

sbit RD1 = P3^7;

unsigned char code logo[]={
 /*0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0x10,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x10,0x06,0x00,0x00,0x30,0x00,0x00,0x37,0xF8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x30,0x06,0x00,0x01,0x20,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x30,0x06,0x00,0x02,0x60,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x38,0x06,0x00,0x16,0x40,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0x3C,0x06,0x00,0x24,0x00,0x3F,0x80,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0x3C,0x0F,0x00,0x64,0x01,0xFF,0xF0,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0x3F,0x1F,0x00,0x60,0x0F,0xFF,0xFC,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x17,0xBF,0xE0,0x60,0x3F,0xFF,0xFE,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7F,0x80,0x80,0xFF,0x00,0x3F,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x01,0x80,0x00,
0x00,0x7E,0x01,0x81,0xF8,0x00,0x0F,0x01,0xE0,0x00,0x00,0x00,0x00,0x01,0xE6,0x00,
0x00,0x0E,0x03,0x43,0xEF,0xFC,0x0F,0x80,0xC0,0x00,0x00,0x00,0x00,0x03,0x7F,0x00,
0x00,0x0E,0x03,0x07,0xCF,0xFE,0x0F,0x80,0xC0,0x00,0x00,0x00,0x00,0x06,0x19,0x80,
0x00,0x0E,0x06,0x0F,0xBF,0xFE,0x0F,0x80,0xC0,0x00,0x3F,0x80,0x00,0x06,0x00,0xC0,
0x60,0x0E,0x06,0x1F,0x3F,0xBE,0x0F,0x00,0xC0,0x00,0xFF,0xC0,0x00,0x04,0x00,0xC0,
0x60,0x0E,0x0E,0x3C,0x7F,0x9E,0x0F,0x10,0xC0,0x81,0x80,0x60,0x01,0x84,0x00,0xC0,
0x60,0x0E,0x0C,0x38,0xFF,0xFE,0x1E,0x10,0xC1,0x83,0x00,0x21,0xC6,0x8C,0x00,0x60,
0x38,0x1E,0x18,0x70,0xFF,0xFE,0x3C,0x30,0xC3,0x0E,0x00,0x63,0x2C,0x8C,0xE0,0x30,
0x7F,0x9E,0x18,0x71,0xFF,0xFC,0x78,0x70,0xC3,0x18,0x00,0x62,0x29,0x8D,0xF8,0x18,
0x3E,0xBF,0x18,0xE1,0xFF,0xFC,0xF0,0x7C,0xC2,0x10,0x01,0xC2,0x25,0xF9,0x1E,0x08,
0x30,0x76,0x18,0xC1,0xFF,0xF1,0xE0,0xEC,0xC0,0x30,0x03,0x02,0x24,0xF9,0x03,0x8C,
0x20,0x66,0x11,0xC0,0xFF,0xE7,0x80,0x82,0x60,0x10,0x02,0x06,0x64,0x19,0x00,0x84,
0x20,0xC6,0x11,0x80,0xFF,0x9F,0x00,0x00,0xF0,0x19,0xC2,0x06,0x64,0x1F,0x10,0xCC,
0x01,0xC4,0x09,0x80,0x7F,0x7C,0x00,0x00,0xF8,0x0F,0x63,0x06,0x2C,0x1E,0x38,0xC8,
0x01,0x84,0x01,0x80,0x00,0xF8,0x0C,0x00,0xD8,0x00,0x23,0x06,0x38,0x12,0x01,0x98,
0x01,0x04,0x01,0x80,0x07,0xE0,0x18,0x00,0xCC,0x00,0x31,0x03,0x19,0xF6,0x01,0xF0,
0x00,0x04,0x01,0x98,0x7F,0x00,0x30,0x00,0x86,0x00,0x11,0x01,0x18,0x37,0x81,0x80,
0x00,0x04,0x01,0xC7,0xFC,0x00,0xE0,0x00,0x87,0x00,0x19,0x81,0x98,0x1D,0x9F,0x00,
0x00,0x04,0x01,0xC0,0x00,0x01,0x80,0x01,0x83,0x80,0x18,0xF0,0x98,0x18,0x03,0x00,
0x03,0x04,0x00,0xE0,0x00,0x07,0x00,0x01,0x01,0xC0,0xF8,0xD8,0x98,0xA8,0x03,0x00,
0x07,0x04,0x00,0xF0,0x00,0x1E,0x00,0x03,0x00,0xE0,0xC0,0x08,0x99,0xEF,0x3E,0x00,
0x0E,0x04,0x00,0x7C,0x00,0x7C,0x00,0x06,0x00,0x60,0xC0,0x08,0x99,0x12,0x36,0x00,
0x1C,0x04,0x00,0x3F,0xCF,0xF0,0x00,0x0C,0x00,0x30,0x40,0x0C,0x99,0x10,0x02,0x00,
0x3C,0x04,0x00,0x0F,0xFF,0xC0,0x00,0x38,0x00,0x18,0x7F,0xF8,0xFF,0x18,0x06,0x00,
0x3C,0x04,0x00,0x03,0xFF,0x00,0x00,0x60,0x00,0x00,0x3F,0xF0,0x66,0x1F,0xFC,0x00,
0x3C,0x04,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x3C,0x0C,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x3C,0x0C,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x3C,0x0C,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x18,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,




};

  //****** HD7279A指令 ******
#define CMD_RESET 0xa4  //复位(清除)指令
#define CMD_TEST 0xbf   //测试指令
#define DECODE0 0x80
#define DECODE1 0xc8
#define CMD_READ 0x15
#define UNDECODE 0x90
#define RTL_CYCLE 0xa3
#define RTR_CYCLE 0xa2
#define RTL_UNCYL 0xa1
#define RTR_UNCYL 0xa0
#define ACTCTL 0x98
#define SEGON 0xe0
#define SEGOFF 0xc0
#define BLINKCTL 0x88

#define FIRST_ADDR 0       //定义字符/汉字显示起始位置
//延时子程序
void delay(unsigned int t)
{  unsigned int i,j;
   for(i=0;i<t;i++)
      for(j=0;j<10;j++)
         ;
}

/*void delay1(unsigned int endcount)
{
 unsigned char i;
unsigned int j;
for (i=0;i<endcount;i++)
{
for(j=0;j<0x30;j++)
{
}
}
}    */

//测忙
void chk_busy()
{  RD1=1;
  delay(5);
   RS=0;
   RW=1;
   E=1;
   while((P0&0x80)==0x80);
   E=0;
   RD1=0;
}



//读数据
unsigned char lcdrd()
{  unsigned char i;
   RD1=1;
   P2=0xFB;
   _nop_();
   E=1;
   delay(5);
   i=P0;
   _nop_();
   E=0;
   return i;
}


//写数据
void lcdwd(unsigned char dispdata)
{  chk_busy();
    RD1=1;
  // _nop_();
   RS=1;
   RW=0;
   E=1;
   P0=dispdata;
   delay(5);
  // _nop_();
   E=0;
   //_nop_();
   P0=0xff;
}



//写指令代码
void lcdwc(unsigned char cmdcode)
{  chk_busy();
   RD1=1;
  // _nop_();

   RS=0;
   RW=0;
   E=1;
   P0=cmdcode;
   delay(5);
  // _nop_();
   E=0;
 //  _nop_();
   P0=0xff;
}
void Disp_img(unsigned char  *img)	//图形方式12864显示字模221 横向取膜
{
	unsigned char i,j;
	unsigned int k = 0;



        lcdwc(0x36); //图形方式
	for(i=0;i<32;i++)
  	{

                lcdwc(0x80+i);
                  lcdwc(0x80);


    	for(j=0;j<16;j++)
		{

                        lcdwd(img[k++]);
		}
  	}

 	for(i=0;i<32;i++)
  	{

                lcdwc(0x80+i);
                  lcdwc(0x88);

    	for(j=0;j<16;j++)
		{

                        lcdwd(img[k++]);
  		}
	}
}




//整屏显示
//当ii=0时显示上面128×32
//当ii=8时显示下面128×32
void lcdfill(unsigned char disdata)
{  unsigned char x,y,ii;
   for(ii=0;ii<9;ii+=8)
      for(y=0;y<0x20;y++)
         for(x=0;x<8;x++)
         {  lcdwc(0x36);
            lcdwc(y+0x80);        //行地址
            lcdwc(x+0x80+ii);     //列地址
            lcdwc(0x30);
            lcdwd(disdata);
            lcdwd(disdata);
         }
}

  void lcdwshu(unsigned char dispdata)
{
   chk_busy();
    RD1=1;
   _nop_();
   RS=1;
   RW=0;
   E=1;

   P0=dispdata+0x30;
   delay(5);
   _nop_();
   E=0;
   _nop_();
   P0=0xff;


}


//初始化
void lcdreset()
{  delay(2000);
   lcdwc(0x30);       //选择基本指令集
   lcdwc(0x30);       //选择8bit数据流
   delay(5);
   lcdwc(0x0c);       //开显示(无游标、不反白)
   delay(5);
   lcdwc(0x01);       //清除显示,并且设定地址指针为00H
   delay(5);
   lcdwc(0x06);       //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
}

void hzkdis(unsigned char code *s)
{  while(*s>0)
   {  lcdwd(*s);
      s++;
      delay(500);
   }
}

void hzklib()
{  lcdwc(0x80+FIRST_ADDR);
   hzkdis("Input number :");
   lcdwc(0x90+FIRST_ADDR);
   //hzkdis("乡音无改鬓毛衰。");
  // lcdwc(0x88+FIRST_ADDR);
   //hzkdis("儿童相见不相识,");
   //lcdwc(0x98+FIRST_ADDR);
  // hzkdis("笑问客从何处来。");
}
 void hzklib1()
{  lcdwc(0x90+FIRST_ADDR);
   hzkdis("密码错误!");
   //lcdwc(0x90+FIRST_ADDR);
   //hzkdis("乡音无改鬓毛衰。");
  // lcdwc(0x88+FIRST_ADDR);
   //hzkdis("儿童相见不相识,");
   //lcdwc(0x98+FIRST_ADDR);
  // hzkdis("笑问客从何处来。");
}

void hzklib2()
{   lcdwc(0x90+FIRST_ADDR);
   hzkdis("Three Times error!");
   lcdwc(0x88+FIRST_ADDR);
   hzkdis("or!");
  // lcdwc(0x88+FIRST_ADDR);
   //hzkdis("儿童相见不相识,");
   lcdwc(0x98+FIRST_ADDR);
  hzkdis("BABY!");
}



//*********读出********
unsigned char read7279(unsigned char command)
{
send_byte(command);
return(receive_byte());
}
 ///////////////////////////////
/////////////////////////////////////////////////////
void write7279(unsigned char cmd, unsigned char dta)
{
send_byte (cmd);
send_byte (dta);
}

//***发送***
void send_byte( unsigned char out_byte)
{
unsigned char i;
cs=0;
//long_delay();
for (i=0;i<8;i++)
  {
  if (out_byte&0x80)
    {dat=1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -