课程设计.docx
《课程设计.docx》由会员分享,可在线阅读,更多相关《课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
![课程设计.docx](https://file1.bdocx.com/fileroot1/2022-12/15/e6a58f6a-694c-42f1-8c8d-f55e6e484962/e6a58f6a-694c-42f1-8c8d-f55e6e4849621.gif)
课程设计
摘要
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
而51单片机是各单片机中最为典型和最有代表性的一种。
本实验是基于MCS51系列单片机所设计的,可以实现键盘按键与数字动态显示并可以用音乐倒数的计数器。
本设计基于单片机技术原理,以单片机芯片AT89C51作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个开机画面,主要功能:
在12864LCD上显示EPROM的开机画面。
关键词:
AT89C51、键盘、12864LCD显示、74LS373。
摘要I
1项目概述和要求2
1.1单片机基础知识2
1.2单片机的发展趋势2
1.3项目设计任务与要求3
2系统设计4
2.1框图设计4
2.2部分硬件5
2.3电路原理图4
2.4元件清单6
2.4.1AT89C51芯片7
2.4.212864LCD8
2.4.3其它元件9
3软件设计9
3.1程序流程图9
3.2程序代码10
4系统的仿真与调试16
4.1硬件调试19
4.2软件调试19
4.3软硬件调试19
5总结22
参考文献23
1项目概述和要求
1.1单片机基础知识
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲,一块芯片就成了一台计算机。
单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机了解计算机原理与结构的最佳选择。
现在,这种单片机的使用领域已十分广泛。
彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深深地融入我们每个人的生活之中。
单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。
单片机按用途大体上可分为两类,一种是通用型单片机,另一种是专用型单片机。
MCS-51单片机是美国INTEL公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MSC-51单片机作为代表进行理论基础学习。
MCS-51系列单片机主要包括8031、8051和8751等通用产品。
1.2单片机的发展趋势
单片机现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。
纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:
一、微型单片化
现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。
甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。
此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。
现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。
二、低功耗CMOS化
MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。
像80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。
CMOS虽然功耗低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于要求低功耗像电池供电的应用场合。
所以这种工艺将是今后一段时期单片机发展的主要途径。
三、主流与多品种共存
现在虽然单片机的品种繁多,各具特色,但仍以89C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的Winbond系列单片机。
所以89C51占据了半壁江山。
而Microchip公司的PIC精简指令集合(RISC)也有着强劲的发展势头,中国台湾的HOLTEX公司近年的单片机产量与日俱增,与其底价质优的优势,占据一定的市场份额。
此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。
在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补、相辅相成、共同发展的道路。
九十年代以后,单片机在结构上采用双CPU或内部流水线,CPU位数有8位、16位、32位,时钟频率高达20MHZ,片内带有PWM输出、监视定时器WDT、可编程计数器阵列PCA、DMA传输、调制解调器等。
芯片向高度集成化、低功耗方向的发展,使得单片机在大量数据的实时处理、高级通信系统、数字信号处理、复杂工业过程控制、高级机器人以及局域网等方面得到大量应用。
这类单片机有NEC公司的MPD7800,MITSUBISHI公司的M337700,REVKWELL公司的R6500。
1.3项目设计任务与要求
⏹设计任务:
利用AT89C51单片机结合12864LCD显示器设计一个简易的开机界面。
设计要求
1.本设计实现一个12864LCD显示EPROM开机动画的开机画面
2.利用AT89C51控制整个电路来实现.EPROM开机动画。
大体上可以讲显示EPROM保存的开机画面系统主要包括硬件和软件两部分。
重点就是各部分硬件的连接设计以及程序的编写。
本章讲述的就是系统硬件的设计,其中包括各模块的器件选择和电路设计。
将准备好的字模数据点阵写入到EPROM2764中,并利用端口将相关信息传送至AT89C51主芯片之中,利用P2端口使之显示于12864LCD液晶显示屏上。
2.系统设计
2.1.设计框图
框图设计是为了能够从整体上把握系统的各个大的模块以及各个模块之间的联系。
同时罗列出需要主要使用到的各个器件,以方面系统开发中器件的选取。
通过框图设计,让设计者从整体上把握系统的开发。
12864LCD显示EPROM2764保存的开机画面设计框图如图所示:
开始
↓
LCD初始化
↓
显示开机画面
本系统设计的框图如下图2-1所示。
AT89C51
∣
EPROM
2764
∣
12860显示
EPROM动画
2.2部分硬件
部分硬件功能:
12864-3A接口说明表
管脚号
管脚
电平
说明
1
CSA
H/L
片选择信号,低电平时选择前64列。
2
CSB
H
片选择信号,低电平时选择后64列。
3
GND
0V
逻辑电源地。
4
VCC
5V
逻辑电源。
5
VEE
-10V
LCD驱动电源。
6
D/I
H/L
数据\指令选择,高电平:
数据D0-D7将送入显示RAM;
低电平:
数据D0-D7将送入指令寄存器执行。
7
R/W
H/L
读\写选择,高电平:
读数据;低电平:
写数据。
8
E
H.H/L
读写使能,高电平有效,下降沿锁定数据。
9
DB0
H/L
数据输入输出引脚。
10
DB1
H/L
数据输入输出引脚。
11
DB2
H/L
数据输入输出引脚。
12
DB3
H/L
数据输入输出引脚。
13
DB4
H/L
数据输入输出引脚。
14
DB5
H/L
数据输入输出引脚。
15
DB6
H/L
数据输入输出引脚。
16
DB7
H/L
数据输入输出引脚。
OCM12864液晶显示模块是128×64点阵型液晶显示模块.可显示各种字符及图形.可与CPU直接接口.具有8位标准数据总线.6条控制线及电源线.采用KS0107控制IC.
2.3电路原理图
电路原理图如图2-2所示。
电路原理图
实验成功后
2.4元件清单
2.4.1AT89C51芯片
AT89C51芯片图如下图2-3所示。
图2-3AT89C51芯片图
①简介:
AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
②主要特性:
与MCS-51兼容;4K字节可编程闪烁存储器;寿命:
1000写/擦循环;数据保留时间:
10年;全静态工作:
0Hz-24MHz;三级程序存储器锁定;128×8位内部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路。
2.4.212864LCD
12864LCD如下图2-4所示。
2.4.3其他部件
、
3软件设计
3.1程序流程图
扫描
3.2程序的代码
/Main.c
//名称:
开机显示EPROM中的画面
//
//说明:
开机时系统从EPROM2764中读取画面并显示到12864LCD上
//
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
//液晶引脚定义
sbitDI=P3^0;
sbitRW=P3^1;
sbitE=P3^2;
sbitCS1=P3^3;
sbitCS2=P3^4;
sbitRST=P3^5;
//开机时先显示在LCD上的文字
ucharcodeWord_String[]=
{
0xFF,0x0F,0x0F,0x4F,0x4F,0x4F,0x4F,0xFF,0xFF,0x0F,0x0F,0xCF,0xCF,0x0F,0x1F,0xFF,
0xFF,0xF0,0xF0,0xF2,0xF2,0xF2,0xF2,0xFF,0xFF,0xF0,0xF0,0xFC,0xFC,0xFC,0xFE,0xFF,
//EP
0xFF,0x0F,0x0F,0x4F,0x4F,0x0F,0x1F,0xFF,0xFF,0x3F,0x1F,0xCF,0xCF,0xCF,0xCF,0x1F,
0xFF,0xF0,0xF0,0xFE,0xFE,0xFC,0xF8,0xF3,0xF7,0xFF,0xFC,0xF8,0xF3,0xF3,0xF3,0xF8,
//RO
0x3F,0xFF,0xFF,0x0F,0x0F,0x1F,0xFF,0xFF,0x1F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFC,0xFF,0xFF,0xF0,0xF0,0xFE,0xF0,0xF0,0xFE,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,
/*--文字:
E--*/
/*--新宋体11;此字体下对应的点阵为:
宽x高=8x15--*/
/*--高度不是8的倍数,现调整为:
宽度x高度=8x16--*/
//0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x10,0x1F,0x10,0x10,0x13,0x10,0x08,0x00,
/*--文字:
P--*/
/*--新宋体11;此字体下对应的点阵为:
宽x高=8x15--*/
/*--高度不是8的倍数,现调整为:
宽度x高度=8x16--*/
//0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x10,0x1F,0x10,0x00,0x00,0x00,0x00,0x00,
/*--文字:
R--*/
/*--新宋体11;此字体下对应的点阵为:
宽x高=8x15--*/
/*--高度不是8的倍数,现调整为:
宽度x高度=8x16--*/
//0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x10,0x1F,0x10,0x01,0x06,0x18,0x10,0x00,
/*--文字:
O--*/
/*--新宋体11;此字体下对应的点阵为:
宽x高=8x15--*/
/*--高度不是8的倍数,现调整为:
宽度x高度=8x16--*/
//0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x07,0x08,0x10,0x10,0x10,0x08,0x07,0x00,
/*--文字:
M--*/
/*--新宋体11;此字体下对应的点阵为:
宽x高=8x15--*/
/*--高度不是8的倍数,现调整为:
宽度x高度=8x16--*/
//0x08,0xF8,0x78,0x80,0x78,0xF8,0x08,0x00,0x10,0x1F,0x00,0x1F,0x00,0x1F,0x10,0x00,
//*--文字:
开--*/
/*--新宋体11;此字体下对应的点阵为:
宽x高=16x15--*/
/*--高度不是8的倍数,现调整为:
宽度x高度=16x16--*/
0x40,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0xFE,0x42,0x43,0x62,0x40,0x00,0x00,
0x20,0x20,0x10,0x08,0x07,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,
/*--文字:
机--*/
/*--新宋体11;此字体下对应的点阵为:
宽x高=16x15--*/
/*--高度不是8的倍数,现调整为:
宽度x高度=16x16--*/
0x10,0x10,0xD0,0xFF,0x50,0x90,0x00,0xFE,0x02,0x02,0xFF,0x02,0x00,0x00,0x00,0x00,
0x02,0x01,0x00,0x3F,0x20,0x10,0x08,0x07,0x00,0x00,0x1F,0x20,0x20,0x3C,0x00,0x00,
/*--文字:
画--*/
/*--新宋体11;此字体下对应的点阵为:
宽x高=16x15--*/
/*--高度不是8的倍数,现调整为:
宽度x高度=16x16--*/
0x02,0xF2,0x02,0x02,0xFA,0x4A,0x4A,0xFA,0x4A,0x4A,0xFA,0x02,0xF3,0x02,0x00,0x00,
0x00,0x1F,0x10,0x10,0x17,0x14,0x14,0x17,0x14,0x14,0x17,0x10,0x3F,0x00,0x00,0x00,
/*--文字:
面--*/
/*--新宋体11;此字体下对应的点阵为:
宽x高=16x15--*/
/*--高度不是8的倍数,现调整为:
宽度x高度=16x16--*/
0x02,0x02,0xF2,0x12,0x12,0xFA,0x56,0x52,0xF2,0x12,0x12,0x12,0xF3,0x02,0x00,0x00,
0x00,0x00,0x3F,0x10,0x10,0x1F,0x12,0x12,0x1F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,
};
//
//烧写到EPROM2764的屏幕图像数据,宽度×高度=128×40 (共 128×40/8 = 640字节)
//
ucharcodeStart_Screen_Image[]={
0xFF,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x03,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFC,0x02,0x02,
0xE2,0x12,0x0A,0x4A,0xEA,0x0A,0x0A,0x12,0xE2,0x02,0x02,0x02,0x82,0xC2,0xE2,0xC2,
0x82,0x02,0x02,0x02,0xFC,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,
0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x0F,0x00,0x00,0xFF,
0xFF,0xC0,0xE0,0x40,0xE0,0xA0,0x44,0x04,0x90,0xF0,0xE0,0x00,0xC0,0xFC,0xFE,0xFE,
0x27,0x23,0x21,0x61,0x21,0x22,0x3E,0x00,0x00,0x00,0xF8,0xF8,0x9C,0x8C,0x0C,0x0C,
0x0C,0x98,0x00,0x00,0x7C,0xFA,0x63,0xE1,0x80,0x00,0x00,0x00,0x1C,0x00,0x00,0x80,
0x40,0x40,0x40,0xC0,0x80,0x80,0x00,0x00,0x00,0xC0,0xF0,0xFC,0xFE,0xBE,0xBE,0x3E,
0xBE,0xBC,0x1C,0x40,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x7F,0x80,0x90,
0xAB,0x94,0x88,0x88,0x8B,0x88,0x88,0x94,0xAB,0x90,0x80,0x81,0x81,0x8F,0x8F,0x8F,
0x81,0x81,0x80,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x3F,0x00,
0x00,0x00,0x03,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0xFB,
0xFF,0xFF,0xFF,0xF1,0xF2,0xF2,0xE4,0xFE,0xFD,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xF7,
0xC4,0x08,0x08,0x00,0x00,0x88,0xFC,0xFF,0xFC,0xF2,0xC7,0xFF,0x61,0xE1,0xC4,0xC0,
0x41,0xC1,0xF0,0xF8,0xF8,0xE7,0x8F,0x8F,0xCD,0x8C,0xC4,0xE0,0xF8,0x68,0x07,0x00,
0x08,0x08,0x00,0xF8,0x08,0xFF,0xE0,0xE0,0xF0,0xFF,0xFF,0xFF,0xFF,0xF9,0xDC,0x54,
0xC1,0xE1,0xC8,0x80,0x80,0xFF,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,
0xE0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,
0xFF,0x7C,0xF8,0xF8,0xF8,0xFF,0xFF,0xFF,0xFF,0x3F,0x7F,0xFF,0xFF,0xFC,0xF8,0xF9,
0xFF,0x7F,0x3F,0x3F,0x7F,0x7F,0x7B,0x7B,0xF9,0xF9,0xF8,0x38,0xB8,0x78,0x78,0x78,
0x78,0xFC,0xFC,0xFE,0x7F,0x7F,0x3F,0x3F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,
0x00,0xFF,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0xE0,0x00,0x00,0xFC,0x00,0x00,0xFF,0x00,
0xFF,0x0