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

合集下载

C51单片机课程设计报告

C51单片机课程设计报告

内容提要单片微型计算机简称单片机,是典型的嵌入式微控制器,常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。

单片机由芯片内仅有CPU的专用处理器发展而来。

最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。

概括的讲:一块芯片就成了一台计算机。

它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

同时,学习使用单片机是了解计算机原理与结构的最佳选择。

单片机是靠程序运行的,并且可以修改。

通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。

一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。

更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。

所以说对于单片机课程的学习对于我们电子信息工程专业的学生来说至关重要,然而学习单片机课程设计是其一个极为重要的实践环节,无论是硬件扩展、接口应用还是编程方法、程序调试,都离不开该环节。

单片机课程设计过程中,学生通过查阅资料、接口设计、程序设计、安装调试等环节,完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用。

c进制转换课程设计

c进制转换课程设计

c 进制转换课程设计一、课程目标知识目标:1. 理解进制转换的基本概念,掌握二进制、八进制、十进制和十六进制之间的转换方法。

2. 学会使用数学原理进行进制转换的计算,并能够运用到实际问题中。

3. 了解进制转换在日常生活中的应用,如计算机编程、数字电路等领域。

技能目标:1. 能够熟练运用进制转换公式,正确完成不同进制之间的转换。

2. 培养学生的逻辑思维能力和计算能力,提高解决进制转换问题的效率。

3. 学会运用进制转换知识解决实际问题的方法,提高学生的应用能力。

情感态度价值观目标:1. 激发学生对计算机科学的兴趣,培养学习积极性和主动性。

2. 培养学生的团队合作精神,让学生在合作交流中共同成长。

3. 引导学生认识到进制转换在科技发展中的重要性,增强学生的社会责任感和使命感。

课程性质:本课程为计算机科学基础知识课程,以理论讲解和实践操作相结合的方式进行教学。

学生特点:学生处于初中阶段,具有一定的数学基础和逻辑思维能力,但对进制转换概念可能较为陌生。

教学要求:注重理论与实践相结合,以生动形象的方式进行讲解,激发学生的学习兴趣,提高学生的实际操作能力。

通过课程学习,使学生掌握进制转换的知识点,并能将其应用于实际问题中。

同时,关注学生的情感态度价值观的培养,提升学生的综合素质。

在教学过程中,分解课程目标为具体的学习成果,便于教学设计和评估。

二、教学内容1. 教学大纲:a. 进制概念介绍:二进制、八进制、十进制、十六进制的定义及特点。

b. 进制转换方法:重点讲解各进制之间的转换技巧和步骤。

c. 实践应用:结合实际案例,让学生动手操作进制转换,提高应用能力。

d. 总结与拓展:总结进制转换的知识点,拓展相关知识,激发学生学习兴趣。

2. 教学内容安排与进度:a. 第一课时:介绍进制概念,讲解二进制与十进制的转换方法。

b. 第二课时:讲解八进制、十六进制与十进制的转换方法。

c. 第三课时:实践操作,让学生进行进制转换的练习,巩固所学知识。

单片机(C51)实验报告汇总

单片机(C51)实验报告汇总

实验一熟悉ADEK单片机教学实验系统一、实验目的1.熟悉ADEK 单片机教学实验系统和仿真器的结构和功能。

2.了解如何安装51MINI 仿真器驱动程序。

二、ADEK 单片机教学实验系统组成图1-1 AEDK 单片机教学实验系统外观图如图1-1 所示,ADEK-EAT598 单片机教学实验系统遵循了模块化的设计思路,有丰富的接口,并且具有良好的扩展性,以下为组成模块和使用的主要芯片。

1.步进电机2.直流电机3.温度控制(DS18B20、热敏电阻B3470)4.模数转换(ADC0809)5.串行实验区(EEPROM X25045、AT24C08、时钟芯片HT1380、数模转换TLC5615、模数转换TLC1543)6.RAM(HM62256)7.ROM(M27C512)8.地址译码(74LS138)9.数模转换(DAC0832)10.仿真机通讯口:原厂仿真器的串口通信口,这部分功能已不用。

11.串并转换(74LS164)12.频率源(CD4020)213.扩展输出(74LS273)14.扩展输入(74LS244)15.电源开关16.液晶显示(MSC-G12232DYEW-7N)17.语音录放(ISD1730)18.扩展通信口(D8251、HIN232)19.八位开关20.交通灯21.单脉冲(HD74LS240)22.继电器(946H-1C-5D)23.电子音调(9012)24.蜂鸣器25.光耦(TLC521)26.电位器27.点阵显示28.PS2 接口29.并行接口(8255)30.键盘显示(8279)31.扩展实验区32.打印机接口33.单片机核心板(EA T598_31)34.带USB 接口的51MINI 仿真器三、实验内容1.熟悉整个实验箱的硬件资源。

2.使用51MINI仿真器连接电脑,在电脑的设备管理器中可找到下图所示的COM口。

实验二Keil集成开发环境练习一、实验目的1.掌握开发环境Keil的安装方法。

进制转换c课程设计

进制转换c课程设计

进制转换c 课程设计一、课程目标知识目标:1. 理解进制转换的基本概念,掌握二进制、八进制、十进制和十六进制之间的转换方法;2. 学会使用数学原理和逻辑推理进行不同进制间的转换;3. 掌握在实际问题中运用进制转换解决计算和存储等相关问题。

技能目标:1. 能够准确、迅速地进行不同进制间的转换,提高计算和逻辑思维能力;2. 能够运用所学进制转换知识解决实际生活中的问题,培养学以致用的能力;3. 通过小组合作和讨论,提高团队协作和沟通能力。

情感态度价值观目标:1. 培养学生对计算机科学的兴趣,激发学习积极性;2. 培养学生勇于探索、敢于创新的精神,增强解决问题的信心;3. 增强学生对科技发展对社会进步的作用的认识,提高社会责任感。

本课程针对的学生特点是具备一定的数学基础和逻辑思维能力,对计算机科学感兴趣。

通过本课程的学习,旨在让学生掌握进制转换的知识和技能,培养他们在实际问题中运用所学知识解决问题的能力,同时提高他们的团队协作和沟通能力,激发对科学技术的热爱和探索精神。

在教学过程中,注重理论与实践相结合,关注学生的个体差异,因材施教,确保课程目标的实现。

二、教学内容1. 引入进制概念:介绍不同进制的定义和特点,如二进制、八进制、十进制和十六进制;相关教材章节:第一章 计算机基础知识 第3节 进制与编码2. 进制转换方法:a. 二进制与十进制的转换;b. 八进制与十进制的转换;c. 十六进制与十进制的转换;d. 不同进制间的转换方法。

相关教材章节:第一章 计算机基础知识 第4节 进制转换3. 实际问题中的应用:a. 计算机存储单位与进制转换的关系;b. 网络地址进制转换的实际应用;c. 编程中进制转换的应用。

相关教材章节:第一章 计算机基础知识 第5节 进制转换的应用4. 教学大纲:第一课时:进制概念及二进制与十进制的转换;第二课时:八进制与十进制、十六进制与十进制的转换;第三课时:不同进制间的转换方法及实际问题中的应用。

单片机实验二数制转换类程序设计

单片机实验二数制转换类程序设计

单片机实验二数制转换类程序设计【实验目的】1.了解数制转换的基本概念及原理。

2.掌握单片机对数制转换的程序设计方法。

