资源简介
给51写的单片机AD采样后在0.96 OLED屏幕上进行波形显示的程序
代码片段和文件信息
//****************OLED微型示波器**********************//
//*****************迷梦数码科技***********************//
//**********http://shop108196262.taobao.com***********//
//**********程序编写:7426笨蛋************************//
//**********编写日期:2014年11月***********************//
#include//STC12C5A60S2头文件,没有用到相关寄存器可以用reg51.h代替
#include
#define FOSC 30000000L
#define ADC_POWER 0x80 //ADC power control bit
#define ADC_FLAG 0x10 //ADC complete flag
#define ADC_START 0x08 //ADC start control bit
#define ADC_SPEEDLL 0x00 //420 clocks
#define ADC_SPEEDL 0x20 //280 clocks
#define ADC_SPEEDH 0x40 //140 clocks
#define ADC_SPEEDHH 0x60 //70 clocks
sbit test=P3^1;
void LCD_P16x16Str(unsigned char xunsigned char yunsigned char ch[]);
extern unsigned char code logo_bmp[];
extern unsigned char code coordinate_bmp[];
unsigned int newtimeoldtimelengthfreq;
void delay(int ms) //延时程序
{
int iijj;
if (ms<1) ms=1;
for(ii=0;ii for(jj=0;jj<500;jj++);
}
void InitADC()
{
P1ASF = 0x01; //选择P1^0作为AD输入口
ADC_RES = 0; //清除转换结果
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | 0;
delay(2); //ADC power-on delay and Start A/D conversion
}
void Int_PCA()
{
CCON = 0; //初始化PCA控制寄存器
//PCA定时器停止
//清除CF标志
//清除模块中断标志
CL = 0; //复位PCA寄存器
CH = 0;
CCAP0L = 0;
CCAP0H = 0;
CMOD = 0x01; //设置PCA时钟源为系统时钟/12且使能PCA计时溢出中断
CCAPM0 = 0x21; //PCA模块0为16位捕获模式(上升沿捕获可测从高电平开始的整个周期)且产生捕获中断
// CCAPM0 = 0x11; //PCA模块0为16位捕获模式(下降沿捕获可测从低电平开始的整个周期)且产生捕获中断
// CCAPM0 = 0x31; //PCA模块0为16位捕获模式(上升沿/下降沿捕获可测高电平或者低电平宽度)且产生捕获中断
}
void PCA_isr() interrupt 7 using 1
{
if (CCF0)
{
CCF0 = 0;
if (CF && ((CCAP0H & 0x80) == 0))
{
CF = 0;
}
oldtime = newtime; //备份上一次的捕获值
((unsigned char *)&newtime)[1] = CCAP0L; //保存本次的捕获值
((unsigned char *)&newtime)[0] = CCAP0H;
length = newtime - oldtime; //计算两次捕获的差值即得到时间长度
freq=FOSC/12/length+1;
}
if (CF)
{
CF = 0;
}
}
void main(void)
{
char itemtemx=8temy;
float voltage_maxvoltage_minvpp;
LCD_Init(); //OLED初始化
Draw_BMP(2601055logo_bmp);//显示图片
LCD_P16x16Str(186“迷梦數码科技“);//16x16显示字符串
delay(1000);
LCD_Fill(0x00);
delay(500);
Draw_BMP(001287coordinate_bmp);
LCD_P6x8Str(80“Vpp=“);
LCD_P6x8Str(660“Freq=“);
// LCD_P3x5Str(875);
InitADC();
Int_PCA();
CR = 1; //PCA定时器开始工作
EA = 1;
newtime = 0;
oldtime = 0;
for(;;)
{
while(1)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 12805 2014-11-29 13:01 stc.h
文件 4022 2014-12-13 18:12 main.c
文件 7032 2014-12-13 18:22 main.LST
文件 14721 2014-12-13 18:22 main.OBJ
文件 49386 2014-12-13 18:22 OLED
文件 34359 2014-12-13 18:21 oled.c
文件 1408 2014-11-30 17:24 oled.h
文件 28790 2014-12-13 18:22 OLED.hex
文件 53 2014-12-13 18:22 OLED.lnp
文件 48846 2014-12-13 18:22 oled.LST
文件 50060 2014-12-13 18:22 OLED.M51
文件 41891 2014-12-13 18:22 oled.OBJ
文件 8373 2014-12-13 18:25 OLED.plg
....... 57505 2014-12-13 18:24 OLED.uvopt
文件 13381 2014-11-06 19:54 OLED.uvproj
....... 57503 2014-12-11 16:47 OLED_uvopt.bak
文件 0 2014-11-06 16:58 OLED_uvproj.bak
----------- --------- ---------- ----- ----
430135 17
相关资源
- C8051F单片机头文件.rar
- 51单片机_DAC0832_多波形发生器汇编频率
- ssd1303屏幕点亮程序
- 51单片机实现蜂鸣器警车、救护车、消
- 发光二极管模拟汽车信号灯
- 基于51单片机RS485多机通讯
- zedboard OLED IP
- 基于单片机的智能电能表设计
- 51系列单片机集成库
- 基于51单片机的智能闹钟
- 51单片机音乐闹钟程序秒表定时器整点
- 基于51单片机的RS485的从机系统的设计
- 基于51单片机的RS485从机系统设计
- 51单片机使用tlc2543测电压
- 掌讯3518-V006原版-增加强刷.救砖模式增
- 掌讯3518C增加强刷.救砖模式增量单刷
- 51单片机 简易电子时钟
- 作息时间控制器.zip
- LCD1602+DHT11显示温湿度
- SWMM51014代码编译及扩展案例182387
- 8051的内核的实现verilog
- 51单片机最小系统含原理图和PCB
- C8051F35X例程
- gps模块51测试程序
- OLED取模软件OLED取模软件
- MCS-51单片机Gps接收程序
- 本科毕业论文:基于51单片机的贪食蛇
- 基于89c51和AD1674的12位AD转换
- 一些常用的c51单片常用类库有1602,键
- c51使用ds18b20测试温度使用数码管显示
评论
共有 条评论