2825011124南邮综合设计报告(课程设计)proteus和keil_第1页
2825011124南邮综合设计报告(课程设计)proteus和keil_第2页
2825011124南邮综合设计报告(课程设计)proteus和keil_第3页
2825011124南邮综合设计报告(课程设计)proteus和keil_第4页
2825011124南邮综合设计报告(课程设计)proteus和keil_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一、课题1:数码管学号滚动显示41.课题任务要求及技术指标41.1设计任务41.2设计要求42.课题分析及设计思路42.1功能分析42.2实现思路42.3难点描述43.系统设计(建模)43.1硬件框图43.2软件框图43.3电路图53.4元件清单53.5源程序64.仿真结果与结果分析7二、课题2:led8彩灯花样显示71.课题任务要求及技术指标71.1设计任务71.2设计要求72.课题分析及设计思路72.1功能分析82.3难点描述83.系统设计(建模)83.1硬件框图83.2软件框图83.3电路图83.4元件清单93.5源程序94.仿真结果与结果分析10三、课题3:数字电子钟111.课题任

2、务要求及技术指标111.1设计任务111.2设计要求112.课题分析及设计思路112.1功能分析112.2实现思路122.3难点描述123.系统设计(建模)123.1硬件设计123.2软件设计流程图133.3电路图143.4元件清单153.5源程序154.仿真结果与结果分析19四、课题6:函数发生器201.课题任务要求及技术指标201.1设计任务201.2设计要求202.课题分析及设计思路202.1功能分析202.2实现思路202.3难点描述203.系统设计(建模)203.1硬件设计203.2软件流程图213.3电路图263.4源程序264.仿真结果与结果分析32五、课题12:简易温度计341

3、.课题任务要求及技术指标341.1设计任务341.2设计要求342.课题分析及设计思路342.1功能分析342.2实现思路342.3难点描述343.系统设计(建模)343.1硬件设计343.2软件流程图353.3电路图373.4源程序374.仿真结果与结果分析46六、课程设计小结47一、课题1:数码管学号滚动显示1.课题任务要求及技术指标1.1设计任务:要求学生在六个数码管滚动显示自己的学号(六位),每隔一定时间循环移位一次,学号为奇数则左移,学号为偶数则右移。间隔时间可由开关选择1秒,2秒,3秒和4秒。1.2设计要求:(1)给出正确的原理图;(2)给出正确的程序,并结合原理图给出相应结果。2

4、.课题分析及设计思路2.1功能分析:数码管滚动显示学号,可控制间隔时间。2.2实现思路:1、动态数码显示技术;如何进行动态扫描,由于一次只能让一个数码管显示,因此,要显示6位的数据,必须经过让数码管一个一个轮流显示才可以,同时每个数码管显式的时间大约在1ms到4ms之间,所以为了保证正确显示,必须每隔1ms,就得刷新一个数码管。而这刷新时间我们采用单片机的定时/计数器来控制,每定时1ms对数码管刷新一次。2、在进行数码显示的时候,要对显示单元开辟6个显示缓冲区,每个显示缓冲区装有显示的不同数据即可。2.3难点描述:对延时的精度要求比较高。3.系统设计(建模)3.1硬件框图键盘复位电 路stc8

5、9c51数码管显示震荡电 路3.2软件框图开 始数码管显示学号读取键值根据键值命令数码管延时滚动执行结束3.3电路图3.4元件清单器材规格数量单片机at89c511数码管7seg-mpx6-ca-blue1按键button2晶振12mhz1瓷片电容22pf2电解电容10uf1电阻2202电阻10k93.5源程序#include #define uint unsigned int #define uchar unsigned charuchar code dis_seg7=0xc0,0xa4,0xc0,0xa4,0xc0,0xf9;/设置学号,共阳字形码uchar code dis_bit6=0

