STC12C2052AD单片机用C语言编写一个读取密码的程序

STC12C2052AD单片机用C语言编写一个读取密码的程序,第1张

硬件: 输入 键盘 输出 led 数码管或者lcd(显示密码 ), 需要掉电密码不丢失的话 还需要使用 STC12C2052AD的内部eeprom 我这正好有个 写好的 需要 QQ:23665552

 //以下代码均是复制引用STC官方案例,还望多多包涵,祝你学习愉快

 

/------------------------------------------------------------------/

/ --- STC MCU Limited ---------------------------------------------/

/ --- STC89-90xx Series MCU A/D Conversion Demo -------------------/

/ If you want to use the program or the program referenced in the  /

/ article, please specify in which data and procedures from STC    /

/------------------------------------------------------------------/

#include "reg51h"

#include "intrinsh"

#define FOSC    18432000L

#define BAUD    9600

typedef unsigned char BYTE;

typedef unsigned int WORD;

/Declare SFR associated with the ADC /

sfr ADC_CONTR   =   0xC5;           //ADC control register

sfr ADC_RES     =   0xC6;           //ADC high 8-bit result register

sfr ADC_LOW2    =   0xC7;           //ADC low 2-bit result register

sfr P1ASF       =   0x97;           //P1 secondary function control register

/Define ADC operation const for ADC_CONTR/

#define ADC_FLAG    0x10            //ADC complete flag

#define ADC_START   0x08            //ADC start control bit

#define ADC_SPEEDHH 0x00            //89 clocks

#define ADC_SPEEDH  0x20            //178 clocks

#define ADC_SPEEDL  0x40            //356 clocks

#define ADC_SPEEDLL 0x60            //534 clocks

void InitUart();

void InitADC();

void SendData(BYTE dat);

BYTE GetADCResult(BYTE ch);

void Delay(WORD n);

void ShowResult(BYTE ch);

void main()

{

    InitUart();                     //Init UART, use to show ADC result

    InitADC();                      //Init ADC sfr

    while (1)

    {

        ShowResult(0);              //Show Channel0

        ShowResult(1);              //Show Channel1

        ShowResult(2);              //Show Channel2

        ShowResult(3);              //Show Channel3

        ShowResult(4);              //Show Channel4

        ShowResult(5);              //Show Channel5

        ShowResult(6);              //Show Channel6

        ShowResult(7);              //Show Channel7

    }

}

/----------------------------

Send ADC result to UART

----------------------------/

void ShowResult(BYTE ch)

{

    SendData(ch);                   //Show Channel NO

    SendData(GetADCResult(ch));     //Show ADC high 8-bit result

//if you want show 10-bit result, uncomment next line

//    SendData(ADC_LOW2);             //Show ADC low 2-bit result

}

/----------------------------

Get ADC result

----------------------------/

BYTE GetADCResult(BYTE ch)

{

    ADC_CONTR = ADC_SPEEDLL | ch | ADC_START;

    _nop_();                        //Must wait before inquiry

    _nop_();

    _nop_();

    _nop_();

    while (!(ADC_CONTR & ADC_FLAG));//Wait complete flag

    ADC_CONTR &= ~ADC_FLAG;         //Close ADC

    return ADC_RES;                 //Return ADC result

}

/----------------------------

Initial UART

----------------------------/

void InitUart()

{

    SCON = 0x5a;                    //8 bit data ,no parity bit

    TMOD = 0x20;                    //T1 as 8-bit auto reload

    TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate

    TR1 = 1;                        //T1 start running

}

/----------------------------

Initial ADC sfr

----------------------------/

void InitADC()

{

    P1ASF = 0xff;                   //Open 8 channels ADC function

    ADC_RES = 0;                    //Clear previous result

    ADC_CONTR = ADC_SPEEDLL;

    Delay(2);                       //ADC power-on and delay

}

/----------------------------

Send one byte data to PC

Input: dat (UART data)

Output:-

----------------------------/

void SendData(BYTE dat)

{

    while (!TI);                    //Wait for the previous data is sent

    TI = 0;                         //Clear TI flag

    SBUF = dat;                     //Send current data

}

/----------------------------

Software delay function

----------------------------/

void Delay(WORD n)

{

    WORD x;

    while (n--)

    {

        x = 5000;

        while (x--);

    }

}

stc单机片程序备份出来的方法如下:

1、把单片机中的程序拷贝出来主要需要使用专业的烧录器,用烧录器来读取单片机中的程序,然后将程序文件保存即可。

2、可以使用其他的调试软件来读取单片机中的程序,然后将程序文件保存至电脑中。

请先看看你的EEPROM读取一个字节数据需要多少字节的CLK信号,STC的SPI口一次读 *** 作只会产生一字节的CLK信号,也就是说绝大多少的SPI器件用STC的SPI口只能写不能读(包括NXP的8位MCU)

芯片:STC89C52RC

不用编程器烧录程序是可以的,因为STC芯片具有ISP功能

上位机软件STC-ISP,可以到STC宏晶网站下载,用法软件上写的很清楚,在这不细说了,你还可以在宏晶网站下载STC89C52RC的芯片,那里面有下载电路的接口,具体说来就是一个RS232模块,外加51最小系统,这种下载需要电脑上面有串口,台式机一般是没问题的,笔记本可能稍微麻烦些,需要找个USB转232的线,祝你好运,再不懂可以百度Hi给我留言,希望能帮到你

以上就是关于STC12C2052AD单片机用C语言编写一个读取密码的程序全部的内容,包括:STC12C2052AD单片机用C语言编写一个读取密码的程序、单片机型号为STC90C516AD,怎么用自带的AD转换读取数据麻烦大家写一下相应的子程序,稍详、stc单机片程序怎么备份出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9411459.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存