51单片机88点阵,使用示波器

合集下载

基于51单片机的波形发生器的设计讲解

基于51单片机的波形发生器的设计讲解

目录1 引言 (1)1.1 题目要求及分析 (1)1.1.1 示意图 (1)1.2 设计要求 (1)2 波形发生器系统设计方案 (2)2.1 方案的设计思路 (2)2.2 设计框图及系统介绍 (2)2.3 选择合适的设计方案 (2)3 主要硬件电路及器件介绍 (4)3.1 80C51单片机 (4)3.2 DAC0832 (5)3.3 数码显示管 (6)4 系统的硬件设计 (8)4.1 硬件原理框图 (8)4.2 89C51系统设计 (8)4.3 时钟电路 (9)4.4 复位电路 (9)4.5 键盘接口电路 (10)4.7 数模转换器 (11)5 系统软件设计 (12)5.1 流程图: (12)5.2 产生波形图 (12)5.2.1 正弦波 (12)5.2.2 三角波 (13)5.2.3 方波 (14)6 结论 (16)主要参考文献 (17)致谢....................................................... 错误!未定义书签。

1引言1.1题目要求及分析题目:基于51单片机的波形发生器设计,即由51单片机控制产生正弦波、方波、三角波等的多种波形。

1.1.1示意图图1:系统流程示意图1.2设计要求(1) 系统具有产生正弦波、三角波、方波三种周期性波形的功能。

(2) 用键盘控制上述三种波形(同周期)的生成,以及由基波和它的谐波(5次以下)线性组合的波形。

(3) 系统具有存储波形功能。

(4) 系统输出波形的频率范围为1Hz~1MHz,重复频率可调,频率步进间隔≤100Hz,非正弦波的频率按照10次谐波来计算。

(5) 系统输出波形幅度范围0~5V。

(6) 系统具有显示输出波形的类型、重复频率和幅度的功能。

2波形发生器系统设计方案设计并制作一个波形信号发生器,能够产生正弦波、方波、三角波的波形,其中不使用DDS和一些专用的波形产生芯片。

并让系统的频率范围在1Hz~1MHZ可调节,在频率范围在1HZ~10KHz时,步进小于或等于10Hz,在频率范围在10KHz~1MHz时,步进小于或等于100Hz,并且电压在0~5V范围,能够实时的显示波形的类型、频率和幅值。

51单片机常用外设(硬件)软仿真

51单片机常用外设(硬件)软仿真

51单片机常用外设(硬件)软仿真(陕西师范大学物理学与信息技术学院,杨春江,西安,710062)摘要:单片机体积小,功能强,具有很强的灵活性,具有逻辑判断,定时计数等多种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。

以单片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。

但在嵌入式系统的中,开发板成本高,特别是对于大量的初学者而言,还可能由于设计的错误导致开发板损坏。

然而我们也发现基于51单片机的嵌入式应用几乎都要用到这几种常用外设硬件(51单片机,LED,LCD,RAM,键盘,D/A,A/D)。

Proteus 就是一款功能强大的EDA仿真软件。

它拥有丰富的库元件,尤其是动态外设的仿真极大地补充了其他仿真软件的不足;虚拟工具箱的引入为仿真测试提供了方便。

本文以51单片机为例具体分析了该软件在仿真微处理器及其外设硬件方面的独到之处,protues能有效的仿真51单片机及其常用外设硬件,大幅提高开发效率和降低开发成本。

关键词:51单片机Proteus软仿真常用外设(硬件)0.引言单片机应用技术所涉及到的试验实践环节比较多,而且硬件投入比较大。

在具体的工程实践中,如果因为方案有误而进行相应的开发设计,会浪费较多的时间和经费。

所以进行软件的软仿真是非常有用和必要的。

有一点必须先肯定,软件仿真不能替代硬件仿真。

软件仿真只是对硬件的仿真模拟,但是软件仿真仍有必要。

目标系统是千变万化的,需要开发者去实现。

