计算机测控设计与总结报告.docx
《计算机测控设计与总结报告.docx》由会员分享,可在线阅读,更多相关《计算机测控设计与总结报告.docx(14页珍藏版)》请在冰点文库上搜索。
计算机测控设计与总结报告
计算机测控课程设计报告
成员:
学号:
班级:
辅导老师:
流水灯和计数器设计报告
摘要:
近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高应用领域也不断扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用,成为现代电子系统中最重要的智能化的核心部件。
关键字:
单片机,流水灯,计数器
需求分析:
随着现代社会的发展,人们越来越追求审美和新颖,而流水灯就是其中一种,以前简单的照明工具变得越来越多样化,流水灯的千姿百态给人一种视觉冲动,现在不管大街小巷我们都可以随处可见这种变幻万千的流水灯,而这种流水灯我们可以产用子电路去设计,我们可以用控制器和状态译码器来实现灯光的流水效果,但是现在我们可以用单片机ADUC842来实现,因为其相对于电子电路有明显的优越性,控制硬件电路比较简单,软件方面也不复杂,而且功能作用并不低于电子电路设计的。
由于它的小巧方便,我们采用单片机来做流水灯。
随着计数器技术的不断发展与进步,计数器的种类越来越多,应用的范围越来越广,随之而来的竞争也越来越激烈。
过硬的技术也成为众多生产厂商竞争的焦点之一。
厂商为了在竞争中处于不败之地,从而不断地改进技术,增加产品的种类。
本次以单片机和四位数码管制作计数器,实现计数器的功能。
设计系统:
1.复位电路部分
图1复位电路部分
为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分。
单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。
ADU842单片机的复位信号是从RESET引脚输入到芯片内的施密特触发器中的。
当系统处于正常工作状态时,且振荡器稳定后,如果RESET引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。
单片机系统的复位方式有:
手动按钮复位和上电复位。
手动按钮不仅具有上电复位的功能,还可以通过按按键的方法实现复位,(如上图所示按S1)此时电源VCC在RESET端产生一个复位高电平。
PSEN管脚是程序存储激活,逻辑输出。
在这个引脚保持低电平时,执行内部程序,在上电或复位时,PSEN被一个电阻下拉为低,将激活串行下载模式,在复位的瞬间PSEN变为输入采样状态。
该引脚有一个下拉电阻,Kernel的串行下载/调试将被执行。
2.时钟电路部分
时钟电路为单片机工作提供基本时钟,它是计算机工作的心脏,它控制着计算机的工作节奏。
时钟电路一般由晶体震荡器和电容组成。
图2时钟电路部分
3.LED电路部分
LED用于将流水灯的显示方式直观、形象地展现出来。
图3LED电路部分
4.计数器部分
利用ADUC842单片机来制作一个计数器,在单片机的P2.0、P2.1、P2.2和HD7279的数据、时钟和片选相连接,通过HD7279控制数码管显示。
HD7279的基本说明如下:
HD7279是一片具有串行接口的,可同时驱动8位共阴式数码管(或64只独立led)的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成led显示、键盘接口的全部功能。
HD7279内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式。
此外,还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。
HD7279具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。
典型应用有仪器仪表、工业控制、条形显示器、控制面板。
本设计中用到了HD7279对数码管的方式1译码显示。
硬件电路图如4:
图4计数器部分电路
4.总设计图
见附图1.
选用ADUC842引脚功能
XTAL1:
单芯片系统时钟的反向放大输入端。
XTAL2:
系统时钟的反向放大放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英震荡晶体系统就可以工作了,此外可以在两引脚与地之间加入20PF的小电容,可以使系统更稳定,避免噪音干扰而死机。
硬件框图
图5硬件设计框图
软件设计
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
voiddelay(unsignedint);
voids_delay(void);
voiddelay10ms(unsignedchar);
voidwrite7279(unsignedchar,unsignedchar);
voidsend_byte(unsignedchar);
uchara,b,j,k;
uinti,tmr;
//变量及IO口定义
sbitcs=P2^2;
sbitclk=P2^1;
sbitdat=P2^0;
sbitkey=P3^2;
//******HD7279A指令******
#defineCMD_RESET0xa4//7279复位指令
#defineCMD_TEST0xbf//7279灯测控指令
#defineDECODE10xc8//方式1译码
//主程序
/*voiddelay(void)//延时0.2秒子程序
{
unsignedchari,j,k;//定义3个无符号字符型数据。
for(i=20;i>0;i--)//作循环延时
for(j=200;j>0;j--)
for(k=248;k>0;k--);
}*/
voidmain()
{
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;i<15;i++)
{
write7279(DECODE1,i);//译码方式1
delay(500000);
delay(500000);
}
}
}
voiddelay10ms()
{
for(a=100;a>0;a--)
for(b=225;b>0;b--);
}
voiddelay(uintt)
{
uinti;
for(i=0;i}
voidsend_byte(ucharout_byte)
{
uchari;
cs=0;
delay10ms();
for(i=0;i<8;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(0x04);
cs=1;
}
voids_delay(void)
{
uchart;
t=0;
}
//向7279中写入带数据的指令
voidwrite7279(ucharout_cmd,ucharout_byte)//先发送指令,再发送数据
{
uinti;
cs=0;
delay(0x04);
for(i=0;i<8;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;i<8;i++)
{
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(0x04);
cs=1;
delay(0x04);
}
设计心得体会
通过这次实验,我们对单片机的了解更加深入,并且对实验中用到的元件作用、性能、工作方式等都有了更好的认识。
更重要的是,我们在实验中收获到的做实验的好的习惯,例如,实验要两个人相互合作,配合默契,要充分发挥团队的力量;其次是,实验要求我们在做之前要把相关的知识彻底弄懂。
还有就是,做实验时要认真仔细,程序上要考虑周到。
这些不仅对实验有用,对我们在其他方面培养好的习惯也很有帮助。
附图1
X