【实验器材】1.STC89C52单片机实验箱2. Keil C51开发环境3.电源、连接线等【实验原理】数制转换是将一个数值在不同进制间互相转换的过程。

常见的进制包括二进制、八进制、十进制和十六进制。

在程序设计中,经常需要进行不同进制间的转换,例如从二进制转换为十进制、从十进制转换为十六进制等。

【程序设计】本实验设计一个数制转换类的程序,实现二进制、八进制、十进制和十六进制之间的转换。

基本思路:1.输入数字和当前进制。

2.根据当前进制将输入的数字转换为十进制。

3.根据目标进制将十进制数转换为目标进制并输出。

【程序示例】```#include <reg52.h>#include <stdio.h>//二进制转十进制int binaryToDecimal(char *binary)int length = 0;while (binary[length] != '\0')length++;}int decimal = 0;int base = 1;for (int i = length - 1; i >= 0; i--) if (binary[i] == '1')decimal += base;}base *= 2;}return decimal;//十进制转二进制void decimalToBinary(int decimal, char *binary) int index = 0;while (decimal > 0)binary[index++] = (decimal % 2 == 1) ? '1' : '0'; decimal /= 2;}binary[index] = '\0';//反转二进制字符串int i = 0;int j = index - 1;while (i < j)char temp = binary[i];binary[i] = binary[j];binary[j] = temp;i++;j--;}//十进制转八进制void decimalToOctal(int decimal, char *octal)int index = 0;while (decimal > 0)octal[index++] = (decimal % 8) + '0';decimal /= 8;}octal[index] = '\0';//反转八进制字符串int i = 0;int j = index - 1;while (i < j)char temp = octal[i];octal[i] = octal[j];octal[j] = temp;i++;j--;}//十进制转十六进制void decimalToHexadecimal(int decimal, char *hexadecimal)int index = 0;while (decimal > 0)int remainder = decimal % 16;if (remainder < 10)hexadecimal[index++] = remainder + '0';} elsehexadecimal[index++] = remainder - 10 + 'A'; }decimal /= 16;}hexadecimal[index] = '\0';//反转十六进制字符串int i = 0;int j = index - 1;while (i < j)char temp = hexadecimal[i];hexadecimal[i] = hexadecimal[j]; hexadecimal[j] = temp;i++;j--;}void maichar input[100];int currentBase; // 当前进制int targetBase; // 目标进制printf("请输入一个数字:");scanf("%s", input);printf("请输入当前进制:");scanf("%d", &currentBase);printf("请输入目标进制:");scanf("%d", &targetBase);printf("转换结果为:");switch (currentBase)case 2://二进制转十进制int decimal = binaryToDecimal(input); //十进制转目标进制switch (targetBase)case 8:char octal[100];decimalToOctal(decimal, octal);printf("%s\n", octal);break;}case 10:printf("%d\n", decimal);break;}case 16:char hexadecimal[100]; decimalToHexadecimal(decimal, hexadecimal); printf("%s\n", hexadecimal);break;}}break;case 8://八进制转十进制decimal = atoi(input);//十进制转目标进制switch (targetBase)case 2:char binary[100];decimalToBinary(decimal, binary);printf("%s\n", binary);break;}case 10:printf("%d\n", decimal);break;}case 16:char hexadecimal[100]; decimalToHexadecimal(decimal, hexadecimal); printf("%s\n", hexadecimal);break;}}break;case 10://十进制转目标进制switch (targetBase)case 2:char binary[100];decimalToBinary(atoi(input), binary); printf("%s\n", binary);break;}case 8:char octal[100];decimalToOctal(atoi(input), octal); printf("%s\n", octal);break;}case 16:char hexadecimal[100];decimalToHexadecimal(atoi(input), hexadecimal); printf("%s\n", hexadecimal);break;}}break;case 16://十六进制转十进制decimal = atoi(input);//十进制转目标进制switch (targetBase)case 2:char binary[100];decimalToBinary(decimal, binary);printf("%s\n", binary);break;}case 8:char octal[100];decimalToOctal(decimal, octal);printf("%s\n", octal);break;}case 10:printf("%d\n", decimal);break;}}break;}```【实验结果】1.运行程序后,程序会提示输入一个数字、当前进制和目标进制。

课程设计报告--汇编程序设计(进制转换)

课程设计报告--汇编程序设计(进制转换)

课程设计报告--汇编程序设计(进制转换)汇编语言课程设计报告:代码与数制之间的转换内容提要:本课程设计的主要内容是代码与数制之间的转换~程序的主要功能如下:1. 将十六进制数转换成其对应的ASCII码2. 将ASCII码转换成其对应的十六进制数3. 实现二进制数与十六进制数之间相互转换4. 实现十进制数与二进制数之间相互转换5. 实现十六进制数与十进制数之间相互转换数制转换是计算机科学技术中最为基础的运算~在日常生活中~人们习惯性地使用十进制数进行计算。

而在计算机内部~所有的信息,数、字符、汉字、计算机的指令、状态,都是用二进制数来表示的。

在计算机中~二进制数的运算、处理比十进制数的更容易实现。

有时为了缩短书写~在计算机中还采用十六进制数。

所以~我们需要把数从二进制数形式转换成其他进制的形式~甚至在不同的进位制之间进行转换。

- 1 -汇编语言课程设计报告:代码与数制之间的转换目录一、前言〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.1 程设计的目的〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.2 代码与数制之间的转换程序的意义〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.3 数制之间的转换程序的主要功能〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3正文〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 二、2.1 代码与数制之间相互转换程序的设计大纲〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 2.2 代码与数制之间相互转换程序的结构图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃4 2.3 友好交互界面结构图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃5 2.4 程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃62.4.1 主程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃62.4.2 键盘输入子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃62.4.3 ASC码转16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃72.4.4 16进制转ASC进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃82.4.5 2,16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃82.4.6 2?16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃92.4.7 16?2进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃92.4.8 2~10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃102.4.9 2?10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃102.4.10 10?2进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃112.4.11 10~16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃112.4.12 10?16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃122.4.13 16?10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃12三、源程序及其注释〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃13四、课程设计体会〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃29五、参考文献〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃29- 2 -汇编语言课程设计报告:代码与数制之间的转换课程设计题目:代码与数制之间的转换一、前言1.1 课程设计的目的, 加深对汇编语言课程理论方面的理解, 通过编写一定规模和难度的程序,进行一次较全面的汇编编程训练,提高分析问题和解决问题的能力, 提高调试程序的能力1.2 代码与数制之间的转换程序的意义数制转换是计算机科学技术中最为基础的运算,在日常生活中,人们习惯性地使用十进制数进行计算。

51单片机整数二_十进制转换的快速算法

51单片机整数二_十进制转换的快速算法

51单片机整数二—十进制转换的快速算法※■西北矿冶研究院 陈国照 摘 要旨在提高89C51系列单片机编程中经常用到的整数二—十进制转换的代码执行效率。

提出的快速算法思路是,首先求出整数中包含的1000的个数,方法是采用二进制整数的高6位作为其预估,再通过2次校正得到准确值。

算法的关键是充分利用89C51单片机的两条特殊指令———单字节乘和单字节除。

其耗费时间不及使用sprintf()函数的1/10。

 关键词89C51 单片机 二—十进制转换 快速算法 89C51系列单片机历经20多年的发展,仍然长盛不衰,在工业控制及仪器仪表中得到广泛应用;用于89C51单片机软件开发的Keil C51编译系统也日臻成熟,成为89C51系列单片机软件开发的优先选择。

