基于单片机的IC卡读写 - 图文(3)

2019-04-22 08:32

图4:实物验证结果

实物验证可以实现IC卡的读写,由于每个开发板不同,相比仿真程序,对实物验证程序进行了略微的修改,最小系统的LCD1602口不能使用使用外接杜邦线,为了稳定最终选择重新字节焊接板子,最终能达到要求。

方案二:实验步骤: 1.电路图如图5所示:

图5:方案一电路图 2.刷卡前后显示以及操作,如下图6:

图6:方案一实现图

3.根据电路图编写C语言部分主要代码: 代码如下:

#include \#include \#include \#include \#include \#include \#include \#include \#include \#include \void init_all(void) {EA = 0; PT1 = 1;

init_timer(); Serial_init() ; init_rc522(); lcd_init();

EEPROM_READ(0,Card_SN_BUF,4); EEPROM_READ(1,Card_SN_BUF1,4); EEPROM_READ(2,Card_SN_BUF2,4); EEPROM_READ(3,Card_SN_BUF3,4); EEPROM_READ(4,Card_SN_BUF4,4); EEPROM_READ(5,Card_SN_BUF5,4); EEPROM_READ(6,Card_NUM_BUF,1); EEPROM_READ(7,KEY_BUF,8); EA = 1; }

void main(void) {INT8U key;

relay_OFF(); Delay_ms(500); init_all(); LED_BLINK_1(); display(0,0,7); display(1,0,8); display(2,0,9); display(3,0,10); Delay_ms(500); Delay_ms(500); Delay_ms(500); Delay_ms(500); Delay_ms(500);

display_clear_line(0); display_clear_line(1); display_clear_line(2); display_clear_line(3); display(0,0,0); while(1)

{ key=key_scan();

if(key==12) if(states>0) states--; else states=0;

if(key==13) if(++states>3) states=3; ctrl_process(); }} #include #include

#define uchar unsigned char #define uint unsigned int

#define LCD_data P0 //数据口

sbit LCD_RS = P2^2; //寄存器选择输入 sbit LCD_RW = P2^1; //液晶读/写控制 sbit LCD_EN = P2^0; //液晶使能控

uchar code dis0[]=\卡读写系统 %uchar code dis1[]=\卡输入 %uchar code dis2[]=\密码输入:8位 %uchar code dis3[]=\卡登记 %uchar code dis4[]=\密码设置:8位 %uchar code dis5[]=\成功 %uchar code dis6[]=\失败 %uchar code dis7[]=\桂林电子科技大学%uchar code dis8[]=\控制工程 \

uchar code dis9[]=\接口实验 \ uchar code dis10[]=\司亚 \void delay(int ms) //延时xms {while(ms--) { uchar i;

for(i=0;i<250;i++)

{_nop_();_nop_();_nop_();_nop_();}}} void delayNOP() //延时4us

{ _nop_(); _nop_(); _nop_(); _nop_();} bit lcd_busy()

{ bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP();

result = (bit)(LCD_data&0x80); LCD_EN = 0;

return(result); }

void write_cmd(uchar cmd) { unsigned int K=20000;

while(lcd_busy() && K--); //预防没插LCD时候停在这 LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_();

LCD_data = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; }

void lcd_wdat(uchar dat) { unsigned int K=20000;


基于单片机的IC卡读写 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:上林湖风景名胜区

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: