16位单片机大作业

合集下载

16位单片机实验程序讲解

16位单片机实验程序讲解

16位单片机实验程序讲解1、用C实现发光二极管单向循环点亮//=============================================================== //// The information contained herein is the exclusive property of// Sunplus Technology Co. And shall not be distributed, reproduced,// or disclosed in whole in part without prior written permission.//// (C) COPYRIGHT 2001 SUNPLUS TECHNOLOGY CO.// ALL RIGHTS RESERVED//// The entire notice above must be reproduced on all authorized copies.////==============================================================// 工程名称:led1_C.scs// 功能描述: 用C实现发光二极管单向循环点亮// 文件来源:《61板实验教程》"实验一发光二极管单向循环点亮“// 硬件连接:IOA低8位接至SEG接口控制LED的导通// IOB6连至DIG7通过ULN2003A控制8个LED的共阴极电平状态。

// IDE环境:SUNPLUS u'nSPTM IDE 1.8.0//// 涉及的库:// 组成文件:// main.c//// 日期: 2004/8/16//===============================================================#define P_IOA_Data (volatile unsigned int *)0x7000#define P_IOA_Buffer (volatile unsigned int *)0x7001#define P_IOA_Dir (volatile unsigned int *)0x7002#define P_IOA_Attrib (volatile unsigned int *)0x7003#define P_IOB_Data (volatile unsigned int *)0x7005#define P_IOB_Buffer (volatile unsigned int *)0x7006#define P_IOB_Dir (volatile unsigned int *)0x7007#define P_IOB_Attrib (volatile unsigned int *)0x7008#define P_Watchdog_Clear (volatile unsigned int *)0x7012//=============================================================// 函数名称: Delay()// 日期:20040816// 功能描述: 实现延时// 语法格式: void Delay(void);//入口参数: 无// 出口参数: 无// 注意事项: 仅为用户模型//=============================================================void Delay(){ //延时子程序unsigned int i;for(i=0; i<32768; i++){*P_Watchdog_Clear=0x0001; //清WatchDog}}//=============================================================// 函数名称: int main()// 日期:20040816// 功能描述: 发光二极管单向循环点亮// 语法格式: void main(void);// 入口参数: 无// 出口参数: 无// 注意事项: 仅为用户模型//=============================================================int main(){int LedControl = 0x0001;*P_IOA_Dir = 0x00ff; //设置A口低8位为同向低输出*P_IOA_Attrib = 0x00ff;*P_IOA_Data = 0x0000;*P_IOB_Dir=0x0040; //设置B6口为高电平输出,保证LED共阴极接地*P_IOB_Attrib=0x0040;*P_IOB_Data=0x0040;while(1){*P_IOA_Data = LedControl; //送数据到A口LedControl = LedControl << 1;if(LedControl > 0x00FF)LedControl = 0x0001;Delay();}}//=============================================================// main.c 结束//=============================================================2、用C实现发光二极管双向循环点亮//=============================================================== //// The information contained herein is the exclusive property of// Sunplus Technology Co. And shall not be distributed, reproduced,// or disclosed in whole in part without prior written permission.//// (C) COPYRIGHT 2001 SUNPLUS TECHNOLOGY CO.// ALL RIGHTS RESERVED//// The entire notice above must be reproduced on all authorized copies.////==============================================================// 工程名称:led2_C.scs// 功能描述: 用C实现发光二极管双向循环点亮// 文件来源:《61板实验教程》"实验二发光二极管双向循环点亮“// 硬件连接:IOA低8位接至SEG接口控制LED的导通// IOB6连至DIG7通过ULN2003A控制8个LED的共阴极电平状态。

洗衣机控制器 16位单片机大作业报告1

洗衣机控制器 16位单片机大作业报告1

学院大作业报告课程名称:嵌入式系统设计与实践项目名称:《洗衣机控制器》班级:姓名:学号:成绩:________ 实验时间:2011.12.16一、设计目的运用C 语言,HCS12 16位单片机的知识,根据题目的要求进行软硬件的设计和调试,从而加深对于本课程知识点的理解,掌握了如何使用CodeWarrior 来整合各种驱动模块,再通过算法实现硬件上的运行。

二、功能描述最终运行的功能为:1、DG128开启,上电,LCD 提示显示输入。

2、键入所选定时量程,LCD 开始计时,此时,洗衣机启动。

3、定时结束,LCD 提示计数完毕,洗衣机工作完毕。

此时,手动关闭电源即可。

通过对于CodeWarrior 软件的操作,编写代码,最终实现freescaleHCS12DG128单片机简单控制家用洗衣机的开启——计数——关闭功能。

三、硬件连接图7-1 MCU 与LCD 的连接PTA0 PTA1 PTA2 PTA3 PTA4 PTA5 PTA6 PTA7PTA 口(KEY1-8)Vcc四、设计方案定时档位:在洗衣机启动的时候,LCD上电,显示提示输入,键入不同的键,所对应的模式不同,共分为20分钟、25分钟、、、65分钟10个定时档。

每个键所定义的模式为:键定义值0键位20分钟,键定义值每加1,相应计数值在20的基础上加5分钟。

主要驱动模块键盘驱动源文件:KBI_I.c.计数驱动模块:Timer.cLCD显示驱动模块:LCD.c五、程序设计代码//头文件包含#include "Includes.h" //总头文件#include <string.h>//在此添加全局变量定义uint8 time[3];extern uint8 KB_valueN,KB_DefValue;void main(){//0.1 主函数中的变量定义uint16 remember,cnt;uint8 state=0;uint32 mRuncount=0; //运行计数器uint8 receive_data[33]="Time: ";//uint8 d;////0.2 关总中断DisableInterrupt(); //禁止总中断//0.3 芯片初始化MCUInit();//0.4 模块初始化TimerInit(); //定时器1初始化LCDInit(); //LCD初始化KBInit(); //键盘初始化Light_Init(Light_Run_PORT,Light_Run,Light_OFF); //RUN指示灯初始化为暗//0.5 开放中断//EnableTimer; //开放定时器1溢出中断EnableKBint(); //开放键盘中断EnableInterrupt(); //开放总中断time[0] = 0; //(1) "时分秒"缓存初始化(00:00:00)time[1] = 0;time[2] = 0;remember = time[2]; //(2) 临时变量remember初始化KB_valueN = 0xff;LCDShow((uint8 *)"Input: "); //LCD提示输入// 主循环for(;;){//LCD显示计数器值if (KB_valueN != 0xff){if((KB_valueN==0xee)||(KB_valueN==0xde)||(KB_valueN==0xbe)||(KB_valueN==0x7e)||(KB_valueN==0xed)||(KB_valueN==0xdd)||(KB_valueN==0xbd)||(KB_valueN==0x7d)||(KB_valueN==0xeb)||(KB_valueN==0xdb)){if(state==0){cnt = (((KBDef(KB_valueN)-0x30)+20)*60);state=1;}if(state==1){if(remember!=time[2]);{for(;;){strcpy((char*)receive_data,"Time: ");//双引号中存在除“Time:”五个字符外的27个字符remember = time[2];cnt--;if(cnt>0){receive_data[8] =(cnt/1000)+0x30;receive_data[9] =((cnt%1000)/100)+0x30;receive_data[10]=((((cnt%1000)%100)/10)+0x30);receive_data[11]=((((cnt%1000)%100)%10)+0x30);LCDShow((uint8 *)receive_data);}elseLCDShow((uint8 *)"Task is Finished ");}}}}if((KB_valueN==0xbb)||(KB_valueN==0x7b)||(KB_valueN==0xe7)||(KB_valueN==0xd7)||(KB_valueN==0xb7)||(KB_valueN==0x77 )) LCDShow((uint8 *)"Time: ");}} //for_end(主循环结束)}//main_end中断程序isr.c中要添加中断程序,如定时器溢出中断处理程序,键盘中断程序。

单片机大作业试题及答案

单片机大作业试题及答案

单片机试题带答案版1、填空(每空2 分,共40 分)1、MCS-8051系列单片机字长是8 位,有40 根引脚,96系列字长是16 位。

单片机的特2、单片机的存储器的最大特点是指令存储器与数据存储器分开编址,Px并行口的地址是与数据存储器统一编址的,或者说属于该存储器。

3、8051最多可以有4 个并行输入输出口,最少也可以有1个并行口,即P1 。

P3常需复用作串行通信、外部中断、外部计数脉冲和读写控制信号。

4、ALE信号的作用是低8位地址锁存。

5、8051复位后,PC= 0 H。

若希望从片内存储器开始执行,EA脚应接高电平,PC值超过0FFF H时,8051会自动转向片外存储器继续取指令执行。

6、8051的C/T是加(加或减)计数的。

7、8051的中断向量表在3 H、0B H和13H、1BH、23H。

8、MOV A,40H 指令对于源超作数的寻址方式是直接寻址。

9、指令JB 0A7H,ABC的作用是若P2口的第7位为1则跳转到ABC 。

(0A7H是P2.7的地址)2、已知A = 0F8H,当执行ADD A,#0A9H指令后,PSW中的OV、CY、AC、P各为多少?若是有符号数,A中的结果用十进制表示是多少?(共5 分)[解答] OV:0、CY:1、AC:1、P:1 A:-953、在两个8051间用模式2进行串行通信,A机并行采集外部开关的输入,然后串行传输给B机;B机接收后并行输出控制LED发光。

画出连接示意图,写出完整的程序。

(共15 分)4、将8051外部扩展2K EPROM,同时扩展16K RAM作数据存储器,采用的2716是2K 的EPROM芯片,6264是8K的RAM芯片,74LS373是8位锁存器。

请画出连接示意图。

要求画出8051的数据、地址、ALE、PSEN、RD、WR信号;锁存器的数据入D、数据出Q、锁存控制G、OE;2716的A、数据O、片选CE、输出使能OE;6264的A、D、CE、OE、WE。

16位单片机实验指导书

16位单片机实验指导书

16位单片机应用实验指导书电子与信息工程学院2O15年2月实验一MC9S12XS128入门实验一.实验目的1.熟悉CodeWarrior嵌入式开发系统软硬件环境,掌握其使用方法及调试方式。

2.掌握S12 GPIO接口的使用方法及编程方法。

3.熟悉S12单片机的C语言程序编程框架。