在单片机系统开发中,经常遇到整数二—十进制转换的问题,一般可以采用C语言中的标准函数sprintf()来实现;但由于该函数是通用格式输出函数,代码量大(超过1K B),用于整数二-十进制转换的运算时间过长(在12M Hz晶振频率下超过1ms),这在计算密集(computation intensive)的应用中是一个影响系统性能的重要因素。

在低功耗系统设计中,也必须考虑因为运算时间长而增加系统耗电量的问题。

经常有网友询问如何高效地实现这种转换。

笔者通过对二进制整数的深入分析,巧妙运用89C51单片机的特殊单字节乘除指令,成功地实现了整数二—十进制转换的快速算法。

本文将详细介绍快速算法,给出颇具实用性的优化代码,并与使用sprintf()函数的实现及传统的汇编代码实现进行性能比较。

1 传统的汇编代码实现要实现快速运算,很自然地想到教科书中提到的双字节二进制整数转换成3字节BCD码整数的子程序。

其采用的算法是,依次将整数的每位左移至CY位,再把CY 位左移至一个3字节队列中,并进行十进制调整。

通过16次移位完成运算,结果为压缩格式的3字节BCD编码。

汇编子程序如下:入口:双字节十六进制整数在R6、R7中。

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

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

单片机原理课程设计报告题目:51单片机实现进制转换专业:信息工程班级:信息101学号:1004020307小组成员:1004020103指导教师:吴叶兰北京工商大学计算机与信息工程学院题目:51单片机实现进制转换1、设计目的1)熟悉51单片机的编程;2)熟悉单片机开发的基本焊接;3)熟悉单片机元件的使用方法;4)熟悉C51的软件开发环境(编程软件Keil、烧录软件STC_ISP_v4792、设计要求1)按键输入数据,具有确定和清零功能;2)1602液晶屏幕显示,具有显示输入输出和提示功能;3)2,、8、10、16进制数可任意互相转化;3、硬件电路设计(包括电路图及说明)1)控制模块:控制模块是由1块STC89C52 1个12MHz无源晶振、1个复位电路22uF电容、1个1k欧姆电阻、1个8位1k欧姆排阻组成。

STC89C52是STC公司生产的一种低功耗、高性能CMOS位微控制器,具有8K在系统可编程Flash存储器。

STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

具有以下标准功能:8k字节Flash,512字节RAM 32位I/O 口线,看门狗定时器,内置4KBEEPRQMIAX810 复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。

另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

最高运作频率35MHz 6T/12T可选。

芯片实际选用的STC89C5与protues模拟电路图中的AT89C52功能基本相同,区别在于烧录程序的方式。

C51单片机课程设计实验报告

C51单片机课程设计实验报告

《单片机课程设计》说明书 --- 串口通信系统学号: 10121317姓名:班级: 10计Y指导教师:王建农2010年6月28日- 2010年7 月9日一、引言 ------------------------------------------------------------------------------------------------------------ 1二、工作原理 ------------------------------------------------------------------------------------------------------ 2三、硬件设计 ------------------------------------------------------------------------------------------------------ 6四、软件设计 ------------------------------------------------------------------------------------------------------ 9五、调试测试 ----------------------------------------------------------------------------------------------------- 16六、结论 ----------------------------------------------------------------------------------------------------------- 17七、结束语 -------------------------------------------------------------------------------------------------------- 18参考文献 ----------------------------------------------------------------------------------------------------------- 19一、引言目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。

十六进制转十进制设计

十六进制转十进制设计

综合实验报告实验名称:十六进制转十进制设计学院:机械与汽车工程学院专业:测控技术与仪器班级:测控091班姓名:张兵学号:3090103124时间2012.11.26—2012.12.7指导教师:姚宏志题目:利用51单片机实现2字节16进制数转换成10进制数实验一、实验目的:1、学习了解掌握A T89C51单片机的基本知识以及设计基本的单片机电路。

2、学习利用Altium Designer画PCB电路板并焊接电路。

3、学习利用仿真软件仿真电路。

4、学习掌握LED数码管的基本知识以及keilC51编程的相关知识。

二、实验器材:AT89C51单片机、74LS07芯片(2个)、引脚底座(14引脚2个、40引脚1个)、电容(2个)、排阻、四位一体数码管(1个)、晶振(12MHz)、开关3个、导线若干等。

三、实验说明实验用到的元器件:51单片机、74LS07驱动器、八段共阴极LED、排阻等。

元器件的工作原理及使用方法:首先来说明单片机的工作原理,我们本实验用到为单片机的最小系统,最小系统,一有时钟源,即晶振。

二有复位电路。

时钟源提供单片机基准时钟信号,保证各指令的正常运行,复位电路则是用于复位还原。

其次来说明74ls07,74ls07是集电极开路六正相高压驱动器,在这次我做的试验中是用它来给八段数码管提供电压进而驱动其工作。

数码管此次用到的是八段共阴极的数码管,共a、b、c、e、f、g、dp,通过在P0口赋予不同的电平来控制相应的段位处于不同的状态(高电平点亮、低电平不亮)。

四、实验原理:1、AT89C51单片机的资料:AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用A TMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。

C51单片机汇编语言程序设计

C51单片机汇编语言程序设计

C51单片机汇编语言程序设计一、二进制数与十六进制数之间的转换1、数的表达方法为了方便编程时书写,规定在数字后面加一个字母来区别,二进制数后加B十六进制数后加H。

2、二进制数与十六进制数对应表二进制十六进二进制制0000000100100011010001010110011101234567100010011010101111001101 11101111十六进制89ABCDEF3、二进制数转换为十六进制数转换方法为:从右向左每4位二进制数转化为1位十六进制数,不足4位部分用0补齐。

例:将(1010000110110001111)2转化为十六进制数解:把1010000110110001111从右向左每4位分为1组,再写出对应的十六进制数即可。

0101000011011000111150D8F答案:(1010000110110001111)2=(50D8F)16例:将1001101B转化为十六进制数解:把10011110B从右向左每4位分为1组,再写出对应的十六进制数即可。

100111109E答案:10011110B=9EH4、十六进制数转换为二进制数转换方法为:将每1位十六进制数转换为4位二进制数。

例:将(8A)16转化为二进制数解:将每位十六进制数写成4位二进制数即可。

8A10001010答案:(8A)16=(10001010)2例:将6BH转化为二进制数解:将每位十六进制数写成4位二进制数即可。

6B01101011答案:6BH=01101011B二、计算机中常用的基本术语1、位(bit)计算机中最小的数据单位。

由于计算机采用二进制数,所以1位二进制数称作1bit,例如110110B为6bit。

2、字节(Byte,简写为B)8位的二进制数称为一个字节,1B=8bit3、字(Word)和字长两个字节构成一个字,2B=1Word。

字长是指单片机一次能处理的二进制数的位数。

如AT89S51是8位机,就是指它的字长是8位,每次参与运算的二进制数的位数为8位。

51单片机计算器设计报告

51单片机计算器设计报告

目录一设计概述------------------------------------------3 二硬件电路图---------------------------------------3 三软件流程图---------------------------------------4 四结论------------------------------------------------11 五参考文献-------------------------------------------13一、1.1设计概述计算器通过编译,能实现简单的四位数加减及两位数的乘除,输入的数通过键盘给出,要求显示要操作的数,并显示结果,编译十进制跟十六进制之间转换的程序,实现十进制转十六进制,显示结果。

