计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

IC卡门禁系统-机电毕业论文网(4)

2013-07-29 01:07
导读:初始化I/O口 LCD_DATA_PORT |= ( ( command_temp 0xf0 ) 4 ) ; LCD_en_write() ; // 调整位置后写高四位命令 LCD_DATA_PORT = 0xf0 ; // 初始化I/O口 LCD_DATA_PORT |= command_temp 0x0f ; LCD_
初始化I/O口
      LCD_DATA_PORT |= ( ( command_temp & 0xf0 ) >> 4 ) ;
      LCD_en_write() ;          //  调整位置后写高四位命令
      LCD_DATA_PORT &= 0xf0 ;        // 初始化I/O口
      LCD_DATA_PORT |= command_temp & 0x0f ; 
      LCD_en_write() ;          //  写低四位命令
   }
}

  4.3.2  键盘扫描程序:  unsigned char Key_Scan( void )    // 键盘扫描程序  (返回按键值)
{
   unsigned char Key = 0 ;    //   定义按键值变量


   PORTD = 0x0f ;         //  PD0~PD3输出低电平,PD4~PD7上拉电阻
   DDRD  = 0xf0 ;        //  PD0~PD3定义为输出,PD4~PD7定义为输入
   if ( ( PIND & 0x04 ) == 0 )    
      Key_1 = 1 ;                     //   读取相应输入口的电平
   else if ( ( PIND & 0x02 ) == 0 )     //   以确定是否有按键按下
      Key_1 = 2 ;                      //   并赋予相应的Key值
   else if ( ( PIND & 0x01 ) == 0 )
      Key_1 = 3 ;


   delay_nms(50) ;                      //   延时50ms

(科教范文网 fw.nseac.com编辑发布)

   PORTD = 0xf0 ;         //  PD4~PD7输出低电平,PD0~PD3上拉电阻
   DDRD  = 0x0f ;        //  PD4~PD7定义为输出,PD0~PD3定义为输入
   if ( ( PIND & 0x80 ) == 0)      
      Key_1 += 0 ;
   else if ( ( PIND & 0x40 ) ==0 )         //   读取相应输入口的电平
      Key_1 += 3 ;
   else if ( ( PIND & 0x20 ) == 0 )     //   以确定是否有按键按下
      Key_1 += 6 ;
   else if ( ( PIND & 0x10 ) == 0 )       //   并赋予相应的Key值
      Key_1 += 9 ;
      
   return Key ;       //   返回按键值
}

  4.4  EEPROM读写程序  Atmega8芯片内集成有512个字节的EEPROM,擦写次数高达100000次。本系统的全部信息都存储在此EEPROM内,包括:登录密码、被允许的IC卡信息。所有输入的数据都要与EEPROM内的数据比较,符合要求的才能被允许。所以此EEPROM在本系统中起着到关重要的作用。EEPROM的读写程序如下:

// 写EEPROM程序      // 写入的地址形参    // 写入的数据                   void EEPROM_write( unsigned int uiAddress ,  unsigned char ucData )
{
   while(EECR & ( 1 << EEWE ) ) ;       // 等待上一次写操作结束
   EEAR = uiAddress ;              // 地址传递 (科教范文网 lw.nseaC.Com编辑发布)
   EEDR = ucData ;                     // 数据传递
   EECR |= ( 1 << EEMWE ) ;           //  置位EEMWE
   EECR |= ( 1 << EEWE ) ;          //  置位EEWE以启动写操作
}

 // 读EEPROM程序            // 读出的地址形参                            unsigned char EEPROM_read( unsigned int uiAddress )
{
   while ( EECR  &  ( 1 << EEWE ) ) ;       // 等待上一次写操作结束
   EEAR = uiAddress ;              // 地址传递
   EECR |= ( 1 << EERE ) ;            // 设置EERE以启动读操作
   return EEDR ;                    // 自数据寄存器返回数据
}

  参考文献:

  [1] 马潮、詹卫前、耿德根。Atmega8原理及应用手册。清华大学出版社,2004

  [2] 沈文、Eagle lee、詹卫前。AVR单片机C开发入门。清华大学出版社,2004

  [3] 马忠梅、籍顺心、张凯、马岩。单片机的C语言应用程序设计。北京航空航天大学出版社,2005

  [4] 郑莉、董渊。C++语言程序设计(第二版)。清华大学出版社,2004

  [5] 胡键。单片机原理及接口技术。出版社,2005

  [6] 谢自美。线路设计-实验-测试(第二版)。华中科技大学出版社,2004

  [7] 和飞、周苏平。2006届本科生优秀(设计)选。广东人民出版社,2006

上一篇:基于PXI总线的高速数字传输模块设计及正交解调 下一篇:没有了