4.理解样例中的第一个C语言程序代码。

二.实验设备及其连接1.PC机一台2.S12嵌入式开发实验板一套3.接线原理图实验板上有8个发光二级管和4个按钮开关, 8个发光二级管由单片机的PB口8个IO引脚控制, PB0-PB7输出低电平时LED点亮, 输出高电平时LED熄灭。

4个独立的按键输入直接连接到PP口的PP4-PP7引脚, 常态下为高电平, 按键按下时, CPU相应I/O引脚将检测到低电平, XS128芯片的PP口是有中断功能的IO口, 除了可用查询方式检测IO口的状态以外,我们也可以用中断的方式读入按键的状态。

三.实验内容1.使用CodeWarrior嵌入式开发系统的软硬件环境,掌握其使用方法及调试方式。

2.调试运行提供的样例程序light,观看实验结果。

(软件使用参见第四部分)3.运行样例程序,观察小灯的闪烁和对应的程序实现;调整延时的长短,继续观察小灯的闪烁。

4.尝试新建自己的工程,自编程序,实现用4个开关控制4个小灯的亮灭. 4个开关分别接在端口P的PTP4~PTP7口,4个小灯则接在PORTB0~PORTB3口, 参见第二部分连接图. 编程实现用这4个开关控制4个小灯,按钮开关按下时,对应小灯亮,否则为暗。

提示:新建工程时芯片选择HCS12X family-〉mc9s12xs128,connection 选择TBDML,然后下一步输入工程路径和名称,再3次下一步,选择默认选项,然后下一步、完成。

在main.c 文件中加入你的代码,主要通过设置数据方向寄存器DDRB DDRP和数据寄存器PORTB PTP来实现开关控制小灯的功能。

毕业设计(论文)--基于单片机的16位DA输出波形设计报告

毕业设计(论文)--基于单片机的16位DA输出波形设计报告

毕业设计(论文)--基于单片机的16位DA输出波形设计报告技术总结报告设计题目:16位DA输出波形设计学生姓名:专业班级:学号:起止时间:2011年10月1日―2011年11月12日研究地点:目录一、概述 21.1 课题研究的内容和意义 21.2达到的技术指标 2二、系统总体设计 42.1 系统设计方案论证(几种方案选一) 42.2 系统总体框图及简要说明实现了的主要功能 4三、硬件电路设计 63.1 元器件的选择 63.2单片机控制模块133.3温度数据采集模块 143.4显示模块143.5温度数据无线传输电路15四、软件设计174.1主程序流程图174.2其他功能流程图19五、系统调试235.1测试环境和方法235.2测试结果235.3出现问题及解决方法23六、展望26概述1.1 课题研究的内容和意义本课题采用51单片机对两个DAC0832进行控制来实现16位DA输出。

因为高精度DAC转换芯片价格比较贵,而且有时不易购买,通过对2个DAC0832进行控制,可以构成高精度的DAC,既降低了成本又解决了实际需要。

1.2技术指标设计并制作一个基于单片机的16位DA输出,能够输出方波、三角波、正弦波这3种波形,在输出波形的同时能够实现波形的调频和调幅,波形在示波器上显示。

本设计可以通过按键控制实现波形调频,通过改变DA的基准电压输入来实现调幅。

二.系统的总体设计2.1系统设计方案论证第一种方案:直接采用16位DA转换芯片,让单片机对16位DA芯片进行控制,从而输出波形。

第二种方案:采用2个8位DA转换芯片DAC0832,两个DA芯片采用双缓冲数据输入方式,让单片机先后控制这两个DA芯片的数据输入,最后再一起把数据经DA转换器转换输出,从而输出波形。

最终采用第二种方案。

2.2系统总体框图及简要说明实现了的主要功能。

实现了波形输出和波形的调频调幅。