6、x3e,0x3d,0x3b,0x37,0x2f,0x1f;/六位数码管位选sbit k1=p10;sbit k2=p11;void delay1ms(uint i) uint j;while(i-) for(j = 0; j 110; j+); void main(void) uchar cnt, ttt;uchar disp = 0, 1, 2, 3, 4, 5,;while(1) for(ttt = 0; ttt 100; ttt+) for(cnt = 0; cnt 6; cnt+) /点亮数码管0-5 p2 = 0;p0 = dis_seg7dispcnt;p2 = dis_bitcn

7、t;if(k1=1&k2=1)delay1ms(1);elseif(k1=0&k2=1)delay1ms(2);elseif(k1=1&k2=0)delay1ms(3);elseif(k1=0&k2=0)delay1ms(4);ttt = disp0;disp0 = disp1;disp1 = disp2;disp2 = disp3;disp3 = disp4;disp4 = disp5;disp5 = ttt; 4.仿真结果与结果分析当按键k1、k2弹起时,学号延时1s滚动;当k1按下,k2弹起时,学号延时2s滚动;当k1弹起,k2按下时,学号延时3s滚动;当k1、k2按下时,学号延时4s滚

8、动。二、课题2:led8彩灯花样显示1.课题任务要求及技术指标1.1设计任务:要求学生设计出led8彩灯在两个拨码开关的控制下每隔1秒,2秒,3秒和4秒间隔点亮。1.2设计要求:(1)给出正确的原理图;(2)给出正确的程序,并结合原理图给出相应结果。2.课题分析及设计思路2.1功能分析:彩灯流水显示,间隔时间可控。2.2实现思路:当51单片机的p2口有高电平输出时,相应的发光二极管就会点亮。应用这一原理我们可以容易的点亮一个数码管,例如令p2口输出0000 0001时d1就会点亮。若再把0000 0001向左循环一位,利用p2口输出,就会点亮d2。在发光二极管两次点亮的间隔中加延时程序,让每次

9、点亮停留一段时间,像这样人眼就可以看到“流水” 的现象。2.3难点描述: 移位与延时之间的关联。3.系统设计(建模)3.1硬件框图键盘复位电 路stc89c51流水灯电 路震荡电 路3.2软件框图开 始数码管显示学号读取键值根据键值命令数码管延时滚动执行结束 3.3电路图3.4元件清单器材规格数量单片机at89c511发光二极管蓝+红+黄+绿2播码开关dipsw_21晶振11.0592mhz1瓷片电容22pf2电解电容10uf1电阻2208电阻10k13.5源程序#include #include #define uchar unsigned char #define uint unsigne

10、d int sbit k1=p10;sbit k2=p11;/延时void delayms(uint x) uchar i; while(x-) for(i=0;i120;i+); /主程序void main() uchar i; p2=0x80; while(1) for(i=0;i7;i+) p2=_crol_(p2,1); /p2 的值向左循环移动if(k1=1&k2=1)delayms(400);elseif(k1=0&k2=1)delayms(800);elseif(k1=1&k2=0)delayms(1200);elseif(k1=0&k2=0)delayms(1600); 4.仿

11、真结果与结果分析启动程序,二极管由d1到d8逐个点亮。播码开关播向1,1时,点亮间隔为1s;播码开关播向0,1时,点亮间隔为2s;播码开关播向1,0时,点亮间隔为3s;播码开关播向0,0时,点亮间隔为4s。三、课题3:数字电子钟1.课题任务要求及技术指标1.1设计任务:运用单片机的中断技术,led显示技术和键盘扫描技术,设计一实用的多功能电子钟。1.2设计要求:(1)给出正确的原理图;(2)给出正确的程序,并结合原理图给出相应结果。2.课题分析及设计思路2.1功能分析:数字电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒

