论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
3.5.2 查询按下键所在的行、列位置。单片机将得到的信号取反,PD4~PD7口中为了的位便是按键所在的列,确定行位置原理相同。
3.5.3 键的抖动处理。当用手按下一个键时,往往会出现所按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也会出现类似的情况这就是键抖动。抖动的持续时间不一,通常不会大于10ms。若抖动问题不解决,就会引起对闭合键的多次读入。解决键抖动最方便的方法就是:当发现有键按下后,不要立即进行逐行扫描,而是延时10ms后现进行。由于键按下的时间持续上百ms,延时后再扫描也不迟。
3.6 字符型LCD显示模块 液晶显示器以其微功耗、体积小、重量轻、超薄型等诸多其他显示器件无法比拟的优点,在袖珍式登记表和低功耗系统中,得到越来越广泛的应用。本系统使用液晶显示模块作为人机交换界面显示,采用四线接法,大大节省了单片机的I/O口。
4系统软件设计
4.1 系统总体理论设计方框图 本系统最主要的部分是软件,所有的控制都是由单片机程序控制实现。上电开机后,LCD显示器第一行显示“Jason Janito”,第二行显“Total : 卡数/83”;然后门禁系统进入等待状态,等待期间不断检测是否有卡插入或按键按下,若有卡插入则验证该卡,若有键按下,在输入正确密码后进入设置菜单。整体操作流程图如图8所示。
SHAPE \* MERGEFORMAT
图8 整体流程图
4.2 IC电话卡验证、显示及减钱程序
当系统检测到有IC卡插入时,CPU Atmega8首先将IC卡内的全部数据读出并存储在数组IC_Codes_8[16]内,然后将数组与预先存储在EEPROM中的IC卡数据作比较,如果全部数据相同则表示该卡允许放行,以绿灯提示,并将IC电话卡内的余额显示在液晶显示器上;如果此时按下确定键,则进入IC卡减钱程序,在提示处输入要减去的金额(每次最多可减0.9元),按下确定键即可。部分程序如下:
void Read_Card ( void ) // 读卡程序(读取IC电话卡内的数据)
(科教作文网http://zw.ΝsΕAc.Com编辑整理)
(科教作文网 zw.nseac.com整理)
4.3 液晶显示与键盘扫描程序单片机应用系统通常都需要进行人—机对话。其中包括人对应用系统的状态干预与数据输入,应用系统向操作者显示状态与运行结果等信息。显示器与键盘是单片机应用系统中最常用的人—机交互设备。本系统应用到的液晶显示与键盘扫描程序如下:4.3.1 液晶显示程序(主要部分): // 液晶显示器命令、数据写入函数 // 命令形参 // 数据形参 void LCD_write_char( unsigned command , unsigned data )
{
unsigned command_temp , data_temp ; // 变量定义
command_temp = command ; // 命令传递 (转载自http://zw.NSEaC.com科教作文网)
data_temp = data ; // 数据传递
delay_nus(16) ; // 延时16us
if( command == 0 ) // 如果命令为0则写入数据
{
LCD_RS_PORT |= LCD_RS ; // RS=1
LCD_DATA_PORT& = 0Xf0 ; // 初始化I/O口
LCD_DATA_PORT |= ( ( data_temp & 0xf0 ) >> 4 ) ;
LCD_en_write() ; // 调整位置后写高四位数据
LCD_DATA_PORT &= 0Xf0 ; // 初始化I/O口
LCD_DATA_PORT |= data_temp & 0x0f ;
LCD_en_write() ; // 写低四位数据
}
else // 如果命令为1则写入命令
{
LCD_RS_PORT& = ~LCD_RS ; // RS=0
LCD_DATA_PORT &= 0Xf0 ; //