1.2功能说明简单的运算功能:当通过输入键盘数字时,能够在显示器上显示输出的数值,并且通过想实现的简单运算功能,实现计算器的加、减、乘、除,并将结果显示出来。

进制转换的功能:通过输入的十进制数,经过计算器的功能将其转换为十六进制数,并将结果显示出来。

二、硬件电路图主要程序流程说明:主程序首先进行初始化,设定一些变量及其意义,扫描键盘,当输入有0~9数字时,通过键盘的扫描程序,将数值赋给second并在显示器上来,当输入的是加减符号的时候,通过键盘的扫面程序,赋予OP相应值,并跳到运算部分,通过判断preop的值,执行相应的运算部分,将OP的值赋给preop并把second的值赋给first。

再一次通过输入0~9的数字,再一次经过键盘的扫描程序,输出second的值,最后通过输入键盘上的等号,右键盘扫描得出相应的OP,跳到运算部分,根据程序的流程,将第一个数的跟第二个数进行简单的加、减、乘、除运算,并将结果通过显示器输出。

同理,当需要进行进制之间的转换时,输入相应的数字,通过键盘的扫描不显示在显示器上,再通过控制,进制转换开关,如果进制转换开关置0 按下,就实现了进制之间的相互转换。

单片机C51程序设计实验报告书

单片机C51程序设计实验报告书

实验一并行输入输出口的使用一、实验目的:学会设计proteus 7仿真电路,学习P1口的使用方法和延时子程序的编写用Keil uVision 3编程实现发光二极管的流水点亮。

二、实验原理:P1口为8位准双向I/O口,它的每一位都可以分别定义为输入线或输出线(作为输入时,口锁存器必须置1)。

P1口作为输出,接8个发光二极管D1~D8三、实验代码:#include<reg51.h>#include<intrins.h> //移位库函数包含于此头文件中void delay(unsigned int d) //定义延时子函数{ while(--d>0);}void main(){ unsigned char i,sel;while(1){ sel=0xfe;for(i=0;i<=8;i++){ P1=sel; //显示变量赋给P1口delay(50000); //延时sel=_crol_(sel,1); //改变显示变量}}}四、实验结论:用while语句实现发光二极管循环流水点亮,从上到下一次点亮。

实验二C51分支程序设计一、实验目的:学习多分支选择结构和switch语句,了解循环的嵌套。

二、实验原理:do while 循环先执行后判断是否循环,switch括号中的表达式的值与某case后的常量表达式的值相同时,就执行它后面的语句,遇到break语句则退出switch语句。

本实验仿真电路图、流程图如下:(仿真电路图)(流程图)三、实验代码:#include <reg51.h>void main(){ char a;do{ P1=0xff;a=P1;a=a&0x03;switch(a){ case 0:P2=0x0e;break;case 1:P2=0x0d;break;case 2:P2=0x0b;break;case 3:P2=0x07;break;}}while(1);}四、实验结论:多分支选择的switch/case语句,可直接处理并行多分支选择问题,从匹配表达式的括号开始执行,不再进行判断。

课程设计报告--汇编程序设计(进制转换)

课程设计报告--汇编程序设计(进制转换)

课程设计报告--汇编程序设计(进制转换)汇编语言课程设计报告:代码与数制之间的转换内容提要:本课程设计的主要内容是代码与数制之间的转换~程序的主要功能如下:1. 将十六进制数转换成其对应的ASCII码2. 将ASCII码转换成其对应的十六进制数3. 实现二进制数与十六进制数之间相互转换4. 实现十进制数与二进制数之间相互转换5. 实现十六进制数与十进制数之间相互转换数制转换是计算机科学技术中最为基础的运算~在日常生活中~人们习惯性地使用十进制数进行计算。

而在计算机内部~所有的信息,数、字符、汉字、计算机的指令、状态,都是用二进制数来表示的。

在计算机中~二进制数的运算、处理比十进制数的更容易实现。

有时为了缩短书写~在计算机中还采用十六进制数。

所以~我们需要把数从二进制数形式转换成其他进制的形式~甚至在不同的进位制之间进行转换。

- 1 -汇编语言课程设计报告:代码与数制之间的转换目录一、前言〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.1 程设计的目的〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.2 代码与数制之间的转换程序的意义〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.3 数制之间的转换程序的主要功能〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3正文〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 二、2.1 代码与数制之间相互转换程序的设计大纲〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 2.2 代码与数制之间相互转换程序的结构图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃4 2.3 友好交互界面结构图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃5 2.4 程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃62.4.1 主程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃62.4.2 键盘输入子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃62.4.3 ASC码转16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃72.4.4 16进制转ASC进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃82.4.5 2,16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃82.4.6 2?16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃92.4.7 16?2进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃92.4.8 2~10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃102.4.9 2?10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃102.4.10 10?2进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃112.4.11 10~16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃112.4.12 10?16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃122.4.13 16?10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃12三、源程序及其注释〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃13四、课程设计体会〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃29五、参考文献〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃29- 2 -汇编语言课程设计报告:代码与数制之间的转换课程设计题目:代码与数制之间的转换一、前言1.1 课程设计的目的, 加深对汇编语言课程理论方面的理解, 通过编写一定规模和难度的程序,进行一次较全面的汇编编程训练,提高分析问题和解决问题的能力, 提高调试程序的能力1.2 代码与数制之间的转换程序的意义数制转换是计算机科学技术中最为基础的运算,在日常生活中,人们习惯性地使用十进制数进行计算。

c课程设计进制转换

c课程设计进制转换

c 课程设计进制转换一、教学目标本章节的教学目标是使学生掌握进制转换的基本概念和方法,能够熟练地进行不同进制之间的转换。

具体来说,知识目标包括了解不同进制的定义和特点,掌握十进制、二进制、八进制和十六进制之间的转换方法;技能目标包括能够使用计算器或者编程语言进行进制转换,解决实际的进制转换问题;情感态度价值观目标包括培养学生的逻辑思维能力,提高学生对计算机科学和编程的兴趣。

二、教学内容本章节的教学内容主要包括进制转换的基本概念和方法。

首先,介绍十进制、二进制、八进制和十六进制的定义和特点,解释不同进制之间的转换关系。

然后,讲解十进制到其他进制的转换方法,包括除以进制基数、取余数、倒序排列等步骤。

接着,讲解其他进制到十进制的转换方法,包括乘以进制基数、取整数、正序排列等步骤。

最后,通过实例分析和练习题,使学生熟练掌握进制转换的方法和技巧。

三、教学方法为了激发学生的学习兴趣和主动性,本章节将采用多种教学方法。

首先,通过讲授法,向学生讲解进制转换的基本概念和方法。

然后,通过讨论法,引导学生进行思考和交流,巩固对进制转换的理解。

接着,通过案例分析法,提供实际的进制转换实例,使学生能够将理论知识应用到实际问题中。

最后,通过实验法,让学生亲自动手进行进制转换的实验,培养学生的实践能力和创新思维。

四、教学资源为了支持教学内容和教学方法的实施,本章节将选择和准备适当的教学资源。

教材方面,将使用《计算机科学导论》或者《编程基础》等相关教材,提供理论知识的学习。

参考书方面,将推荐《计算机组成与设计》或者《算法导论》等书籍,提供更深入的进制转换知识。

多媒体资料方面,将制作PPT和教学视频,通过图像和动画的形式,使学生更直观地理解进制转换的过程。

