《微型计算机系统》课程设计基于单片机的跑马灯设计(完整版)资料_第1页
《微型计算机系统》课程设计基于单片机的跑马灯设计(完整版)资料_第2页
《微型计算机系统》课程设计基于单片机的跑马灯设计(完整版)资料_第3页
《微型计算机系统》课程设计基于单片机的跑马灯设计(完整版)资料_第4页
《微型计算机系统》课程设计基于单片机的跑马灯设计(完整版)资料_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《微型计算机系统》课程设计基于单片机的跑马灯设计(完整版)资料(可以直接使用,可编辑优秀版资料,欢迎下载)

《微型计算机系统》课程设计基于单片机的跑马灯设计(完整版)资料(可以直接使用,可编辑优秀版资料,欢迎下载)《微型计算机系统》课程设计任务书题目名称:基于单片机的跑马灯设计专业自动化班自本132姓名刘鑫伟学号202128201学校:青岛理工大学自动化学院指导教师:史贺男2015年11月30日青岛理工大学自动化工程学院课程设计任务书课程名称:微型计算机系统设计题目:基于单片机的跑马灯设计系统硬件要求:根据实际要求,以MCS-51单片机为核心,设计3个按键,每个按键对应一个花样,可手动显示,即按一个按键,显示一种花样,也可以再设计一个按键用于连续显示每个花样,每个花样显示的时间和花样设计者自己规定,并在论文中给定。设计控制系统硬件电路,编写C语言或汇编语言程序,并用PROTEUS软件进行实时仿真。要求:(1)扩展接口(8255或8155),设计至少4个按键(2)设计至少32个LED(3)LED显示至少有3种花样,可单独显示也可自动循环显示软件设计: 1)主程序设计2)各功能子程序设计其他要求:每位同学独立完成本设计。2、依据题目要求,提出系统设计方案。3、设计系统电路原理图。调试系统硬件电路、功能程序。编制课程设计报告书并装订成册,报告书内容(按顺序)(1)报告书封面(2)课程设计任务书(3)系统设计方案的提出、分析(4)系统中典型电路的分析(5)系统软件结构框图(6)系统电路原理图(7)源程序(8)课设字数不少于3000字成绩评语目录第一节

AT89C51芯片分析………I第二节

设计概述

………………3第三节算法

………………..…5第四节编程技巧…………………7第五节电路设计及功能说明,硬件原理框图及电路图(包括接口芯片简介).8第六节调试过程中的主要难点(自己遇到的)及解决思路和办法;………….8课设结果及分析、收获、体会和建议;………….9参考文献

…………10附录1………………11附录2………………12第一节

AT89C51芯片分析

ATMEL的AT89S51是一种高效微控制器,将多功能8位CPU和闪烁存储器组合在单个芯片中,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51的芯片引脚图如下:各引脚的说明和功能分析如下:

VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0

口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指钟写入07H,其它专用寄存器被清“0”ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,

ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms

来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。第二节

设计概述

本程序设计意在展示跑马灯的色彩样式及“跑马”变换效果,如果将跑马灯做大,会有很高的观赏价值。通过对一些相关书籍资料的查阅及网上各种作品和代码的浏览,对各种实现代码的比较和优化,总结出本程序,以较优秀的代码实现各种可控的“跑马灯”功能。

硬件系统部分包括显示部分、按键控制部分和控制芯片。

系统框图如下:第三节算法

编译两个函数,分别是void

display(

)函数和void

delay(

)函数,前者是LED显示函数,后者是延时函数。

程序的开始,先定义各个参数、各口的地址以及各个位。

主函数中,定义y1、y2分别为PA口PB口的相应地址,控制各个LED灯的亮灭;m为显示函数void

display(

)中for循环的个数,控制LED灯亮灭循环;k1、k2分别为PA口PB口地址转移的个数,控制PA口PB口地址转移的方式;t为延迟的参数,顺、跳两模式定义不同的k值和m值。然后定义CPU的各个状态,使其正常工作。在顺序显示中,先进入while(1)循环,循环中两判断条件if(P1==0xfd),令k1=1,实现顺显示,和if(P1==0xfb),令k2=2实现跳显示。根据条件进入相应模式,各有一个LED灯亮、两个LED灯亮、四个LED灯亮、八个LED灯亮,和一个LED灯、两个LED灯、四个LED灯间隔亮

显示函数void

display(

)中,

两个for循环分别控制PA口PB口LED灯的循环模式,其中n为for循环的次数。先定义PA口PB口的首地址outdata1、outdata2进入循环,函数_cror_和_crol_控制他们地址不同的转移方式,k为其中的转移的个数。t为延迟函数的参数,控制亮灭延迟的时间。

延迟函数void

delay(

)中,t为延迟的参数,控制程序中所需的延迟时间。

程序中各个参数之间都一一对应,根据要求相互呼应。通过控制这些参数的量值来实现硬件仿真中多种跑马灯的运行模式。第四节编程技巧

