89c52rc单片机机基于AT89S52键盘编码技术。求代码

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
基于AT89S52单片机的电子密码锁(下载送原程序、论文与指导等).doc28页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:100 &&
基于AT89S52单片机的电子密码锁(下载送原程序、论文与指导等),单片机密码锁程序,单片机电子密码锁,单片机密码锁,单片机电子密码锁设计,单片机密码锁课程设计,单片机密码锁设计,基于单片机的密码锁,基于单片机密码锁设计,单片机密码锁实现功能
你可能关注的文档:
··········
··········
基于AT89S52单片机的电子密码锁
单片机技术是智能化检测与控制领域应用非常普及并且具有很大潜力的技术。论文阐述一个基于单片机的液晶显示电子密码锁的设计与实现。系统采用美国Atmel公司的AT89S52单片机作为系统核心,液晶显示器LCD1602作为输出设备显示系统提示信息,4*4矩阵键盘作为输入设备,CMOS串行E2PROM存储器AT24C02作为数据存储器,配合蜂鸣器、继电器等电路构成整个系统硬件;系统软件采用C语言编写。设计的系统液晶显示,密码修改方便,具有报警、锁定等功能,使用便捷简单,符合住宅、办公用锁需求,具有一定的实用价值。
关键词:密码锁;单片机;AT89S52;LCD1602;AT24C02
The Design of LCD Electronic Password-Lock Abstract
SCM technology is very popular and has great potential in application of intelligent detection and control field. This thesis describes the design and implementation of LCD electronic password-lock system based on SCM. The system uses the product of America Atmel corporation AT89S52 as the core of system, liquid crystal monitor 1602 as the output device displaying the prompt information of system, 4*4 matrix membrane keyboard as the input device, serial E2PROM memory AT24C02 as the data storage, with buzzer, relay, and other circuits together constitute the system hardware. The software of the system is written in assembly language. The designed system display in LCD, change password easily, has the function of alarming, locking, and so on. This system is simple and easy to use, meets the demand of residential, office lock needs, has some practical value.
Key words: Password-L SCM; AT89S52; LCD1602; AT24C02
2 系统设计 2
2.1 功能设计 2
2.2 结构设计 3
3 硬件设计 3
3.1 AT89S52简介 4
3.2 液晶显示电路 6
3.2.1 LCD1602简介 6
3.2.2 LCD1602电路 7
3.3 发声电路 8
正在加载中,请稍后...君,已阅读到文档的结尾了呢~~
at89s52单片机 八位单片机 at89s52 at89s52中文资料 stc89c52与at89s52 at89s52引脚图 at89c52 at89s52 at89s52最小系统 proteus at89s52 at89s52封装
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
关于AT89S52八位单片机计算机
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口求单片机&AT89S52&大神帮我解题~~小弟在此跪了~_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:116,671贴子:
求单片机&AT89S52&大神帮我解题~~小弟在此跪了~收藏
小弟直接写出编码了,8位数数码管显示年月日时走动的,按键可以控制月、星期、时、分加减的。#include&at89x52.h&#define uchar unsigned charbit display_bz=0;uchar a=20;uchar code duanma[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0-9的段码表uchar time[4]={7,23,59,58};//定义时间数组uchar date[4]={20,12,2,28};//定义日期数组void delay (uchar y)
/*ms函数*/{
for(;y&0;y--)
for(z=0;z&125;z++)
/*等待1ms*/}void led_time(void)//时间显示函数{
P2=0x7f;//位码
P0=duanma[time[0]%10];//段码4
P2=0//位码
P0=0//段码
P2=0//位码
P0=duanma[time[1]/10];//段码0
P2=0//位码
P0=duanma[time[1]%10];//段码10
P2=0xf7;//位码
P0=duanma[time[2]/10];//段码
P2=0//位码
P0=duanma[time[2]%10];//段码
P2=0//位码
P0=duanma[time[3]/10];//段码
P2=0//位码
P0=duanma[time[3]%10];//段码
delay(3);}void led_date(void)
// 日期显示函数{
P2=0x7f; //位码
P0=duanma[date[0]/10]; //段码2
P2=0 //位码
P0=duanma[date[0]%10];
P2=0 //位码
P0=duanma[date[1]/10]; //段码1
P2=0 //位码
P0=duanma[date[1]%10]; //段码2
P2=0xf7; //位码
P0=duanma[date[2]/10]; //段码0
P2=0 //位码
P0=duanma[date[2]%10]; //段码5
P2=0 //位码
P0=duanma[date[3]/10]; //段码0
P2=0 //位码
P0=duanma[date[3]%10]; //段码2
delay(3);}void time1(void) interrupt 3 //50ms中断函数{
if(a==0)//判断是否够1秒
time[3]++;//秒加1
if(time[3]==60)//判断是否够60秒
time[3]=0;
time[2]++;//分加1
if(time[2]==60)//判断是否够60分
time[2]=0;
time[1]++;//小时加1
if(time[1]==24)//判断是否够24小时
time[1]=0;
time[0]++;//日加1
if(time[0]==8)//判断星期是否到星期1
time[0]=1;
date[3]++;//日期加1
if(date[2]==2)//判断日期是否是2月份
nian=date[0]*100+date[1];
if((nian%4)==0)//判断是否是闰年
if(date[3]&29)
date[3]=1;
date[2]++;//月加1
else//否则平年
if(date[3]&28)
{date[3]=1;date[2]++;}
if((date[2]==1)||(date[2]==3)||(date[2]==5)||(date[2]==7)||(date[2]==8)||(date[2]==10)||(date[2]==12))
if(date[3]&31)//判断月份天数是否为31天
{date[3]=1;date[2]++;}
if(date[3]&30)//判断月份天数是否为30天
{date[3]=1;date[2]++;}
if(date[2]&12)//判断是否够12个月
date[2]=1;
date[1]++;
else{}}void keyscan(void)
//键盘扫描函数{
uchar xunhuan,lie,key,
//P3口低4位输出0,高4位输出1
if((P3&0xf0)!=0xf0) //判断是否有键按下
delay(10);
//延时去抖动
if((P3&0xf0)!=0xf0) //再次判断是否有键按下
//逐行扫描初值
for(xunhuan=0;xunhuan&4;xunhuan++)
//循环4次扫描
/*逐行开放行值送P3*/
if((P3&0xf0)!=0xf0)
//判断本行是否有键按下
lie=P3&0xf0;
//把列的数据送key
key=lie|(zhuhang&0x0f);
//行信息和列信息相与成按键的代码
xunhuan=4;
{zhuhang=(zhuhang&&1)|(zhuhang&&7);}
//左移准备开放下一行
//P3口低4位输出0,高4位输出1
while((P3&0xf0)!=0xf0)//等待键松开
if(display_bz==0)
{led_time();}
//显示时间
{led_date();}
//显示日期
switch(key)
case 0xee:
time[2]++;
if(time[2]==60)
{time[2]=0;}
case 0xed:
if(time[2]==0)
{time[2]=59;}
{time[2]--;}
case 0xe7: //切换时间和日期的显示
display_bz=!display_
case 0xde://小时加1
time[1]++;
if(time[1]==24)
{time[1]=0;}
case 0xdd:
if(time[1]==0)
{time[1]=23;}
{time[1]--;}
case 0xbe://星期加1
time[0]++;
if(time[0]==8)
{time[0]=1;}
case 0xbd:
if(time[0]==1)
{time[0]=7;}
{time[0]--;}
case 0x7e:
date[3]++;
if(date[3]==32)
{date[3]=1;}
case 0x7d:
if(date[3]==1)
{date[3]=31;}
{date[3]--;}
} } }}void main(void){
TMOD=0x10;
if(display_bz==0)
{led_time();}
//显示时间
{led_date();}
//显示日期
keyscan();
}}但是老师给了我个问题,要求我把8位数码管显示星期1,0时0分0秒时,中间四个数码管不亮,第一第二第六第八个数码管正常显示,还要3秒后恢复正常。。。我听着挺容易的,结果我无从下手哦~~求大神帮忙解题,在线等~~小弟在此跪谢了!
我的问题是除了时期和时间的函数外 在添加一个函数 ,设置一个按键使的新的函数与时间 日期的函数切换,我弄的 切换了新函数,但是无法从新函数切换回来。
我真郁闷,我们学电力的,学校给我们安排一门C语言,真草蛋…
什么意思?说清楚点啊。。。
我们学校学电力的也学单片机的,好像能用的到的,怎么说呢,还是有好处的。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或  二.音乐产生的方法
  1.音频脉冲的产生
  一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来说产生不同的频率非常方便,我们可以利用单片机的定时/计数器TO来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。以单片机12M为例,列出高中低音符与单片机计数TO相关的计数值下表所示。
  为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:低音O -19之间,中音在20 - 39之间,高音在40 - 59之间。(#:表示半音,用于上升或下降半个音。)
  2.音乐节拍的产生
  每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,上表为节拍与节拍码的对照表。如果1拍为0.4s,1/4拍是0.1s,只要设定延迟时间就可求得节拍的时间。假设1/4拍为1DELAY,那么1拍对应为4DELAY,以此类推。所以只要求得1/4拍的DELAY,其余的节拍就是它的倍数,下表为1/4和1/8拍的时间设定。
  三.硬件设计
  本设计的原理图如上图所示。
  1.主控
  电路由AT89S52单片机控制,采用12MHz晶振。用其P3口,P3.0&P3.7作为4&4矩阵键盘的I/O口。P1.0作为音频信号输出端口。
  2.行列式键盘
  行列式键盘(也称矩阵式键盘)适用于按键数目较多的场合,它由行线和列线组成,按键位于行列的交点上。一个3&3的行列结构可以构成一个有9个按键的键盘。同理,一个4x4的行列结构可以构成一个16键的键盘,很明显,在按键数量较多的场合,矩阵式键盘与独立式键盘相比,要节省很多的I/O口线。按键设置在行列线交点上,行列线分别接到按键开关两端。行线通过接到+5V上。平时无按键按下时,行线处于高状态,而当有按键按下时,行线电平状态将由于此行线相连的列线电平决定。列线电平如果为低电平,则行线电平为低电平,列线电平如果为高电平,则行线电平为高电平。这是识别矩阵键盘按键是否按下的关键。于矩阵键盘中行列线为多键公用,各按键均影响该键所在行列的电平。因此各按键彼此将相互发生影响,所以必须将行列信号配合起来比做适当的处理,才能确定闭合键的位置。在本课题中,需要用到的按键比较多,所以采用了行列式键盘接口电路。如下图所示:
  3.音频输出电路
  本电路中采用LM386作为音频输出电路。LM386是一种音频集成,具有自身功耗低、增益可调整、电压范围大、外接元件少和总小等优点,广泛应用于录音机和收音机之中。为使外围元件最少,电压增益内置为20。但在1脚和8脚之间增加一只外接和,便可将电压增益调为任意值,直至200。输入端以地位参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。LM386引脚功能如下图所示。
  三.软件设计
  本设计采用单片机C语言进行编程,其参考程序见附表。
  四.调试
  根据原理图制作出的实物图如上图所示。该电路制作较为简单,调试时要注意LM386功放的使用方法。若想使用蜂鸣器发声,可在单片机P1.0口外接三极管驱动蜂鸣器,此处不做详述。
本网站试开通微、小企业商家广告业务;维修点推荐项目。收费实惠有效果!欢迎在QQ或邮箱联系!
试试再找找您想看的资料
资料搜索:
查看相关资料 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
copyright & &广电电器(中国梧州) -all right reserved& 若您有什么意见或建议请mail: & &
地址: 电话:(86)774-2826670&

我要回帖

更多关于 stc89c52单片机简介 的文章

 

随机推荐