实现可能需要相当长一段时间,甚至完成后不能随意调试,因此有必要对目标系统进行模拟或仿真,以便开发、检测嵌入式软件。

外围设备软件仿真可以快速建立开发目标的模拟系统。

由于各仿真部件是软件,因此只要部件存在,就没有采购、制作电路板的过程。

将各部件按规则布置、用软件连接,就构成了目标模拟系统。

外围设备软件仿真可以使嵌入式的软件设计与硬件设计相对独立。

软件设计者可以先在模拟软件上进行功能和逻辑测试,从而减少了对硬件的依赖。

基于51单片机的LED点阵显示屏系统的设计

基于51单片机的LED点阵显示屏系统的设计

基于51单片机的LED点阵显示屏系统的设计摘要:本篇论文主要介绍基于51单片机的LED点阵显示屏系统的设计方案。

该系统通过51单片机进行数据处理,并将数据在LED点阵显示屏上进行展示,具有显示效果好、成本低等优点。

论文主要介绍了硬件电路设计、程序设计、PCB设计以及实验结果等内容,对基于51单片机的LED点阵显示屏系统的实用性进行了探讨。

关键词:51单片机、LED点阵显示屏、硬件电路设计、程序设计、PCB设计、实验结果一、引言LED点阵显示屏是一种广泛应用于各种场合,如宣传广告、商店展示、显示器等领域的显示设备。

与传统的显示屏相比,LED点阵显示屏具有显示效果好、成本低等优点。

近年来,随着51单片机技术的不断发展,基于51单片机的LED点阵显示屏系统在各个领域得到了广泛的应用。

本文主要介绍基于51单片机的LED点阵显示屏系统的设计方案。

该系统通过51单片机进行数据处理,并将数据在LED点阵显示屏上进行展示,具有良好的实用性和经济效益。

论文主要包括硬件电路设计、程序设计、PCB设计以及实验结果等部分。

二、硬件电路设计1. 系统框图基于51单片机的LED点阵显示屏系统的硬件。

2. 数码管显示电路基于51单片机的LED点阵显示屏系统的中,采用BCD数码管进行数据输入。

BCD数码管共四位,每一位数字独立控制。

数码管显示电路主要包括74HC595移位寄存器、串联$k$向$n$型译码器以及BCD数码管组成。

采用74HC595移位寄存器可以将多个BCD数码通过串联方式连接在一起,从而减少了输出引脚的数量。

通过寄存器的移位方式,可以实现控制数据的输入和输出。

3. LED点阵显示电路在本系统中,采用了8*8共阴极的LED点阵显示屏,并通过双向移位寄存器74HC595将数据的控制信号传输到LED点阵显示屏。

在具体的控制方案中,将LED点阵显示屏划分为8*8个小块,每个小块对应一个控制信号,通过移位寄存器将每一个小块的控制信号输出到LED 点阵上。

电子科大电子实验示波器的使用

电子科大电子实验示波器的使用

电子科大电子实验示波器的使用首先,使用示波器前需要确保其连接正确。

通常,示波器有两个输入通道,可以同时观测两个信号。

将待测信号的正极连接到示波器的“CH1”输入端,负极连接到示波器的地线。

如果需要同时观测两个信号,可以将第二个信号的正极连接到示波器的“CH2”输入端。

接下来,需要调整示波器的垂直和水平控制。

垂直控制用于调整信号的幅度,可以通过旋转示波器的“VOLTS/DIV”调节旋钮进行调整。

水平控制用于调整信号的时间尺度,可以通过旋转示波器的“TIME/DIV”调节旋钮进行调整。

然后,选择合适的触发模式。

示波器可以根据触发信号的特征来稳定地显示波形。

触发模式通常有自动触发和外部触发两种模式。

在自动触发模式下,示波器会自动捕捉并显示波形。

在外部触发模式下,示波器会等待外部信号触发后才显示波形。

调整好触发模式后,可以开始观察并记录波形。

示波器的屏幕上会显示出待测信号的波形。