三、硬件电路设计3.1元器件的选择:硬件电路用了STC89C51RC单片机,8位DA转换芯片DAC0832,运放LM358,还有232.3.2单片机控制模块3.3DA输出模块:软件设计主程序流程图:子程序独立按键检测及波形显示程序流程图是否否是否是否是否否是否是否是否总程序:#include#include#include#define uchar unsigned char#define uint unsigned intsbit da1wr1 P1^0;sbit da1wr2 P1^1;sbit da2wr1 P1^2;sbit da2wr2 P1^1;sbit ile P1^3;sbit cs P1^2;sbit key1 P3^4;sbit key2 P3^5;sbit key3 P3^6;sbit key4 P3^7;uint i 0;uint ih 0;uint il 0;//uchar numdis 0;uchar a 0;uchar d 0;uchar c 10;uchar k;uchar num 3;uchar code tab[256]0x80,0x82,0x85,0x88,0x8b,0x8e,0x91,0x94,0x97,0x9a,0x9d,0xa0,0x a3,0xa6,0xa9,0xac,0xaf,0xb2,0xb6,0xb9,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0x cc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0x ea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0x fc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x ff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0x f2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0x d8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0x b4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x 89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x 38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x 18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x 05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x 0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x 22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x 45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x 6f,0x72,0x76,0x79,0x7c,0x80;code unsigned char table[2] 0,255 ;void delayms uint xmsuint i,j;for i xms;i 0;i--for j 110;j 0;j-- ;/*void delayuchar i;for i 0;i 255;i++ ;*//*void delay1 int x //延时函数TH0 65536-x /256;TL0 65536-x %256;TR0 1;while !flag ;flag 0;*/void keyscanif key1 0delayms 10 ;if key1 0a a+1;while !key1 ;if a 6a 1;if a! 0if key2 0delayms 10 ;if key2 0while !key2 ;c++;num num+1;if num 10 num 1;if c 20 c 5;if key3 0delayms 10 ;if key3 0while !key3 ;c--;num--;if num 0 num 10;if c 3 c 20;void display uchar aif a 2 //方波//da1wr1 0;//da2wr1 0;//da1wr2 0;P0 0;da1wr1 0;da1wr1 1;da2wr1 0;da2wr1 1;da1wr2 0;da1wr2 1;for k 0;k c-2;k++_nop_ ;P0 255;da1wr1 0;da1wr1 1;da2wr1 1;da1wr2 0;da1wr2 1;for k 0;k c;k++_nop_ ;if a 1 // 三角波if d 0i i+5;if i 65535 d 1;ih i/256;il i%256;P0 il;da1wr1 0;da1wr1 1;P0 ih;da2wr1 0;da2wr1 1;da2wr2 0;for k 0;k c;k++_nop_ ;elsei i-5;if i 5 d 0;if i 65535 d 1;ih i/256;il i%256;P0 il;da1wr1 0;da1wr1 1;P0 ih;da2wr1 0;da2wr1 1;da2wr2 0;da2wr2 1;for k 0;k c;k++_nop_ ;if a 3 //正弦波if ++i 256 i 0;P0 tab[i];da1wr1 0;da1wr1 1;da2wr1 0;da2wr1 1;da1wr2 0;da1wr2 1;for k 0;k c;k++_nop_ ;void mainile 1;cs 0;da1wr1 1;da2wr1 1;da1wr2 1;while 1keyscan ;display a ;系统调试测试环境和方法软件测试软件测试的环境是在Proteus软件。

用单片机语言设计16位加法计算器实验报告

用单片机语言设计16位加法计算器实验报告

湖北第二师范学院计算机学院09计应单片机课程设计实验报告课程设计名称:电子计算器课程设计单位:10计应(1)班课设小组成员:徐凡(1060310039)凡平(1060310058)彭浩(1060310045)桂银(1060310010)潘光卉(1060300033)完成时间:2012年04月02日至2012年04月 24 日单片机课程设计实验报告课程设计题目:简易计算器作品功能描述:当通过输入键盘数字时,能够在显示器上显示输出的数值,并且通过想实现的简单运算功能,实现计算器的加、减、乘、除和清零,并将结果显示出来。

小组成员工作分工:徐凡:程序主框架的构造和主要功能函数的设计。

凡平:原理图的设计和硬件的焊接。

彭浩:基本功能函数的设计(“+,-,*,/”)。

桂银:程序流程图的设计和键盘扫描程序的实现。

潘光卉:编写文档和功能测试。

硬件电路设计:本设计中我们用的是AT89C52芯片,LCD1602 (PROTEUS中为LM016L)就是那个液晶屏,因为可以显示2行16个字符,故叫做LCD1602.11.0592M或12M晶振(CRYSTAL),两者均可,但要涉及到串口需选用12MKEYPAD-SMALLCALC就是那个4X4键盘电容20~30PF(CAP),接最小电路电容10PF主要接复位电路RESPACK-8排阻,为20K的,一个引脚接正极,另8个引脚接I/O口接RES电阻10K,接复位电路实物照片:硬件原理图原理说明:1,上电后,屏幕初始化;2,计算。

按下数字键,屏幕显示要运行的第一个数字,再按下符号键,然后再按下数字键,屏幕显示要运算的第二个数字,最后按下“=”号键,屏幕上显示出计算结果。

3,如果要再次计算,可以按下“ON/C”键清零,或者继续按下数字键,即可重新计算。

键盘使用说明如下:按键功能说明:Array“+”实现两个数的相加“-”实现两个数的相减“×”实现两个数的乘积“÷”实现两个数商的运算“ON/C”计算器显示的清零和接通电源程序控制流程图:软件设计:在程序设计方法上,模块化程序设计是单片机应用中最常用的程序设计方法。

单片机大作业题目1-30

单片机大作业题目1-30

须知:1. 大作业的所有题目都应在PROTEUS 7.5(注意:只能使用7.5版本)仿真环境下运行通过。

2. 要求:(1)在keil IDE(μvision3)中完成应用程序设计、并编译;(2)在PROTEUS 7.5下的ISIS Professional中完成电路设计、调试与仿真通过。

题目1 智能电子钟(LCD显示)设计要求:以AT89C51单片机为核心,制作一个LCD显示的智能电子钟:(1) 计时:秒、分、时、天、周、月、年。

(2) 闰年自动判别。

(3) 时间、月、日交替显示。

(4) 自定任意时刻自动开/关屏。

(5) 计时精度:误差≤1秒/月(具有微调设置)。

题目2 电子时钟(LCD显示)设计要求以AT89C51单片机为核心的时钟,在LCD显示器上显示当前的时间:●使用字符型LCD显示器显示当前时间。

