单片机c语言程序设计课程设计_密码锁(编辑修改稿)内容摘要:

** ******************************************************************************/void ini_8279(void){ c8279=0x00。 //编码扫描方式}/********************************24C02 Start************************************* 24C02启动程序** ******************************************************************************/void c_start(void){ SCL=0。 _nop_()。 SDA=1。 _nop_()。 SCL=1。 _nop_()。 SDA=0。 _nop_()。 SCL=0。 _nop_()。 //两线产生下降沿}/*********************************24C02 Stop************************************* 24c02停止程序 * ******************************************************************************/void c_stop(){ SCL=0。 _nop_()。 SDA=0。 _nop_()。 SCL=1。 _nop_()。 SDA=1。 //两线产生上升沿 _nop_()。 SCL=0。 _nop_()。 }/*****************************Respond Function*********************************** 24c02应答等待程序 * *****************************************************************************/void ack(){ while(SDA)。 //等待24c02应答 SCL=0。 _nop_()。 }/*****************************Data Shift Function********************************** 24c02串行输出移位程序** a:移位写入的字符*******************************************************************************/void s_move(char a){data unsigned char i。 _data=a。 for(i=0。 i8。 i++) //8位逐位写入 { SCL=0。 SDA=h_bit。 SCL=1。 _data=_data*2。 //左移一位 } SCL=0。 _nop_()。 SCL=1。 _nop_()。 //上升沿}/*****************************Delay Function************************************* 延迟程序 ******************************************************************************/void delay(unsigned int time){int i。 for(i=0。 i=time。 i++) { i=i。 }}/***************************Read Data From 24C02******************************** 从24c02读数据*********************************************************************************/unsigned char rd_24c02(char a){data unsigned char i,mand。 c_start()。 //启动24c02mand=0xa0。 s_move(mand)。 //送写入指令ack()。 //等待应答 s_move(a)。 //写入寄存器号ack()。 c_start()。 mand=0xa1。 s_move(mand)。 //送读取指令ack()。 SDA=1。 for(i=0。 i8。 i++) //逐位读取数据 {_data=_data*2。 //左移一位 SCL=0。 _nop_()。 SCL=1。 _nop_()。 l_bit=SDA。 //最低位写入 }c_stop()。 return(_data)。 //返回读取的数据}/***************************Write Data to 24C02*********************************** 送24c02数据 ******************************************************************************/void wr_24c02(char a,char b){unsigned char data mand。 c_start()。 //启动24c02mand=0xa0。 s_move(mand)。 //写入指令ack()。 s_move(a)。 //写入寄存器号ack()。 s_move(b)。 //写入数据ack()。 c_stop()。 _nop_()。 }/****************************LCD busy function************************************ LCD忙状态检测程序 ******************************************************************************/void lcd_busy(void){do { status=rs_ad。 //读取LCD状态,最高位判断是否忙 }while(busy)。 }/*******************************LCD Initializing*********************************** LCD初始化 ** **********************************************************************************/void ini_lcd(void){lcd_busy()。 wc_ad=0x30。 lcd_busy()。 wc_ad=0x0C。 lcd_busy()。 wc_ad=0x01。 lcd_busy()。 wc_ad=0x02。 lcd_busy()。 }/*********************LCD Display Position Function******************************** LCD显示位置指令写入程序*。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。