实验设备方面,将准备计算机和编程环境,让学生能够进行实际的编程实验,巩固进制转换的技能。

五、教学评估本章节的教学评估将采用多元化的评估方式,以全面、客观地评估学生的学习成果。

平时表现方面,将通过观察学生的课堂参与度、提问和回答问题的情况,以及小组讨论的贡献来评估学生的学习态度和理解程度。

单片机(C51)实验报告

单片机(C51)实验报告

实验一熟悉ADEK单片机教学实验系统一、实验目的1.熟悉 ADEK 单片机教学实验系统和仿真器的结构和功能。

2.了解如何安装 51MINI 仿真器驱动程序。

二、ADEK 单片机教学实验系统组成图 1-1 AEDK 单片机教学实验系统外观图如图 1-1 所示, ADEK-EAT598 单片机教学实验系统遵循了模块化的设计思路,有丰硕的接口,而且具有良好的扩展性,以下为组成模块和利用的要紧芯片。

1.步进电机2.直流电机3.温度操纵( DS18B20、热敏电阻 B3470)4.模数转换( ADC0809)5.串行实验区( EEPROM X25045、 AT24C08、时钟芯片 HT1380、数模转换 TLC5615、模数转换 TLC1543)6. RAM( HM62256)7. ROM( M27C512)8.地址译码( 74LS138)9.数模转换( DAC0832)10.仿真机通信口:原厂仿真器的串口通信口,这部份功能已不用。

11.串并转换( 74LS164)12.频率源( CD4020)213.扩展输出( 74LS273)14.扩展输入(74LS244)15.电源开关16.液晶显示(MSC-G12232DYEW-7N)17.语音录放(ISD1730)18.扩展通信口(D8251、HIN232)19.八位开关20.交通灯21.单脉冲(HD74LS240)22.继电器(946H-1C-5D)23.电辅音调(9012)24.蜂鸣器25.光耦(TLC521)26.电位器27.点阵显示28.PS2 接口29.并行接口(8255)30.键盘显示(8279)31.扩展实验区32.打印机接口33.单片机核心板(EAT598_31)34.带USB 接口的51MINI 仿真器三、实验内容1.熟悉整个实验箱的硬件资源。

2.利用51MINI仿真器连接电脑,在电脑的设备治理器中可找到以下图所示的COM口。

实验二Keil集成开发环境练习一、实验目的1.把握开发环境Keil的安装方式。

51单片机实现2,8,10,16进制转换[实践]

51单片机实现2,8,10,16进制转换[实践]