12、,另外还有校时功能。2.2实现思路:8个数码管的段选接到单片机的p0口,位选接到单片机的p2口。数码管按照数码管动态显示的工作原理工作,将标准秒信号送入“秒单元”,“秒单元”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分单元”的时钟脉冲。“分单元”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时单元”。“时单元”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”通过七段显示器显示出来。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整,按一下s,秒单元就加1 ,按一下m,分就加1,按一下h,时就加1

13、。2.3难点描述:按键校对时间时容易抖动,抖动问题不解决就会引起对闭合键的识别。3.系统设计(建模)3.1硬件设计(1)最小系统设计单片机的最小系统是由电源、复位、晶振、/ea=1组成(2)数码管显示电路数码管使用条件:a、段及小数点上加限流电阻 b、使用电压:段:根据发光颜色决定; 小数点:根据发光颜色决定。(3)键盘控制电路当用手按下一个键时,如图3-8所示,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也回会出现类似的情况。这就是抖动。抖动的持续时间随键盘材料和操作员而异,不过通常总是不大于10ms。很容易想到,抖动问题不解决就会引起对闭合键的识别。用软件

14、方法可以很容易地解决抖动问题,这就是通过延迟10ms来等待抖动消失,这之后,在读入键盘码。3.2软件设计流程图n24小时到?分单元清零,时单元加1nnnyy时单元清零时间显示中断返回开始一秒时间到?60秒时间到?60分钟到?秒单元加1秒单元清零,分单元加1yy3.3电路图3.4元件清单器材规格数量单片机at89c511数码管7seg-mpx8-cc-blue1按键button3晶振11.0592mhz1瓷片电容22pf2电解电容10uf1电阻10k83.5源程序#include sbit ksec=p30; sbit kmin=p31; sbit khour=p32; unsigned cha

15、r secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0; unsigned int num=0,sec=0,min=0,hour=0; unsigned char code table10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; void delay(unsigned int); void keyscan(); void display();main()tmod=0x01; th0=(65536-50000)/256; tl0=(65536-50000)%256; ea=1;et

16、0=1;tr0=1; while(1) display(); keyscan(); void delay(unsigned int z) unsigned int x,y; for(x=z;x0;x-) for(y=110;y0;y-);/定时器中断程序void time0()interrupt 1 num+; th0=(65536-50000)/256; tl0=(65536-50000)%256; /led显示程序void display() if(num=20) num=0; sec+; if(sec=60) sec=0; min+; if(min=60) min=0; hour+; i

17、f(hour=24) hour=0; min=0; sec=0; secge=sec%10; secshi=sec/10; minge=min%10; minshi=min/10;hourge=hour%10; hourshi=hour/10; p2=0xfe; p0=tablesecge; delay(5); p2=0xfd; p0=tablesecshi;delay(5); p2=0xfb; p0=0x40; delay(5); p2=0xf7; p0=tableminge; delay(5); p2=0xef; p0=tableminshi; delay(5); p2=0xdf;p0=0

18、x40; delay(5); p2=0xbf; p0=tablehourge;delay(5); p2=0x7f; p0=tablehourshi; delay(5); /按键控制子程序void keyscan() if(ksec=0) delay(10); if(ksec=0) sec+; if(sec=60) sec=0; while(ksec=0) display(); if(kmin=0) delay(10); if(kmin=0) min+; if(min=60) min=0; while(kmin=0)display(); if(khour=0) delay(10);if(khou

19、r=0) hour+; if(hour=24) hour=0; while(khour=0) display(); 4.仿真结果与结果分析走时:默认为走时状态,按24小时制分别显示“时时-分分-秒秒”,有2个“-”动态显示,时间会按实际时间以秒为最少单位变化。走时调整:按s对秒进行调整,按一下加一秒;按m对分进行调整,按一下加一分;按h对时进行调整,按一下加一小时,从而达到快速设定时间的目的。四、课题6:函数发生器1.课题任务要求及技术指标1.1设计任务:采用数字合成技术和d/a转换器件,实现多种信号波形的输出,设计一台实用的函数信号发生器。1.2设计要求:(1)给出正确的原理图;(2)给出正

