历史上的今天
今天是:2024年10月15日(星期二)
2019年10月15日 | stc8单片机+8针oled驱动显示ADC值源程序
2019-10-15 来源:eefocus
#include #include sbit lcd_sclk=P5^0; /*接口定义:lcd_sclk就是CLK*/ sbit lcd_sid=P5^1; /*接口定义:lcd_sid就是MOSI*/ sbit lcd_rs=P5^2; /*接口定义:lcd_rs就是DC*/ sbit lcd_cs1=P5^3; /*接口定义:lcd_cs1就是OLED的片选CS1*/ sbit Rom_OUT=P5^4; /*字库IC接口定义:Rom_OUT就是FSO*/ sbit Rom_CS=P5^5; /*字库IC接口定义Rom_CS就是字库IC的CS2*/ unsigned char code ASCII[] = {'0','1','2','3','4','5','6','7','8','9'}; #define uchar unsigned char #define uint unsigned int #define ulong unsigned long uchar code bmp1[]; /*写指令到LCD模块*/ void transfer_command_lcd(int data1) { char i; lcd_rs=0; lcd_sclk=0; for(i=0;i<8;i++) { if(data1&0x80) lcd_sid=1; else lcd_sid=0; lcd_sclk=1; _nop_(); lcd_sclk=0; data1<<=1; } } /*写数据到LCD模块*/ void transfer_data_lcd(int data1) { char i; lcd_rs=1; lcd_sclk=0; for(i=0;i<8;i++) { if(data1&0x80) lcd_sid=1; else lcd_sid=0; lcd_sclk=1; _nop_(); lcd_sclk=0; data1<<=1; } } /*延时*/ void delay(int n_ms) { int j,k; for(j=0;j } /*等待一个按键,我的主板是用P2.0与GND之间接一个按键*/ //void waitkey() //{ // repeat: // if (P2&0x01) goto repeat; // else delay(6); // if (P2&0x01) goto repeat; // else // delay(40);; //} /*LCD模块初始化*/ void initial_lcd() { lcd_cs1=0; Rom_CS = 1; // lcd_reset=0; /*低电平复位*/ delay(20); //lcd_reset=1; /*复位完毕*/ delay(20); transfer_command_lcd(0xAE); //display off transfer_command_lcd(0x20); //Set Memory Addressing Mode transfer_command_lcd(0x10); //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid transfer_command_lcd(0xb0); //Set Page Start Address for Page Addressing Mode,0-7 transfer_command_lcd(0xc8); //Set COM Output Scan Direction transfer_command_lcd(0x00);//---set low column address transfer_command_lcd(0x10);//---set high column address transfer_command_lcd(0x40);//--set start line address transfer_command_lcd(0x81);//--set contrast control register transfer_command_lcd(0x7f); transfer_command_lcd(0xa1);//--set segment re-map 0 to 127 transfer_command_lcd(0xa6);//--set normal display transfer_command_lcd(0xa8);//--set multiplex ratio(1 to 64) transfer_command_lcd(0x3F);// transfer_command_lcd(0xa4);//0xa4,Output follows RAM content;0xa5,Output ignores RAM content transfer_command_lcd(0xd3);//-set display offset transfer_command_lcd(0x00);//-not offset transfer_command_lcd(0xd5);//--set display clock divide ratio/oscillator frequency transfer_command_lcd(0xf0);//--set divide ratio transfer_command_lcd(0xd9);//--set pre-charge period transfer_command_lcd(0x22); // transfer_command_lcd(0xda);//--set com pins hardware configuration transfer_command_lcd(0x12); transfer_command_lcd(0xdb);//--set vcomh transfer_command_lcd(0x20);//0x20,0.77xVcc transfer_command_lcd(0x8d);//--set DC-DC enable transfer_command_lcd(0x14);// transfer_command_lcd(0xaf);//--turn on oled panel lcd_cs1=1; } void lcd_address(uchar page,uchar column) { transfer_command_lcd(0xb0 + column); /*设置页地址*/ transfer_command_lcd(((page & 0xf0) >> 4) | 0x10); /*设置列地址的高4位*/ transfer_command_lcd((page & 0x0f) | 0x00); /*设置列地址的低4位*/ } /*全屏清屏*/ void clear_screen() { unsigned char i,j; lcd_cs1=0; Rom_CS = 1; for(i=0;i<8;i++) { transfer_command_lcd(0xb0+i); transfer_command_lcd(0x00); transfer_command_lcd(0x10); for(j=0;j<128;j++) { transfer_data_lcd(0x00); } } lcd_cs1=1; } /*显示128x64点阵图像*/ //void display_128x64(uchar *dp) //{ // uint i,j; // lcd_cs1=0; // for(j=0;j<8;j++) // { // lcd_address(0,j); // for (i=0;i<128;i++) // { // transfer_data_lcd(*dp); /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/ // dp++; // } // } // lcd_cs1=1; //} /*显示16x16点阵图像、汉字、生僻字或16x16点阵的其他图标*/ void display_graphic_16x16(uint page,uint column,uchar *dp) { uint i,j; lcd_cs1=0; Rom_CS = 1; for(j=2;j>0;j--) { lcd_address(column,page); for (i=0;i<16;i++) { transfer_data_lcd(*dp); /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/ dp++; } page++; } lcd_cs1=1; } /*显示8x16点阵图像、ASCII, 或8x16点阵的自造字符、其他图标*/ void display_graphic_8x16(uint page,uchar column,uchar *dp) { uint i,j; lcd_cs1=0; for(j=2;j>0;j--) { lcd_address(column,page); for (i=0;i<8;i++) { transfer_data_lcd(*dp); /*写数据到LCD,每写完一个8位的数据后列地址自动加1*/ dp++; } page++; } lcd_cs1=1; } /*显示5*7点阵图像、ASCII, 或5x7点阵的自造字符、其他图标*/ //void display_graphic_5x7(uint page,uchar column,uchar *dp)
史海拾趣
|
提出了一种利用触须来识别物体表面轮廓的新方法.传感器采用了二维PSD作为敏感元件,实时地测量由于与物体接触在触须根部所产生的微小位移量.介绍了机器人触须传感器具体的结构及工作原理.由实验数据可知,触须根部位移量的大小与接触的距离成反比,且 ...… 查看全部问答> |
|
SES5VD923-2B资料 TVS管的选择 替换型号;PVS05A-0402 SES5VD923-2B WE05D9-B Feature 100 Watts peak pulse power (tp = 8/20μs) Transient protection for data lines to IEC 61000-4-2 (ESD) ±25kV (air), ...… 查看全部问答> |
|
下面是我编写关于93C46的读写代码,P0引脚连接的是8个LED,目的是通过读写93C46实现LED闪烁的效果。 现在程序运行时,DO引脚始终是高电平,LED常亮,检查好几遍时序设置,也没有发现问题,请各位高手帮我分析一下到底问题出现在哪了,谢谢! #inc ...… 查看全部问答> |
|
为实现低成本小体积的模拟式锁相放大器,来采集TDS中的差分探头产生的THz信号。通过核心器件AD630(平衡调制解调器)做锁相放大,以提取被噪声淹没的微弱THz信号,要求其动态范围宽,达到100db以上,能检测300pA以上的信号。最终采集的信噪比需满足 ...… 查看全部问答> |
|
请问32KB+256B Flash Memory,这个256B干嘛用的? MSP430 Datasheet中一般出现这句话:32KB + 256B Flash Memory 512B RAM 问1,这个256B是什么意思? 问2,假如我的程序大小为12KB,那么剩下的20KB Flash Memory是否可以当做EEPROM来使用?… 查看全部问答> |
|
51单片机实现红外编码检测 通过51 单片机及外围电路实现对接受信号的处理(通过外部中断和计数器)获得信号的01编码,设备显示。 有关红外传感的一些资料 红外传感基础知识:v 红外发光管:红外发光二极管通常使用砷化镓(GaAs)、砷铝化镓(GaAlA ...… 查看全部问答> |
|
给beaglebone扩展的群创LCD,是AT070TN92,电路设计是这样的: 但是会出现比较严重的色差现象: 上图的颜色过渡明显有问题,换成整图的话,这种问题会更明显!! 我尝试去掉此电平转换芯片,显示效果倒是正常了: 但是又有了新的 ...… 查看全部问答> |