●显示格式为“时时:分分:秒秒”。

●用4个功能键操作来设置当前时间,4个功能键接在P1.0~P1.3引脚上。

功能键K1~K4功能如下。

●K1—进入设置现在的时间。

●K2—设置小时。

●K3—设置分钟。

●K4—确认完成设置。

程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00:00”,然后开始计时。

题目3 秒表设计要求应用AT89C51的定时器设计一个2位的LED数码显示作为“秒表”:显示时间为00~99s,每秒自动加1,设计一个“开始”键,按下“开始”键秒表开始计时。

设计一个“复位”键,按下“复位”键后,秒表从0开始计时。

题目4 定时闹钟设计要求使用AT89C51单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD时钟。

定时闹钟的基本功能如下:●显示格式为“时时:分分”。

●由LED闪动来做秒计数表示。

●一旦时间到则发出声响,同时继电器启动,可以扩充控制家电的开启和关闭。

程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“00:00”,按下操作键K1~K4动作如下:(1) K1—设置现在的时间。

单片机大作业

单片机大作业

西安电子科技大学单片机大作业学院:电子工程学院班级:02121X班姓名:XXX学号:0212XXX指导老师:XXX温度控制系统设计一、温度控制系统设计发展历史及意义在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。

这类控制对象惯性大,滞后现象严重,存在很多不确定的因素,难以建立精确的数学模型,从而导致控制系统性能不佳,甚至出现控制不稳定、失控现象。

传统的继电器调温电路简单实用 ,但由于继电器动作频繁 ,可能会因触点不良而影响正常工作。

控制领域还大量采用传统的PID控制方式,但PID控制对象的模型难以建立,并且当扰动因素不明确时,参数调整不便仍是普遍存在的问题。

而采用数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。

数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。

由于DS18B20芯片的小型化,更加可以通过单跳数据线就可以和主电路连接,故可以把数字温度传感器DS18B20做成探头,探入到狭小的地方,增加了实用性。

更能串接多个数字温度传感器DS18B20进行范围的温度检测。

二、DS18B20工作原理DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。

DS18B20测温原理如图3所示。

图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。

高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。

计数器1和温度寄存器被预置在-55℃所对应的一个基数值。

计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。

16位单片机实现全数字回路控制简化大功率开关电源

16位单片机实现全数字回路控制简化大功率开关电源

16位单片机实现全数字回路控制,简化大功率开关电源开关电源(SMPS)正随着系统变得日益复杂,如带多路输出、协调负载共享,热插拔能力、输出协调、集成功率因数校正或丰富故障处理功能,传统的模拟控制回路变得复杂和昂贵。

针对大功率和复杂度高的开关电源,美国微芯科技(Microchip)最近推出了最多可支持四路输出的16位dsPIC数字信号控制器(DSC)系列,这是Microchip首个SMPS DSC产品,它可以节省50%的元件数量,适用于AC/DC电源、功率因数校正(PFC)、隔离式DC/DC 转换器、UPS和逆变电源等。

随着性能和功率的不断提升,越来越多开关电源的控制回路通过数字方式进行,设计也“由硬变软”新型dsPIC30F1010和dsPIC30F202X DSC是微芯科技针对电源应用推出的第四级数字集成产品,也是第一次实现全数字回路控制。

该公司数字信号控制器部门战略市场总监Steve Marsh表示,尽管单片机在电源设计中广泛应用,如该公司已经推出的三级数字集成产品,但控制回路依然是以模拟形式来实现。

他介绍说,第一级开/关控制,单片机可以提供一些包括软启动、定序和监控的简单功能,由8位MCU实现;第二级比例控制,单片机可以管理现有电源芯片,并扩展现有功能,由8位或16位MCU/DSC实现;第三级拓扑结构的控制,SMPS的功能模块作为单片机控制的外设,由8位或16位MCU/DSC实现。

Marsh表示:“新推出的是第四级全数字控制产品,第一次实现全数字控制回路。

它最大的特点是只需要使用DSC,完全通过固件实现数字滤波,只需要外接功率驱动模块。

这样的数字控制,可以使客户使用的元件数量减少50%。

”不过,他表示,第四级的数字回路控制并不会完全取代其它设计,模拟和数字控制将在一定的过渡期内并存,目前模拟控制和数字控制应用的分界线,对于DC/DC来说是100W,AC/DC通常是250W,对于100W以下的电源来说,除非电源非常复杂,否则不会用到新型dsPIC系列。

16位单片机 期末大作业实验报告

16位单片机 期末大作业实验报告

上海电力学院16位单片机实验报告实验名称:使用键盘中断、PWM及LED数码管的实验专业:姓名:班级:学号:一、实验目的使用使用键盘中断、PWM 及LED 数码管实现用键盘调整PWM 呼吸灯的渐变快慢,同时用LED 显示当前的速度级:1、PWM 占空比(如图1)。

2、16键键盘中断(如图2)。

图2键盘中断接线原理图3、8段LED 数码管(如图3)。

