(完整版)单片机C语言毕业课程设计
单片机原理及应用教程(C语言版)-第4章 单片机C语言及程序设计

4.3.2 C51变量的存储类型
三、外部存储
外部(存储)变量:用extern声明的变量为外 部变量,是在其它文件定义过的全局变量。 用 extern声明后,便可以在所声明的文件中使用。
需要注意的是:在定义变量时,即便是全局变 量,也不能使用extern修饰。
4.3.2 C51变量的存储类型
四、寄存器存储
动态(存储)变量:用auto定义的为动态变量, 也叫自动变量。
作用范围:在定义它的函数内或复合语句内部 当定义它的函数或复合语句执行时,C51才为 变量分配存储空间,结束时所占用的存储空间释放。 定义变量时,auto可以省略,或者说如果省略 了存储类型项,则认为是动态变量。动态变量一般 分配使用寄存器或堆栈。
“C51”概念:为了与ANSI C区别,把“单片 机C语言”称为“C51”,也称为“Keil C”。
4.1.1 C语言编程的优势
在编程方面,使用C51较汇编语言有诸多优势: 1)编程容易 2)容易实现复杂的数值计算 3)容易阅读与交流 4)容易调试与维护 5)容易实现模块化开发 6)程序可移植性好
本 无符号整型 unsigned int 2字节 0~65535 有符号整型 signed int 2字节 -32768~32767
类 无符号长整型 unsigned long 4字节 0~4294967295
型 有符号长整型 signed long 4字节 -2147483648~2147483647
MCS-51单片机有四个存储空间,分成三类, 它们是片内数据存储空间、片外数据存储空间和 程序存储空间。
MCS-51单片机有更多的存储区域:由于片内 数据存储器和片外数据存储器又分成不同的区域, 所以单片机的变量有更多的存储区域。
单片机 课程设计1C3 C语言