可以通过旋转示波器的水平控制来调整波形的位置,使其在屏幕上居中显示。

如果需要测量波形的幅度、周期等参数,可以使用示波器上的测量功能。

通常,示波器会提供峰峰值、平均值、频率等参数的测量。

在观察波形时,有时可能需要放大或缩小波形的幅度以更清楚地观察细节。

示波器通常提供“垂直”和“水平”放大功能,可以通过旋转相应的调节旋钮进行操作。

在使用示波器时,还需要注意以下几点。

首先,示波器的输入端需要与待测信号相匹配,以避免过大或过小的输入信号导致测量失真。

其次,示波器的地线需要正确连接,以避免仪器或电路的短路。

此外,示波器的垂直和水平控制需要根据待测信号的特征进行调整,以确保获取准确的波形。

总结起来,正确使用电子科大电子实验室的示波器需要连接正确,调整垂直和水平控制,选择合适的触发模式,并注意波形的放大和测量。

通过正确使用示波器,可以更好地观察和分析电信号的波形,从而进行实验、调试和故障排除等工作。

51单片机驱动LED点阵扫描显示C语言程序

51单片机驱动LED点阵扫描显示C语言程序

51单片机驱动LED点阵扫描显示C语言程序LED点阵屏发光亮度强,指示效果好,可以制作运动的发光图文,更容易吸引人的注意力,信息量大,随时更新,有着非常好的广告和告示效果。

笔者此处就LED点阵屏动态扫描显示作一个简单的介绍。

1、LED点阵屏显示原理概述图1-1为一种8x8的LED点阵单色行共阳模块的内部等效电路图,对于红光LED其工作正向电压约为1.8v,其持续工作的正向电流一般10ma左右,峰值电流可以更大。

如下图,当某一行线为高电平而某一列线为低时,其行列交叉的点就被点亮,当某一行线为低电平时,无论列线如何,对应的这一行的点全部为暗。

LED点阵屏显示就是通过一定的频率进行逐行扫描,数据端不断输入数据显示,只要扫描频率足够高,由于人眼的视觉残留效应,就可以看到完整的文字或图案信息。

通常有4、8、16线扫描方式,扫描行数越少,点阵的显示亮度越好,但相应硬件数据寄存器需求也越多。

图1-1 点阵内部原理图2、硬件设计微控制器的IO口均不能流过过大的电流,LED点亮时有约10ms 的电流,因此LED点阵引脚不要直接接单片机IO口,应先经过一个缓冲器74HC573。

单片机IO口只需很小的电流控制74HC573即可间接的控制LED点阵某一行(或某一列),而74HC573输出也能负载约10ms的电流。

设置LED每点驱动电流为ID =15ma,这个电流点亮度好,并且有一定的裕度,即使电源输出电压偏高也不会烧毁LED,限流电阻值R = (VCC- VCE – VOL – VLED) / IDVCC为5v供电,VCE为三极管C、E间饱和电压,估为0.2v,VOL为74hc573输出低电平时电压,不同灌电流,此值不一样,估为0.2v,具体查看规格书,VLED为红光驱动电压,估为1.7v,根据上式可算出限流电阻为R = 200R。

LED点阵屏需接收逐个扫描信号,扫描到相应列(或行),对应的列(或行)数据有效,即显示这一列(或行)的信息。

51单片机 c语言 12864 st7920 完美液晶示波器