图3 LED 数码管结构图(a) 25%的占空比图1 PWM 占空比示意图时钟 PWM (b) 50%的占空比时钟PWM (c) 75%的占空比时钟PWM二、实验设备及其连接(一)、试验设备:1.PC机一台2.S12嵌入式开发系统一台3.导线九根4.小键盘一个5.4连排共阴极8段数码管一个(二)、设备连接:1.键盘采用手动接线,将键盘接入双排插孔下一排插孔;2.PTP0~3分别接键盘接线处的1~4;3.PTA0~3分别接5-8;4.8段数码管插到指定位置;5.小灯接PP7口。

三、实验内容1.在键盘中断主程序里添加PWM及LED的头文件(.h)及源文件(.c),并在键盘中断主程序main.c中添加PWM占空比小灯及LED显示程序:2.在中断程序isr.c中添加PWM占空比小灯及LED显示程序:3.运行程序并记录实验现象:四、程序展示1.添加头文件声明。

2.在main.c 中添加time 变量及LEDbuf[4]数组,其中time 用来改变PWM 渐变中的Delay 延时时间,LEDbuf 则用来显示每次按键改变的速度值:main.c 程序展示:#include "Includes.h" //包含总头文件//在此添加全局变量定义uint8 iii;uint8 period;uint8 duty;uint8 time=100;uint8 LEDbuf[4];//主函数void main(){//0.1 主程序使用的变量定uint32 mRuncount=0; //运行计数器//运行计数器//uint8 period,duty,time=10;//0.2 关总中断DisableInterrupt();//0.3 芯片初始化MCUInit(FBUS_32M);//0.4 模块初始化Light_Init(Light_Run_PORT,Light_Run,Light_OFF); //RUN指示灯初始化为暗SCIInit(0,FBUS_32M,9600); //串口0初始化KBInit(); //键盘初始化PWMInit(7); //初始化PWM通道1 LEDInit();//Light_Init(Light_Run_PORT,Light_Run,Light_OFF); //RUN指示灯初始化为暗//0.5 开放中断EnableSCIReInt0; //开放SCI0接收中断EnableKBint(); //开放键盘中断EnableInterrupt();DDRB=0xff;PORTB=0x00; //开放总中断period = 0xFF; //PWM周期duty=0x00;LEDbuf[0]='0'; //待显示数据0000LEDbuf[1]='0';LEDbuf[2]='0';LEDbuf[3]='0';// 主循环for(;;){ //int i,j,k;LEDShow(LEDbuf);// Light_Change(Light_Run_PORT,Light_Run); //指示灯的亮、暗状态切换//}//---------------------------------------------------------------------//2.通过占空比的变化来调节小灯的亮度for(duty=0;duty<0xff;duty++){PWMSetting(7,period, duty); //不断增加PWM的占空比LEDShow(LEDbuf);Delay(time);}//延时for(duty=0xff;duty>0;duty--){PWMSetting(7,period, duty); //不断增加PWM的占空比LEDShow(LEDbuf);Delay(time);}//延时}}3.在isr.c中添加对按键的判断,当按下按键时,缩短Delay延时使得小灯闪烁速度加快,同时改变LEDbuf数组的值使得LED显示当前的按键值(速度级)。

16位单片机基础应用考试 (答案)

16位单片机基础应用考试 (答案)

16位单片机基础考试(答案)一、填空1、µ’nSP™的内核由(总线)、(算术逻辑运算单元)、(寄存器组)、(中断系统)及(堆栈)等部分组成。

2、µ’nSP™是16位单片机,它具有(16位)数据线和22位地址线。

22位地址线最多可寻访(4M)字的存储容量。

3、SPCE061A有2K字的SRAM包括(堆栈区),其地址范围从0x0000到0x07FF。

SPCE061A是一个用闪存替代掩膜ROM的MTP(多次编程)芯片,具有32K字(32K*16bit)闪存容量。

4、A口的IOA0~IOA7用作输入口时具有唤醒功能,即具有输入电平变化引起CPU中断功能。

5、通常,对某一位的设定包括以下3个基本项:数据向量Data、属性向量Attribution和方向控制向量Direction。

6、µ’nSP™时钟电路采用晶体振荡器电路。

外接晶振采用32768Hz。

7、SPCE061A提供了两个16位的定时/计数器:TimerA为通用计数器;TimerB为多功能计数器。

8、SPCE061A有8路可复用10位ADC通道,其中一路通道(MIC_In)用于语音输入,模拟信号经过自动增益控制器和放大器放大后进行A/D转换。

其余7路通道(Line_In)和IOA[0~6] 管脚复用。

9、串行输入输出端口SIO提供了一个1位的串行接口,用于与其它设备进行数据通讯。

在SPCE061A 内通过IOB0和IOB1这2个端口实现与设备进行串行数据交换功能。

10、SPCE061A的WatchDog的清除时间周期为0.75s。

11、读程序,写结果:r1=0x0010; r2=0x0020; [0x0010]=r2; r2=0x0010; r1+=[r2++];执行完后,r1=(0x0030),r2=(0x0011)。

12、R1=0xF00F //R1的初值为0xF00FR1=R1 LSL 3 执行完后,R1=0x807813、完成下列程序,设置A口低八位为低电平输出,高八位为带上拉电阻的输入r1 = (0x00ff); [P_IOA_Dir] = r1;r1 = (0x00ff); [P_IOA_Attrib] = r1;r1 = (0xff00); [P_IOA_Data] = r1;14、SPCE061A提供(14)个中断源,具有(两)个中断优先级,可实现两级中断嵌套功能。