#include <ADUC848.H>unsigned char code table[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x19}; //0~9段码unsigned char Display = 0,seg=0,mig=0,mis=0,hog=0,hos=0,kmd=0,mood=0,wsg=0,wss=0,wmg=0,wms=0,whg=0,whs=0; unsigned char ses=0,ks=1,km=1,km2=1,kh=1,kh2=1,kwsg=1,kwss=1,kwmg=1,kwhg=1,ktmg=1,kthg=1; unsigned int i,j;unsigned char InterruptCounter=0;//定义中断计数变量并赋初值0sbit bit0 = P3^3;sbit bit1 = P3^5;sbit bit2 = P3^6;sbit bit3 = P3^7;sbit bit4 = P2^1;sbit bit5 = P2^4;sbit bit6 = P2^2;sbit bit7 = P2^3;sbit bit8 = P1^0;sbit bit9 = P1^1 ;sbit bit10 = P3^0;void Delay(){unsigned int i;for(i = 0;i < 200;i++);}void main(){P2 &= 0xe1;P3 &= 0x17;TMOD=0x01;//配置定时器0为16位模式,时钟为1.572864MHzIE=0x82; //使能定时器0中断和全局中断TH0=0X00;TL0=0X00;TR0=1; //开启定时器0while(1){ if(wmg==mig&&wms==mis&&whg==hog&&whs==hos)if(seg!=Display)bit10=~bit10;seg=Display;if(seg==10&&ks==1){ ses++;ks=0;}else{if(seg!=10)ks=1;}if(seg==10)seg=0;if(ses==6&&km==1){mig++;km=0;}else{if(ses!=6)km=1;}if(ses==6)ses=0;if(mig==10&&km2==1){mis++;km2=0;}else{if(mig!=10)km2=1;}if(mig==10)mig=0;if(mis==6&&kh==1){hog++;kh=0;}else{if(mis!=6)kh=1;}if(mis==6)mis=0;if(hog==10&&kh2==1&&hos!=2) {hos++;kh2=0;}else{if(hog!=10)kh2=1;}if(hos==2&&hog==4){hos=0;hog=0;}if(hog==10)hog=0;if (bit8==0&&kmd==1){mood=mood+1;kmd=0;if( mood==5)mood=0;}else{if(bit8!=0)kmd=1;}switch(mood){case 0:{P0=table[seg];bit0=1;Delay();bit0=0; P0=table[ses];bit1=1;Delay();bit1=0; P0=table[mig];bit2=1;Delay();bit2=0; P0=table[mis];bit3=1;Delay();bit3=0; P0=table[hog];bit4=1;Delay();bit4=0; P0=table[hos];bit5=1;Delay();bit5=0; break;}case 1:{P0=table[1];bit6=1;Delay();bit6=0; P0=table[wsg];bit0=1;Delay();bit0=0; P0=table[wss];bit1=1;Delay();bit1=0; P0=table[wmg];bit2=1;Delay();bit2=0; P0=table[wms];bit3=1;Delay();bit3=0; P0=table[whg];bit4=1;Delay();bit4=0; P0=table[whs];bit5=1;Delay();bit5=0; if (kwmg==1&&bit9==0){wmg++;kwmg=0;if(wmg==10){wmg=0;if(wms==6)wms=0;}else{if(bit9!=0)kwmg=1;}break;}case 2:{P0=table[2];bit6=1;Delay();bit6=0; P0=table[wsg];bit0=1;Delay();bit0=0; P0=table[wss];bit1=1;Delay();bit1=0; P0=table[wmg];bit2=1;Delay();bit2=0; P0=table[wms];bit3=1;Delay();bit3=0; P0=table[whg];bit4=1;Delay();bit4=0; P0=table[whs];bit5=1;Delay();bit5=0; if (kwhg==1&&bit9==0){whg++;kwhg=0;if(whg==10){whg=0;whs++;}if(whs==2&&whg==4){ whs=0;whg=0;}}else{if(bit9!=0)kwhg=1;}break;}case 3:{P0=table[3];bit6=1;Delay();bit6=0; P0=table[seg];bit0=1;Delay();bit0=0; P0=table[ses];bit1=1;Delay();bit1=0; P0=table[mig];bit2=1;Delay();bit2=0; P0=table[mis];bit3=1;Delay();bit3=0; P0=table[hog];bit4=1;Delay();bit4=0; P0=table[hos];bit5=1;Delay();bit5=0; if (ktmg==1&&bit9==0){mig++;ktmg=0;if(mig==10)mis++;}if(mis==6)mis=0;}else{if(bit9!=0)ktmg=1;}break;}case 4:{P0=table[4];bit6=1;Delay();bit6=0; P0=table[seg];bit0=1;Delay();bit0=0; P0=table[ses];bit1=1;Delay();bit1=0; P0=table[mig];bit2=1;Delay();bit2=0; P0=table[mis];bit3=1;Delay();bit3=0; P0=table[hog];bit4=1;Delay();bit4=0; P0=table[hos];bit5=1;Delay();bit5=0; if (kthg==1&&bit9==0){hog++;kthg=0;if(hog==10){hog=0;hos++;}if(hos==2&&hog==4){ hos=0;hog=0;}}else{if(bit9!=0)kthg=1;}break;}default:break;}}}void TimerInterrupt() interrupt 1 {InterruptCounter++;if(InterruptCounter>=12){InterruptCounter=0;Display++;if(Display >= 11)Display = 1;}}。
单片机系统的设计课程设计

单片机系统的设计课程设计一、课程目标知识目标:1. 让学生理解单片机系统的基本原理和组成,掌握其设计流程和方法。
2. 使学生掌握单片机编程的基础知识,能运用C语言或汇编语言进行简单程序编写。
3. 帮助学生了解单片机系统在实际应用中的功能与作用,如智能家居、机器人等。
技能目标:1. 培养学生具备独立设计单片机系统的能力,包括硬件电路设计和软件编程。
2. 提高学生运用单片机解决实际问题的能力,如数据采集、信号处理等。
3. 培养学生动手实践和团队协作的能力,能够完成课程项目的设计与实施。
情感态度价值观目标:1. 培养学生对单片机系统设计和开发产生兴趣,提高其学习积极性和主动性。
2. 培养学生具备创新精神和实践意识,敢于尝试新方法,解决实际问题。
3. 培养学生具备良好的团队合作精神和沟通能力,能够在团队中发挥积极作用。
课程性质:本课程为实践性较强的学科,要求学生在理解理论知识的基础上,动手实践,完成单片机系统的设计与实现。
学生特点:学生具备一定的电子技术基础和编程能力,对单片机系统有一定了解,但实践经验不足。
教学要求:结合学生特点,注重理论与实践相结合,充分调动学生的积极性,培养其创新能力和实践能力。
通过课程学习,使学生能够达到上述课程目标,为后续专业课程学习和实际工程应用打下坚实基础。
二、教学内容1. 单片机系统概述:介绍单片机的基本概念、发展历程、应用领域及未来发展趋势。
- 教材章节:第一章 单片机概述2. 单片机硬件结构:讲解单片机的内部结构、工作原理、主要性能指标及硬件连接方式。
- 教材章节:第二章 单片机硬件结构3. 单片机编程语言:学习单片机编程所需的基础知识,包括C语言和汇编语言。
- 教材章节:第三章 单片机编程语言4. 单片机I/O口编程:介绍I/O口的基本操作方法,包括输入、输出、中断等。
- 教材章节:第四章 单片机I/O口编程5. 单片机系统设计流程与方法:讲解单片机系统设计的步骤、方法及注意事项。
单片机课程设计pdf

