微机原理课程设计.docx
- 文档编号:5667493
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:41
- 大小:29.25KB
微机原理课程设计.docx
《微机原理课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计.docx(41页珍藏版)》请在冰豆网上搜索。
微机原理课程设计
目录:
1、设计的目的和意义
2、主要功能
3、硬件电路设计
4、软件设计
5、部分代码
6、课程设计体会
7、参考文献
一、课程设计的目的和意义
1、设计的目的
1)了解设计要求
2)独立完成设计任务
3)绘制系统硬件总框图
4)绘制系统原理电路图
5)制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释;
6)制定编写调试方案,编写用户操作使用说明书
7)写出设计工作小结。
对在完成以上文件过程所进行的有关步骤如设计思想、指标论证、方案确定、参数计算、元器件选择、原理分析等作出说明,并对所完成的设计作出评价,对自己整个设计工作中经验教训,总结收获和今后研修方向。
2、意义
现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于1秒的定义,通过计数方式进行满60秒分钟进1,满60分小时进1,满24小时小时清零。
从而达到计时的功能,是人民日常生活不可缺少的工具。
高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
二、主要功能
电子钟设计一个简单的单片机编程设计,要求电子钟软件程序必须具备测温、时钟和音乐功能。
三、硬件电路设计
1、部分原件使用说明
中文名
1602字符液晶
VSS
一般接地
VDD
接电源
BLA
背光电源正极
BLK
背光电源负极
显 示
16x02即32个字符
(1)简介
1602字符型LCD模块的应用非常广泛,而各种液晶厂家均有提供几乎都是同样规格的1602模块或兼容模块,尽管各厂家的对其各自的产品命名不尽相同;1602字符型LCD模块最初采用的LCD控制器采用的是HD44780,在各厂家生产的1602模块当中,基本上也都采用了与之兼容的控制IC,所以从特性上基本上是一样的;当然,很多厂商提供了不同的字符颜色、背光色之类的显示模块。
(2)操作
1602液晶的基本的操作分为以下四种:
状态字读操作:
输入RS=低、RW=高、EP=高;输出:
DB0~7读出为状态字;
数据读出操作:
输入RS=高、RW=高、EP=高;输出:
DB0~7读出为数据;
指令写入操作:
输入RS=低、RW=低、EP=上升沿;输出:
无;
数据写入操作:
输入RS=高、RW=低、EP=上升沿;输出:
无。
(3)指令
/*显示模式指令*/
#defineLCD_Display_mode0X38//设置16x2显示5x7点阵8位数据接口
/*显示开/关及光标设置*/
#defineLCD_shows00X0C//开显示不显示光标光标不闪烁
#defineLCD_shows20X0E//开显示显示光标光标不闪烁
#defineLCD_shows10X0F//开显示显示光标光标闪烁
#defineLCD_shows30X08//关显示不显示光标光标不闪烁
/*指针设置*/
#defineLCD_cursor10X04//写一个字符地址指针减1
#defineLCD_cursor20X05//写一个字符地址指针减1并屏幕右移
#defineLCD_cursor30X06//写一个字符地址指针加1
#defineLCD_cursor40X07//写一个字符地址指针加1并屏幕左移
/*清屏指令*/
#defineLCD_clear0x01//清屏指令数据指针清零所有显示清零
/*忙状态字*/
#defineLCD_WAY0x80//状态字
/*宏定义显示起始地址*/
#defineLCD_ADDH0X80//第一行地址0x80-0xA7
#defineLCD_ADDL0XC0//第二行地址0xC0-0xE7
/*IO口定义*/
#defineLCD1602_DATAP0//宏定义8位数据线IO为P0口D0~D7=P00~P078位数据线D0=P00;
sbitLCD1602_RS=P2^5;//数据/命令选择端(H/L)
sbitLCD1602_RW=P2^6;//读/写选择端(H/L)
sbitLCD1602_E=P2^7;//使能信号
/*函数声明*/
voidLCD1602_init();//液晶初始化函数
voidLCD1602_writecd(bitlcd_rs,ucharLCD1602_d);//写命令/数据函数bitlcd_rs是数据还是命令ucharLCD1602_d要写入的数据
ucharLCD1602_readway();//读忙状态函数由写入和读取函数调用
ucharLCD1602_readata();//读数据函数
voidLCD_DELAY(ucharLCD_delay);//
/*液晶初始化函数*/
voidLCD1602_init()//液晶初始化函数
{LCD_DELAY(LCD_15MS);//延时15MS初始化
LCD1602_writecd(LCD1602_COM,LCD_Display_mode);//写指令38H设置16x2显示5x7点阵8位数据接口
LCD1602_writecd(LCD1602_COM,LCD_shows0);//开显示不显示光标光标不闪烁
LCD1602_writecd(LCD1602_COM,LCD_cursor1);//检查忙状态
LCD1602_writecd(LCD1602_COM,LCD_clear);//写指令01H:
显示清屏
}
/*液晶写命令/数据函数*/
voidLCD1602_writecd(bitlcd_rs,ucharLCD1602_cd)//写命令/数据函数
{ucharLCD1602_NUM;//定义变量用来液晶无忙回答的退出死循环
LCD1602_NUM=255;//忙状态检测次数
while(LCD1602_readway())//检查忙状态
{LCD1602_NUM--;//检测次数自减
if(LCD1602_NUM==0)//判断检测次数等于0
{break;}//退出循环判断忙
}
LCD1602_RW=LCD1602_L;//读/写选择端(H/L)
LCD1602_RS=lcd_rs;//数据/命令选择端(H/L)
LCD1602_DATA=LCD1602_cd;//IO口赋值
LCD1602_E=LCD1602_H;//拉高使能信号开始传输数据
LCD1602_E=LCD1602_L;//拉低使能信号锁存数据
LCD1602_DATA=0xff;//IO口数据清除
}
/*忙状态读取函数*/
ucharLCD1602_readway()//读状态函数由写入和读取函数调用
{ucharLCD1602_way;//状态字变量
LCD1602_DATA=0xff;//IO口数据清除
LCD1602_RS=LCD1602_COM;//数据/命令选择端(H/L)命令
LCD1602_RW=LCD1602_H;//读/写选择端(H/L)
LCD1602_E=LCD1602_H;//拉高使能信号开始接收状态
LCD1602_way=LCD1602_DATA;//读取状态
LCD1602_E=LCD1602_L;//拉低使能信号锁存数据
LCD1602_way=LCD1602_way&LCD_WAY;//取忙状态字
return(LCD1602_way);//返回状态字
}
/*液晶读数据函数*/
ucharLCD1602_readata()//读数据函数
{ucharLCD1602_data;//数据暂存变量
while(LCD1602_readway());//检查忙状态--------------------
LCD1602_DATA=0xff;//IO口数据清除
LCD1602_RS=LCD1602_DAT;//数据/命令选择端(H/L)数据
LCD1602_RW=LCD1602_H;//读/写选择端(H/L)
LCD1602_E=LCD1602_H;//拉高使能信号开始接收状态
LCD1602_data=LCD1602_DATA;//读取状态
LCD1602_E=LCD1602_L;//拉低使能信号锁存数据
return(LCD1602_data);//返回数据
}
/*延时函数*/
voidLCD_DELAY(ucharLCD_delay)//
{ucharlcd_del;
while(LCD_delay--)//自减
{lcd_del=100;
while(lcd_del--);}
}
中文名
DS1302
外文名
DS1302
公 司
DALLAS公司
国 家
美国
类 型
时钟芯片
(1)简介
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.0V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。
(2)操作
控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,位1表示进行读操作,控制字节总是从最低位开始输出。
(3)结论
DS1302存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。
DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。
这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。
传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。
但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。
外文名
DS18B20
体 积
小
硬件开销
低
抗干扰能力
强
工作电压
3V~5.5V
超低功耗
静态功耗<3uA
(1)简介
DS1820数字温度计提供9位温度读数,指示器件的温度。
信息经过单线接口送入DS1820或从DS1820送出,因此从中央处理器到DS1820仅需连接一条线(和地)。
读、写和完成温度变换所需的电源可以有数据线本身提供,而不需要外部电源。
因为每个DS1820有唯一的系列号(siliconserialnumber),因此多个DS1820可以存在于同一条单线总线上。
这允许在许多不同的地方放置温度灵敏器件。
此特性的应用范围包括HVAC环境控制,建筑物、设备或机械内的温度检测,以及过程监视和控制中的温度检测。
(2)操作
根据定义,单线总线只有一根线;这一点是重要的,即线上的第一个器件能在适当的时间驱动该总线。
为了做到这一点,第一个连接到单线总线上的器件必须具有漏极开路或三态输出。
DS1820的单线接口(I/O引脚是漏极开路的)。
多站(multidrop)总线由单线总线和多个与之相连的从属器件组成。
单线总线要求近似于5KΩ的上拉电阻。
单线总线的空闲状态是高电平。
不管任何原因,如果执行需要被挂起,那么,若要重新恢复执行,总线必须保持在空闲状态。
如果不满足这一点且总线保持在低电平时间大于480us,那么总线上的所有器件均被复位。
存在脉冲(presencepulse)使总线主机知道DS1820在总线上并已准备好工作。
(3)结论
独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压范围为3.0V至5.5V无需备用电源测量温度范围为-55°C至+125℃。
华氏相当于是-67°F到257华氏度-10°C至+85°C范围内精度为±0.5°C
温度传感器可编程的分辨率为9~12位,温度转换为12位数字格式最大值为750毫秒,用户可定义的非易失性温度报警设置,应用范围包括恒温控制、工业系统、消费电子产品温度计、或任何热敏感系统
描述该DS18B20的数字温度计提供9至12位(可编程设备温度读数)。
由于DS18B20是一条口线通信,所以中央微处理器与DS18B20只有一个一条口线连接。
为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。
因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。
这使得温度传感器放置在许多不同的地方。
它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。
DS18B20采用一线通信接口。
因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。
主要首先提供以下功能命令之一:
1)读ROM,2)ROM匹配,3)搜索ROM,4)跳过ROM,5)报警检查。
这些指令操作作用在没有一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有有多少,什么样的设备。
若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。
一个控制功能指挥指示DS18B20的演出测温。
测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。
温度报警触发器TH和TL都有一字节EEPROM的数据。
如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。
在片上还载有配置字节以理想的解决温度数字转换。
写TH,TL指令以及配置字节利用一个记忆功能的指令完成。
通过缓存器读寄存器。
所有数据的读,写都是从最低位开始。
中文名
stc89c51
工作电压
3.4V-5.5V
工作频率范围
0-35MHz
计数器
2个16位
引 脚
40
(1)简介
STC89C51RC/RD+系列单片机是STC推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择,HD版本和90C版本内部集成MAX810专用复位电路。
(2)操作
STC89C51RC/RD+系列单片机所有I/O口均(新增P4口)有三种工作类型:
准双向口/弱上拉(标准8051输出模式)、仅为输入(高阻)或开漏输出功能。
STC89C51RC/RD+系列单片机的P1/P2/P3/P4上复位后为准双向口/弱上拉(传统8051的I/O口)模式,P0口上电复位后是开漏输出。
P0口作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加10K-4.7K上拉电阻。
STC89C51RC/RD+的5V单片机的P0口的灌电流最大为12mA,其他I/O口的灌电流最大为6mA。
STC89LE51RC/RD+的3V单片机的P0口的灌电流最大为8mA,其他I/O口的灌电流最大为4mA。
(3)结论
STC89C51RC是采用8051核的ISP(InSystemProgramming)在系统可编程芯片,最高工作时钟频率为80MHz,片内含8KBytes的可反复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。
STC89C51RC系列单片机是单时钟/机器周期(1T)的兼容8051内核单片机,是高速/低功耗的新一代8051单片机,全新的流水线/精简指令集结构,内部集成MAX810专用复位电路。
2、流程图
3、原理图
多功能时钟元件清单
器件名称
数量
在原理图中的标号
1k电阻
3
R5,R7,R9
4.7K电阻
1
R1
10K电阻
5
R4,R6,R8,R10,R11
10k排阻
1
R3
10uF电解电容
1
C1
12M晶振
1
Y2
32.768K晶振
1
Y1
33p电容
2
C2,C3
8550三极管
1
Q1
AT89C51单片机
1
U3
蜂鸣器
1
LS1
电源开关
1
S2
电源端子
1
J1
DS1302时钟芯片
1
U2
DS18B20温度传感器
1
U4
LCD1602字符液晶
1
U1
指示灯
3
D1,D2,D3
10K电位器
1
R2
无锁轻触开关
5
S1,S3,S4,S5,S6
4、PCB图纸
5、仿真图
4、软件设计
1、部分代码
#include
#include
#include
/*液晶引脚定义*/
#defineLCD_DBP0
sbitLCD_RS=P2^0;
sbitLCD_RW=P2^1;
sbitLCD_E=P2^2;
/*温度传感器引脚定义*/
sbitDSA=P1^3;
/*时钟芯片引脚定义*/
sbitIO=P1^0;
sbitSCLK=P1^1;
sbitRST=P1^2;
/*独立按键引脚定义*/
sbitKeyOne=P3^2;
sbitKeyThree=P3^3;
sbitKeyTwo=P3^4;
sbitKeyFour=P3^5;
/*第0位第八位位操作*/
sbitACC0=ACC^0;
sbitACC7=ACC^7;
/*报警指示引脚定义*/
sbitRed=P3^6;
sbitGreen=P3^7;
sbitBeep=P1^4;
/*时钟芯片寄存器定义*/
#definewrite_second0x80
#definewrite_minute0x82
#definewrite_hour0x84
#definewrite_day0x86
#definewrite_month0x88
#definewrite_week0x8a
#definewrite_year0x8c
/*按键状态*/
enumKEYSTART
{
/*按键键值*/
enumKEYCONFIG
{
/*逻辑变量定义*/
unsignedcharmiao=0,shi=0,fen=0,ri=0,yue=0,nian=0,week=0;
externunsignedcharmiao,shi,fen,ri,yue,nian,week;
unsignedintTempVal=0,AlarmFlag=0;
unsignedcharYearData=0,MonthData=0,DayData=0,WeekData=0,HourData=0,
MinuteData=0,AlarmH=0,AlarmM=0;
/*n*10微妙延时*/
voiddelay_n10us(unsignedintn)
{
/*写命令函数*/
voidLCD_write_command(unsignedchardat)
{
/*写数据函数*/
voidLCD_write_data(unsignedchardat)
{
/*写字符函数X:
0~15Y:
1,2*/
voidLCD_disp_char(unsignedcharx,unsignedchary,unsignedchardat)
{
/*写一串字符X:
0~15Y:
1,2*/
voidLCD_disp_str(unsignedcharx,unsignedchary,unsignedchar*str)
{
/*液晶初始化*/
voidLCD_init(void)
{
/*温度传感器最小单位延时*/
voiddelayA(unsignedintDelay)
{
/*温度传感器复位操作*/
voiddsresetA(void)
{
/*读温度传感器一位数据信息*/
bittmpreadbitA(void)
{
/*读温度传感器八位数据信息*/
unsignedchartmpreadA(void)
{
/*写温度传感器八位数据信息*/
voidtmpwritebyteA(unsignedchardat)
{
/*温度转换*/
voidtmpchangeA(void)
{
/*读取温度寄存器转换数据*/
unsignedintgettmpA(void)
{
/*写时钟芯片八位数据信息*/
voidwrite_byte(unsignedchardat)
{
/*读时钟芯片八位数据信息*/
unsignedcharread_byte()
{
/*在时钟芯片指定位置写指定数据*/
voidwrite_1302(unsignedcharadd,unsignedchardat)
{
/*读取时钟芯片指定地址的数据信息*/
unsignedcharread_1302(unsignedcharadd)
{
/*时钟芯片数据转换*/
unsignedcharBCD_Decimal(unsignedcharbcd)
{
/*时钟芯片初始化操作*/
voidds1302_init()
{
/*设置时钟芯片参数信息*/
voidSet_RTC(unsignedcharaddress,unsignedchartemp)
{
/*提取时钟芯片时间信息*/
voidGetTime(void)
{
/*按键小抖动操作*/
voidDelayKey(void)
{
/*读取按键键值*/
unsignedcharKeyProcess(void)
{
/*定时器配置*/
voidinit()//定时器、计数器设置函数
{
/*外围硬件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 课程设计