1、计算机测控设计与总结报告计算机测控课程设计报告 成员: 学号: 班级: 辅导老师: 流水灯和计数器设计报告摘要: 近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高应用领域也不断扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用,成为现代电子系统中最重要的智能化的核心部件。关键字:单片机,流水灯,计数器需求分析: 随着现代社会的发展,人们越来越追求审美和新颖,而流水灯就是其中一种,以前简单的照明工具变得越来越多样化,流水灯的千姿百态给人一种视觉冲动,现在不管大街小巷我们都可以随处可见这种变幻万千的流水灯,而这种流水
2、灯我们可以产用子电路去设计,我们可以用控制器和状态译码器来实现灯光的流水效果,但是现在我们可以用单片机ADUC842来实现,因为其相对于电子电路有明显的优越性,控制硬件电路比较简单,软件方面也不复杂,而且功能作用并不低于电子电路设计的。由于它的小巧方便,我们采用单片机来做流水灯。 随着计数器技术的不断发展与进步,计数器的种类越来越多,应用的范围越来越广,随之而来的竞争也越来越激烈。过硬的技术也成为众多生产厂商竞争的焦点之一。厂商为了在竞争中处于不败之地,从而不断地改进技术,增加产品的种类。本次以单片机和四位数码管制作计数器,实现计数器的功能。设计系统:1. 复位电路部分图1 复位电路部分 为确
3、保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分。单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。ADU842单片机的复位信号是从RESET引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RESET引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。手动按钮不仅具有上电复位的功能,还可以通过按按键的方法实现复位,(如上图所示按S1)此时电源VCC在RESET端产生一个复位高电平。PSEN管脚是程序存储激活,逻辑输出。在这个引脚保
4、持低电平时,执行内部程序,在上电或复位时,PSEN被一个电阻下拉为低,将激活串行下载模式,在复位的瞬间PSEN变为输入采样状态。该引脚有一个下拉电阻,Kernel的串行下载/调试将被执行。2时钟电路部分 时钟电路为单片机工作提供基本时钟,它是计算机工作的心脏,它控制着计算机的工作节奏。时钟电路一般由晶体震荡器和电容组成。图2 时钟电路部分3.LED电路部分LED用于将流水灯的显示方式直观、形象地展现出来。图3 LED电路部分4. 计数器部分利用ADUC842单片机来制作一个计数器,在单片机的P2.0、P2.1、P2.2和HD7279的数据、时钟和片选相连接,通过HD7279控制数码管显示。HD
5、7279的基本说明如下:HD7279是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立led)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成led显示、键盘接口的全部功能。HD7279内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式。此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。HD7279具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。典型应用有仪器仪表、工业控制、条形显示器、控制面板。本设计中用到了HD7279对数码管的方式1译码显示。硬件电路图如4:图4 计数器部分电路4.总设计图 见附图1.选用
6、ADUC842引脚功能XTAL1:单芯片系统时钟的反向放大输入端。XTAL2:系统时钟的反向放大放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英震荡晶体系统就可以工作了,此外可以在两引脚与地之间加入20PF的小电容,可以使系统更稳定,避免噪音干扰而死机。硬件框图图5 硬件设计框图软件设计#include #include #define uchar unsigned char #define uint unsigned intvoid delay(unsigned int);void s_delay(void);void delay10ms(unsigned char);
7、void write7279(unsigned char, unsigned char);void send_byte(unsigned char); uchar a,b, j, k;uint i,tmr;/变量及IO口定义sbit cs=P22; sbit clk=P21; sbit dat=P20; sbit key=P32; /* HD7279A指令 * #define CMD_RESET 0xa4 /7279复位指令 #define CMD_TEST 0xbf /7279灯测控指令#define DECODE1 0xc8 /方式1译码/主程序 /*void delay(void) /延
8、时0.2秒子程序 unsigned char i,j,k; /定义3个无符号字符型数据。 for(i=20;i0;i-) /作循环延时 for(j=200;j0;j-) for(k=248;k0;k-); */void main() PX1=1; /设定外部中断1为最高优先级 IT1=1; /外部中断触发方式 EA=1; /开总中断 EX1=1; /外部中断 cs=1; delay(0x100); send_byte(CMD_RESET); /7279复位指令发送 k=0x01; while(1) delay(10000); j=_crol_(k,1); k=j; P0=j; for(i=0;
9、i0;a-) for(b=225;b0;b-); void delay(uint t) uint i; for(i=0;it;i+);void send_byte(uchar out_byte) uchar i; cs=0; delay10ms(); for(i=0;i8;i+) /发送命令,高位在前 一个时钟脉冲,送一位数据到7279中 if(out_byte&0x80) /高位在前 dat=1; else dat=0; s_delay(); clk=1; /发生脉冲 s_delay(); clk=0; s_delay(); out_byte=1; /左移一位 dat=0; delay(0x
10、04); cs=1;void s_delay(void) uchar t; t=0;/向7279中写入带数据的指令void write7279(uchar out_cmd, uchar out_byte) /先发送指令,再发送数据 uint i; cs=0; delay(0x04); for(i=0;i8;i+) if(out_cmd&0x80) dat=1; else dat=0; s_delay(); clk=1; s_delay(); clk=0; s_delay(); out_cmd=1; s_delay(); for(i=0;i8;i+) if(out_byte&0x80) dat=
11、1; else dat=0; s_delay(); clk=1; s_delay(); clk=0; s_delay(); out_byte=1; dat=0; delay(0x04); cs=1; delay(0x04);设计心得体会 通过这次实验,我们对单片机的了解更加深入,并且对实验中用到的元件作用、性能、工作方式等都有了更好的认识。更重要的是,我们在实验中收获到的做实验的好的习惯,例如,实验要两个人相互合作,配合默契,要充分发挥团队的力量;其次是,实验要求我们在做之前要把相关的知识彻底弄懂。还有就是,做实验时要认真仔细,程序上要考虑周到。这些不仅对实验有用,对我们在其他方面培养好的习惯也很有帮助。附图1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1