设计中,我将与PA相连的LED灯顺序排列,与PB相连的逆序排列,要注意两组初始值并不相同,明确参数间的关系,多个参数组合使用,实现跑马灯的多种运行方式。

第五节电路设计及功能说明,硬件原理框图及电路图(包括接口芯片简介);

本次设计采用AT89C52芯片驱动可编程接口芯片8155的扩展来实现LED灯的多种显示方式。让AT89C52芯片的P0口与8155芯片的三态双向数据总线D0~D7连接,实现数据传送。当CPU

8155芯片PA口和PB口的工作方式。读写命令线分别与单片机的读写命令线相连,片选线直接接地,复位线RESET接单片机的P2.5。同时PA口与8个LED灯顺序连接。PB口与8个LED灯逆序连接,通过按键控制可以选择不同的运行模式,实现多种跑马灯的运行模式。第六节调试过程中的主要难点(自己遇到的)及解决思路和办法;

设计中与PA口连接的LED灯是顺序依次亮,与PB口连接的LED灯是逆序依次亮,要注意PA初始状态分别是fe、fc、f0、00,PB初始状态分别是7f、3f、0f、00。

其次PB口跳跃亮,所以k2初始值为2。

课设结果及分析、收获、体会和建议;

通过此次为期两周的课程设计,我加深了对单片机以及C语言的认识和理解,使各部分的知识得到了进一步的巩固。将平时学的理论知识真正应用到实际中,实现了学与用相结合,应用单片机这一开发环境,软硬件结合来达到设计一实物的目的。同时还了解了两个专业软件:KEIL

C和PROTEUS仿真软件,现在基本熟悉了他们的应用与相关知识。

此次课程设计,关键的是整个课设过程,这中间有着我们的辛勤劳动和认真的思考,过程有些枯燥,但却十分有意义。仿真和程序的编写都会遇到很多问题,但我们保持耐心,认真对待,问题终会解决。整个过程认真坚持下来,你会收获很多,体会很多,不管是对以后的学习,还是对我们的自身本事的锻炼,这些都是我们非常宝贵的财富。

课设过程中遇到的苦难,通过对设计的认真分析以及与同学们的讨论,找到了其中的出错点,将其改正,每个问题都这样一一改正,整个课设完成的十分成功。

此次课设还锻炼了我们的动手能力,开阔了我们的思维境界,使我们的知识更丰富,不仅加深了我们对所学专业的认识,更增加了我们对所学专业的兴趣!

参考文献

1

C语言程序设计教程

张敏霞,孙丽凤主编

北京:电子工业出版社,2007.3

2

单片机原理及接口技术

胡汉才主编

北京:清华大学出版社,2021.5模拟电路课本数字电路课本附录1附录2#include

<reg51.h>

#include

<absacc.h>

#define

uchar

unsigned

char

#define

PA

XBYTE[0x00]

#define

PB

XBYTE[0x01]

#define

PC

XBYTE[0x02]

#define

COM

XBYTE[0x03]

sbit

k1=P1^0;

sbit

k2=P1^1;

sbit

k3=P1^2;

sbit

k4=P1^3;

uchar

code