单片机课程设计pdf一、课程目标知识目标:1. 让学生掌握单片机的基本原理和结构,理解其工作流程。
2. 使学生熟悉单片机编程语言,能运用C语言或汇编语言编写简单的单片机程序。
3. 让学生了解单片机在日常生活和工业控制中的应用。
技能目标:1. 培养学生运用单片机解决实际问题的能力,学会设计简单的电路控制系统。
2. 提高学生编程能力,能对单片机程序进行调试和优化。
3. 培养学生团队协作和沟通能力,能在项目中进行有效分工与合作。
情感态度价值观目标:1. 激发学生对单片机及电子技术的兴趣,培养其探索精神和创新能力。
2. 培养学生严谨的科学态度,注重实践操作,养成良好的学习习惯。
3. 增强学生的环保意识,使其关注单片机在节能减排领域的应用。
课程性质:本课程为实践性较强的课程,结合理论教学,注重培养学生的动手能力和实际操作技能。
学生特点:学生具备一定的电子基础和编程知识,对单片机有一定了解,但实践操作能力有待提高。
教学要求:教师应结合课本内容,采用项目驱动的教学方法,引导学生通过实践操作掌握单片机相关知识,将理论知识与实际应用相结合,提高学生的综合素养。
在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。
通过课程学习,使学生能够具备解决实际问题的能力,为未来的学习和工作打下坚实基础。
二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. 单片机原理与结构:介绍单片机的基本组成、工作原理和性能指标,涉及课本第一章内容。
2. 单片机编程语言:讲解C语言和汇编语言在单片机编程中的应用,包括语法、语句和编程规范,对应课本第二章。
3. 单片机程序设计:通过实例讲解单片机程序设计方法,涵盖输入/输出、中断、定时器等应用,涉及课本第三章。
4. 单片机外围设备:介绍常见外围设备的使用方法,如键盘、显示、传感器等,对应课本第四章。
5. 单片机应用案例:分析单片机在实际项目中的应用,如智能家居、自动控制系统等,涉及课本第五章。
单片机课程设计

单片机课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理和结构,理解其工作流程。
2. 使学生了解并熟练运用单片机的编程语言,如C语言或汇编语言。
3. 帮助学生掌握单片机外围电路的设计与搭建,使其能独立完成简单的电路系统。
技能目标:1. 培养学生运用单片机解决实际问题的能力,提高创新思维和动手实践能力。
2. 培养学生具备查阅资料、分析问题、设计方案、调试程序等综合技能。
情感态度价值观目标:1. 培养学生对单片机课程的兴趣,激发学习热情,形成自主学习、合作学习的良好习惯。
2. 培养学生具备团队协作精神,学会与他人分享、交流、合作,提高沟通能力。
3. 培养学生关注科技发展,了解单片机在现实生活中的应用,增强社会责任感和创新意识。
课程性质分析:本课程为单片机课程设计,旨在让学生在掌握理论知识的基础上,通过实际操作,提高解决实际问题的能力。
学生特点分析:学生已具备一定的电子技术基础和编程能力,对单片机有一定了解,但实践经验不足,需要通过本课程加强实践操作和综合运用。
教学要求:1. 理论与实践相结合,注重培养学生的动手能力。
2. 引导学生主动思考,发现问题,解决问题。
3. 创设实际情境,提高学生的学习兴趣和参与度。
4. 注重培养学生的团队协作能力和沟通能力。
二、教学内容1. 单片机原理及结构:介绍单片机的组成、工作原理,重点讲解CPU、存储器、输入输出接口等部分。
参考教材章节:第一章 单片机概述2. 单片机编程语言:学习C语言和汇编语言的基础知识,掌握编程技巧,能独立编写简单的单片机程序。
参考教材章节:第二章 单片机编程语言3. 单片机外围电路设计:讲解并实践常用外围电路的设计与搭建,如LED 灯、蜂鸣器、数码管等。
参考教材章节:第三章 单片机外围电路设计4. 单片机程序下载与调试:学习使用编程器、仿真器等工具,掌握程序下载、调试方法。
参考教材章节:第四章 单片机程序下载与调试5. 实践项目:设计并实现几个实际项目,如温度控制器、智能小车、智能家居系统等,锻炼学生解决实际问题的能力。
51单片机计课程设计