20、确的程序,并结合原理图给出相应结果。2.课题分析及设计思路2.1功能分析:系统能产生方波、锯齿及正弦信号;能提供信号的频率的显示,能改变频率。2.2实现思路:以89c51为核心,结合dac0832实现程序控制产生正弦波、锯齿波及方波等常用的低频信号。可以通过键盘选择波形及增减频率。2.3难点描述:波形的产生,数模转换3.系统设计(建模)3.1硬件设计(1)放大电路dac0832与反相比例放大器相连,实现电流到电压的转换,因此输出模拟信号的极性与参考电压的极性相反,数字量与模拟量的转换关系为 若d/a转换器输出为双极性,如图3-6所示。运算放大器b的作用是把运算放大器a的单向输出电压转换成双向输

21、出电压。其原理是将b的反向输入端通过电阻r2与参考电压vref相连,vref经r2向b提供一个偏流i1,其电流方向与i2相反,因此运算放大器b的输入电流为i1、i2的代数和。则d/a转换器的总输出电压为: 。 因r5= r6=2 r7,所以。(2)显示模块 1602液晶器件 3.2软件流程图(1)主程序流程图主程序开始 开转换器的dac寄存器关闭输入输入寄存器初始显示子程序初始waveform=0设置定时器0和外部中断while(1)循环等待主程序主要设置了d/a转换器件dac0832的工作模式,定义了dac0832数据端口。调用了显示初始子程序,设置了定时器工作模式及定时中断和外部中断。(2

22、)定时中断程序流程图定时器中断程序开始waveform=2waveform=2设置th,tl寄存器waveform=0否waveform=1是正弦波输出子程序否是锯齿波输出子程序方波输出子程序返回定时中断的作用是用来改变相应波形的频率,通过改变th,tl的值就可以改变定时时间,从而改变相应波形的频率。waveform的值代表不同的波形,waveform=0代表正弦波,waveform=1代表锯齿波,waveform=2代表方波,根据waveform值调用对应的波形输出子程序。(3)外部中断按键子程序流程图外部中断程序开始关总中断p3.6=0获取p3口高四位p3.4=0否p3.5=0wavefo

23、rm+是否是p3.6=06.6是wavefreqwaveform+wavefreqwaveform- 设定t_temp取值方式求得当前频率值显示当前率值及对应的波形形式开总中断与定时器中断 返回外部中断是由按键引起的p3.2引脚下降沿触发的,波形切换、频率增减都是通过外部中断和定时中断相结合完成的,外部中断程序中只是改变了相应的参数或中间值(如波形形式waveform及相应波形频率wavefreqwaveform和定时器0的定时初值寄存器的中间值t_temp)另外外部中断程序还对波形的频率做了数据处理并送到液晶屏显示。(4)正弦波子程序流程图正弦波子程序dadate=sine_tabwavec

24、ountwavecount+wavecount255 否 开dac0832输入寄存器wavecount=0是关dac0832输入寄存器返回正弦波主要是通过单片机向d/a转换器dac0832输送8位二进制数产生的,本方案选取的256个8位二进制数存放在数组sine_tab,中wavecount的作用就是抽点计数范围是0255,本方案中dac0832工作在单缓冲状态,dac寄存器处于直通状态,只要在相应的时间打开和关闭输入寄存器就能完成数据输送。(5)三角波子主程序流程图三角波子程序dadate=sawtooth_tabwavecountwavecount+wavecount63否是开dac083

25、2输入寄存器wavecount=0关dac0832输入寄存器返回三角波的产生方法以正弦波类似都是通过取点来产生的,本方案取了64个点,全部存放在sawtooth_tabwavecount中。(6)方波子程序流程图方波子程序 judge=judgejudge=1否 dadate=0xff 是dadate=0x00开dac0832输入寄存器关dac0832输入寄存器返回(7)初始显示子程序流程图初始显示子程序方波子程序初始化lcd在第一行显示select wave在第二行显示press no.1 key!返回方波子程序3.3电路图3.4源程序#include#define uchar unsign