51单片机实现2,8,10,16进制转换[实践] #include<reg52.h>sbit dula=P2^6; sbit wela=P2^7; sbit key1=P3^4;sbit key2=P3^5; sbit key3=P3^6; sbit key4=P3^7; #define uchar unsigned char#define uint unsigned int uinta,b,c,d,e,f,g,h,j,num,temp,num1,num2,num3,num4,num5,num6;ucharSHZ[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void dkeyscan(); void jia();void jian(); void cheng(); void chu(); void deng(); void qingchu();void delay(uchar z); void display1(); void display2(); voiddisplay3(); void display4(); void display5(); void display6(); void display7(); void jinzhi2(); void jinzhi8(); void jinzhi10(); voidjinzhi16(); void jkeyscan(); void chushi(); void jiance(); void main() { chushi();while(1){P3=0xff;dkeyscan();P3=0xff;delay(2);// P3=0xff;jkeyscan();// P3=0xff;if(num3==2)jinzhi2();if(num3==8)jinzhi8();if(num3==10)jinzhi10();if(num3==16)jinzhi16();jiance();display7();}}void delay(uchar z) {uchar x,y;for(x=z;x>0;x--)for(y=110;y>0;y--); }void chushi(){num3=10;num1=10;a=b=c=d=e=f=g=h=j=0; }void jinzhi2() //二进制数 {if(num1==16){num2=a+b*16+c*16*16+d*16*16*16+e*16*16*16*16+f*16*16*16*16*16; a=num2%2;b=num2/2%2;c=num2/2/2%2;d=num2/2/2/2%2;e=num2/2/2/2/2%2;f=num2/2/2/2/2/2%2;h=num2/2/2/2/2/2/2%2;j=num2/2/2/2/2/2/2/2%2;num1=2;}if(num1==8){num2=a+b*8+c*8*8+d*8*8*8+e*8*8*8*8+f*8*8*8*8*8;a=num2%2;b=num2/2%2;c=num2/2/2%2;d=num2/2/2/2%2;e=num2/2/2/2/2%2;f=num2/2/2/2/2/2%2;h=num2/2/2/2/2/2/2%2;j=num2/2/2/2/2/2/2/2%2;num1=2;}if(num1==10){a=num2%2;b=num2/2%2;c=num2/2/2%2;d=num2/2/2/2%2;e=num2/2/2/2/2%2;f=num2/2/2/2/2/2%2;h=num2/2/2/2/2/2/2%2;j=num2/2/2/2/2/2/2/2%2;num1=2;}}void jinzhi8(){if(num1==2){num2=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2; a=num2%8;b=num2/8%8;c=num2/8/8%8;d=num2/8/8/8%8;e=num2/8/8/8/8%8;f=num2/8/8/8/8/8%8;num1=8;}if(num1==10){a=num2%8;b=num2/8%8;c=num2/8/8%8;d=num2/8/8/8%8;e=num2/8/8/8/8%8;f=num2/8/8/8/8/8%8;num1=8;}if(num1==16){num2=a+b*16+c*16*16+d*16*16*16+e*16*16*16*16+f*16*16*16*16*16; a=num2%8;b=num2/8%8;c=num2/8/8%8;d=num2/8/8/8%8;e=num2/8/8/8/8%8;f=num2/8/8/8/8/8%8;num1=8;}}void jinzhi10(){if(num1==16){num2=a+b*16+c*16*16+d*16*16*16+e*16*16*16*16+f*16*16*16*16*16; f=num2%1000000/100000;e=num2%100000/10000;d=num2%10000/1000;c=num2%1000/100;b=num2%100/10;a=num2%10;num1=10;}if(num1==8){num2=a+b*8+c*8*8+d*8*8*8+e*8*8*8*8+f*8*8*8*8*8;f=num2%1000000/100000;e=num2%100000/10000;d=num2%10000/1000;c=num2%1000/100;b=num2%100/10;a=num2%10;num1=10;}if(num1==2){num2=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2; f=num2%1000000/100000;e=num2%100000/10000;d=num2%10000/1000;c=num2%1000/100;b=num2%100/10;a=num2%10;num1=10;}}void jinzhi16(){if(num1==2){num2=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2; a=num2%16;b=num2/16%16;c=num2/16/16%16;d=num2/16/16/16%16;e=num2/16/16/16/16%16;f=num2/16/16/16/16/16%16;num1=16;}if(num1==8){num2=a+b*8+c*8*8+d*8*8*8+e*8*8*8*8+f*8*8*8*8*8;a=num2%16;b=num2/16%16;c=num2/16/16%16;d=num2/16/16/16%16;e=num2/16/16/16/16%16;f=num2/16/16/16/16/16%16;num1=16;}if(num1==10){num2=a+b*10+c*10*10+d*10*10*10+e*10*10*10*10+f*10*10*10*10*10; a=num2%16;b=num2/16%16;c=num2/16/16%16;d=num2/16/16/16%16;e=num2/16/16/16/16%16;f=num2/16/16/16/16/16%16;num1=16;}}void jiance() {if(j==0){if(h==0){if(f==0){if(e==0){if(d==0){if(c==0){if(b==0){if(a==0){num=0;}else num=1; }else num=2;}else num=3;}else num=4;}else num=5;}else num=6;}else num=6;}else num=6;}void dkeyscan() {P3=0xff;if(key1==0) {delay(10);if(key1==0) {num3=2;while(!key1);delay(10); while(!key1); P3=0xff;}}if(key2==0) {delay(10);if(key2==0) {num3=8;while(!key2); delay(10); while(!key2); P3=0xff;}}if(key3==0) {delay(10);if(key3==0) {num3=10; while(!key3);delay(10);while(!key3);P3=0xff;}}if(key4==0){delay(10);if(key4==0){num3=16;while(!key4);delay(10);while(!key4);P3=0xff;}}}void jia(){// if(num1==16)// num2=a+b*16+c*16*16+d*16*16*16+e*16*16*16*16+f*16*16*16*16*16; if(num1==10)num2=a+b*10+c*10*10+d*10*10*10+e*10*10*10*10+f*10*10*10*10*10;if(num1==8)num2=a+b*8+c*8*8+d*8*8*8+e*8*8*8*8+f*8*8*8*8*8;if(num1==2)num2=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2+h*2*2*2*2*2*2+j*2*2*2 *2*2*2*2;a=b=c=d=e=f=g=h=j=0;num=0;num4=1;}void jian(){// if(num1==16)// num2=a+b*16+c*16*16+d*16*16*16+e*16*16*16*16+f*16*16*16*16*16;if(num1==10)num2=a+b*10+c*10*10+d*10*10*10+e*10*10*10*10+f*10*10*10*10*10;if(num1==8)num2=a+b*8+c*8*8+d*8*8*8+e*8*8*8*8+f*8*8*8*8*8;if(num1==2)num2=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2+h*2*2*2*2*2*2+j*2*2*2 *2*2*2*2;a=b=c=d=e=f=g=h=j=0;num=0;num4=2;}void cheng(){// if(num1==16)// num2=a+b*16+c*16*16+d*16*16*16+e*16*16*16*16+f*16*16*16*16*16;if(num1==10)num2=a+b*10+c*10*10+d*10*10*10+e*10*10*10*10+f*10*10*10*10*10;if(num1==8)num2=a+b*8+c*8*8+d*8*8*8+e*8*8*8*8+f*8*8*8*8*8;if(num1==2)num2=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2+h*2*2*2*2*2*2+j*2*2*2 *2*2*2*2;a=b=c=d=e=f=g=h=j=0;num=0;num4=3;}void chu(){// if(num1==16)// num2=a+b*16+c*16*16+d*16*16*16+e*16*16*16*16+f*16*16*16*16*16;if(num1==10)num2=a+b*10+c*10*10+d*10*10*10+e*10*10*10*10+f*10*10*10*10*10;if(num1==8)num2=a+b*8+c*8*8+d*8*8*8+e*8*8*8*8+f*8*8*8*8*8;if(num1==2)num2=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2+h*2*2*2*2*2*2+j*2*2*2 *2*2*2*2;a=b=c=d=e=f=g=h=j=0;num=0;num4=4;}void yunsuan(){if(num4==1)num6=num5+num2;if(num4==2)num6=num2-num5;if(num4==3)num6=num2*num5;if(num4==4)num6=num2/num5;}void deng(){// if(num1==16)// num5=a+b*16+c*16*16+d*16*16*16+e*16*16*16*16+f*16*16*16*16*16;if(num1==10){num5=a+b*10+c*10*10+d*10*10*10+e*10*10*10*10+f*10*10*10*10*10; yunsuan();f=num6%1000000/100000;e=num6%100000/10000;d=num6%10000/1000;c=num6%1000/100;b=num6%100/10;a=num6%10;}if(num1==8){num5=a+b*8+c*8*8+d*8*8*8+e*8*8*8*8+f*8*8*8*8*8;yunsuan();a=num6%8;b=num6/8%8;c=num6/8/8%8;d=num6/8/8/8%8;e=num6/8/8/8/8%8;f=num6/8/8/8/8/8%8;}if(num1==2){num5=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2+h*2*2*2*2*2*2+j*2*2*2 *2*2*2*2;yunsuan();a=num2%2;b=num2/2%2;c=num2/2/2%2;d=num2/2/2/2%2;e=num2/2/2/2/2%2;f=num2/2/2/2/2/2%2;h=num2/2/2/2/2/2/2%2;j=num2/2/2/2/2/2/2/2%2;}num=0;}void qingchu(){g=0;a=b;b=c;c=d;d=e;e=f;f=h;h=j;j=g;num--; }void anjian1(uchar x ) { if(num1==2){g=x;j=h;h=f;f=e;e=d;d=c;c=b;b=a;a=g;num++;}}void anjian2(uchar x) { if(num1==8){g=x;f=e;e=d;d=c;c=b;b=a;a=g;num++;}}void anjian3(uchar x) { if(num1==10){g=x;f=e;e=d;d=c;c=b;b=a;a=g;num++;}}void anjian4(uchar x) { if(num1==16){g=x;f=e;e=d;d=c;c=b;b=a;a=g;num++;}}void jkeyscan() {P3=0xfe; //第1次检验temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(5);P3=0xfe;temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xee: if(num1==2) {g=0;j=h;h=f;f=e;e=d;d=c;c=b;b=a;a=g;num++;if(num==1)num=0;}anjian2(1);anjian3(1);anjian4(1);break;case 0xde: anjian1(1); anjian2(2);anjian3(2);anjian4(2);break;case 0xbe: anjian2(3); anjian3(3);anjian4(3);break;case 0x7e: anjian4(4); jia();break;}temp=temp&0xf0;while(temp!=0xf0){temp=P3;temp=temp&0xf0;}delay(5);while(temp!=0xf0){temp=P3;temp=temp&0xf0;}P3=0xff;}}P3=0xfd; //第2次检验temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(5);P3=0xfd;temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xed: anjian2(4); anjian3(4);anjian4(5);break;case 0xdd: anjian2(5); anjian3(5);anjian4(6);break;case 0xbd: anjian2(6); anjian3(6);anjian4(7);break;case 0x7d: anjian4(8); jian();break;}temp=temp&0xf0;while(temp!=0xf0){temp=P3;temp=temp&0xf0;}delay(5);while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}P3=0xfb; //第3次检验temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(5);P3=0xfb;temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xeb: anjian2(7); anjian3(7);anjian4(9);break;case 0xdb: anjian2(8); anjian3(8);anjian4(10);break;case 0xbb: anjian3(9); anjian4(11);break;case 0x7b:anjian4(12); cheng();break;}temp=temp&0xf0; while(temp!=0xf0) {temp=P3;temp=temp&0xf0;}delay(5);while(temp!=0xf0) {temp=P3;temp=temp&0xf0;}}}P3=0xf7; //第4次检验temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(5);P3=0xf7;temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case 0xe7:anjian4(13); deng();break;case 0xd7: anjian4(14); if(num1==10){g=0;f=e;e=d;d=c;c=b;b=a;a=g;num++;if(num==1)num=0;}if(num1==8){g=0;f=e;e=d;d=c;c=b;b=a;a=g;num++;if(num==1)num=0;}break;case 0xb7:anjian4(15); qingchu();break;case 0x77: if(num1==16) {g=0;f=e;e=d;d=c;c=b;b=a;a=g;num++;if(num==1)num=0;}chu();break;}temp=temp&0xf0; while(temp!=0xf0) {temp=P3;temp=temp&0xf0; }delay(5);while(temp!=0xf0) {temp=P3;temp=temp&0xf0; }}}P3=0xff;}void display1() {wela=1; //第1个数字P0=0xdf;wela=0;P0=0x00;dula=1;P0=SHZ[a];dula=0;delay(1);P0=0x00;dula=1;P0=0x00;dula=0; }void display2() { wela=1; //第2个数字P0=0xef;wela=0;P0=0x00;dula=1;P0=SHZ[b];dula=0;delay(1);P0=0x00;dula=1;P0=0x00;dula=0; }void display3() { wela=1; //第3个数字P0=0xf7;wela=0;P0=0x00;dula=1;P0=SHZ[c];dula=0;delay(1);P0=0x00;dula=1;P0=0x00;dula=0; }void display4() { wela=1; //第4个数字P0=0xfb;wela=0;P0=0x00;dula=1;P0=SHZ[d];dula=0;delay(1);P0=0x00;dula=1;P0=0x00;dula=0; }void display5() { wela=1; //第5个数字P0=0xfd;wela=0;P0=0x00;dula=1;P0=SHZ[e];dula=0;delay(1);P0=0x00;dula=1;P0=0x00;dula=0; }void display6() { wela=1; //第6个数字P0=0xfe;wela=0;P0=0x00;dula=1;P0=SHZ[f];dula=0;delay(1);P0=0x00;dula=1;P0=0x00;dula=0;}void display7() { if(num==0) display1();if(num==1){display1();}if(num==2){display1(); display2();}if(num==3){display1(); display2(); display3();}if(num==4) {display1(); display2(); display3(); display4(); }if(num==5) {display1(); display2(); display3(); display4(); display5(); }if(num==6) {display1(); display2(); display3(); display4(); display5(); display6(); }if(num==7) num=6; }。