51单片机计课程设计一、课程目标知识目标:1. 理解51单片机的基本组成、工作原理及其在嵌入式系统中的应用。
2. 掌握51单片机的编程语言(C语言),能够阅读和编写简单的程序。
3. 学习51单片机的I/O口编程、定时器/计数器、中断系统等基础应用。
4. 了解51单片机与其他外围设备的通信接口,如串行通信。
技能目标:1. 能够使用51单片机的开发环境,如Keil uVision和Proteus进行程序设计和仿真。
2. 培养学生的动手实践能力,通过实验箱或面包板搭建简单的51单片机应用电路。
3. 培养学生的问题分析和解决能力,通过编程解决实际问题。
4. 学会查阅技术文档和参考资料,提升自主学习能力。
情感态度价值观目标:1. 培养学生对电子制作和编程的兴趣,激发创新意识和探索精神。
2. 强调团队合作和交流分享的重要性,培养学生的团队协作能力。
3. 增强学生的工程意识,认识到科技对于社会发展的重要性。
4. 引导学生形成严谨的科学态度,注重实践操作的准确性和程序的逻辑性。
本课程针对高年级学生,考虑其已有一定电子和编程基础,课程设计注重理论与实践相结合,通过项目驱动的教学方法,使学生在实践中掌握知识,提升技能,同时培养积极的情感态度价值观。
通过本课程的学习,学生将能够独立完成简单的51单片机项目设计,为后续深入学习嵌入式系统打下坚实基础。
二、教学内容1. 51单片机基础知识- 51单片机结构及工作原理- 51单片机引脚功能及内部资源- 编程环境Keil uVision与Proteus使用方法2. 51单片机C语言编程- 数据类型、运算符与表达式- 控制语句(循环、分支)- 函数的定义与调用- 中断处理程序编写3. 51单片机I/O口编程- I/O口输入输出控制- 延时函数编写- 按键与LED控制4. 定时器/计数器- 定时器/计数器工作原理- 定时器/计数器编程方法- 定时器应用案例5. 中断系统- 中断系统原理与分类- 中断系统编程- 中断应用案例6. 串行通信- 串行通信原理- 51单片机串口编程- 串口通信应用案例7. 综合项目设计与实践- 项目需求分析- 硬件电路设计与搭建- 软件程序设计与调试- 项目展示与评价教学内容依据课程目标和学科特点进行安排,注重知识体系的科学性和系统性。
单片机课程设计 八路抢答器(C语言)

单片机课程设计8路抢答器指导老师:宋*******学号:************ 班级:12电子卓越班目录一绪论 (3)二基本设计方案 (4)三具体设计 (5)四电路板的制作 (7)五电路功能测试与调试 (7)六心得体会 (8)附录 (9)一绪论1.1单片机抢答器的背景二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
不过,这种电脑,通常是指个人计算机,简称PC机。
它由主机、键盘、显示器等组成。
还有一类计算机,大多数人却不怎么熟悉。
这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。
顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。
因为它体积小,通常都藏在被控机械的“肚子”里。
它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。
现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。
究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。
在知识竞赛中,特别是做抢答题时,在抢答过程中,为了更确切的知道哪一组或哪一位选手先抢答到题,必须要有一个系统来完成这个任务。
若在抢答中,只靠人的视觉(或者是听觉)是很难判断出哪一组(或哪一个选手)先抢答到题的。
利用单片机编程来设计抢答器,可以使以上问题得以解决,即使两组的抢答时间相差几微秒,也能轻松的分辨出哪一组(或哪个选手)先抢答到题的。
本文主要介绍了抢答器的工作原理及设计,以及它的实际用途。
1.2设计要求:一、基本功能:1、六路抢答,抢答有效时相应的灯亮,并有音乐提示;2、每轮抢答需主持人按“开始”后,抢答才有效;3、抢答无效时,有相应的灯及音乐提示;二、扩展功能:1、扩展到8路或以上;2、抢答倒计时提示;3、各路的参赛者有得分显示;4、其他自行增加的功能;二基本设计方案2.1 单片机的选择我选择STC89C52单片机芯片的理由如下:1、在设计过程中可能会出现很多问题,89C52可重复烧程序;2、是80C51的增强型,功能与我们所学的51单片机基本相同;3、学校配套发的单片机开发板用的就是89C52,有很多相关教程,程序的测试与烧写都十分方便;4、器材室很方便就能领到。
简单的单片机课程设计