26、ed char#define uint unsigned int#define dadata p0sbit da_s1= p20;sbit da_s2= p21; sbit key= p32;uchar wavecount; uchar thtemp,tltemp;uchar judge=1; uchar waveform; uchar code freq_unit3=10,50,200;uchar idata wavefreq3=1,1,1; uchar code lcd_hang1=sine wave sawtooth wave square wave select wave: press

27、 no.1 key! ;uchar idata lcd_hang216=f= hz ;uchar code waveth= 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf9,0xfc,0xfd,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xf6,0xfb,0xfd,0xfb,0xfe,0xff,0xff,0xff,0xff,0xff;uchar code wavetl= 0x79,0x3d,0x7e,0x9e,0xbe,0xbf,0xc8,0xcf,0xd4,0xd9, /正弦波频率调整中间值0xe8,0x

28、f4,0xf8,0x7a,0xc7,0xfc,0x23,0x3d,0x53,0x64,/锯齿波频率调整中间值0x3c,0x1e,0x8f,0x32,0xc7,0x63,0xb1,0xd8,0xec,0xf6; /方波频率调整中间值 uchar code sawtooth_tab= 0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c,0x20,0x24,0x28,0x2c,0x30,0x34,0x38,0x3c,0x40,0x44,0x48,0x4c,0x50,0x54,0x58,0x5c,0x60,0x64,0x68,0x6c,0x70,0x74,0x78,0x7c

29、,0x80,0x84,0x88,0x8c,0x90,0x94,0x98,0x9c,0xa0,0xa4,0xa8,0xac,0xb0,0xb4,0xb8,0xbc,0xc0,0xc4,0xc8,0xcc,0xd0,0xd4,0xd8,0xdc,0xe0,0xe4,0xe8,0xec,0xf0,0xf4,0xf8,0xfc,; uchar code sine_tab256=0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2

30、,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2

31、,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x5

32、5,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0

33、x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80; void delay(uchar z) uint x,y

34、;for(x=z;x0;x-)for(y=110;y0;y-);/*void sawtooth_out()uchar i; for(i=255;i0;i-) dadata=i; da_s1=0; da_s1=1; */void sawtooth_out() dadata=sawtooth_tabwavecount+;if(wavecount64) wavecount=0;da_s1=0;da_s1=1; void sine_out() dadata=sine_tabwavecount+;da_s1=0; da_s1=1; void square_out() judge=judge; if(ju

35、dge=1) dadata=0xff;else dadata=0x00;da_s1=0; da_s1=1; /*1602液晶的相关函数*/#define lcd_ports p1sbit rs=p22;sbit rw=p23;sbit lcden=p24;void write_com(uchar com)rs=0;/置零,表示写指令lcden=0;lcd_ports=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)rs=1;/置1,表示写数据(在指令所指的地方写数据)lcden=0;lcd_ports=date;

36、delay(5);lcden=1;delay(5);lcden=0;void disp_lcd(uchar addr,uchar *temp1)uchar num;write_com(addr);delay(1); /延时一会儿?for(num=0;num2) waveform=0; break; case 0xd0: /频率按规定单位依次增加 wavefreqwaveform+; if(wavefreqwaveform10) wavefreqwaveform=1; / /*这边要用10,因为它比=11可靠 break; / 性更高,使加数有个上限,不会一直加下去*/ case 0xb0: /

37、频率按规定单位依次衰减 wavefreqwaveform-; if(wavefreqwaveform1) wavefreqwaveform=10; /这边要用1,因为它比=0可靠性更高 break;thtemp=wavethwaveform*10+(wavefreqwaveform-1); /方括号中选取第几个数后,并把该值赋给t_temptltemp=wavetlwaveform*10+(wavefreqwaveform-1); total_freq= wavefreqwaveform * freq_unitwaveform; /求输出频率(个数*单位) lcd_hang25=total_f

