单片机技术与应用课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机技术与应用
课程设计
题目:电压数据采集报警显示系统设计
姓名:陈浩
学号:2201220104122
指导老师:徐灵飞
日期:2014-11-21
一、设计的性质与目的
性质:该设计是在学生学完《单片机原理及应用》和电子学相关课程的基础上,结合单片机、测控技术与仪器、机电子信息科学与技术和信息工程专业的特点进行的具有一定难度和覆盖面的综合性实践环节。
目的:综合运用所学的《单片机原理及应用》理论知识,通过实践加强对所学知识的理解,具备基本的单片机应用系统设计能力。
二、设计内容与要求
设计电压数据采集报警显示系统。相应的参考方案图如图1所示:
图1 电压和温度数据检测采集显示系统方案图
功能要求:
(1)、基本要求:采集电压信号,与预设的电压值(通过键盘设定)进行比较(比较过程要模仿迟滞比较器的功能,窗口大小自定),通过LED显示器实时显示采样值(能显示采样值以及报警预设值,通过按键进行显示切换),并能发出报警信号。
(2)、选做:在基本要求的基础上,能够将采集的数据以及报警信息通过串口上传到主机上。同时主机能够通过串口改变系统的报警预设电压值
三、实验注意事项
1.设计中所用仪器及设备均应按操作规程操作,实验前应仔细阅读指导书。
2.独立思考,发现问题尽量自己解决。
3.设计结果需经老师检查后方算完成。
四、设计方案
1.硬件流程图
2.软件流程
五、程序设计
蜂鸣器测试程序如下:
#include
void delay02s(void)
{
unsigned char i,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
void main(void)
{
while(1)
{
P0_0=0;
delay02s();
P0_0=1;
delay02s();
}
}
(2)
、键盘测试程序如下:
#include
unsigned
char
code
seg7code[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
unsigned char k;
void delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void Getch ( )
{
unsigned char X,Y,Z;
P1=0xff;
P1=0x0f;
if(P1!=0x0f)
{
delay10ms();
if(P1!=0x0f)
{
X=P1; P1=0xf0;
Y=P1;
Z=X|Y;
switch ( Z )
{
case
0x77: k=0; break;
case
0x7b: k=1; break;
case 0x7d: k=2; break;
case 0x7e: k=3; break;
case 0xb7: k=4; break; 9
case
0xbb: k=5; break;
case 0xbd: k=6; break;
case 0xbe: k=7; break;
case
0xd7:
k=8;
break;
case
0xdb:
k=9;
break;
case
0xdd:
k=10;break;
case
0xde:
k=11;break;
case
0xe7:
k=12;break;
case
0xeb:
k=13;break;
case
0xed:
k=14;break;
case
0xee:
k=15;break; } }
}
}
void main(void)
{
while(1)
{ P1=0xff;
Getch( );
P2=seg7code[k];
P0=0x0f;
}
}
#include
#define uc unsigned char
#define ui unsigned int
sbit L_OE=P3^4; //对各控制引脚进行定义;
sbit L_EOC=P3^5;
sbit L_ALE=P3^6;
sbit L_START=P3^7;
sbit L2=P2^0;
void delay(ui x) //延时子程序,延时时间由实参传值确定; {uc i;
while(x--)
{for(i=0;i<10;i++) {;}
}
}
//主程序;
void main()
{ void display5in0(uc zhi); //各个子程序的声明,延时程序在前则不必;void warning(uc zhi); void display10in0(uc zhi);
void display5in1(uc zhi);
void display10in1(uc zhi);
void AD_IN0();
void AD_IN1();
uc aa,bb;
while(1)
//
设置大循环,模数转换不停进行;