C51大作业

发布 2023-05-17 06:27:28 阅读 5563

《c51程序设计》大作业。

设计题目。班级。

学号。姓名。

成绩。1 设计任务。

本次密码锁的设计,其主要具有如下功能:

1) 设置6位密码,密码通过键盘输入,弱密码正确,则将锁打开。

2) 密码可以由用户自己修改设定(6位密码),密码输入正确才能修改密码。修改密码之前必须再次输入密码,再输入新密码之前需要二次确认,以防止误操作。

3) 报警、锁定键盘功能。密码输入错误会发出警告音。若密码输入错误次数超过3次,蜂鸣器报警并锁定键盘。

4) 有效按键提示。

5) 90秒定时中断,输入控制信号,防止长时间无效操作。

6) 其他扩展功能。

2电路原理图。

硬件原理图2.1所示。

图2.1硬件原理图。

3 系统流程图。

程序流程图,见图3.1所示。否 是是。

否否。否。

是。图3.1程序流程图。

4 源程序。

#include <>

unsigned char code ps=unsigned char code dispcode=unsigned char pslen=9;

unsigned char templen;

unsigned char digit;

unsigned char funcount;

unsigned char digitcount;

unsigned char psbuf[9];

bit cmpflag;

bit hibitflag;

bit errorflag;

bit rightflag;

unsigned int second3;

unsigned int aa;

unsigned int bb;

bit alarmflag;

bit exchangeflag;

unsigned int cc;

unsigned int dd;

bit okflag;

unsigned char oka;

unsigned char okb;

void main(void)

unsigned char i,j;

p2=dispcode[digitcount];

tmod=0x01;

th0=(65536-500)/256;

tl0=(65536-500)%256;

tr0=1;

et0=1;

ea=1;while(1)

if(cmpflag==0)

if(p3_6==0) /function keyfor(i=10;i>0;i--)

for(j=248;j>0;j--)

if(p3_6==0)

if(hibitflag==0)

funcount++;

if(funcount==pslen+2)funcount=0;

cmpflag=1;

p1=dispcode[funcount];

elsesecond3=0;

while(p3_6==0);

if(p3_7==0) /digit keyfor(i=10;i>0;i--)

for(j=248;j>0;j--)

if(p3_7==0)

if(hibitflag==0)

digitcount++;

if(digitcount==10)

digitcount=0;

p2=dispcode[digitcount];

if(funcount==1)

pslen=digitcount;

templen=pslen;

else if(funcount>1)

psbuf[funcount-2]=digitcount;

elsesecond3=0;

while(p3_7==0);

elsecmpflag=0;

for(i=0;i

if(ps[i]!=psbuf[i])

hibitflag=1;

i=pslen;

errorflag=1;

rightflag=0;

cmpflag=0;

second3=0;

goto a;

cc=0;errorflag=0;

rightflag=1;

hibitflag=0;

a: cmpflag=0;

void t0(void) interrupt 1 using 0th0=(65536-500)/256;

tl0=(65536-500)%256;

if((errorflag==1) &rightflag==0))bb++;if(bb==800)

bb=0;alarmflag=~alarmflag;

if(alarmflag==1)

p0_0=~p0_0;

aa++;if(aa==800)

aa=0;p0_1=~p0_1;

second3++;

if(second3==6400)

second3=0;

hibitflag=0;

errorflag=0;

rightflag=0;

cmpflag=0;

p0_1=1;

alarmflag=0;

bb=0;aa=0;

if((errorflag==0) &rightflag==1))p0_1=0;

cc++;if(cc<1000)

okflag=1;

else if(cc<2000)

okflag=0;

elseerrorflag=0;

rightflag=0;

hibitflag=0;

cmpflag=0;

p0_1=1;

cc=0;oka=0;

okb=0;

okflag=0;

p0_0=1;

if(okflag==1)

oka++;

if(oka==2)

oka=0;

p0_0=~p0_0;

elseokb++;

if(okb==3)

okb=0;

p0_0=~p0_0;

C51大作业

河南机电高等专科学校。c51程序设计 大作业。设计题目 报警器 班级。学号。姓名。成绩。2012年5月。报警器。一设计任务。利用开关控制报警器,当开关闭合报警信号报警,当开关断开告警信号停止,并编写程序。二设计原理。500hz音频信号的周期为2ms,信号电平为每1ms变反1次 1khz的信号周期为1...

C51大作业

河南机电高等专科学校。c51程序设计 大作业。设计题目 数字示波表 班级 应电 092 学号 090415119 姓名 吴君堂 成绩。2011年11月。1 设计任务。1 用单片机stc12c5a60s2为主控芯片设计一数字示波表。2 能对连续信号进行采集并实时显示,且具有锁存功能。3 测量电压幅度范...

C51大作业

河南机电高等专科学校。c51程序设计 大作业。设计题目 篮球计时计分器 班级 医电 101 班 学号 1 0 0 4 1 1 1 0 8 姓名 任天意 成绩。2012年5月20 1 设计任务 该篮球计时计分器,采用了80c51作为主要的控制部件,利用它的内部定时器实现计时50ms,然后软件实现1秒钟...