16位单片机大作业(1)

16位单片机大作业(1)

上海电力学院《16位单片机应用》大作业课程名称 16位单片机应用课程编号1院(系)电子与信息工程学院专业电子科学与技术任课教师杨芳班级 2013142 姓名 DANGDANG 学号 2013000题目:十六位单片机----密码锁一、设计目的及要求运用C语言,MC9S12XS128的知识,对实现密码锁进行软件和硬件的设计和调试,掌握如何使用CodeWarrior来整合各种驱动模块,例如本实验运用到的键盘中断、LCD、PWM以及小灯模块,将这些模块整合在一起再通过算法实现硬件上的运行,达到密码锁的功能。

密码锁主要功能:利用键盘中断、LCD、小灯、PWM模块,按下按键,在LCD可以显示对应值,并将其与预设密码进行比对。

若正确,则LCD显示right,小灯由暗变亮;否则,LCD显示wrong,小灯一直保持流水灯状态,直至输入的密码正确。

二、设计内容与实现过程本次用到了相对还是比较多的模块,主要有SCI串口通信模块,LED显示模块,LCD显示模块,Timer定时器模块和中断模块,主要采用了定时器和中断的方式去控制整个系统的工作,能在超级终端以及LCD上实时显示时分秒的数据,主要是在Timer的样例程序中对当中的一些驱动以及主函数中数据的定义进行一定量的修改,来保证控制功能的实现。

具体功能和实现过程如下:1、Main 函数(1)全局变量定义2、实验采用的模块①LCD 显示模块运行程序后,LCD上会显示“password: r/w: ”,在对应位置还会显示按下的键位对应的定义值。

②键盘中断模块按下键位后,键值存入valve,调用KBDef函数,将valve键值转为定义值,存入num数组中。

③小灯显示模块小灯为共阳极程序运行后,PORTB已在前面设置为输出,小灯会出现流水灯现象。

④PWM模块Period为PWM周期所占时钟周期数,duty为PWM占空比所占的PWM 周期数。

此处不断增加占空比,实现小灯由暗变亮的显示。

《单片机大作业》课件

《单片机大作业》课件

智能照明系统
单片机可以实现智能照明控制, 根据环境光线和人的需求调节灯 光亮度、色温等参数,提高居住 舒适度。
单片机在其他领域的应用探索
工业自动化
单片机在工业自动化领域具有广泛的应用前景,可以实现设备控 制、数据采集、自动化生产线等功能。
医疗电子设备
单片机可以应用于医疗电子设备中,如智能医疗检测仪、电子体温 计等,提高医疗设备的智能化水平。
代码优化与重构
对软件代码进行优化和重构,提高代码质量 、可读性和可维护性。
单片机项目的总结与反思
项目总结
对整个单片机项目实践过程进行总结,包括遇到的问题、解决方法、 收获和不足等。
经验教训
反思项目实践中遇到的问题和困难,总结经验教训,为今后的项目实 践提供借鉴。
成果展示与交流
将项目成果进行展示和交流,接受他人评价和建议,进一步提高项目 质量。
智能交通系统
单片机可以应用于智能交通系统中,实现车辆调度、交通信号控制 、智能停车等功能,提高交通运行效率。
THANKS
感谢观看
02
单片机基础知识
单片机的硬件结构
中央处理器(CPU)
控制单片机的主要运算、逻辑功能的核 心部件。
输入/输出接口(I/O)
实现单片机与外部设备的信息交换。
存储器
用于存储程序代码和数据的部件,分 为随机存取存储器(RAM)和只读存 储器(ROM)。
时钟电路
为单片机提供工作节拍,控制单片机 的运行速度。
软件编程
根据硬件电路和项目需求进行软件编 程,实现所需功能。
电路搭建与调试
搭建硬件电路,进行初步调试,确保 电路工作正常。
单片机项目的调试与优化
功能测试

《单片机大作业》评分标准

《单片机大作业》评分标准

《单片机大作业》
评分标准
优秀(95分):
1、内容完整,包含报告要求中提到的全部内容。

2、原理图设计、电路功能描述正确。

3、对电路进行了仿真,仿真结果能正确说明电路的功能。

4、文字通顺,格式及标点规范。

5、写作态度认真,按时圆满完成论文。

良好(85分):
1、内容完整,包含报告要求中提到的全部内容。

2、原理图设计、电路功能描述基本正确。

3、对电路进行了仿真,有仿真结果但缺少对仿真结果的分析。

4、文字通顺,格式及标点规范。

5、写作态度认真,按时圆满完成论文。

中等(75分)
1、内容比较完整,包含报告要求中提到的大部分内容。

2、原理图设计、电路功能描述基本正确。

3、对电路进行了仿真,但仿真结果不能正确说明电路的功能。

4、文字基本通顺,格式及标点基本规范。

5、写作态度认真,按时圆满完成论文。

及格(65分):
1、内容比较完整,包含报告要求中提到的大部分内容。

2、原理图设计、电路功能描述基本正确。

3、未对电路进行仿真或仿真结果错误。

4、文字基本通顺,格式及标点基本规范。

