资源简介
基于stm32的数字示波器c程序绝对完整版:可实现如下功能:
1、lcd12864实时显示波形
2、仪器具有内触发功能,通过外部中断实现
3、五个按键可选五个档位:10HZ~100KHZ
4、具有存储调出功能,并可用串口传回PC机
5、被测信号基本无失真
句句本人心血,与大家分享
代码片段和文件信息
#include “stm32f10x_lib.h“
#include “12864.h“
#include “delay.h“
//#include “front.h“
u8 addr_tab[]={
0x800x810x820x830x840x850x860x87//第一行汉字位置
0x900x910x920x930x940x950x960x97//第二行汉字位置
0x880x890x8a0x8b0x8c0x8d0x8e0x8f//第三行汉字位置
0x980x990x9a0x9b0x9c0x9d0x9e0x9f//第四行汉字位置
};
u8 a;
void GPIO_12864_Init(void) //12864管脚接口初始化
{
RCC->APB2ENR|=1<<3;//开启B时钟
RCC->APB2ENR|=1<<6;//开启E时钟
GPIOB->CRL&=0XFFFFF000;
GPIOB->CRL|=0X00000333;
GPIOB->ODR|=7<0;//上拉输出
GPIOE->CRH&=0X00000000;
GPIOE->CRH|=0X33333333;
GPIOE->ODR|=0XFF00;//上拉输出
}
void GPIO_12864_Read(void)//设置为输入
{
RCC->APB2ENR|=1<<6;//开启E时钟
GPIOE->CRH&=0X00000000;
GPIOE->CRH|=0X88888888;
GPIOE->ODR|=0XFF00;//上拉输出
}
void GPIO_12864_Write(void)//设置输出
{
RCC->APB2ENR|=1<<6;//开启E时钟
GPIOE->CRH&=0X00000000;
GPIOE->CRH|=0X33333333;
GPIOE->ODR|=0XFF00;//上拉输出
}
void Check_12864_Busy(void)//读忙碌状态
{
u8 flag=0;
GPIO_12864_Read();
RS=0;
RW=1;
while(flag==0)
{
delay_us(5);
CE=1;
delay_us(5);
if(DATAIN_12864&0X80)flag=0;
else flag=1;
delay_us(5);
CE=0;
delay_us(5);
}
GPIO_12864_Write();
}
void Write_12864_Data(u8 data)//写数据
{
Check_12864_Busy();
RS=1;
RW=0;
delay_us(5);
CE=1;
DATAOUT_12864(data);
delay_us(5);
CE=0;
}
u8 Read_12864_Data(void)//读数据
{
u8 data;
Check_12864_Busy();
GPIO_12864_Read();
RS=1;
RW=1;
CE=1;
delay_us(10);
data=DATAIN_12864;
CE=0;
GPIO_12864_Write();
return(data);
}
void Write_12864_Com(u8 commod)//写指令
{
Check_12864_Busy();
RS=0;
RW=0;
delay_us(5);
CE=1;
DATAOUT_12864(commod);
delay_us(5);
CE=0;
}
void LCD_12864_Init(void) //液晶初始化
{
Write_12864_Com(basic_commod);//30H--基本指令操作
// delay_ms(1);
Write_12864_Com(cursor_off);//0x06开显示,关光标,不闪烁。 扩展
// delay_ms(1);
Write_12864_Com(clear);//清除显示0x01
// delay_ms(20);
Write_12864_Com(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。
}
void Write_12864_String(u8 *str)//写入字符串或者汉字
{
u8 *p;
p=str;
while(*p!=0)
{
Write_12864_Data(*p);
p=++str;
// delay_ms(10);
}
}
/*****指定位置显示汉字*****/
void hanzi_Disp(u8 xu8 yu8 *s)
{
Write_12864_Com(addr_tab[8*x+y]); //写地址
while(*s>0)
{
Write_12864_Data(*s); //写数据
s++;
}
}
/*****指定位置显示数字,最大为65536*****/
void num_Disp(u8 xu8 yu16 number)
{
u16 i=10000;
Write_12864_Com(addr_tab[8*x+y]); //写地址
while(number/i==0)
{
i/=10;
}
if(i!=1)
{
while(number/i!=0)
{
Write_12864_Data(number/i+0x30);
number-=(number/i)*i;
i/=10;
if(i==1)break;
}
}
Write_12864_Data(number%10+0x30);
}
/*画图方式为从左到右扫描,从上到下,每写一个字节后行地址加一,每写玩16个字节,即128个点(如果半屏显示8个字节,64个点)列地址加一*/
//点阵取点方式为从左到右,从上到下,高位在前,低为在后
void PHO_DISP(const unsigned char *s)
{
u8 COUNT3=0X02COUNT1COUNT2LCD_X=0X80LCD_Y;
for (;COUNT3!=0;COUNT3--)
{
LCD_Y=0X80; //上半屏
COUNT2=0X20;//32
for(;COUNT2!=0;COUNT2--)
{
COUNT1=0X10;/
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-07-21 11:02 复件 12864_2\
目录 0 2013-07-21 11:02 复件 12864_2\HARDWAER\
目录 0 2013-07-21 11:02 复件 12864_2\HARDWAER\12864\
文件 9578 2013-07-15 15:02 复件 12864_2\HARDWAER\12864\12864.c
文件 1136 2013-07-21 08:47 复件 12864_2\HARDWAER\12864\12864.h
文件 5335 2013-07-20 21:21 复件 12864_2\HARDWAER\12864\cunchu.h
文件 5342 2013-07-13 21:28 复件 12864_2\HARDWAER\12864\dingzhi.h
文件 5436 2011-05-21 14:26 复件 12864_2\HARDWAER\12864\front.h
文件 5339 2013-07-13 21:21 复件 12864_2\HARDWAER\12864\huashi.h
目录 0 2013-07-21 11:02 复件 12864_2\HARDWAER\ADC\
文件 1874 2013-07-21 10:31 复件 12864_2\HARDWAER\ADC\adc.c
文件 693 2013-07-15 20:24 复件 12864_2\HARDWAER\ADC\adc.h
目录 0 2013-07-21 11:02 复件 12864_2\HARDWAER\EXTI\
文件 1993 2013-07-20 21:57 复件 12864_2\HARDWAER\EXTI\exti.c
文件 178 2013-07-11 21:49 复件 12864_2\HARDWAER\EXTI\exti.h
目录 0 2013-07-21 11:02 复件 12864_2\HARDWAER\KEY\
文件 756 2013-07-20 21:50 复件 12864_2\HARDWAER\KEY\key.c
文件 300 2013-07-20 21:57 复件 12864_2\HARDWAER\KEY\key.h
目录 0 2013-07-21 11:02 复件 12864_2\HARDWAER\LED\
文件 276 2013-07-20 09:30 复件 12864_2\HARDWAER\LED\LED.c
文件 152 2013-07-20 09:37 复件 12864_2\HARDWAER\LED\LED.h
目录 0 2013-07-21 11:02 复件 12864_2\HARDWAER\PWM\
文件 489 2011-05-20 21:06 复件 12864_2\HARDWAER\PWM\PWM.c
文件 125 2011-01-28 17:52 复件 12864_2\HARDWAER\PWM\PWM.h
目录 0 2013-07-21 11:02 复件 12864_2\HARDWAER\TIME3\
文件 406 2011-01-28 16:14 复件 12864_2\HARDWAER\TIME3\TIME3.c
文件 79 2011-01-28 15:34 复件 12864_2\HARDWAER\TIME3\TIME3.h
目录 0 2013-07-21 11:02 复件 12864_2\HARDWAER\TIMER\
文件 1318 2013-07-20 16:05 复件 12864_2\HARDWAER\TIMER\timer.c
文件 599 2012-07-23 19:09 复件 12864_2\HARDWAER\TIMER\timer.h
目录 0 2013-07-21 11:02 复件 12864_2\SYSTEM\
............此处省略68个文件信息
- 上一篇:97网课考试软件.zip
- 下一篇:( generator.rar )
评论
共有 条评论