简单的单片机课程设计一、课程目标知识目标:1. 理解单片机的基本概念、结构和工作原理;2. 掌握单片机编程的基本语法和指令;3. 学会使用单片机进行简单的输入输出控制;4. 了解单片机在实际应用中的使用场景和功能。
技能目标:1. 能够运用单片机编程软件进行程序编写和烧录;2. 能够运用基本的电子元件与单片机连接,实现简单的电路控制;3. 能够分析并解决简单的单片机控制系统问题;4. 培养学生的动手操作能力和团队协作能力。
情感态度价值观目标:1. 培养学生对单片机及电子技术的兴趣和热情;2. 增强学生对科技创新和实践操作的自信心;3. 培养学生严谨、细致的学习态度,树立正确的价值观;4. 引导学生关注单片机在生活中的应用,体会科技带来的便利。
课程性质:本课程为选修课程,以实践操作为主,理论教学为辅,注重培养学生的动手能力和实际应用能力。
学生特点:学生处于初中或高中年级,对电子技术有一定的基础,对单片机编程和控制感兴趣,但可能缺乏实际操作经验。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践,培养学生的问题分析和解决能力。
通过课程学习,使学生能够达到预设的知识、技能和情感态度价值观目标,为后续深入学习电子技术打下基础。
教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 单片机基础知识:介绍单片机的概念、发展历程、结构组成及工作原理。
关联课本第一章内容。
- 单片机的种类与选型- 单片机的内部结构- 单片机的工作原理2. 单片机编程语言:学习单片机编程的基本语法、指令系统及编程技巧。
关联课本第二章内容。
- 编程语言概述- 汇编语言与C语言的对比- 常用指令介绍3. 单片机输入输出控制:学习如何使用单片机进行简单的输入输出控制,包括I/O口编程、中断控制等。
关联课本第三章内容。
- I/O口编程- 中断控制原理与应用- 定时器/计数器应用4. 单片机外围电路设计:学习如何使用基本的电子元件与单片机连接,实现简单的电路控制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
郑州交通学院基于单片机的电子钟设计系部:信息工程系学生姓名:朱珂锋指导教师:姜海专业:电子信息工程技术应用班级:电信二班学号:243摘要51系列单片机是各单片机中最为典型和最有代表性的一种。
由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。
本次设计的数字电子钟采用了AT89C51芯片进行,由8位8段数码管进行动态刷新显示,有四个独立按键。
可以进行秒、分、时的调整,且操作简单,计时误差小,显示亮度高,具有良好的实用价值。
这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
应用Proteus软件实现了单片机电子时钟系统的设计与仿真。
该方法仿真效果真实、准确,节省了硬件资源。
关键词数字电子钟;单片机;C语言目录1 设计课题题目、目的要求及总体方案介绍 (4)1.1 设计课题题目 (4)1.2 设计课题目的 (4)1.3 设计课题要求及工作原理说明 (4)2 数字电子钟硬件系统的设计 (5)2.1 硬件总体设计 (5)2.2 数字电子钟硬件系统主要模块功能简要介绍 (5)2.3 数字电子钟电路原理图、PCB图、元器件布局图 (6)2.4 数字电子钟元器件清单 (7)3 数字电子钟软件系统的设计 (8)3.1 数字电子钟软件系统主要模块功能简要介绍 (8)3.2 数字电子钟软件系统程序流程框图 (8)3.3 数字电子钟软件系统程序清单 (9)4 设计结论、仿真结果、误差分析 (12)4.1 数字电子钟的仿真结果 (12)4.2 数字电子钟的误差分析 (13)4.3 设计重点、难点,体会及不足之处 (13)参考文献 (14)致谢 (15)附录 (16)1 设计课题题目、目的要求及总体方案介绍1.1 设计课题题目基于单片机的电子钟设计。
1.2 设计课题目的巩固《单片机技术》课程所学的有关知识。
通过硬件设计、软件设计,使学生掌握用单片机组成应用系统的方法,提高软件设计能力。
掌握单片机的定时计数器的编程和使用方法。
进一步熟悉单片机功能部件的应用。
1.3 设计课题要求及工作原理说明要求自己做出原理图设计。
并且要扩展一片8255芯片作显示接口,分别输出段码和位码;用P1口中的两根口线作功能键。
可利用四个LED 分时显示当前时间和日历。
两个按键的功能:A键用于调时,范围0~23,0为24点,每按一次时加1;B键用于调分,范围0~59,0为60分,每按一次分加1。
单片机程序设计、调试。
本课题采用单片机内部定时器,用软件对其进行秒、分、时的计数,单片机无法产生1s的定时时间,但是可以用硬件定时和软件计数相结合的方法实现,采用中断方式,即通过中断服务程序进行计数器溢出次数的累计,把定时器计数器设定为62.5ms,计数溢出16次就可以得到1s,计60次为1分,60分计60次则为1小时,然后通过数码管动态刷新显示出来,再设四个按键进行时间的调整,一个键用作启动调整键,其余三个分别用于时、分、秒的调整。
通过理论设计和实物制作解决相应的实际问题,巩固和运用在《单片机C语言应用程序技术》中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。
2 数字电子钟硬件系统的设计2.1 硬件总体设计硬件系统总体设计如图2.1所示。
图2.1 硬件系统总体设计2.2 数字电子钟硬件系统主要模块功能简要介绍(1)功能芯片:本次设计采用AT89C51芯片,低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。
256字节RAM, 32 位IO 口线,与工业80C51 产品指令和引脚完全兼容。
价格较低,能满足本次设计的要求。
(2)电源和复位模块:AT89C51需5V电压,所以可以采用USB接口的5V电源对其供电,复位电路可采用上电复位、按键电平复位、按键脉冲复位3种,本次采用按键电平复位。
如电路原理图中的电源和复位模块。
(3)显示模块:该模块由8位8段共阳极数码管组成,由8个PNP型三极管分别驱动其发光,从左至右位控分别接于单片机的P2.7-P2.0中上,段控a-dP接于单片机的P0.0-P0.7口上,使用动态显示从右向左循环点亮每一位数码管。
如电路原理图中的数码管电路。
(4)键盘模块:键盘由8个独立式按键组成,S0-S7键分别接在单片机的P1.0-P1.7口,并由上拉电阻上拉使其成为电位为高。
如电路原理图中的独立键盘模块。
(5)时钟模块:为了保证同步工作方式的思想,单片机必须有时钟信号,以使其系统在时钟信号的控制下按时序协调工作。
如电路原理图中的晶振电路。
2.3 数字电子钟电路原理图、PCB 图、元器件布局图Q015Q11Q22Q33Q44Q55Q66Q77Q7'9SH_CP11ST_CP 12DS 14MR10OE 13U174HC595Q015Q11Q22Q33Q44Q55Q66Q77Q7'9SH_CP 11ST_CP12DS 14MR 10OE 13U274HC595XTAL24RST 1P1.012P1.113P1.214P1.315P1.416P1.517P1.618P1.719P3.2/INT06P3.3/INT17P3.4/T08P3.5/T19P3.0/RXD 2P3.1/TXD3P3.711XTAL15U3AT89C2051X1CRYSTALC130pFC230pFR110kC310u5 V5 V5 VRST5SCLK 7I/O 6X12X23VCC18VCC21U4DS1302X2CRYSTAL5 V3 V2.31数字电子钟电路原理图2.4 数字电子钟元器件清单元器件名称 规格 数量 STC11F02 1 DS1302 1 晶振 12MHz 2 数码管 874HC5951 三极管90129蜂鸣器 1小按键 4 下载口座子十芯 1 18b20温度传感器 1六脚开关 1 USB电源线加接口 1电阻 200 1电阻 4.7K 1电阻1K 3电阻 470 24 电解电容220μF 1瓷片电容33pF 2排阻10K 2短路帽 3杜邦线8p 1PCB板子 1底座 3数字电子钟元器件清单3 数字电子钟软件系统的设计3.1 数字电子钟软件系统主要模块功能简要介绍(1)主程序:主程序的主要功能是进行定时器计数器,显示缓冲区的初始化,显示,以及判断是否有功能键按下,判断按下的键并调相应的键功能程序。
(2)键功能程序:键功能程序的主要功能是执行对应的功能,Menu键为启动调整键,第一次按下则由待机状态进入运行状态启动时钟,从开始显示,然后按下为奇数则暂停,进入调时状态,按下Sec键则秒加1,按下Min键则分加1,按下Hour键则时加1;若按下为偶数则进入时钟运行状态。
(3)中断服务程序:中断服务程序的主要功能是进行计时操作,程序开始先判断计数溢出是否满了16次,若不满16次则表明没有达到最小计时单位秒,则中断返回;若满16次表明已达到最小计时单位秒,则程序断续向下执行,进行分和时的计时。
(4)显示子程序:显示程序的主要功能是将显示缓冲区的段控码正确的显示在数码管上,采用动态显示,从右向左循环点亮每一位数码管。
(5)键扫子程序:键扫子程序的主要功能是判断是否有键按下,是哪个键按下,并将键值保存在20H中。
3.2 数字电子钟软件系统程序流程框图图3.1 计时1秒子程序流程框图图3.2 显示子程序流程框图3.3 数字电子钟软件系统程序清单#include<reg52.(ucdat);}void write_ds1302(uchar addr,uchar dat) 给DS1302写指令{DS1302_RST=0;_nop_();DS1302_CLK=0;_nop_();DS1302_RST=1;writeshuju(addr);_nop_();writeshuju(dat);DS1302_CLK=1;_nop_();DS1302_RST=0;}uchar read_ds1302(uchar addr) {uchar time;DS1302_RST=0;_nop_();DS1302_CLK=0;_nop_();DS1302_RST=1;writeshuju(addr);time=readshuju();DS1302_CLK=1;_nop_();DS1302_RST=0;return(time);}void chushi_ds1302(){write_ds1302(0x84,0x12); 时write_ds1302(0x82,0x00); 分write_ds1302(0x80,0x00); 秒write_ds1302(0x8e,0x80); wp为1关闭写操作保存写的数据}void read_time() 读时间{second=read_ds1302(0x81);second=((second16)*10+second%16);minute=read_ds1302(0x83);minute=((minute16)*10+minute%16);(){if(s3==0){delayms(5);if(s3==0){while(!s3)display();if(num==1){();wr595(table[7]);wr595(tab[second%10]);rck=1;rck=0;}for(i=0;i<30;i++){wr595(table[0]);wr595(tab[10]);rck=1;delayms(1);rck=0;wr595(table[1]);wr595(tab[10]);rck=1;delayms(1);rck=0;sheding();wr595(table[2]);wr595(table[8]);rck=1;delayms(1);rck=0;wr595(table[3]);wr595(tab[minute10]);rck=1;rck=0;wr595(table[4]);wr595(tab[minute%10]); rck=1;delayms(1);rck=0;wr595(table[5]);wr595(table[8]);rck=1;delayms(1);rck=0;jiajia();wr595(table[6]);wr595(tab[second10]); rck=1;delayms(1);rck=0;wr595(table[7]);wr595(tab[second%10]); rck=1;delayms(1);rck=0;jianjian();}}**********************while(num==2){for(i=0;i<30;i++){wr595(table[0]);wr595(tab[();}for(i=0;i<30;i++){wr595(table[0]);wr595(tab[();}}*********************************** while(num==3){for(i=0;i<30;i++){wr595(table[0]);wr595(tab[();}for(i=0;i<30;i++){wr595(table[0]);wr595(tab[();}}write_ds1302(0x8e,0x00);write_ds1302(0x80,((second10)<<4|second%10));write_ds1302(0x8e,0x80);}}}########################################################## 主函数########################################################## void main(void){chushi_ds1302();while(1){read_time();display();key();}}4 设计结论、仿真结果、误差分析4.1 数字电子钟的仿真结果本次设计的数字电子钟有三种状态:开始状态,时钟运行状态,时钟调整状态。