实验四 数码管的动态显示实验
- 格式:doc
- 大小:364.93 KB
- 文档页数:8
设计报告设计任务:设计一个智能化万年历时钟电路,LED数码管作为电路的显示部分,按钮开关作为调时部分,通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期、温度。
并能准确计算闰年闰月的显示。
设计要求:通过与单片机连接数码管动态显示年、月、日、时、分、秒、星期等功能,并能准确计算闰年闰月的显示,三个个按钮连接P3.0、P3.1、P3.2可以精确调整每一个时间数值,通过对所设计的万年历时钟电路进行实验测试,达到了动态显示时间,随时调整时间等技术所连线路和单片机接口仿真图如图3所示:图3 仿真按键4)温度采集部分:DS18B20温度传感器,测温范围-55℃~+125℃,固有测温分辨率0.5℃。
独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
DS18B20的采集数据通过DQ传入单片机,单片机读取数据后将数据输出!如图所示:程序如下:ReadOneChar(void){unsigned char i=0;// 定义i用于循环unsigned char dat = 0;// 读取的8位数据for (i=8;i>0;i--)//8次循环{DQ = 0;// 拉低DQ总线开始读时序dat>>=1;// dat左移一位DQ = 1; //释放DQ总线if(DQ)// 如果DQ=1,执dat|=0x80;(0x80即第7位为1,如果DQ为1,即读取的数据为1,将dat的第7为置1,然后dat>>=1,循环8次结束,dat 即为读取的数据)//DQ=0,就跳过dat|=0x80;Tdelay(4);// 延时以完成此次读时序,之后再读下一数据}return(dat); 返回读取的dat}//写一个字节WriteOneChar(unsigned char dat){unsigned char i=0;//for (i=8; i>0; i--)//{DQ = 0;//DQ = dat&0x01;//Tdelay(5);//延时以完成此次读时序,之后再读下一数据DQ = 1;//dat>>=1;//}}//读取温度ReadTemperature(void){unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;//Init_DS18B20();WriteOneChar(0xCC);// 写指令,跳过ROM,WriteOneChar(0x44);// 启动温度转换Init_DS18B20();WriteOneChar(0xCC);// 写指令,跳过ROM,WriteOneChar(0xBE);// 写指令,读暂存存储器a=ReadOneChar();//读低8位b=ReadOneChar();//读高8位t=b;//t<<=8;//t=t|a;//tt=t*0.0625;//t= tt*10+0.5;//return(t); //获得0.01°C 的精度并返回}LED数码管的选择LED数码管分为共阴和共阳两种,以利用STC89C51的P0口作为LED显示的数据部分,以P2口的七个口作为显示部分的位选,通过三八译码器和4-16译码器扩展为17位的位选分别接在一个四位数码管和13个数码管的位选部分。
实验五学号的显示一、实验目的利用数码管动态扫描显示的原理编写程序,实现自己的学号的显示。
二、实验原理和内容实验内容:1在SmartSOPC实验箱上完成了LED数码管的动态显示“40710840”八个数字。
2放慢扫描速度演示动态显示的原理过程。
实验原理:数码管的八个段:a,b,c,d,e,f,g,h(h是小数点)都分别连接到SEG0-SEG7,8个数码管分别由八个选通信号DIG0-DIG7来选择,被选通的数码管显示数据,其余关闭。
三、实验步骤1启动QuartusⅡ建立一个空白工程,然后命名为dled.qpf。
2新建Verilog HDL源程序文件scan_led.v,输入程序代码并保存,进行综合编译知道成功为止。
3从设计文件创建模块,有scan_led.v生成名为scan_led.bsf 的模块符号文件。
4将光盘中EDA_Component目录下的int_div.bsf和int_div.v 拷贝到工程目录。
5添加常量兆功能模块。
6新建图形设计文件(顶层模块)命名为dled.bdf并保存。
7选择目标器件并对相应的引脚进行锁定。
8将dled.bdf设置为顶层实体。
对该工程文件进行全程编译处理,直到编译成功为止。
9连接硬件,下载程序。
10观察LED数码管上的数字是否为“40710840”;然后修改分频模块的参数为:F_DIV为24000000,F_DIV_WIDTH为25,再重新编译下载,观察这次LED数码管上显示的数据是否动起来了。
四、程序代码:module dec17s(clk,dig,seg);inputclk;output[7:0]seg;output[7:0]dig;reg [7:0]seg;reg [7:0]dig;reg[3:0]m;always@(posedgeclk)beginif (m==4'hf)m<=0;else m<=m+1;case(m)4'h0:begin dig<=8'b11111110; seg<=8'h99;end4'h1:begin dig<=8'b11111101; seg<=8'hc0;end4'h2:begin dig<=8'b11111011; seg<=8'hf8;end4'h3:begin dig<=8'b11110111; seg<=8'hf9;end4'h4:begin dig<=8'b11101111; seg<=8'hc0;end4'h5:begin dig<=8'b11011111; seg<=8'hf9;end4'h6:begin dig<=8'b10111111; seg<=8'ha4;end4'h7:begin dig<=8'b01111111; seg<=8'hf9;end default:seg<=8'hc0;endcaseendendmodule五、实验数据与结果通过同学跟老师的指导,再经过几次的调试,终于在数码管上显示出了自己的学号:40710121六、实验总结通过数码管编译显示自己的学号后8位,学会数码管动显示的原理,以及如何编写程序来实现数码管的静态与动态显。
EDA实验报告-实验2-数码管扫描显⽰电路暨南⼤学本科实验报告专⽤纸课程名称 EDA 实验成绩评定实验项⽬名称数码管扫描显⽰电路指导教师郭江陵实验项⽬编号 02 实验项⽬类型验证实验地点 B305 学院电⽓信息学院系专业物联⽹⼯程组号: A6⼀、实验前准备本实验例⼦使⽤独⽴扩展下载板EP1K10_30_50_100QC208(芯⽚为EP1K100QC208)。
EDAPRO/240H 实验仪主板的VCCINT 跳线器右跳设定为3.3V ;EDAPRO/240H 实验仪主板的VCCIO 跳线器组中“VCCIO3.3V ”应短接,其余VCCIO 均断开;独⽴扩展下载板“EP1K10_30_50_100QC208”的VCCINT 跳线器组设定为 2.5V ;独⽴扩展下载板“EP1K10_30_50_100QC208”的VCCIO 跳线器组设定为3.3V 。
请参考前⾯第⼆章中关于“电源模块”的说明。
⼆、实验⽬的1、了解时序电路设计。
2、制作⼀个数码管显⽰的7段译码电路,以备以后调⽤。
三、实验原理在电⼦电路显⽰部分⾥,发光⼆极管(LED )、七段显⽰数码管、液晶显⽰(LCD )均是⼗分常见的⼈机接⼝电路。
通常点亮⼀个LED 所需的电流在5~20mA 之间,电流愈⼤,LED 的亮度也⾼,相对的使⽤寿命也愈短。
若以10mA 导通电流来估算⼀个接5V 的串接电阻值计算应为:(5-1.6)/10mA ≈0.34K Ω。
七段显⽰数码管分为共阳、共阴⼆种极性。
它们等效成⼋个LED 相连电路。
共阴极七段显⽰器的LED 位置定义和等效电路共阴极七段显⽰码⼗六进制转换表四、实验内容⽤拨码开关产⽣8421BCD 码,CPLD 器件产⽣译码及扫描电路,把BCD 码显⽰在LED 数码管上,通过改变扫描频率观察数码管刷新效果。
五、实验要求学习在MAX+PLUS II 中使⽤VHDL 设计功能模块,并将所⽣成的功能模块转换成MAX+PLUS II 原理图的符号库,以便在使⽤原理图时调⽤该库。
思考题:习题:1、⽤数字存储⽰波器测试直流信号时,若采⽤Quick Meas测试应选哪项参数?A、Peak——PeakB、Average答案:B2、⼩规模的TTL电路,不⽤的输⼊端可以悬空处理,此时相当于。
A、⾼电平B、低电平答案:A3、输出阻抗为50Ω的信号源输出V PP=1V,f=1kH Z的信号,⽤⽰波器测量空载时的输出信号V PP= 。
答案:2V4、动态测试对于模拟集成电路要加上,对于数字电路,输⼊信号多采⽤。
答案:交流测试信号,连续脉冲,周期性变化的逻辑信号。
5、若给数字提供1KHz的时钟信号,应采⽤。
A、1KHz TTL信号B、1KHz 峰峰值为5V的标准⽅波信号C、两者均可答案:A6、判断:由数据选择器和数据分配器组成的多路数据传送系统,既可传送数字信号,⼜可传送模拟信号。
()答案:错误7、判断:集成电路都是有源器件。
()答案:正确8、集成电路按所体现的功能可分为:,,,。
答案:模拟集成电路,数字集成电路,接⼝电路,特殊电路。
9、静态测试是只研究电路的各种_________________情况,不去管各种状态间的转换的过渡情况。
对于模拟集成电路,此时不加___________________;对于数字集成电路,多采⽤____________________________________________。
答案:静态和稳态,交流测试信号,逻辑电平或单脉冲10、如何⽤两⽚CD4008实现⼋位⼆进制数加法?画出电路图。
答:可⽤下图实现11、什么异或门可⽤作⾮门⽤?答:因为A⊕B=A B +A B,当B=1时,A⊕1=A,就可实现对A取⾮。
12、全加器实现两数相减时,结果符号如何判断?答:⽤进位位C0来表⽰。
C0=1时,表⽰结果为⾮负数;C0=0时,表⽰结果为负数。
13、为什么CMOS门电路输⼊端不能悬空?答:CMOS电路所有输⼊端不允许悬空。
因为悬空时,其输⼊端电平不定,电路状态将不稳定,⽽且⽤⼿触及悬空端时,极易造成栅极击穿,造成永久性损坏。
实验四编码器、译码器、数码管一、实验目的1.掌握编码器、译码器和七段数码管的工作原理和特点。
2.熟悉常用编码器、译码器、七段数码管的逻辑功能和他们的典型应用。
3. 熟悉“数字拨码器”(即“拨码开关”)的使用。
二、实验器材1. 数字实验箱 1台2. 集成电路:74LS139、 74LS248、 74LS145、 74LS147、 74LS148 各1片74LS138 2片3. 电阻: 200Ω 14个4. 七段显示数码管:LTS—547RF 1个三、预习要求1.复习编码器、译码器和七段数码管的工作原理和设计方法。
2. 熟悉实验中所用编码器、译码器、七段数码管集成电路的管脚排列和逻辑功能。
3. 画好实验用逻辑表。
四、实验原理和电路按照逻辑功能的不同特点,常把数字电路分成两大类:一类叫做组合逻辑电路,另一类叫做时序逻辑电路。
组合逻辑电路在任何时刻其输出信号的稳态值,仅决定于该时刻各个输人端信号的取值组合。
在这种电路中,输入信号作用以前电路的状态对输出信号无影响。
通常,组合逻辑电路由门电路组成。
(一)组合逻辑电路的分析方法:a.根据逻辑图,逐级写出函数表达式。
b.进行化简:用公式法或图形法进行化简、归纳。
必要时,画出真值表分析逻辑功能。
(二)组合逻辑电路的设计方法:从给定逻辑要求出发,求出逻辑图。
一般分以下四步进行。
a.分析要求:将问题分析清楚,理清哪些是输入变量,哪些是输出函数。
进行逻辑变量定义(即定义字母A、B、C、D ……所代表的具体事物)。
b. 根据要求的输入、输出关系,列出真值表。
c. 进行化简:变量比较少时,用图形法;变量多时,可用公式法化简。
化简后,得出逻辑式。
d. 画逻辑图:按逻辑式画出逻辑图。
进行上述四步工作,设计已基本完成,但还需选择元件——数字集成电路,进行实验论证。
值得注意的是,这些步骤的顺序并不是固定不变的,实际设计时,应根据具体情况和问题难易程度进行取舍。
(三)常用组合逻辑电路:1.编码器编码器是一种常用的组合逻辑电路,用于实现编码操作。
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019. 4.30 实验成绩:实验四外部中断实验(一)实验目的1.掌握单片机外部中断原理;2.掌握数码管动态显示原理。
(二)设计要求1.使用外部中断0和外部中断1;2.在动态数码管上显示中断0次数,中断1用作次数清0,数码管采用74HC595驱动。
(三)实验原理1.中断:计算机执行主程序过程中,由于临时重要事件,需要暂停当前程序的运行,转到中断服务程序去处理临时事件,处理完后又返回原程序的断点处继续运行。
图1STC15单片机的中断系统包含21个中断源,2个中断优先级,二级中断服务嵌套,中断允许寄存器IE、IE2和INT_CLKO控制中断允许。
中断优先级寄存器IP、IP2管理中断优先级。
同优先级中断同时提出中断请求时,由内部的查询逻辑确定响应次序。
中断请求源中的外部中断0(INT0)和外部中断1(INT1)详述如下:1)外部中断0(INT0):中断信号由P3.2引脚输入。
通过IT0来设置中断请求的触发方式。
当IT0为“1”时,外部中断0为下降沿触发;当IT0为“0”时,无论是上升沿还是下降沿,都会引发外部中断0.一旦输入信号有效,则置位IE0标志,向CPU申请终端。
2)外部中断1(INT1):中断信号由P3.3引脚输入。
通过IT1来设置中断请求的触发方式。
当IT1为“1”时,外部中断0为下降沿触发;当IT1为“0”时,无论是上升沿还是下降沿,都会引发外部中断0.一旦输入信号有效,则置位IE0标志,向CPU申请终端。
2.LED数码管是显示数字和字母的常见显示器件,由8个发光二极管构成,结构如图2:图2段码:a、b、c、d、e、f、g、dp段的二进制代码(a为最低位),控制显示字型。
位选:公共端com,控制数码管是否显示。
3.数码管动态显示原理:任何时刻只有一个数码管处于显示状态,单片机采用“扫描”方式控制各个数码管轮流显示,通常将所有数码管段码线的相应段并联在一起,由一个8位I/O 端口控制。
实验二七段数码管动态显示控制一、实验目的利用AT89S52和使用两位数码管显示器,循环显示两位数00-99。
其中P2.0和P2.1端口分别控制数码管的个位和十位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过驱动三极管给数码管相应的位供电,这时只要P3口送出数字的显示代码,数码管就能正常显示数字。
二、实验要求1、使用两位数码管显示器,循环显示两位数00-99;2、具有电源开关和指示灯,有复位键;3、数码管动态显示,即扫描方式,每一位每间隔一段时间扫描一次。
字符的亮度及清晰度与每位点亮的停留时间和每位显示的时间内轮换导通次数有关。
三、实验电路四、实验器材AT89S52;动态扫描显示;共阳极数码管;电阻五、实验原理说明图1 AT89S52引脚图图2 共阳极七段数码管引脚图1AT89S52引脚图,说明如下:按照功能,AT89S52的引脚可分为主电源、外接晶体振荡或振荡器、多功能I/O 口、控制和复位等。
1.多功能I/O口AT89S52共有四个8位的并行I/O口:P0、P1、P2、P3端口,对应的引脚分别是P0.0 ~ P0.7,P1.0 ~ P1.7,P2.0 ~ P2.7,P3.0 ~ P3.7,共32根I/O线。
每根线可以单独用作输入或输出。
①P0端口,该口是一个8位漏极开路的双向I/O口。
在作为输出口时,每根引脚可以带动8个TTL输入负载。
当把“1”写入P0时,则它的引脚可用作高阻抗输入。
当对外部程序或数据存储器进行存取时,P0可用作多路复用的低字节地址/数据总线,在该模式,P0口拥有内部上拉电阻。
在对Flash存储器进行编程时,P0用于接收代码字节;在校验时,则输出代码字节;此时需要外加上拉电阻。
②P1端口,该口是带有内部上拉电阻的8位双向I/O端口,P1口的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写“1”时,通过内部的上拉电阻把端口拉到高电位,此时可用作输入口。
实验四动态法测定良导体的热导率【实验简介】在测量热导率的实验中,最普遍采用的方法是稳态法,即在保持被测样品各点温度不随时间变化的情况下测量热流,然后求出热导率,这种方法实验条件要求严格不易测准。
而动态法就将难于测准的热学量的测量转变为容易测准的长度测量,从而显著降低测量误差。
而且,由于学生对机械波、电磁波比较熟悉,而对热波接触甚少,故本实验可使学生产生新鲜感,也拓宽了他们对波动理论的认识。
另外,本实验用微机实现对整个系统的控制、数据的采集、记录和绘图,使学生更好地了解了微机在物理实验中的应用过程。
【实验目的】1.通过实验学会一种测量热导率的方法。
2.解动态法的特点和优越性。
3.认识热波,加强对波动理论的理解。
【实验仪器与用具】仪器主机由用绝热材料紧裹侧表面的圆棒状样品(本实验取铜和铝两种样品)、热电偶列阵(传感器)、实现边界条件的脉动热源及冷却装置组成,见示意图4-1。
样品中热量将只沿轴向传播,在任意一个垂直于棒轴的截面上各点的温度是相同的,于是,只要测量轴线上各点温度分布,就可确定整个棒体上的温度分布。
温度的测量采用热电偶列阵.将热电偶偶端均匀插在棒内轴线处,两个相邻偶间距离均为2cm,为保持棒尾的温度T0恒定,以防止整个棒温起伏,用冷却水冷却。
本实验仪器结构框图见图4-2,该仪器包括样品单元,控制单元和记录单元三大部分。
本仪器由两种工作方式:手动和程控。
他们都含样品单元和控制单元,不同的只是记录单元。
前者用高精度x-y记录仪,后者用微机实现对整个系统的控制、数据的采集、记录和绘图,学生自行数据处理。
图4-1 主机结构示意图图4-2 热导率动态测量以结构框图【实验原理】为使问题简化,令热量沿一维传播,故将样品制成棒状,周边隔热.取一小段样品如图4-3.根据热传导定律,单位时间内流过某垂直于传播方向上面积A的热量,即热流为dq dTkAdt dx=-(4-1)图4-3 棒元其中k 为待测材料的热导率,A 为截面积,文中dxdT 是温度对坐标x 的梯度。
单片机课程设计报告基于单片机的数字时钟姓名:班级:学号:一、前言利用实验板上的4个LED数码管,设计带有闹铃、秒表功能的数字时钟。
功能要求:a)计时并显示(LED)。
由于实验板上只有4位数码管,可设计成显示“时分”和显示“分秒”并可切换。
b)时间调整功能。
利用4个独立按钮,实现时钟调整功能。
这4个按钮的功能为工作模式切换按钮(MODE),数字加(INC),数字减(DEC)和数字移位(SHITF)。
c)定闹功能。
利用4个独立按钮设定闹钟时间,时间到以蜂鸣器响、继电器动作作为闹铃。
d)秒表功能。
最小时间单位0.01秒。
二、硬件原理分析1.电源部分电源部份采用两种输入接口(如上图)。
a)外电源供电,采用2.1电源座,可接入电源DC5V,经单向保护D1接入开关S1。
b)USB供电,USB供电口输入电源也经D1单向保护,送到开关S1。
注:两路电源输入是并连的,因此只选择一路就可以了,以免出问题。
S1为板子工作电源开关,按下后接通电源,提供VCC给板子各功能电路。
电路采用两个滤波电容,给板子一个更加稳定的工作电源。
LED为电源的指示灯,通电后LED灯亮。
2.蜂鸣器蜂鸣器分为有源和无源两种,有源即两引脚有一个直流电源就可以长鸣,无源则需要一个1K左右的脉冲才可以蜂鸣,因此对于按键的提示音及报警蜂鸣使用有源来得方便。
有源也可以当无源使用,而无源则不能当有源使用,当然用有源蜂鸣器作音乐发声会失真厉害。
如上图:单片机P15输出高低电平经R21连接三极管B极,控制三极管的导通与截止,从而控制蜂鸣器的工作。
低电平时三极管导通,蜂鸣器得电蜂鸣,高电平时三极管截止,蜂鸣器失电关闭蜂鸣。
电路使用一个四位共阳型数码管,四个公共阳级由三极管放大电流来驱动,三极管由P10-P13控制开与关。
数码管的阴级由P0口经过电阻限流连接。
例如,要十位的数码管工作,P12输出0,使三极管Q12导通,8脚得电,当P0口相应位有输出0时,点亮相应的LED灯组合各种字符数字。
单片机12分钟倒计时综合实验报告
一、实验目的
1、学习Proteus软件基础使用方法;
2、掌握定时/计数器与外部中断工作原理;
3、学习设计单片机控制的多位数码管扫描显示电路;
4、理解数码管动态显示的原理。
二、实验原理
AT89C51单片机位控制器,四位7段数码管分别显示分的十位、分的个位、秒的十位和秒的个位,其中数码管的位选口为P2口高四位,段选口位PO口,分和秒的能动态显示。
定时器实现1秒准确定时,外部中断0引脚外接键盘BUTTON1,实现手动校分功能;外部中断1引脚外接键盘BUTTON2,实现清零功能。
三、实验内容
根据实验任务设计要求,在Keil软件中实现程序编辑、编译与执行等操作。
对编译通过的过程可选择单步调试的方式来观察运行的结果,以及各个寄存器的值如何变化。
参考程序流程:主程序流程:开始→变量赋初值一定时器T1赋计数初值一设置外部中断控制字→开中断→开计数器→送位选字→送段选码→延时一送位选字,定时器T1中断流程:定时器T1赋计数初值一到1秒了吗?→Y秒加1orN结束→到1分钟了吗?→Y秒清零orN结束一分钟加1→到12分钟了吗?→Y分钟清零orN结束一结束,外部中断0流程:分钟加1→到12分钟了吗?一Y分钟清零orN结束一结束,外部中断
1:分钟清零→秒清零→结束。
2.3 51单片机增强型学习系统各组成部份原理图及功能简介2.3.1 共阴极数码管动态扫描控制图2.2 51单片机增强型学习系统的四位共阴极数码管动态扫描硬件连接原理图AT89S51单片机P0口是一组8位漏极开路型双向I/O 口,也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL 逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash 编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上接电阻。
AT89S51单片机P2口是一个带有内部上拉电阻的8位双向I/O 口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL 逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX @DPTR 指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX @Ri 指令)时,P2口线上的内容(也即特殊功能寄存器SFR 区中P2寄存器的内容),在整个访问期间不改变。
Flash 编程或校验时,P2亦接收高位地址和其它控制信号。
在上面的硬件连接原理图里,我们用到的是P0和P2口控制四位数码管显示的。
四位数码管显示的方式是动态扫描显示,动态扫描显示是单片机中应用最为广泛的一种显示方式之一。
其接口电路如上图是把所有显示器的8个笔划段a-h同名端连在一起由单51单片机增强型学习系统片机的P0.0~P0.7控制,而每一个数码管的公共极(阴极)是各自独立地受单片机P2.7~P2.4控制。
CPU向字段输出口P0口送出字形码时,所有数码管接收到相同的字形码,但究竟是那个数码管亮则取决于P2.7~P2.4的输入结果,所以我们就可以自行决定何时显示哪一位了。
XXXX学院实验报告Experimentation Report of Taiyuan Normal University系部计算机年级大三课程单片机原理与接口技术姓名同组者日期学号项目数码管显示温度一、实验目的1、了解单片机顺序执行的特点;2、掌握C语言的编写和keilc51的使用;3、熟悉DS18B20温度传感器的使用。
二、实验仪器硬件资源:单片机开发板笔记本电脑;软件资源:软件 Keil uVision5;三、实验原理1、流程图2、连接图四、实验结果数码管显示当前温度,用手握住温度传感器,数码管显示的温度值变大。
四、实验代码及分析//主函数void main(){while(1){LcdDisplay(Ds18b20ReadTemp()); //显示读取到的温度值}}void LcdDisplay(int temp) //lcd显示{float tp;if(temp< 0) //当温度值为负数{DisplayData[0] = 0x40; //因为读取的温度是实际温度的补码,所以减1,再取反求出原码temp=temp-1;temp=~temp;tp=temp;temp=tp*0.0625*100+0.5; //留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点后面的数自动去掉,//不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5 //的就算加上0.5,还是在小数点后面。
}else{DisplayData[0] = 0x00;tp=temp; //因为数据处理有小数点所以将温度赋给一个浮点型变量//如果温度是正的那么,那么正数的原码就是补码它本身temp=tp*0.0625*100+0.5;//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换//为整型的时候把小数点后面的数自动去掉,不管是否大于0.5,而+0.5之//后大于0.5的就是进1了,小于0.5的就算加上0.5,还是在小数点后面。
北京科技大学《微机原理及应用》实验报告实验内容:单片机及应用班级:智能12姓名:2015年1月5日目录实验一A VR单片机硬件开发平台 (1)一、实验目的 (1)二、实验内容 (1)三、实验所用仪表及设备 (1)四、实验步骤 (1)了解A VR系列单片机 (1)认识A VR_StudyV1.1实验板的组成模块 (2)五、思考题 (6)六、心得体会 (7)实验二A VR单片机软件开发环境 (9)一、实验目的 (9)二、实验内容 (9)三、实验所用仪表及设备 (9)四、实验步骤 (9)新建项目 (9)编译项目 (11)下载程序 (11)五、思考题 (13)六、实验现象 (13)七、遇到的问题及解决方法 (14)八、心得体会 (15)实验三I/O口操作实验 (16)一、实验目的 (16)二、实验内容 (16)三、实验所用仪表及设备 (16)四、实验步骤 (16)硬件接线图: (16)新建工程,实现实验内容1。
(17)新建工程,实现实验内容2。
(18)下载程序,观察实验现象。
(19)五、实验现象 (20)六、思考题 (21)七、遇到的问题及解决方法 (22)八、心得体会 (22)实验四数码管显示实验 (24)一、实验目的 (24)二、实验内容 (24)三、实验所用仪表及设备 (24)四、实验步骤 (24)新建项目,实现实验内容1。
(24)建立新项目,实现实验内容2。
(24)五、实验现象 (25)七、遇到的问题及解决方法 (27)八、心得体会 (27)实验五按键实验 (28)一、实验目的 (28)二、实验内容 (28)三、实验所用仪表及设备 (28)四、实验步骤 (28)新建项目 (28)五、实验现象 (29)六、思考题 (30)七、遇到的问题及解决方法 (32)八、心得体会 (32)实验六外部中断实验 (34)一、实验目的 (34)二、实验内容 (34)三、实验所用仪表及设备 (34)四、实验步骤 (34)新建项目实现实验内容 (34)新建项目实现实验内容2 (36)五、实验现象 (37)六、思考题 (38)七、遇到的问题及解决方法 (39)八、心得体会 (40)实验七定时计数器实验 (42)一、实验目的 (42)二、实验内容 (42)三、实验所用仪表及设备 (42)四、实验步骤 (42)新建工程 (42)普通模式 (43)CTC模式 (43)五、实验现象 (44)六、思考题 (44)七、遇到的问题及解决方法 (45)八、心得体会 (45)选作内容:基于A VR Mega16单片机的闹表测温仪设计 (47)一、实验目的 (47)二、功能简介 (47)三、功能细节设计 (47)实验设备 (48)端口、功能分配以及硬件连接设计 (49)六、程序结构设计 (50)七、各功能模块的具体实现 (53)九、实验心得 (56)附录源程序: (57)实验一AVR单片机硬件开发平台一、实验目的1.了解ATmega16单片机的组成。
用汇编语言实现八段数码管显示一、实验要求利用实验仪提供的显示电路,动态显示一行数据.二、实验目的1. 了解数码管动态显示的原理。
2. 了解用总线方式控制数码管显示三、实验线路及连线四、实验说明1.本实验仪提供了6 位8段码LED 显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,用动态方式显示。
8位段码、6位位码是由两片74LS374输出。
位码经MC1413或ULN2003倒相驱动后,选择相应显示位。
本实验仪中 8位段码输出地址为0X004H ,位码输出地址为 0X002H 。
此处X 是由KEY/LED CS 决定,参见地址译码。
做键盘和LED 实验时,需将KEY/LED CS 接到相应的地址译码上。
以便用相应的地址来访问。
例如,将KEY/LED CS 接到CS0上,则段码地址为08004H ,位码地址为08002H 。
位选通信号 (0x002H)段码输出 (0x004H)数据总线七段数码管的字型代码表如下表:五、程序框图程序代码OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口LEDBuf equ 60h ; 显示缓冲Num equ 70h ; 显示的数据DelayT equ 75h ;ljmp StartLEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ;mov r7, #0DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDisplayLED:mov r0, #LEDBufmov r1, #6 ;mov r2, #00100000b ;Loop:mov dptr, #OUTBITmov a, #0movx @dptr, a ;mov a, @r0mov dptr, #OUTSEGmovx @dptr,amov dptr, #OUTBITmov a, r2movx @dptr, a ;mov r6, #01call Delaymov a, r2 ;rr amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBITmov a, #0movx @dptr, a ;retStart:mov sp, #40hmov Num, #0MLoop:inc Nummov a, Nummov b, amov r0, #LEDBufFillBuf:mov a, banl a, #0fhmov dptr, #LEDMapmovc a, @a+dptr ;mov @r0,a ;inc r0inc bcjne r0, #LEDBuf+6, FillBufmov DelayT,#0DispAgain:call DisplayLED ;djnz DelayT,DispAgain ljmp MLoopend。
实验四 数码管的动态显示实验
班级 通信1102 姓名 谢剑辉 学号20110803223 指导老师 袁文澹
一、实验目的
熟悉掌握数码管动态显示的基本方法;
根据已知电路和设计要求在实验板上实现数码管动态显示。
根据已知电路和设计要求在PROTEUS平台仿真实现控制系统。
二、实验内容
1、在STC89C52实验平台的4位数码管上实现动态显示0123→1234→2345→3456→
4567→5678→6789→7890→8901→9012→0123→不断反复,每隔2s切换显示内容。
2、思考:如何实现当4位数码管显示的内容中有“1”时,蜂鸣器蜂鸣。
三、实验原理
实验要求“4位数码管上实现动态显示0123→1234→2345→3456→4567→5678→6789
→7890→8901→9012→0123→不断反复,每隔2s切换显示内容”。动态扫描可以实现要求。
简单地说,动态扫描就是选通一位,送一位数据。原理图中的P10~P13是位选信号,即选
择哪个数码管显示数字;P00~P07是段码,即要显示的数字。可以通过依次选通一位7段数
码管并通过P0端口送出显示数据。由于人眼的视觉残留原理,如果这种依次唯一选通每一
位7段数码管的动作在0.1s内完成,就会造成多位数码管同时点亮显示各自数字的假象。
本实验使用中断,实现每2s更新一次数字。
四、实验方法与步骤
设计思路和方法:
1、根据电路图,分析数码管动态显示的设计思路,使用中断实现每2秒更新一次数字的设
计思路,以及实现当4位数码管显示的内容中有“1”时,蜂鸣器蜂鸣的设计思路。
(1)数码管动态显示的原理如“实验原理”里所述,不赘述;
(2)使用中断实现每2s更新一次数字的设计思路:本次实验使用Timer0中断,由于其定
时时间最大为65536us,不能实现2s的长延时,那么可以使用多次中断来实现,并且在中断
到来时,不断地死循环显示数字,即根据动态显示原理“选通一位,来一位数据”。由于最
大的数字为9,则(x%10),(x+1)%10,(x+2)%10,(x+3)%10分别是千位,百位,十
位,个位上的数字。在编写代码时,设臵Timer0定时时间为50ms,可以用一个参数i计算
中断的次数;当中断的次数达到40次时,说明已经达到了2s,此时更新数字,即将数字x
自增1;同时,判断(x%10),(x+1)%10,(x+2)%10,(x+3)%10里面是否有1,如果
有1的话,则将P15臵0,让三极管导通,蜂鸣器蜂鸣。
2、针对电路图及设计要求给出继电器定时控制的程序框图。
设计步骤:
1、编写源代码
第一步:打开Keil uVision4,单击主菜单“project”的“new project”选项,选择工程保存
路径,输入工程名“SMGPro”;在弹出的对话框里选择Atmel的80C51,单击“确定”;
第二步:单击主菜单的“File”的“New”选项,在编辑窗口里编写源代码。
/********************************************
//实验四:数码管的动态显示
//2014.05.10 谢剑辉
********************************************/
#include
sbit sound=P1^5;
sbit s0=P1^0;
sbit s1=P1^1;
sbit s2=P1^2;
sbit s3=P1^3;
unsigned char i; //记录中断次数
unsigned int x; //x%10为千位的数字
unsigned char Tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//数码管显示0~9的段码表
/***********************************************************************
函数功能:快速动态扫描延时程序
***********************************************************************/
void delay(unsigned int timer){
while(timer--)
;}
/***********************************************************************
函数功能:4位数的数码显示器显示
***********************************************************************/
void display(unsigned int k)
{
s0=0;//即P1=1111 1110B,P1.0引脚输出低电平,数码显示器千位接通电源
P0=Tab[k%10];//显示千位
delay(200);
s0=1;
s1=0;//即P1=1111 1101B,P1.1引脚输出低电平,数码显示器百位位接通电源
P0=Tab[(k+1)%10];//显示百位
delay(200);
s1=1;
s2=0;//即P1=1111 1011B,P1.2引脚输出低电平,数码显示器十位接通电源
P0=Tab[(k+2)%10];//显示十位
delay(200);
s2=1;
s3=0;//即P1=1111 0111B ,P1.3引脚输出低电平,数码显示器个位接通电源
P0=Tab[(k+3)%10];//显示个位
delay(200);
s3=1;
}
void main(void)//主函数
{
sound=0;
TMOD=0x01;//使用定时器T0
TH0=(65536-46083)/256;
//上式将定时器计时时间设定为46083×1.085微秒=50000微秒=50毫秒
TL0=(65536-46083)%256;
EA=1;//开启总中断
ET0=1;//定时器T0中断允许
TR0=1;//启动定时器T0开始运行
while(1){
display(x); //调用检测结果的显示程序
}
}
/********************************************************
函数功能:定时器T0的中断服务程序
********************************************************/
void Time0(void) interrupt 1 using 1
{
TR0=0; //关闭定时器T0
i++; //每来一次中断,i自加1
if(i==40) //够40次中断,即2秒钟进行一次检测结果采样
{
x++; //2秒更新一次x
i=0; //将i清0,重新统计中断次数
if(x%10==1||(x+1)%10==1||(x+2)%10==1||(x+3)%10==1)
sound=0;
else
sound=1;
}
TH0=(65536-46083)/256; //重新给计数器T0赋初值
TL0=(65536-46083)%256;
TR0=1; //启动定时器T0
}
第三步:选择主菜单的“File”的“Save”选项,输入文件名如“SMGcode”,后缀名为.c;
第四步:回到编辑界面,单击“Target1”前面的“+”号,在“Source Group1”选项上右击,
选择“Add Files to Group’ Source Group1”,在弹出的窗口的“文件类型”里选择“All Files”
选择“SMGcode.c”,单击“Add”,然后单击“Close”;
第五步:单击左边“Project”窗口的“Target1”,然后选择菜单“Project /Option for
Target ’Target1’,选择“Output”,勾选”Creat HEX File”,点击“确定”;(此步骤是为了生成.hex
文件,用于烧录到板子或者装载到硬件仿真软件,如果不考虑此目的,则可以省略此步骤);
3、编译连接与调试。
(1)编译与连接:点击“Project/Rebuild all Target Files”进行文件编译。编译结果若有错误
或警告,则将要修改直至文件编译成功。编译成功,其结果为:
(2)调试:
第一步:依次点击“Debug”“Start/Stop Debug Session”
第二步:在界面左边出现工作寄存器R0~R7、累加器A等特殊功能寄存器,这些寄存器的
数值会随着调试的进行发生变化;点击F11,会进行单步调试功能;
第三步:界面有反汇编窗口、命令窗口、程序窗口、存储器观察窗口、寄存器观察窗口等,
根据需要来观测。点击“peripjerals”中的“I/O port”选择不同的输出端口,点击“Timer--time0”,
弹出如下窗口:
点击debug中的run,可以看到运行中的P1、P0的输出值以及Timer的工作状态
P0与P1端口的波形:
I