5、写作态度认真,按时圆满完成论文。

不及格(50分):
1、内容不完整,只包含了报告要求中提到的小部分内容。

2、写作态度不认真,未按时完成论文。

3、论文观点不明确,不集中,逻辑混乱。

语言表达不清楚。

4、生造词语及语病较多。

格式及标点不规范。

5、论文存在抄袭现象。

1。

PIC24F系列十六位单片机原理与实验(注意事项、实验一)

PIC24F系列十六位单片机原理与实验(注意事项、实验一)
上电时,PORTB 端口被初始化为模拟端口,不能工作在数字模式(进行 I/O 端口读取)。 AD1PCFG 寄存器为 PORTB 端口模拟输入引脚配置控制位,AD1PCFG 寄存器的位为 1 时 PORTB 对应的引脚被配置为数字模式,此时 PORTB 端口对应的位可以进行 I/O 端口读取。
下篇 第 3 章 单元接口实验
(1)、外部主晶振与 RC12/RC15 管脚复用,使用主晶振时,RC12/RC15 管脚不能用作 I/O 端口。当单片机不使用主晶振时,将 JP3A 和 JP3B 跳线的 2-3 短路,RC12/RC15 可以 用作 I/O 端口。
(2)、外部辅助晶振与 RC13/RC14 管脚复用,使用辅助晶振时,RC13/RC14 管脚不能 用作 I/O 端口。当单片机不使用辅助晶振时,将 JP4A 和 JP4B 跳线的 2-3 短路,RC13/RC14 可以用作 I/O 端口。
对比上边两幅图可看出,需要修改的字段如下:
1、 Primary Oscillator Select (主振荡器选择位) 此处选择 HS Oscillator Enabled
厦门大学信息科学与技术学院——单片机原理与接口技术实验室——海韵园实验楼 305#
第 230 页
PIC24F 系列十六位单片机原理与实验(试用版)
3、操作顺序 为保证 ICD2 能正常工作,调试目标板时按如下步骤进行: (1)、电脑开机; (2)、MPLAB ICD2 的 USB 端口连接到电脑 PC 机的 USB 口(如果已经连接则可跳过此
步); (3)、MPLAB ICD2 的 6 芯水晶头接入用户目标板(如果已经连接则可跳过此步),之
后目标板接通电源。 (4)、启动 MPLAB IDE 工作环境; (5)、MPLAB IDE 中建立项目,编写程序并进行硬件调试。 其中,(2)与(4)步骤不能颠倒。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上海电力学院
《16位单片机应用》大作业
课程名称16位单片机应用
课程编号260717001
院(系)电子与信息工程学院
专业电子科学与技术
任课教师杨芳
班级2013142
姓名DANGDANG 学号 2013000
题目:十六位单片机----密码锁
一、设计目的及要求
运用C语言,MC9S12XS128的知识,对实现密码锁进行软件和硬件的设计和调试,掌握如何使用CodeWarrior来整合各种驱动模块,例如本实验运用到的键盘中断、LCD、PWM以及小灯模块,将这些模块整合在一起再通过算法实现硬件上的运行,达到密码锁的功能。

密码锁主要功能:
利用键盘中断、LCD、小灯、PWM模块,按下按键,在LCD可以显示对应值,并将其与预设密码进行比对。

若正确,则LCD显示right,小灯由暗变亮;否则,LCD显示wrong,小灯一直保持流水灯状态,直至输入的密码正确。

二、设计内容与实现过程
本次用到了相对还是比较多的模块,主要有SCI串口通信模块,LED显示模块,LCD显示模块,Timer定时器模块和中断模块,主要采用了定时器和中断的方式去控制整个系统的工作,能在超级终端以及LCD上实时显示时分秒的数据,主要是在Timer的样例程序中对当中的一些驱动以及主函数中数据的定义进行一定量的修改,来保证控制功能的实现。

具体功能和实现过程如下:
1、Main 函数
(1)全局变量定义
2、实验采用的模块
①LCD 显示模块
运行程序后,LCD上会显示“password: r/w: ”,在对应位置还会显示按下的键位对应的定义值。

②键盘中断模块
按下键位后,键值存入valve,调用KBDef函数,将valve键值转为定义值,存入num数组中。

③小灯显示模块
小灯为共阳极程序运行后,PORTB已在前面设置为输出,小灯会出现流水灯现象。

④PWM模块
Period为PWM周期所占时钟周期数,duty为PWM占空比所占的PWM周期数。

此处不断增加占空比,实现小灯由暗变亮的显示。

三、小结
此次课程设计,我使用了键盘中断、LCD、小灯以及PWM模块,共四个模块,设计出了一个密码锁。

在本次试验中,我不可避免的遇到一些问题:PWMSetting函数理解不够深入。

程序中所用的PWM相关语句在之前做PWM 实验时已有接触,经过了解发现,period为PWM周期占时钟周期的个数,duty 为PWM占空比占PWM周期的个数,但对于PWMSetting函数的功能如何实现不太理解。

在这次实验中,我不断地发现问题、解决问题,将理论运用与实际,更好的把握了课本上学到的知识,进一步认识了软件和硬件,也大大提高了自己的动手能力,使我受益匪浅。

四、最后结果。

相关文档
最新文档