38、req%10+0x30; /在液晶中显示个位,(0x30 在液晶显示中表示数字0) total_freq/=10; lcd_hang24=total_freq%10+0x30; /在液晶中显示时十位 total_freq/=10; lcd_hang23=total_freq%10+0x30; /在液晶中显示时百位 total_freq/=10; lcd_hang22=total_freq%10+0x30; /在液晶中显示时千位 disp_lcd(0x80,&lcd_hang1waveform*16); /在第一行显示 disp_lcd(0xc0,lcd_hang2); /在第二行显示ea=1;

39、 tr0=1; /开启总中断与定时器4.仿真结果与结果分析 图1 锯齿波 图2 方波 图3 正弦波系统可以改变频率的大小,方波的频率区间为200hz至2000hz,锯齿波的频率区间是10hz至100hz,正弦波的频率区间为10hz至100hz,利用定时中断并改变相应的定时时间即可改变频率的大小。五、课题12:简易温度计1.课题任务要求及技术指标1.1设计任务:采用温度传感器,采集和显示室温,实现数字温度计功能。1.2设计要求:(1)给出正确的原理图;(2)给出正确的程序,并结合原理图给出相应结果。2.课题分析及设计思路2.1功能分析: 多点测量温度,并在数码管上显示,另加报警系统。2.2实现思

40、路:基于at89c51单片机的测温系统,并采用了数字温度传感器ds1621和串行总线通信系统。2.3难点描述: 温度的采集以及转化显示。3.系统设计(建模)3.1硬件设计(1)数字温度传感器斜坡累加电路重预置比较器计数温度低敏感振荡器重预置电路温度寄存器温度低敏感振荡器计数器=0ds1621的构成原理框图如图所示,在测量温度时使用了独有的在线温度测量技术。它通过在一个由对温度高度敏感的振荡器决定的计数周期内对温度低敏感的振荡器时钟脉冲的计数值的计算来测量温度。ds1621在计数器中预置了一个初值,它相当于50摄氏度。如果计数周期结束之前计数器达到0,已预置了此初值的温度寄存器中的数字就会增加,

41、从而表明温度高于55摄氏度。与此同时,计数器斜坡累加电路被重新预置一个值,然后计数器重新对时钟计数,直到计数值为0。通过改变增加的每1s内的计数器的计数,斜坡累加电路可以补偿振荡器的非线性误差,以提高精度,任意温度下计数器的值和每一斜坡累加电路的值对应的计数次数须为已知。 ds1621通过计算可以得到0. 5摄氏度的精度,温度输出为9位,在发出读温度值请求后还会输出两位补偿值。表2给出了所测的温度和输出数据的关系。这些数据可通过2线制串行口连续输出,msb在前,lsb在后。(2)七段led数码显示电路3.2软件流程图(1)主程序的设计初始化n读温度数据并存储生成地址字节1001000,循环次数

42、3延时1s以上等待结果启动转换向设置/状态寄存器设置为连续工作方式生成地址字节1001000,循环次数3次地址字节加02h 循环次数减1为0?读温度数据并存储及显示地址字节加02h 循环次数减1为0?nn主程序的主要功能是负责多点温度数据的实时采集、传输,处理和显示。其程序流程如图所示。(2)温度计算模块设计计算温度子程序将从ds1621中读取的温度值进行bcd码的转换运算,并进行温度值正负的判定,其程序流程图如图5-2所示。 开始温度零下?温度值取补码置“”标志计算小数位温度bcd值 计算整数位温度bcd值 结束置“+”标志ny3.3电路图3.4源程序#include #include #define uchar unsigned char#define uint unsigned

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论