lie[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uchar

code

hangk0[8]={0x00,0xc3,0xc3,0xff,0xff,0xc3,0xc3,0x00};

uchar

code

hangk1[8]={0x1e,0x21,0x42,0x84,0x84,0x42,0x21,0x1e};

uchar

code

hangk2[8]={0x00,0x00,0x7f,0x88,0x88,0x67,0x00,0x00};

unsigned

char

mode;

unsigned

char

key;

void

keyscan(void);

void

delay(uchar

t);

void

light0(void);

void

light1(void);

void

light2(void);

void

main()

{

PA=0;

PB=0;

COM=0x80;

IT0=1;

EX0=1;

EA=1;

while(1)

{

switch(key)

{

case

1:

light0();

break;

case

2:

light1();

break;

case

3:

light2();

break;

case

4:

light0();delay(1000);light1();delay(1000);light2();delay(1000);

break;

default:

break;

}

}

}

void

int0(void)

interrupt

0

{

keyscan();

}

void

delay(uchar

t)

{

uchar

i=0;

while(t--)

for(i=0;i<120;i++);

}

void

keyscan(void)

{

if(k1==0)

{

delay(10);

if(k1==0)

{

while(!k1);

key=1;

}

}

if(k2==0)

{

delay(10);

if(k2==0)

{

while(!k2);

key=2;

}

}

if(k3==0)

{

delay(10);

if(k3==0)

{

while(!k3);

key=3;

}

}

if(k4==0)

{

delay(10);

if(k4==0)

{

while(!k4);

key=4;

}

}

}

void

light0()

{

unsigned

char

a;

for(a=0;a<8;a++)

{

PA=lie[a];

PB=hangk0[a];

delay(5);

}

}

void

light1()

{

unsigned

char

x;

for(x=0;x<8;x++)

{

PA=lie[x];

PB=hangk1[x];

delay(5);

}

}

void

light2()

{

unsigned

char

y;

for(y=0;y<8;y++)

{

PA=lie[y];

PB=hangk2[y];

delay(5);

}

}

课程设计说明书课程设计名称单片机原理及应用课程设计专业电子信息工程班级学号学生姓名指导教师课程设计任务书课程设计题目酒精测试仪起止日期2021年12月26日—2021年1月6日设计地点计算机科学与工程学院单片机实验室3409设计任务及日程安排:设计任务:分两部分:(一)、设计实现类:进行软、硬件设计,并上机编程、联线、调试、实现;1.电子钟的设计2.交通灯的设计3.温度计的设计4.点阵显示5.电机调速6.电子音乐发声(自己选曲)7.键盘液晶显示系统(二)、应用系统设计类:不须上机,查资料完成软、硬件设计画图。查资料选定题目。说明:第1--7题任选其二即可。(二)里题目自拟。日程安排:本次设计共二周时间,日程安排如下:第1天:查阅资料,确定题目。第2--4天:进实验室做实验,连接硬件并编写程序作相关的模块实验。第5--7天:编写程序,并调试通过。观察及总结硬件实验现象和结果。第8--9天:整理资料,撰写课程设计报告,准备答辩。第10天:上交课程设计报告,答辩。设计报告要求:1.设计报告里有两个内容,自选题目内容+附录(实验内容),每位同学独立完成。2.自选题目不须上机实现,要求能正确完成硬件电路和软件程序设计。内容包括:1)设计题目、任务与要求2)硬件框图与电路图3)软件及流程图(a)主要模块流程图(b)源程序清单与注释4)总结5)参考资料6)附录实验上机调试内容注:此任务书由指导教师在课程设计前填写,发给学生做为本门课程设计的依据。目录第一部分:自主设计课设:酒精测试仪 11总体方案设计 11.1设计要求 11.2优点及意义 11.3系统硬件电路设计 11.4初步设计思路 22硬件电路设计 22.1酒精检测模块 22.2显示模块 22.3报警模块 32.4CPU控制模块 43应用软件设计 53.1主程序设计 53.2子程序设计 6显示子程序设计 6报警子程序设计 7酒精检测子程序设计 84系统调试与性能分析 84.1开机界面 84.2浓度判断 84.3阈值修改 9总结: 9参考文献 9附录 10附录A硬件电路图 10附录B程序清单 11第二部分:课堂设计内容:温度测量系统 161实验目的 162实验内容 163实验原理 164实验步骤 165流程图: 176程序清单: 18第一部分:自主设计课设:酒精测试仪1总体方案设计1.1设计要求本课题要求以单片机为核心,设计一个酒精测试仪,由四部分组成:酒精检测模块,显示模块,报警模块,CPU控制模块。CPU控制模块采用STC89C52单片机进行控制。酒精传感器采用MQ-Sensor传感器模块和ADC0809模数转换模块用于对人呼出酒精气体的酒精度检测,显示模块采用1602液晶显示,报警电路采用蜂鸣器。要求酒精测试仪有以下功能:酒精浓度通过1602液晶显示模块显示出来酒精浓度超过设定的阈值则蜂鸣器发声进行报警。1.2优点及意义本课题采用51单片机进行控制,51单片机具有体积小、运行速度快的特点,用其作为主控芯片进行控制会十分的方便。使用MQ-Sensor气体传感器模块能够快速,准确的检测到酒精浓度,使用1602模块进行显示,直观,方便。1.3系统硬件电路设计系统硬件设计框图。根据设计要求,确定系统的设计方案,硬件由四部分组成。采用STC89c52单品机为CPU控制模块,以MQ-Sensor传感器模块和ADC0809模块组成检测模块,以1602液晶显示组成显示模块,以蜂鸣器组成报警模块。CPU处理模块STC89c52报警模块蜂鸣器检测模块MQ-Sensor+adc0809显示模块1602液晶屏CPU处理模块STC89c52报警模块蜂鸣器检测模块MQ-Sensor+adc0809显示模块1602液晶屏1.4初步设计思路定义三组数组表,方便1602显示时进行调用将adc0809的数据输出端接在单片机的P2口将MQ-Sensor酒精传感器的TTL输出端接在单片机P1.7口,将AO模拟量输出端接到adc0809的IN0通道。将1602的数据输入端接到单片机P0口将蜂鸣器接到单片机P3.3口。2硬件电路设计2.1酒精检测模块传感器模块采用MQ-Sensor酒精传感器,其模拟量输送给ADC0809进行模数转换,将输出数据发给单片机。电路中酒精检测传感器的模拟量输出端接在adc0809的IN0通道。Adc0809的start引脚接到单片机的P1^2口,oe引脚接到单片机的p1^0引脚上,EOC引脚接到了单片机的p1^1口,ciock时钟信号接到了单片机的P1^6引脚上。数字量输出端接到了单片机的P2口。将传感器采集到的酒精浓度经过adc0809输送到单片机中。2.2显示模块显示模块采用1602液晶显示屏进行显示,液晶显示具有低功耗,应用接口少,显示量大的特点,所以应用很广。将单片机收到adc0809数字量发送给1602中,进行显示。将1602的数据输入端接到单片机的P0口,RS引脚接到单片机的P3^5口,将EN使能接口接到单片机的P3^4口,单片机发送数据给1602,1602进行显示酒精的浓度。2.3报警模块报警模块采用蜂鸣器进行报警,直观,方便将蜂鸣器接到单片机的P3^3口,当酒精检测传感器模块TTL电平输出端时证明酒精浓度已经超过了阈值,则启动报警,给蜂鸣器以低电平,蜂鸣器响。否则,给蜂鸣器低电平,蜂鸣器不响。2.4CPU控制模块CPU采用STC89c52单片机,负责整套系统的运行。它包含时钟电路和复位电路。时钟电路单片机工作的时间基准是由时钟电路提供的,在单片机的XTAL1和XTAL2两个引脚间,接一只晶振及两只电容就构成了单片机的时钟电路。电路中,电容器C1和C2对振荡频率有微调作用,同时帮助晶振起振,通常取值范围在22±0.1PF,一般晶振为11.0592MHZ,电容取22PF。石英晶体选择11.0592MHZ。复位电路单片机系统的复位电路在可以采用的是按钮式上电复位电路形式,其中电阻R采用10KΩ的阻值,电容采22μF的电容值。3应用软件设计3.1主程序设计酒精测试仪的基本功能是通过酒精传感器采集到气体的酒精浓度,之后经过ADC0809数模转换发送给单片机,之后单片机发送给1602液晶进行显示。当检测到的酒精浓度值超过了所设计的阈值,则酒精传感器模块将输出低电平,将其接到单片机P1^7引脚上,当单片机检测到该引脚为低电平时,则驱动蜂鸣器发生进行报警。流程图:开始开始系统初始化检测酒精浓度是否超过设定值声报警1602显示酒精浓度结束否是3.2子程序设计采用1602液晶屏进行显示,将液晶数据输入端接到单片机P0口,单片机驱动液晶进行显示。流程图:开始开始LCD初始化写入地址数据忙碌标志位检查写入显示数据结束否是报警电路采用蜂鸣器进行报警,当酒精浓度超过了设定值,则蜂鸣器发声进行报警,将蜂鸣器接到单片机的P3^3引脚。流程图:开始开始初始化引脚是否为低电平蜂鸣器发生结束是否酒精检测模块采用MQ-Snsor酒精气体传感器和ADC0809组成,将采集到的酒精浓度经过模数转换器发给单片机。流程图:开始开始气体检测Adc0809模数转换发送给单片机结束4系统调试与性能分析4.1开机界面开机之后1602界面显示,酒精检测模块气体中酒精度发送给单片机。4.2浓度判断当检测到的酒精浓度大于设定的阈值时,则单片机驱动蜂鸣器发生进行报警,提示检测者酒精浓度已经超标。4.3阈值修改(1)硬件修改通过改变酒精传感器的电阻值来改变传感器对气体酒精度的检测灵敏度,来修改阈值。(2)软件修改通过对系统运行程序进行阈值设定,检测到的酒精浓度,进行人为的软件设定阈值,进行判别。总结:本作品针对生活中因醉酒驾驶引发交通事故日益严重,明确研究方向,制定计划方案。深入研究酒精传感器、模数转换器等器件原理,查阅相关酒驾标准。为制作出满足实际要求的作品,做好充分的准备。在此期间所遇到的问题,通过最有效、最准确的渠道进行解决,为成功扫清障碍。随着对单片机、ADC0809、LCD显示器的加深了解,对信号采集和数据算法处理的进一步学习;加入温度、湿度和气压的影响,在现有基础上进行改进,一定会使测得的数据更加准确,使作品与预期目标更接近。使其能成为商品,进入家庭,实现我们以此为课题的最终目的。参考文献[1]单成祥.传感器的理论与设计基础及其应用[M].北京:国防工业出版社,[2]张福学.现代传感器电路[M].北京:中国计量出版社,2000,441[3]吴兴惠,王彩君.传感器与信号传感器[M].北京:电子工业出版社,1998[4]万隆,巴奉丽.单片机原理及应用技术[M].北京:清华大学出版社,2021[5]汤竟南,沈国琴.51单片机C语言开发与实例[M].人民邮电出版社[6]雷伏容,张小林,崔浩.51单片机常用模块设计查询手册[M].北京:清华大学出版社,2021[7]韩成,张延拿了就用单片机[M].北京:人民邮电出版社,2021[8]赵建领.51系列单片机开发宝典[M].北京:电子工业出版社,2007-04[9]张毅刚单片机原理及接口技术:人民邮电出版社附录附录A硬件电路图附录B程序清单/*****************************************************///项目名称:酒精测试仪//程序内容:通过酒精模块将采集到的酒精浓度显示到1602上//如果浓度超过设定值,则进行报警。/*****************************************************/#include<reg52.h>//头文件#defineucharunsignedchar //宏定义无符号字符型#defineuintunsignedint //宏定义无符号整型ucharcodetable[]="0123456789";ucharcodetable1[]="voltage:";ucharcodetable2[]="alcoholtester"; //位控制码sbitST=P1^2;//A/D启动转换信号sbitOE=P1^0;//数据输出允许信号sbitEOC=P1^3;//A/D转换结束信号sbitCLK=P1^6;//时钟脉冲sbitdula=P2^6;sbitwela=P2^7;sbitrs=P3^5;sbitlcden=P3^4;sbitDOUT=P1^7; sbitbeep=P3^3; uintz,x,c,v,AD0809,date,a,i; //定义数据类型voidyanshi(ucharz) //延时子函数{ uintx,y; x=0; y=0; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddelay(uintx) //延时函数,参数x{ uinta,b; for(a=x;a>0;a--){ for(b=10;b>0;b--){;}}}/**************************************************//*函数名称:write_com*//*函数描述:1602写命令函数*//*输入参数:com*//*参数描述:控制命令*//*返回值:无*//**************************************************/voidwrite_com(ucharcom){ P0=com; rs=0; lcden=0; delay(10); lcden=1; delay(10); lcden=0; }/**************************************************//*函数名称:write_date*//*函数描述:1602写数据函数*//*输入参数:date*//*参数描述:要写入的数据*//*返回值:无*//**************************************************/voidwrite_date(uchardate){ P0=date; rs=1; lcden=0; delay(10); lcden=1; delay(10); lcden=0; }voidinitLCD(void) //1602初始化函数{ dula=0; wela=0; write_com(0x38); delay(20); write_com(0x0f); delay(20); write_com(0x06); delay(20); write_com(0x01); delay(20); }/***********************************************液晶显示程序***********************************************/voidxianshi()//显示函数{uintz,x,c,v;z=date/1000; //求千位x=date%1000/100; //求百位c=date%100/10; //求十位v=date%10; //求个位for(a=20;a>0;a--)//液晶1602显示{ write_com(0x80+0x40+9); write_date(table[z]); write_com(0x80+0x40+10); write_date(table[x]); write_com(0x80+0x40+11); write_date('.'); write_com(0x80+0x40+12); write_date(table[c]); write_com(0x80+0x40+13); write_date(table[v]);} }/***************************************CLK振荡信号 ****************************************/voidtimer0()interrupt1//定时器0工作方式1{TH0=(65536-2)/256; //重装计数初值TL0=(65536-2)%256; //重装计数初值CLK=!CLK; //取反}/****************************************主函数 *****************************************/voidmain(){TMOD=0X01; //定时器中断0CLK=0; //脉冲信号初始值为0TH0=(65536-2)/256; //定时时间高八位初值TL0=(65536-2)%256; //定时时间低八位初值EA=1; //开CPU中断ET0=1; //开T/C0中断TR0=1;initLCD();write_com(0x80); for(i=0;i<16;i++) { write_date(table2[i]); } yanshi(5); write_com(0x80+0x40); for(i=0;i<8;i++) { write_date(table1[i]); } while(1) //无限循环 { beep=1; ST=0; //使采集信号为低 ST=1; //开始数据转换 ST=0; //停止数据转换 while(!EOC); //等待数据转换完毕 OE=1; //允许数据输出信号 AD0809=P1; //读取数据 OE=0; //关闭数据输出允许信号 if(AD0809>=251) //电压显示不能超过5V AD0809=250; date=AD0809*20; xianshi(); //液晶显示显示函数if(DOUT==0)//当浓度高于设定值时,执行条件函数 { yanshi(5);//延时抗干扰 if(DOUT==0)//确定浓度高于设定值时,执行条件函数 {beep=0; yanshi(2000); beep=1; } }}} 第二部分:课堂设计内容:温度测量系统1实验目的根据温度控制系统的要求和特点,设计了一种基于51单片机的温度显示系统。该系统以单片机为控制核心,结合外围信号采集电路、LCD显示电路、报警电路,实现对温度的测量报警控制。2实验内容由单片机最小系统、LCD液晶显示电路、报警电路、温度传感器。等四部分组成。3实验原理将温度传感器采集的数据输入单片机,单片机与程序内预先设定好电压阈值进行比较,如果温度数据大于所设定的温度阈值,则蜂鸣器发生进行报警,整个过程LCD实时显示:温度阈值、实际温度值。4实验步骤主程序主要完成初始化、以及调用显示、指示灯、温度采集等等。具体模块包括:显示程序设计温度采集程序设计温度处理程序设计显示程序设计主要将几个数组的内容通过LCD1602的写数据指令显示在LCD屏上。温度采集程序通过18B20温度传感器实时采集温度并发送给单片机。温度处理程序设计将采集到的实时温度与设定温度阈值进行比较,如果温度大于预先设定的阈值,则蜂鸣器发生进行报警。5流程图:开始开始温度检测是否大于设定值声报警1602液晶显示结束否是6程序清单://将DS18B20所采集到的温度实时显示到1602上。//温度超过阈值则报警#include<reg52.H>#include<intrins.H>#include<math.H>#defineucharunsignedchar#defineuintunsignedint //宏定义ucharvalue,aa;unsignedinttmp;sbitdula=P2^6; //数码管段选引脚sbitwela=P2^7; //数码管位选引脚sbitds=P2^2; //18b20引脚定义sbitRS=P3^5;sbitLCDEN=P3^4; //1602引脚定义sbitbeep=P2^3;voiddelayUs() //延时函数{ _nop_(); //延时一个机器周期 ,包含在intrins.h文件中}voiddelayMs(uinta) //延时函数,参数a{ uinti,j; for(i=a;i>0;i--) for(j=100;j>0;j--);}voidwriteComm(ucharcomm) //写命令{ RS=0; //写命令是RS需给低电平 P0=comm; LCDEN=1; //写命令时LCDEN需给高电平 delayUs(); //延时一个机器周期 LCDEN=0; delayMs(1);}voidwriteData(uchardat)//写数据:RS=1,RW=0; { RS=1; //写数据时RS=1 P0=dat; LCDEN=1; //写数据时LCDEN=1 delayUs(); //延时一个机器周期 LCDEN=0; delayMs(1);}voidinit() //初值函数{ dula=wela=0; //段选,位选清零,数码管不显示 writeComm(0x38); writeComm(0x0c); writeComm(0x06); writeComm(0x01); //1602的命令初始化}voidwriteString(uchar*str,ucharlength) //将数据一个接着一个的写入1602中{ uchari; for(i=0;i<length;i++) { writeData(str[i]); //将数组中数据以循环的方式写入到1602中 } }voiddsInit() //DS18B20温度初值函数{ unsignedinti; ds=0; i=100; while(i>0)i--; //延时 ds=1; i=4; while(i>0)i--; //延时}voiddsWait() //等待函数{ unsignedinti; while(ds); while(~ds); i=4; while(i>0)i--;}bitreadBit() //bit函数返回值只能是0,1读一位数据函数{ unsignedinti; bitb; //bit只定义一位0,1 ds=0; i++; //起到延时作用 ds=1; i++;i++; b=ds; i=8; while(i>0)i--; returnb; //返回b,0,1}unsignedcharreadByte() //读一位字节数据函数{ unsignedinti; unsignedcharj,dat; dat=0; for(i=0;i<8;i++) { j=readBit();dat=(j<<7)|(dat>>1); //位或运算,读出的数据最低位在最前//面,这样刚好一个字节在dat里 } returndat;}voidwriteByte(unsignedchardat) //向18b20写一个字节数据函数{ unsignedinti; unsignedcharj; bitb; for(j=0;j<8;j++) { b=dat&0x01; dat>>=1; //对dat右移一位,将值赋给dat if(b) //写1 { ds=0; i++;i++; ds=1; i=8; while(i>0)i--; } else { ds=0; //写0 i=8; while(i>0)i--; ds=1; i++;i++; } }}voidsendChangeCmd() //DS18B20开始获取温度并转换{ dsInit(); //DS18B20温度初值 dsWait(); //等待函数 delayMs(1); //延时 writeByte(0xcc); //向18b20写一个字节数据函数,写跳过读ROM指令 writeByte(0x44); //向18b20写一个字节数据函数,写温度转换指令}voidsendReadCmd() //读取寄存器中存储的温度数据{ dsInit(); //DS18B20温度初值 dsWait(); //等待函数 delayMs(1); //延时 writeByte(0xcc); writeByte(0xbe);}intgetTmpValue(){ unsignedinttmpvalue; intvalue; floatt; unsignedcharlow,high; sendReadCmd(); low=readByte(); high=readByte(); tmpvalue=high; tmpvalue<<=8; tmpvalue|=low; //按位进行或运算 tmpvalue=(tmpvalue|low) value=tmpvalue; t=value*0.0625; value=t*100+(value>0?0.5:-0.5);//大于0加0.5,小于0减0.5 returnvalue;}voiddisplay(intv){ unsignedcharcount; unsignedchardatas[]={0,0,0,0,0}; tmp=abs(v); datas[0]=tmp/10000; datas[1]=tmp%10000/1000; datas[2]=tmp%1000/100; datas[3]=tmp%100/10; datas[4]=tmp%10; aa=datas[2]; writeComm(0xc0+3); if(v<0) { writeString("-",2); } else { writeString("+",2); } if(datas[0]!=0) { writeData('0'+datas[0]); } for(count=1;count!=5;count++) { writeData('0'+datas[count]); if(count==2) { writeData('.'); } }}voidmain(){ uchartable[]="xianzaiwendu:"; //定义数组table,16字节 sendChangeCmd(); init(); writeComm(0x80); writeString(table,16); //将table数组中数据写入到1602的第一行中 while(1) { delayMs(1000);//温度转换时间需要750ms以上 writeComm(0xc0); display(getTmpValue()); sendChangeCmd(); if(aa>2) {beep=0; delayMs(2000); beep=1; } }}课程设计成绩考核表课程设计成绩考核表学院计算机科学与工程学院专业电子信息工程班级140405姓名李延琦学号课程名称单片机原理及应用课程设计课程设计题目酒精测试仪考核项目满分值得分1.独立完成设计任务202.设计方案、说明书、图纸、程序、计算等完成量303.创新与发挥104.答辩(口试)40合计得分成绩指导教师签字几点说明此表由指导教师进行课程设计成绩评定时填写。、课程设计成绩根据学生各项考核最后得分,按“优”、“良”、“中”、“及格”、“不及格”五级评定。期中,90分以上为“优”;80-89分为“良”;70-79分为“中”;60-69分为“及格”;60分以下为“不及格”。课程设计结束后,此表由指导教师放入课程设计资料袋,送承担课程的教研室存档。2021年1月6日第二章计算机系统基本组成(专项练习题)一、选择题(每小题1.5分共68题)1.硬盘属于()A.内部存储器B.外部存储器C.只读存储器D.输出设备2.显示器的什么指标越高,显示的图像越清晰?()A.对比度B.亮度C.对比度和亮度D.分辨率3.下列关于ROM的叙述中,错误的是()A.ROM中的信息只能被CPU读取B.ROM主要用来存放计算机系统的程序和数据C.不能随时对ROM改写D.ROM一旦断电信息就会丢失4.主算机软件系统包括()A.程序、数据和相应的文档B.系统软件与应用软件C.数据库管理系统和数据库D.编译系统和办公软件5.按操作系统的分类,UNIX操作系统是()A.批处理操作系统B.实时操作系统C.分时操作系统D.单用户操作系统6.运算器的主要功能是进行()A.算术运算B.逻辑运算C.加法运算D.算术和逻辑运算7.DVD-ROM属于()A.大容量可读可写外存储器B.大容量只读外部存储器C.CPU可直接存取的存储器D.只读内存储器8.计算机的硬件主要包括:中央处理器(CPU)、存储器、输出设备和()A.键盘B.鼠标C.输入设备D.显示器9.对计算机操作系统的作用描述完整的是()A.管理计算机系统的全部软、硬件资源,合理组织计算机的工作流程,以达到充分发挥计算机资源的效率,为用户提供使用计算机的友好界面。B.对用户存储的文件进行管理,方便用户C.执行用户键入的各类命令D.它是为汉字操作系统提供运行的基础10.操作系统的主要功能是()A.对用户的数据文件进行管理,为用户管理文件提供方便B.对计算机的所有资源进行统一控制和管理,为用户使用计算机提供方便C.对源程序进行编译和运行D.对汇编语言程序进行翻译11.下列叙述中,正确的是()A.CPU能直接读取硬盘上的数据B.CPU能直接存取内存储器C.CPU由存储器、运算器和控制器组成D.CPU主要用来存储程序和数据12.在计算机中,条码阅读器属于()A.输入设备B.存储设备C.输出设备D.计算设备13.下列各组软件中,全部属于系统软件的一组是()A.程序语言处理程序、操作系统、数据库管理系统B.文字处理程序、编辑程序、操作系统C.财务处理软件、金融软件、网络系统D.WPSOffice2003、Excel2000、Windows9814.下列叙述中,正确的是()A.计算机能直接识别并执行用高级程序语言编写的程序B.用机器语言编写的程序可读性最差C.机器语言就是汇编语言D.高级语言的编译系统是应用程序15.计算机的技术性能指标主要是指()A.计算机所配备语言、操作系统、外部设备B.硬盘的容量和内存的容量C.显示器的分辨率、打印机的性能等配置D.字长、运算速度、内外存容和CPU的时钟频率16.下列软件中,不是操作系统的是()A.LinuxB.UNIXC.MSWindows7D.MSOffice17.构成CPU的主要部件是()A.内存和控制器B.内存、控制器和运算器C.调整缓存和运算器D.控制器和运算器18.下列设备组中,完全属于输入设备的一组是()A.CD-ROM驱动器、键盘、显示器B.绘图仪、控制器、鼠标器C.键盘、鼠标器、扫描仪D.打印机、硬盘、条码阅读器19.下列各存储器中,存取速度最快的是()A.CD-ROMB.内存储器C.软盘D.硬盘20.计算机之所以能按人们的意图自动进行工作,最直接的原因是采用了()A.二进制B.高速电子元件C.程序设计语言D.存储程序控制21.下列属于计算机病毒特征的是()A.模糊性B.高速性C.传染性D.危急性22.操作系统中的文件管理系统为用户提供的功能是()A.按文件作者存取文件B.按文件名管理文件C.按文件创建日期存取文件D.按文件大小存取文件23.下列关于软件的叙述中,正确的是()A.计算机软件分为系统软件和应用软件B.Windows就是广泛使用的应用软件之一C.所谓软件就是程序D.软件可以随便复制使用,不用购买24.计算机按性能可以分为超级计算机、大型计算机、小型计算机、微型计算机和()A.服务器B.掌中设备C.工作站D.笔记本25.为了防治计算机病毒,应采取的正确措施之一是()A.每天都要对硬盘和软盘进行格式化B.必须备有常用的杀毒软件C.不用任何磁盘D.不用任何软件26.操作系统管理用户数据的单位是()A.扇区B.文件C.磁道D.文件夹27.下列叙述中,错误的是()A.内存储器RAM中主要存储当前正在运行的程序和数据B.高速缓冲存储器(Cache)一般采用DRAM构成C.外部存储器(如硬盘)用来存储必须永久保存的程序和数据D.存储在RAM中的信息会因断电而全部丢失28.通常所说的微型机主机是指()A.CPU和内存B.CPU和硬盘C.CPU、内存和硬盘D.CPU、内存与CD-ROM29.完整的计算机软件指的是()A.程序、数据与有关的文档B.系统软件与应用软件C.操作系统与应用软件D.操作系统与办公软件30.能直接与CPU交换信息的存储器是()A.硬盘存储器B.CD-ROMC.内存储器D.软盘存储器31.下列叙述中,正确的是()A.计算机的体积越大,其功能越强B.CD-ROM的容量比硬盘的容量大、C.存储器具有记忆功能,故其中的信息任何时候都不会丢失D.CPU是中央处理器的简称32.以下哪一项不是预防计算机病毒的措施?()A.建立备份B.专机专用C.不上网D.定期检查33.计算机操作系统通常具有的5大功能是()A.CPU的管理、显示器的管理、键盘管理、打印机管理和鼠标器管理B.硬盘管理、软盘驱动器管理、CPU的管理、显示器管理和键盘管理C.CPU的管理、存储管理、文件管理、设备管理和作业管理D.启动、打印、显示、文件存取和关机34.微机上使用的Windows7是()A.多用户多任务操作系统B.单用户多任务操作系统C.实时操作系统D.多用户分时操作系统35.CPU能够直接访问的存储器是()A.软盘B.硬盘C.RAMD.CD-ROM36.下列各存储器中,存取速度最快的一种是()A.CacheB.动态RAM(DRAM)C.RAMD.硬盘37.SRAM指的是()A.静态随机存储器B.静态只读存储器C.动态随机存储器D.动态只读存储器38.下列关于硬盘的说法错误的是()A.硬盘中的数据断电后不会丢失B.每个计算机主机有且只能有一块硬盘C.硬盘可以进行格式化处理D.CPU不能够直接访问硬盘中的数据39.影响一台计算机性能的关键部件是()A.CD-ROMB.硬盘C.CPUD.显示器40.一张软磁盘上存储的内容,在该盘处于什么情况时,其中数据可能丢失?()A.放置在声音嘈杂的环境中若干天后B.携带通过海关的X射线监视仪后C.被携带到强磁场附近后D.与大量磁盘堆放在一起后41.计算机病毒是指能够侵入计算机系统,并在计算机系统中潜伏、传播、破坏系统正常工作的一种具有繁殖能力的()A.流行性感冒B.特殊小程序C.特殊微生物D.源程序42.操作系统对磁盘进行读/写操作的单位是()A.磁道B.字节C.扇区D.KB43.下列叙述中,正确的是()A.内存中存放的是当前正在执行的应用程序和所需的数据B.内存中存放的是当前暂时不用的程序和数据C.外存中存放的是当前正在执行的程序和所需的数据D.内存中只能存放指令44.把硬盘上的数据传送到计算机内存中去的操作称为()A.读盘B.写盘C.输出D.存盘45.在计算机中,每个存储单元都有一个连续的编号,此编号称为()A.地址B.住址C.位置D.序号46.操作系统是一种()A.系统软件B.应用软件C.软件包D.游戏软件47.利用大规模集成电路技术,将运算器和控制器集成在一块芯片上,该芯片称为()A.单片机B.单板机C.中央处理器D.输入/输出接口48.对于一张加了写保护的软盘,它()A.既不会传染病毒,也不会被病毒感染B.不但会向外传染病毒,还会被病毒感染C.虽不会传染病毒,但会被病毒感染D.虽不会被病毒感染,但会向外传染病毒49.微型计算机对工作环境有一定的要求,室内太干燥时,容易造成()A.软盘读写出B.静电干扰,引起误操作C.机内元器件受潮变质D.散热不好烧毁电源50.主频又称为()频率,是指计算机是CPU在单位时间内工作的脉冲数。A.速度B.存取C.时钟D.运行51.多媒体采用人机对话方式,使操作者根据自己的爱好选择内容播放。多媒体的这一特性,称为()A.集成性B.多样性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论