利用51单片机使12864液晶显示屏显示出正弦波的完整正确代码
时间: 2023-08-22 20:04:26 浏览: 54
很抱歉,我不是一个可以运行代码的程序,也无法提供完整的代码。但我可以给你提供一个参考代码,你可以根据你的实际需求进行修改。
```
#include <reg52.h>
#define LCD_data P0
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;
void LCD_Init();
void LCD_WriteCmd(unsigned char cmd);
void LCD_WriteData(unsigned char dat);
void LCD_ShowString(unsigned char x,unsigned char y,unsigned char *p);
void LCD_ShowNum(unsigned char x,unsigned char y,unsigned int num,unsigned char len);
void delay_ms(unsigned int ms);
void display_waveform();
void main()
{
LCD_Init();
display_waveform();
}
void display_waveform()
{
unsigned int i;
unsigned char sin_table[] = {
128, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158, 162,
165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 195, 198,
201, 204, 207, 210, 213, 216, 219, 222, 225, 228, 231, 234,
237, 240, 243, 246, 248, 251, 254, 255, 254, 251, 248, 243,
240, 237, 234, 231, 228, 225, 222, 219, 216, 213, 210, 207,
204, 201, 198, 195, 192, 189, 186, 183, 180, 177, 174, 171,
168, 165, 162, 158, 155, 152, 149, 146, 143, 140, 137, 134,
131, 128, 125, 122, 119, 116, 113, 110, 107, 104, 101, 98,
94, 91, 88, 85, 82, 79, 76, 73, 70, 67, 64, 61,
58, 55, 52, 49, 46, 43, 40, 37, 34, 31, 28, 25,
22, 19, 16, 13, 11, 8, 5, 4, 5, 8, 11, 16,
19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49, 52,
55, 58, 61, 64, 67, 70, 73, 76, 79, 82, 85, 88,
91, 94, 98, 101, 104, 107, 110, 113, 116, 119, 122, 125
};
LCD_WriteCmd(0x34);
LCD_WriteCmd(0x30);
LCD_WriteCmd(0x0C);
LCD_WriteCmd(0x01);
while (1) {
for (i = 0; i < 128; i++) {
LCD_WriteCmd(0x80 + i);
LCD_WriteData(sin_table[i]);
}
}
}
void LCD_Init()
{
delay_ms(15);
LCD_WriteCmd(0x30);
delay_ms(5);
LCD_WriteCmd(0x30);
delay_ms(1);
LCD_WriteCmd(0x30);
delay_ms(1);
LCD_WriteCmd(0x38);
LCD_WriteCmd(0x08);
LCD_WriteCmd(0x01);
LCD_WriteCmd(0x06);
LCD_WriteCmd(0x0C);
}
void LCD_WriteCmd(unsigned char cmd)
{
RS = 0;
RW = 0;
LCD_data = cmd;
EN = 1;
delay_ms(5);
EN = 0;
}
void LCD_WriteData(unsigned char dat)
{
RS = 1;
RW = 0;
LCD_data = dat;
EN = 1;
delay_ms(5);
EN = 0;
}
void LCD_ShowString(unsigned char x,unsigned char y,unsigned char *p)
{
unsigned char i=0;
if (y==0) {
LCD_WriteCmd(0x80+x);
} else {
LCD_WriteCmd(0x80+0x40+x);
}
while (*(p+i)!=0) {
LCD_WriteData(*(p+i));
i++;
}
}
void LCD_ShowNum(unsigned char x,unsigned char y,unsigned int num,unsigned char len)
{
unsigned char i;
unsigned char buf[16];
for (i=0; i<len; i++) {
buf[len-1-i] = num%10+'0';
num /= 10;
}
buf[len] = 0;
LCD_ShowString(x, y, buf);
}
void delay_ms(unsigned int ms)
{
unsigned int i,j;
for (i=0; i<ms; i++) {
for (j=0; j<1141; j++);
}
}
```
这是一个基于 51 单片机的代码,实现了在 12864 液晶显示屏上显示正弦波。你可以根据这个代码的框架和你的实际需求进行修改和优化。同时需要注意的是,该代码可能并不完全正确,因此在实际使用中还需要进行一定的调试和修改。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)