51单片机制作进制转换器论文

51单片机制作进制转换器论文
case(0X0e):KeyValue=3;break;
}
//测试行
GPIO_KEY=0XF0;
switch(GPIO_KEY)
{ case(0X70):KeyValue=KeyValue;break;
case(0Xb0):KeyValue=KeyValue+4;break;
case(0Xd0): KeyValue=KeyValue+8;break;
case(0Xe0):KeyValue=KeyValue+12;break;
}
while((a<50)&&(GPIO_KEY!=0xf0))//检测按键松手检测
{
delay(10);
a++;
}
}
}
}
在调试过程中,出现了很多问题。烧录好程序后,在进行第一次模式选择时,可以进入进制转换,并显示,但我们发现如果想换一种进制模式时,按其他独立按键则无效,回到程序我们发现进入一个循环后,无法跳出,只能在里边循环,导致无法选择其他进制模式。我们思考后加入了再按一次原来的独立按键跳出循环的语句,便实现了可以选择其他模式的功能。解决了这一问题后,进制转换器便可以实现我们想要的功能了。
********************************************************************/
#include<reg51.h>
#define GPIO_DIG P0//宏定义段选
#define GPIO_KEY P1//宏定义键盘
sbit W1=P2^0;//位选
一、设计思路与总体方案
进制转换器基原理的逻辑框图如下所示:

C51程序设计 课程设计报告

C51程序设计  课程设计报告

C H A N G C H U N I N S T I T U T E O F T E C H N O L O G Y 实验报告实习名称: C51程序设计学生姓名:学院名称:电气与信息工程学院专业班级:电子1042班学号:指导教师:姜航成绩评定考核内容实习表现实习报告实习成果或答辩综合评定成绩成绩2013 年 10月 16日实习纪律要求和成绩考核办法(纪律要求和成绩考核办法在封皮背面打印)1.实习必须听从教师指导,严格遵守安全操作规程。

不准违规操作,未经指导教师允许不准启动任何非自用设备、仪器、工具等;操作项目和内容必须按实习要求进行,特别要注意防止电烙铁烧烫伤、不用时要及时切断电源。

2.实习教室内不准吸烟、吃食物(含零食),不准带无关人员到实习教室活动,否则扣平时表现分。

3.参加本次实习时间不足三分之二或旷课3天以上者,不得参加本次考核,按不及格处理。

4.病事假必须有请假条,需经班主任或有关领导批准,否则按旷课处理。

5.实习过程考核和实习成绩在教师手册中要有记载。

6.实习成绩的考核由指导教师根据实习表现(出勤、遵守纪律情况等)、实习报告、实习成果、现场操作、口试或笔试等几个方面,给出各项成绩或权重,综合后给出实习总成绩。

7.成绩评定采用五级分制,即优、良、中、及格、不及格。

8.实习结束一周内,指导教师提交实习成绩和实习总结。

实习报告要求实习报告内容、格式各专业根据实习类别(技能实习、认识实习、生产实习、毕业实习等)统一规范,经教研室主任审核、主管院长审批备案。

注意:1.实习任务书和实习指导书在实习前发给学生,实习任务书放置在实习报告封面后和正文目录前。

2.为了节省纸张,保护环境,便于保管实习报告,统一采用A4纸,实习报告建议双面打印(正文采用宋体五号字)或手写,左侧装订,订两个钉。

本作业包含以下内容:一·8×8LED点阵屏仿电梯数字滚动显示二·LCD160128中文显示温度与时间三·用ADC0832设计的两路电压表四·可以调控的走马灯五·高仿真数码管电子钟一·8×8LED点阵屏仿电梯数字滚动显示摘要:伴随着我国现代化程度的提高,电梯成为高层建筑中的重要交通工具,它是高层建筑中安全、可靠、垂直上下的运载工具,对改善劳动条件、减轻劳动强度起到很大的作用。

  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个字符液晶模块(显示字符和数字)。

液晶显示屏际实际选用的是QC1602A与 protues模拟电路图中的LM016功能基本相同。

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的RST接VCC电源,即上点就复位。

XTAL1,XTAL2接12MHz无源晶振。