51单片机 c语言 12864 st7920 完美液晶示波器
/*------------------初始化LCD屏--------------------------*/
void lcd_init()
{
delayms(3);
lcd_wcmd(0x30);
delayms(1); //选择基本指令集
lcd_wcmd(0x30); //选择8bit数据流
show_str(" ");
lcd_wcmd(0x98);
show_str(" ");
}
/*------------------清整个GDRAM空间----------------------------*/
void clr_gdram()
{ unsigned char x,y; //1.5s
}
for (i=0;i<8;i++)
{
AD_OUT=1;
AD_CLK=1;
al<<=1;
if (AD_OUT) al|=0x01;
AD_CLK=0;
}
AD_CS=1;
ad=(unsigned int)ah;ad<<=8;ad|=al;
return (ad);
a++;
}
if(a==0)
new_lie[t]=lie[t];
}
}
a=0;
}
void sure_lie() //p=temp
{
uchar a=0;
if(t<8)
{
sure_newlie();
return (0x80+y);

点阵屏显示原理及实验详解讲解

点阵屏显示原理及实验详解讲解

点阵屏显示原理及实验详解讲解标题:LED点阵屏学习攻略共享资料LED点阵屏学习攻略在经历了将近一个学期断断续续的点阵屏学习后,最后终于在AVR平台下完成了128*32点阵屏的无闪烁显示。

现把整个学习过程总结如下:无论是51单片机还是AVR单片机,点阵屏的显示原理是一样的,所以首先从51讲起。

说明:以下所有试验如无特殊说明均在Keil uVision3 + Proteus 6.9 SP5下仿真完成。

一.基于51的点阵屏显示:(1)点亮第一个8*8点阵:1.首先在Proteus下选择我们需要的元件,AT89C52、74LS138、MATRIX-8*8-GREEN(在这里使用绿色的点阵)。

在Proteus 6.9中8*8的点阵总共有四种颜色,分别为MATRIX-8*8-GREEN,MATRIX-8*8-BLUE,MATRIX-8*8-ORANGE ,MATRIX-8*8-RED。

在这里请大家牢记:红色的为上列选下行选;其它颜色的为上行选下列选!而所有的点阵都是高电平选中列,低电平选中行!也就是说如果某一个点所处的行信号为低,列信号为高,则该点被点亮!此结论是我们编程的基础。

2.在选择完以上三个元件后,我们开始布线,具体如下图:这里P2是列选,P3连接38译码器后作为行选。

选择38译码器的原因:38译码器每次可输出相应一个I/O口的低电平,正好与点阵屏的低电平选中行相对,并且节省了I/O口,大大方便了我们的编程和以后的扩展。

3.下面让我们把它点亮,先看一个简单的程序:(将奇数行偶数列的点点亮,效果如下图)下面是源代码:/************8*8LED点阵屏显示*****************/#includevoid delay(int z) //延时函数{int x,y;for(x=0;x<z;x++)< p="">for(y=0;y<110;y++);}void main(){while(1){P3=0; //行选,选择第一行P2=0x55; //列选,即该行显示的数据delay(5); //延时/*****下同*****/P3=2; //第三行P2=0x55;delay(5);P3=4; //第五行P2=0x55;delay(5);P3=6; //第七行P2=0x55;delay(5);}}上面的程序实现了将此8*8点阵的奇数行偶数列的点点亮的功能。

基于单片机的简易数字示波器的设计毕业设计

基于单片机的简易数字示波器的设计毕业设计
With the development and innovation of technology and components, digital storage oscilloscope is developing to broadband, modular, multi-function and network.. Digital storage oscilloscope can achieve high bandwidth and strong analytical skills. High end digital storage oscilloscope real-time bandwidth has been reached 20GHz, can be widely used in various Gigabit Ethernet, optical communications and other test areas. And the low-end digital storage oscilloscope has been widely used in various fields of universal testing, can also be widely used in Colleges and universities and vocational colleges teaching.彈贸摄尔霁毙攬砖卤庑。
第2章
2.1
2.1.1 数字存储示波器的组成原理
数字示波器是数据采集,A/D转换,软件编程等一系列的技术制造出来的高性能示波器。数字示波器一般支持多级菜单,能提供给用户多种选择,多种分析功能。还有一些示波器可以提供存储,实现对波形的保存和处理。目前高端数字示波器主要依靠美国技术,对于300MHz带宽之内的示波器,目前国内品牌做的示波器在性能上已经可以和国外品牌抗衡,且具有明显的性价比优势。峴扬斕滾澗辐滠兴渙藺。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四周单片机任务
一.实验要求
1. 了解51单片机的串口使用
2.了解8*8点阵
3. 会使用示波器(proteus中有虚拟示波器)
具体内容:
1. 按下按钮,程序开始运行。

再次按下按钮,程序暂停,
再次按下按钮程序接着上次暂停的部分继续运行。

2. 当第一次按下按钮后,8*8点阵按照顺序显示
“1,2,3,4,5,6,7,8,9,0”这几个数字(注意,每个数字显
示需要间隔2秒),当显示到0后,再从1开始。

3. 8*8点阵切换数字时是滚动效果。

4. 串口终端在按下按钮后显示出“now ,8*8 show
1,2,3,4,5,6,7,8,9,0”
5. 用虚拟示波器观察串口输出的波形,并截图展示
程序具体流程如下:
按下按钮,点阵显示1,串口终端显示“now ,8*8 show 1,2,3,4,5,6,7,8,9,0”,延时2秒(在这2秒内,点阵显示的1要滚动变成2,滚动效果就是银行门口的字从右到左连贯的切换的那种效果,可以看该网址视频
/v_show/id_XMjE3OTM4NDIw.html)。


后点阵显示2,再延时2秒(同上)。

当显示到点阵0后,再过2秒(同上,滚动变为1),此时串口终端换行再次显示“now ,8*8 show 1,2,3,4,5,6,7,8,9,0”。

如此往复
二.硬件分析
利用串口调试助手实现串口终端显示“now ,8*8 show 1,2,3,4,5,6,7,8,9,0”
三.程序分析
#include<reg52.h>
char keytmp;
char *p;
unsigned char dat;
sbit k=P3^2;
char code str[]="now,8*8show1,2,3,4,5,6,7,8,9,0";
char code distaba[]=
{ // (各数字的阳码)0x00,0x00,0x11,0x21,0x7f,0x01,0x01,0x00, //1
0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00, //2
0x00,0x00,0x49,0x49,0x49,0x7f,0x00,0x00, //3
0x00,0x04,0x0c,0x14,0x24,0x5f,0x04,0x00, //4 0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00, //5 0x00,0x00,0x7f,0x49,0x49,0x49,0x4f,0x00, //6 0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00, //7 0x00,0x00,0x7f,0x49,0x49,0x49,0x7f,0x00, //8 0x00,0x00,0x79,0x49,0x49,0x49,0x7f,0x00, //9 0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00, //0 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
//黑屏,表示一次显示完毕};
char code scan_cona[8]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//列扫描控制字void delay2ms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<240;j++);
}
void init_com(void)
{
TMOD=0X20;
//定时器工作方式2,初值自动装入 PCON=0X00; //波特率不倍增
SCON=0X40; //串行工作方式1 TH1=0xfd; //定时器初值高位,波特率9600 TL1=0xfd; //定时器初值低位 TR1=1; //启动定时器
}
void fun() //向左滚动显示{
int m,n,h;
for(h=0;h<80;h++) //控制显示字数(80/8=10个) {
for(n=0;n<25;n++) //控制帧移动速度
{
for(m=0;m<8;m++) //显示1帧扫描(分8行,每行亮2ms) {
P2=scan_cona[m];
P0=distaba[m+h];
delay2ms(1);
}
}
}
}
void delay(void) //延时子程序{
int k;
for(k=0;k<600;k++);
}
void InitCom(void)
//串口定义初始化子程序{
TMOD=0x20;
PCON=0x00;
SCON=0x50;
TH1=0xFd;
TR1=1;
}
void send_str()
//发送字符串子程序
{
unsigned char i=0;
while(str[i]!='\0')
{
SBUF=str[i];
while(!TI);
TI=0;
i++;
}
}
void intersvr0(void)interrupt 0 using 1
{
send_str(); //调用发送字符串子程序}
main() //主程序
{
EA=1;
EX0=1;
IT0=0;
while(1)
{
if(RI)
{
dat=SBUF;
RI=0;
}
fun();
}
}
姓名:杨丹
班级:1207
学号:210121885。

相关文档
最新文档