C51单片机课设报告(进制转换)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机原理课程设计报告题目:51单片机实现进制转换

专业:信息工程

班级:信息101

学号:**********

小组成员:1004020103

指导教师:***

北京工商大学计算机与信息工程学院

题目:51单片机实现进制转换

1、设计目的

1)熟悉51单片机的编程;

2)熟悉单片机开发的基本焊接;

3)熟悉单片机元件的使用方法;

4)熟悉C51的软件开发环境(编程软件Keil、烧录软件STC_ISP_v479)

2、设计要求

1)按键输入数据,具有确定和清零功能;

2)1602液晶屏幕显示,具有显示输入输出和提示功能;

3)2,、8、10、16进制数可任意互相转化;

3、硬件电路设计(包括电路图及说明)

1)控制模块:

控制模块是由1块STC89C52、1个12MHz无源晶振、1个复位电路22uF电容、1个1k 欧姆电阻、1个8位1k欧姆排阻组成。

STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。芯片实际选用的STC89C52与protues模拟电路图中的AT89C52功能基本相同,区别在于烧录程序的方式。

2)显示模块:

显示模块由1块1602液晶显示屏、16根数据线组成。

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。液晶

3)按键输入模块:

按键输入模块由1块4*4矩阵键盘、8根数据线组成、2个独立按键。

在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。实际电路中使用的是集成的1块4*4矩阵键盘,跟protues模拟电路图中的16个独立按键相比体积更小,实现的功能相同。

电路图(protues)

4)全局设计:通过STC89C52的P3.0-P3.7口读入4*4矩阵键盘的按键输入数据,STC89C52的P0.0-P0.7先接入8位1k欧姆排阻作上拉电阻,再接入1602液晶屏幕的数据口D01-D07,输出数据到1602液晶屏幕,液晶屏幕显示读到的数据。P2.1-P2.3口分别接入1602的RS、RW、E控制读写。P2.4-P2.5口分别接入1独立按键最为“确定”键和“清零”键。STC89C52

4、软件设计(包括流程图及程序)

1)程序流程图:

2)程序代码:

#include //

#include

sbit RS = P2^1; //定义端口

sbit RW = P2^2;

sbit EN = P2^3;

sbit QL = P2^4; //外接清零端口

sbit QD = P2^5; //外接确定端口

sbit wela=P2^7;//锁存器控制端定义

unsigned int qlbz=0;

unsigned int qdbz=0;

#define RS_CLR RS=0

#define RS_SET RS=1

#define RW_CLR RW=0

#define RW_SET RW=1

#define EN_CLR EN=0

#define EN_SET EN=1

#define DataPort P0

#define KeyPort P3

unsigned char code asc_code[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//转换成液晶显示的字符

/*------------------------------------------------

uS延时函数

------------------------------------------------*/

void DelayUs2x(unsigned char t)

{

while(--t);

}

相关文档
最新文档