4、软件设计(包括流程图及程序)1)程序流程图:2)程序代码:#include<reg52.h> //#include<intrins.h>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 P3unsigned 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);}/*------------------------------------------------ mS延时函数------------------------------------------------*/ void DelayMs(unsigned char t){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------判忙函数------------------------------------------------*/ bit LCD_Check_Busy(void){DataPort= 0xFF;RS_CLR;RW_SET;EN_CLR;_nop_();EN_SET;return (bit)(DataPort & 0x80);}/*------------------------------------------------写入命令函数------------------------------------------------*/ void LCD_Write_Com(unsigned char com){while(LCD_Check_Busy()); //忙则等待RS_CLR;RW_CLR;EN_SET;DataPort= com;_nop_();EN_CLR;}/*------------------------------------------------写入数据函数------------------------------------------------*/void LCD_Write_Data(unsigned char Data){while(LCD_Check_Busy()); //忙则等待RS_SET;RW_CLR;EN_SET;DataPort= Data;_nop_();EN_CLR;}/*------------------------------------------------清屏函数------------------------------------------------*/void LCD_Clear(void){LCD_Write_Com(0x01);DelayMs(5);}/*------------------------------------------------写入字符串函数------------------------------------------------*/void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) {if (y == 0){LCD_Write_Com(0x80 + x);}else{LCD_Write_Com(0xC0 + x);}while (*s){LCD_Write_Data( *s);s ++;}}/*------------------------------------------------写入字符函数------------------------------------------------*/void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) {if (y == 0){LCD_Write_Com(0x80 + x);}else{LCD_Write_Com(0xC0 + x);}LCD_Write_Data( Data);}/*------------------------------------------------初始化函数------------------------------------------------*/void LCD_Init(void){LCD_Write_Com(0x38); /*显示模式设置*/DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);LCD_Write_Com(0x08); /*显示关闭*/LCD_Write_Com(0x01); /*显示清屏*/LCD_Write_Com(0x06); /*显示光标移动设置*/DelayMs(5);LCD_Write_Com(0x0C); /*显示开及光标设置*/}/*------------------------------------------------按键扫描函数0,返回小键盘扫描键值------------------------------------------------*/unsigned char KeyScan(void) //键盘扫描函数,使用行列反转扫描法{unsigned char cord_h,cord_l;//行列值中间变量KeyPort=0x0f; //行线输出全为0cord_h=KeyPort&0x0f; //读入列线值if(cord_h!=0x0f) //先检测有无按键按下{DelayMs(100); //去抖if((KeyPort&0x0f)!=0x0f){cord_h=KeyPort&0x0f; //读入列线值KeyPort=cord_h|0xf0; //输出当前列线值cord_l=KeyPort&0xf0; //读入行线值while((KeyPort&0xf0)!=0xf0);//等待松开并输出return(cord_h+cord_l);//键盘最后组合码值}}return(0xff); //返回该值}/*------------------------------------------------按键扫描函数1,返回确定键扫描键值------------------------------------------------*/ unsigned char KeyScanQD(void) //键盘扫描函数{if(QD != 1) //先检测有无按键按下{DelayMs(100); //去抖if(QD != 1){while(QD == 0);//等待松开并输出}qdbz=1;}return(0); //返回该值}/*------------------------------------------------ 按键扫描函数2,返回清零键扫描键值------------------------------------------------*/ unsigned char KeyScanQL(void) //键盘扫描函数{if(QL != 1) //先检测有无按键按下{DelayMs(100); //去抖if(QL != 1){while(QL == 0);//等待松开并输出}qlbz=1;}return(0); //返回该值}/*------------------------------------------------ 按键值处理函数,返回扫键值------------------------------------------------*/ unsigned char KeyPro(void){switch(KeyScan()){case 0x7e:return 1;break;//0 按下相应的键显示相对应的码值 case 0x7d:return 2;break;//1case 0x7b:return 3;break;//2case 0x77:return 4;break;//3case 0xbe:return 5;break;//4case 0xbd:return 6;break;//5case 0xbb:return 7;break;//6case 0xb7:return 8;break;//7case 0xde:return 9;break;//8case 0xdd:return 0;break;//9case 0xdb:return 10;break;//acase 0xd7:return 11;break;//bcase 0xee:return 12;break;//ccase 0xed:return 13;break;//dcase 0xeb:return 14;break;//ecase 0xe7:return 15;break;//fdefault:return 0xff;break;}}/*------------------------------------------------主函数------------------------------------------------*/void main(void){unsigned int i,j,k,kk,Jz,num,n,t1,t2,a,b,x,y;unsigned char jinzhishu1[2],jinzhishu2[2];unsigned char dushu[16];unsigned char dushu2[16];LCD_Init();wela=1;P0=0Xff;wela=0;//关闭数码管LCD_Write_Com(0x0F);//光标开,光标闪烁开while (1){LCD_Clear();/*下为输入部分 *******************************************/A1:jinzhishu1[1]=' ';jinzhishu1[2]=' ';LCD_Write_String(0,0,"Enter IN system");i=0;while(qdbz==0){Jz=KeyPro();if(Jz!=0xff){LCD_Write_Char(i,1,asc_code[Jz]);//依次显示输入字符 jinzhishu1[i]=asc_code[Jz];i++;}KeyScanQD();KeyScanQL();if (qlbz==1){qlbz=0; LCD_Clear(); i=0; j=0;goto A1;}if(i==2) qdbz=1;}qdbz=0;LCD_Write_String(0,1," ");if (jinzhishu1[0]=='1'&&jinzhishu1[1]=='0') a=10;else if (jinzhishu1[0]=='2'&&jinzhishu1[1]==' ') a=2;else if (jinzhishu1[0]=='8'&&jinzhishu1[1]==' ') a=8;else if (jinzhishu1[0]=='1'&&jinzhishu1[1]=='6') a=16;else{LCD_Write_String(0,0,"Wrong IN system");while(qdbz==0){KeyScanQD();}qdbz=0;goto A1;}A2:for(i=0;i<16;i++){dushu2[i]=' ';dushu[i]=' ';}LCD_Write_String(0,0,"Enter IN number");i=0;while(qdbz==0){num=KeyPro();if(num!=0xff){LCD_Write_Char(i,1,asc_code[num]);//依次显示输入字符dushu2[i]=num;i++;}KeyScanQD();KeyScanQL();if (qlbz==1){qlbz=0; LCD_Clear(); i=0; j=0;goto A2;}if(i==15) qdbz=1;}n=i;qdbz=0;LCD_Write_String(0,1," ");A3:jinzhishu2[1]=' ';jinzhishu2[2]=' ';LCD_Write_String(0,0,"Enter OUT system");i=0;while(qdbz==0){Jz=KeyPro();if(Jz!=0xff){LCD_Write_Char(i,1,asc_code[Jz]);//依次显示输入字符jinzhishu2[i]=asc_code[Jz];i++;}KeyScanQD();KeyScanQL();if (qlbz==1){qlbz=0; LCD_Clear(); i=0; j=0;goto A3;}if(i==2) qdbz=1;}qdbz=0;LCD_Write_String(0,1," ");if (jinzhishu2[0]=='1'&&jinzhishu2[1]=='0') b=10;else if (jinzhishu2[0]=='2'&&jinzhishu2[1]==' ') b=2;else if (jinzhishu2[0]=='8'&&jinzhishu2[1]==' ') b=8;else if (jinzhishu2[0]=='1'&&jinzhishu2[1]=='6') b=16;else{LCD_Write_String(0,0,"Wrong OUT system");while(qdbz==0){KeyScanQD();}qdbz=0;goto A3;}/*下为运算部分 *******************************************/ n=n-1;t2=dushu2[0];for(j=0;j<n;j++){t1=t2*a;t2=t1+dushu2[j+1];}x=t2; //输入的10进制数先转为10进制for(j=0;x>=b;j++){y=x%b;x=x/b;dushu[j]= asc_code[y];}y=x;dushu[j]= asc_code[y];k=j;kk=j;for(i=0;i<=kk;i++,k--){dushu2[i]=dushu[k];}for(i=0;i<=kk;i++){dushu[i]=dushu2[i];}/*下为输出部分 *******************************************/ LCD_Write_String(0,0,"The OUT number");LCD_Write_String(0,1," ");LCD_Write_String(0,1,dushu);while(qdbz==0){KeyScanQD();KeyScanQL();}qdbz=0;}}5、调试过程(包括出现的问题及解决的方法,以及要改进的地方,体会)1)硬件调试:焊接最小系统板完成之后就开始测试是否有焊接错误,首先是检验单片机的底座针脚是否联通,通过LED灯测试证明了所有的底座针脚焊接无误。

相关文档
最新文档