
硬件: 输入 键盘 输出 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单机片程序怎么备份出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)